野生程序员想自学 Linux From Scratch,需要哪些知识背景? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
ericgui
V2EX    Linux

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

  •  
  •   ericgui 2016-11-03 20:51:57 +08:00 6492 次点击
    这是一个创建于 3268 天前的主题,其中的信息可能已经有所发展或是发生改变。
    本人半路出家,原专业是生物,除了英语好,一无长处。
    本来学 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 相关的存储、网络、运维、分布式、集群、安全,随便哪个领域你搞一点,找个工作太轻松。
    GG668v26Fd55CP5W
        7
    GG668v26Fd55CP5W  
       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 一类的,学学也不错
    mN71eOOprFyMsnPx
        20
    mN71eOOprFyMsnPx  
       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 本身就是一个学习的过程,主要处理好编译过程,特别是几次工具链的编译
    rlexs
        35
    rlexs  
       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     Solana     1230 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 23:38 PVG 07:38 LAX 16:38 JFK 19:38
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86