一次偶尔的机会,在网上看到LFS(Linux From Scratch)的介绍,感觉它是一种学习Linux的绝好方法,所以在接下来的两个星期里,自己动手做了一个LFS的试验品。我的试验平台是在虚拟机上进行的,LFS文档选择是6.2版本,livecd先后尝试了三个版本:lfslivecd-x86-6.1.1-4.iso,lfslivecd-x86-6.2.5.iso,lfslivecd-x86-6.2.3.iso。
在这两个星期里,前前后后做了三次。第一次使用的是lfslivecd-x86-6.1.1-4.iso,这个版本的livecd不够成熟,里面需要很多的补丁。第一次做LFS,按照youbest兄的文档一个字符一个字符的敲,一个命令一个命令的认真执行,结果到了第六章还是出现了莫名的错误,估计是那个字符敲错了吧,只好放弃。
第二次使用的是lfslivecd-x86-6.2.5.iso,等我历尽艰难敲完前七章的所有内容的时候,到了最后的安装内核时无法进行,报出gcc: Permission Denied的错误,估计是工具链配置错。
下面详细说以下第三次的过程:
第三次吸取前两次的教训,livecd采用了lfslivecd-x86-6.2.3.iso,该版本的Linux内核是2.6.16.27,找了一篇专门针对这个版本的详细安装记录,就是深度思考兄的<
首先对虚拟机进行配置:
在虚拟机vmware workstation 6.0上新建一个虚拟机,该虚拟机的配置过程如下:File-->New-->Custom-->Workstation 5-->Linux-->Other Linux 2.6.x kernel-->Processors:One-->Memory:608M-->Network connection:NAT-->I/O adapter types:SCSI Adapter/BusLogic-->Disk:Create a new virtual disk-->virtual disk type-->SCSI (recommended)-->Disk capacity:8.0G
然后将livecd加入虚拟机光驱,启动,一路默认到了livecd的shell操作界面,按照youbest兄的方法,建立了一个到了第二此ext3的分区,一个swap分区,然后按照深度思考的操作一步步进行下去。到了内核配置阶段,安装的组件是:
引用:Linux Kernel Configuration
-> Device Drivers
-> SCSI device support
- > SCSI disk support
Linux Kernel Configuration
-> Device Drivers
-> SCSI device support
-> SCSI low-level drivers
-> BusLogic SCSI support
Linux Kernel Configuration
-> Device Drivers
-> Fusion MPT device support
-> Fusion MPT (base + ScsiHost) drivers
Linux Kernel Configuration
-> Device Drivers
-> Networking support
-> Ethernet (10 or 100Mbit)
-> AMD PCnet32 PCI support
Linux Kernel Configuration
-> Device Drivers
-> USB support
-> Support for Host-side USB
-> EHCI HCD (USB 2.0) support
-> UHCI HCD (most Intel and VIA) support
-> USB Mass Storage support
Linux Kernel Configuration
-> Device Drivers
-> Sound
-> Sound card support
-> Advanced Linux Sound Architecture
-> PCI devices
-> (Creative) Ensoniq AudioPCI 1371/1373
按照上面的命令序列认真操作,但到了由于bash,perl,grub安装错误,耗了将近一个礼拜,最终才得以正确安装。
虽然这次花费了两个星期的时间来作LFS,但自己觉得还是值得的。通过这次实践,让我收获良多。
首先,使我对Linux的运行及各软件的依存关系有了一些认识,对用gcc,binutils,glibc源码构建一个编译环境也有了初步的理解,对Linux的操作有了进一步的了解。
其次,忍耐与认真是做成LFS必不可少的品质。你得忍受漫长的make 和make test过程,你得忍受出了错误却迟迟找不到解决办法的煎熬,你还得忍受一个字符一个字符的敲击键盘,当然你完全可以把那些命令复制粘贴,但我始终觉得自己敲上去的才最有感觉,才是真正的LFS。在LFS的过程中,由于命令里面用到了字母、数字、标点等不同的字符,而有些字符如果不仔细看,真会看错,比如“`”和“'”,“1”和“l”,虽然它们长得很象,但在命令里的含义就差远了,当然执行的结果可想而知了。
这次虽然做成了一个LFS,我以为我会高兴的睡不着,但当我打开我的LFS系统时,我才发现里面除了一个基本的系统外,甚至连一些常用的命令都没有,我知道我的LFS之路才刚刚开始,我要进入BLFS(Beyond LFS)了。
想想看,自己一点一点搬砖砌瓦盖起了一座房子,怎能不令人自豪呢?Linux的可贵之处大概也就在这里,允许你自由改变,绝不强加任何事情给你。对,free,freedom,我想起了梅尔.吉普森在<<勇敢的心>>里在断头台上那句震人心魄的“freedom”了。这将是我以后继续学习Linux的动力。