V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
ericgui
V2EX  ›  Linux

野生程序员想自学 Linux From Scratch,需要哪些知识背景?

  •  
  •   ericgui · 2016-11-03 20:51:57 +08:00 · 6004 次点击
    这是一个创建于 2940 天前的主题,其中的信息可能已经有所发展或是发生改变。
    本人半路出家,原专业是生物,除了英语好,一无长处。
    本来学 Java Web 和 Python Web 开发, 后来在学 Linux 的时候,对 Linux 产生了无比的热情
    所以准备深入学习一下。
    没学过 C 语言(正准备看),没学过算法,没学过编译原理。
    但想自己用源码从头编译一次,所以准备学 LFS 。
    请教各位,学 LFS ,目前我就只是会写 shell 脚本的水平,能看得懂吗?
    我实话说,我硬着头皮看了一次,没看明白。
    需要补充哪些知识?谢谢
    42 条回复    2017-11-03 21:59:16 +08:00
    tinyproxy
        1
    tinyproxy  
       2016-11-03 21:00:39 +08:00 via iPhone
    有这时间,你去补语法,数据结构,网络协议,编译原理不好?瞎点技能树不好
    ericgui
        2
    ericgui  
    OP
       2016-11-03 21:11:25 +08:00
    @tinyproxy 我的意思就是先学哪些基础知识,才能看得懂 LFS ?我知道打基础的重要性,但不知道哪些东西是“基础”。 C 语言?数据结构?算法?编译原理?
    BBrother
        3
    BBrother  
       2016-11-03 21:15:09 +08:00
    可怜的我还是查了 Linux From Scratch 才知道是什么的。
    tinyproxy
        4
    tinyproxy  
       2016-11-03 21:23:19 +08:00 via iPhone
    @ericgui 你可以按我说的顺序,也可以随意,但入门搞 LFS ,那我只能说你还没弄完骂的最多的就是自己那破电脑什么编译速度
    ericgui
        5
    ericgui  
    OP
       2016-11-03 21:28:34 +08:00
    @tinyproxy 时这样的,我最近找工作很不顺。半路出家,又没工作经验,由于对 Linux 有热情,所以学了 shell scripting 。说真的,现在有点不知所措了。不像搞 web 开发,自己搞个小网站,也算是有项目经验了,我现在充其量 Linux 用得比较熟练,但也没啥项目经验,这个就很难说服 HR 。所以不是我非要搞 LFS 不可,只是我希望找个 Linux 相关的工作,学以致用,仅此而已。如果您认为 LFS 不合适,那水平拓展 Linux 技能,应该怎么做呢?大侠如果能指点一二,感激不尽!
    ibigbug
        6
    ibigbug  
       2016-11-03 21:39:39 +08:00
    光会用 Linux 没用,跟你会在 Windows 里面看优酷视频,磁盘清理,注册表修复一样。你会装 LFS 在别人看来跟你会装 Windows 也没啥区别。装一次 gentoo 已经很折腾了,但是这对于我现在的工作没有任何直接帮助。

    不过 Linux 相关的存储、网络、运维、分布式、集群、安全,随便哪个领域你搞一点,找个工作太轻松。
    falcon05
        7
    falcon05  
       2016-11-03 21:41:42 +08:00 via iPhone
    想就业就考个 Linux 管理员的证书呗,比如 redhat 那个
    liuxingou
        8
    liuxingou  
       2016-11-03 21:44:47 +08:00
    我的一位姓金的朋友曾经翻译过 LFS 的一些文档,后来他好像做运维去了,如果这不是你的目的,推荐谨慎考虑时间消耗。
    jerryshao1984
        9
    jerryshao1984  
       2016-11-03 21:45:25 +08:00
    鸟哥的 linux 私房菜作为入门蛮好的作为入门 linux 蛮好的。但是如果你要真正了解操作系统的话还是要系统的学习, CSAPP 作为入门是极好的,但是最好是有 C 的基础。当你从事系统编程的时候需要对 posix 有更深的了解的话 UNIX 环境高级编程也是必须的。

    上层的语言、框架如过眼云烟,但是底层的知识变化没有那么快,底层学得越好对于上层的各种东西掌握起来就越容易。不管你是做 java 还是 python ,最后最难解决和最有含金量的通常就是这些基础的东西。
    tinyproxy
        10
    tinyproxy  
       2016-11-03 21:46:13 +08:00 via iPhone
    @ericgui 楼上给了几个职业方向,你想做哪个去招聘网站搜一圈职业要求,他们要求啥你补啥,没有几个公司上班工作就是编译系统的
    ericgui
        11
    ericgui  
    OP
       2016-11-03 22:36:11 +08:00
    @ibigbug 目前在看 Networking 方面的书,似懂非懂,半懂不懂。用的是思科 CCNA 的教材。如果顺便考个 CCNA ,应该会有很多帮助的吧?
    shijingshijing
        12
    shijingshijing  
       2016-11-03 22:38:30 +08:00
    @tinyproxy 你看到的最多的职位就是 java 和 web 的吧,哈哈
    gefranks
        13
    gefranks  
       2016-11-03 22:48:29 +08:00
    其实我也想玩玩 LFS,长草很久了
    特殊技在特定的时刻会闪光的
    从最难的地方入门也不见得是什么坏事
    ibigbug
        14
    ibigbug  
       2016-11-03 23:55:42 +08:00
    @ericgui 我自己是搞 web 的,对网络了解的不全面。身边的人对网络比较熟悉的搞 ovs 、 vxlan 、 vlan 、大二层网络架构的,而且最近容器化比较火,可以了解一下。
    johnnie502
        15
    johnnie502  
       2016-11-04 00:15:42 +08:00
    这贴应该发在 mitbbs 的生物转行
    hyyou2010
        16
    hyyou2010  
       2016-11-04 00:22:30 +08:00
    Linux 有很多方面,每个方面都可以很深入,很花时间,我个人觉得没必要那么执着于某个方向,还是根据工作需要来学习比较好。
    通常而言,你应该先学操作系统原理和 c 语言,然后再说 linux 的各个方面。
    ytpfxnj
        17
    ytpfxnj  
       2016-11-04 08:43:24 +08:00
    先把鸟哥的书看过再说吧!两年前我也想学 LFS,想用 arch 和 gentoo ,后来还是乖乖地用了主流的 ubuntu , debian 。我曾经想找运维的工作,现在做的跟 linux 也没太大关系,不过 linux 还在用
    ytpfxnj
        18
    ytpfxnj  
       2016-11-04 08:50:24 +08:00
    有本书名为《 Linux 就是这个范儿》提到了 LFS ,不过如果 linux 经验不多,没用过 arch 和 gentoo 还是先别搞 LFS 了,从源码编译也没啥难的呀,主要就是解决各种依赖关系, ubuntu 随便下载个软件源码包, build 一下就编译了!想要深入学习 linux ,先去研究运行在 linux 上的各种软件吧, LAMP 什么的,学学 python ,这也是我现在做的事儿。

    我个人只装过一次 arch ,花了几个小时,再也不想折腾了。
    Panic
        19
    Panic  
       2016-11-04 08:58:27 +08:00
    LFS 感觉主要认识各种恶心的 Makefile , automake 一类的,学学也不错
    FifiLyu
        20
    FifiLyu  
       2016-11-04 09:10:25 +08:00
    还是别乱点技能树。有这个时间干点其它的吧!
    不懂 C 和 Makefile 之类,对 Linux 不熟悉,基本就是挨刀的,是 LFS 玩你。
    linux40
        21
    linux40  
       2016-11-04 09:30:38 +08:00 via Android
    我同意一楼和楼上。。。
    haiyang416
        22
    haiyang416  
       2016-11-04 09:31:34 +08:00 via Android
    LFS 以前用了几十小时才编译完成,还是有教程,能看懂教程的情况下,感觉是比较费时的,特别是反复编译工具链。
    建议先熟悉一下 C 和编译流程之后再进行吧,话说完成了 LFS 的好处没有你想象的那么大,毕竟参考教程的情况下,大部分只是在执行,缺少思考。
    misaka19000
        23
    misaka19000  
       2016-11-04 09:38:47 +08:00 via Android
    Linux 是个大坑,唉,想学操作系统可以看看网易云课堂李志军老师的课程,有配套实验,还是蛮好的。想有挑战性去跟 MIT 6.828 吧,那里面的实验很不错。
    再说一句,操作系统是大坑。。。
    figofuture
        24
    figofuture  
       2016-11-04 09:45:56 +08:00
    认真看看 cookbook 就好了
    tinyproxy
        25
    tinyproxy  
       2016-11-04 09:46:51 +08:00 via iPhone
    @shijingshijing 难道除了 Java 跟 web 其他公司的业务是从头编译系统?或者需要从头编译系统这技能点?没几个公司玩的起系统开发好吧
    ryanzyy
        26
    ryanzyy  
       2016-11-04 09:51:10 +08:00
    继续 "学 Java Web 和 Python Web 开发" 先把 Linux 用熟吧
    Zach41
        27
    Zach41  
       2016-11-04 10:06:49 +08:00 via iPhone
    鸟哥的两本书, unp 和 apue ,还有 linux 系统编程手册两本书(和 unp , apue 很多内容重了),如果能耐心看完这些书,对 linux 的理解肯定是够了
    palfortime
        28
    palfortime  
       2016-11-04 10:11:55 +08:00
    当年大三的时候边上编译原理,边搞 LFS ,挺有感觉的,对 linux 的运行有了更深入了解。
    jackisnotspirate
        29
    jackisnotspirate  
       2016-11-04 10:13:45 +08:00
    只想说,搞那玩意太浪费时间,没用
    xi_lin
        30
    xi_lin  
       2016-11-04 10:16:16 +08:00 via iPhone
    @palfortime 编译原理不是都在学文法么,和 LFS 关系不大吧?
    matthewgao
        31
    matthewgao  
       2016-11-04 10:21:59 +08:00
    LFS 只要照着他的说明一步一步来就好,你不需要太多其他的知识,能处理写基本的编译问题和读懂 shell 就够了,主要是要有耐心。。。老慢了
    shijingshijing
        32
    shijingshijing  
       2016-11-04 10:29:11 +08:00
    @tinyproxy 我的意思是,现在外面招聘广告里面,要人要的最多的职位,是 web 前端和 java 开发吧。别理解错了。。。
    palfortime
        33
    palfortime  
       2016-11-04 12:11:12 +08:00
    @xi_lin 自举
    onionisi
        34
    onionisi  
       2016-11-04 12:30:54 +08:00
    做 LFS 本身就是一个学习的过程,主要处理好编译过程,特别是几次工具链的编译
    726332269
        35
    726332269  
       2016-11-04 13:08:45 +08:00 via Android
    按照教程做就行了,没什么难度的,唯一麻烦的就是编译时间太长了, i7 都得搞一天。
    introom
        36
    introom  
       2016-11-04 14:47:57 +08:00 via Android
    你搞 lfs 干嘛?搞完你还是不知道,除了和别人说,我有的是时间去耗,硬生生编译完了 lfs. 好好研究一下 ld, objdump 这些工具都比 lfs 实用。
    loading
        37
    loading  
       2016-11-04 15:26:31 +08:00 via Android
    跟着手册做一次,期间自己感悟吧。
    kelvansun
        38
    kelvansun  
       2016-11-04 15:43:33 +08:00
    搞搞 LFS 对提高对 Linux 的认识是有帮助的,但实用性不高。属于纯折腾
    proofreading
        39
    proofreading  
       2016-11-04 16:25:58 +08:00
    建立个微信群吧, 一起学习.
    tobylee
        40
    tobylee  
       2016-11-04 18:13:34 +08:00
    我的看法是,每个用 Linux 的都有必要搞搞 LFS ,做一遍 LFS 的目标不是让你学会搞 LFS ,在过程中只要你搞清楚每一步在做什么,那么对于 Linux 使用来说,基本上相当于全面的提升了功力。不管是 ArchLinux 还是 Gentoo 都是首先有了一个基本系统,而 LFS 教你做一个最基本的 Linux 系统,也许你按文档完成一遍得到的系统什么都做不了,但是对于了解 Linux 的帮助是不可小视的。不要担心你的系统啥用都没有,后面还 BLFS......




    反正我是在做完两遍 LFS 和 BLFS 后,就踏实的呆在 ArchLinux 阵营,到现在。
    findex
        41
    findex  
       2017-03-13 21:05:34 +08:00
    @tobylee LFS 是多么美妙的一件事。大家都是自学的。很多学计算机出身的只是皮毛而已,若不经风。当然你需要下更多的功夫。为什么要担心呢?其次,曾主做过 BFS BSD From Scratch 吗?
    iamdsy
        42
    iamdsy  
       2017-11-03 21:59:16 +08:00
    玩 lfs 是好多年前了,从最开始的 redhat 到 slackware,再到 ubuntu,中间折腾了一次 lfs 和 blfs,对 linux 的理解的确是有比较大的提高,但是,找工作其实没什么太大用处。

    真正要对找 linux 工作有帮助,还是得学编程序,建议从 Unix/Linux 编程实践教程开始学,入门比较容易。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5257 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 08:46 · PVG 16:46 · LAX 00:46 · JFK 03:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.