手把手读书报告

来自:黄若山

书在前面的部分可以说是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/
        这样就可以在其他电脑上快速挂载自己的配置,也不用拷贝很多文件了。只要把那个镜像带着就行。