lfs狗血教训

1.新手就该按部就班

每个章节一个一个来,不要正在编译这一章然后去看下一章。本脑残一连编译很多个包时,脑袋就不太灵光了,当程序包编译需要很长时间时,想利用这段时间看看下一章的内容,结果等编译完了,直接就从下一章的中间接着做了……然后是无数的错误,出错是好事,万一碰巧通过了,而指令不是和手册上一致,这就后面的编译埋下隐患,之后再出错就不好排查了。最糟的情况就是从头再来……

2.打扫卫生要干净

当出现问题时,一个通用的解决办法时重新编译。重来是新手碰到问题的万灵药,因为新手不知道问题的原因在哪里。编译执行make出错后,通常运行以下两条命令清理:

make clean
make distclean
执行完这两条后,为了更加干净,就要删除源码包,重新解压。虽然费时费资源,但很彻底。

在第六章编译lfs阶段,有好多包是第五章准备阶段用到过的,当时手册推荐再源码包外新建xxxxx-build目录编译,事后连同源码目录一并删除之,但我以为编译是在新建的build目录进行的,所以后面有的包只删除了build目录,而保留了源码目录。事实证明这是个错误,前一次的编译对源码包其实是有影响的,即使是在源码目录外编制。有的不太关键的包没出问题,但那些比较和其他包联系较大的,就会出现很难排查的错误。我有好几个包都出现了找不到动态库的问题,没找到原因,只好自己添加链接,将缺失的库从/bin/lib或/usr/bin/lib链接到/toos/lib,临时解决。

所以新手们请严格按照手册说明的编制进程进行:

  1. 把所有的源代码和补丁放在 chroot 环境以内的一个目录,比如/mnt/lfs/sources/。不要把源代码放在/mnt/lfs/tools/中。

  2. 变更至源代码目录。

  3. 对于每个程序包:

    1. 使用 tar 程序,提取要编制的程序包。在第五章中,确保作为 lfs 用户提取程序包。

    2. 变更至提取程序包时创建的目录。

    3. 按本书中的指令编制程序包。

    4. 变更回源代码目录。

    5. 除非另外说明,删除提取出的源代码目录和任何在编制进程中创建的<package>-build目录(重要


下面是转载的出处

书在前面的部分可以说是LFS的中译版本。如何搭建Linux其实就是利用现有的Linux系统和gcc编译器,编译得到一个不再依赖原有系统的 Linux。这依赖其实最主要的就是Glibc了。其实整个过程对我来说,在两次编译gcc的过程是最美妙的,其他的就是源码安装软件而已。

所以我就说说我对如何得到全新gcc这个过程理解。

glibc是个独立依赖的库,它只和内核提供的接口有关,不再依赖其他文件。gcc在编译软件时,可以只使用glibc完成编译过程。所以要实现整个新系 统的独立,只要用新gcc使用新的glibc。这个过程的实现是先用旧的glibc和gcc(记为glibc1、 gcc1),gcc1+glibc1=gcc2,gcc2+glibc1=glibc2,glibc2+gcc2=gcc3,gcc3+glibc2=最 终环境所需要的独立编译环境。(这个过程是否正确我不确定,待我细学后继续……)

在编译那个过程后其实就是自己装软件,最后编译内核,配置相应文件,grub,启动新系统……

我觉得要折腾就折腾前面那部分,然后看看最后的配置文件,比如rc.conf、udev等等的就可以了。全部做下来耗时,没什么意义。除非自己作精简系统。

做完这个之后,其实和安装Gentoo有点像……

讲讲我看到的一些技巧吧(给新手看的……):

- 多核电脑make的时候,可以make -jN(注:N=CPU核心数目×2+1)1,速度一般要会快很多。
    - 自己编译软件时,可以把目标设成~/.bin/local/***;但是不要把对应的可执行文件目录export到PATH;而是把~/.bin/bin添加进PATH,然后把所有可执行文件链接到~/.bin/bin里面。这和最原始的包管理有点像(书说的)。

书的后半部分除了交叉编译和hurd内核和前面的有点相似外,其他的两个部分是LiveCD和USB Live OS的制作。

对于那两个Live系统的制作是很值得一看的,里面见了很多启动的细节,跟在前面编译完目标系统之后。其实在编译目标系统时,基本没什么意思。后面我觉得 更有用。后半部分主要讲了initrd和initramfs的两种辅助系统的启动方式,对于想大致了解下系统是怎么启动的(跳过引导的细节),还是很有帮 助的。至少它让你懂得如何问真正关于系统启动的问题了。以后你应该不会直接问“电脑是怎么启动的?”,而是“系统启动内核后是怎么样启动外围设备的?”。 这就是好书的作用了,它要么使你完全懂得你想要的所有细节,要么使你学会如何正确有效地提问、搜索。

在后面部分,也捡到了一些小技巧,还是供新手参考的:

  1. 如何在一个分区上面同时有两个挂载点?如把home和opt挂到一个分区
答案是Aufs。
    - 把经常用的文件,读写非常非常密集的文件放到tempfs上,即先mount -t tmpfs tmpfs /mnt;cp
    - 用镜像文件保存自己的home常用配置。
        - mount -t tmpfs tempfs /mnt
        - dd of=/mnt/home.img if=/dev/zero -bs=10M -count=10
        - mke2fs -t ext3 /mnt/home.img
        - mount -o loop /mnt/home.img /somewhere
        - cp ~/* /somewhere/
        这样就可以在其他电脑上快速挂载自己的配置,也不用拷贝很多文件了。只要把那个镜像带着就行。

转载于:https://my.oschina.net/sukai/blog/224843

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值