读书人

(持续更新)LFS笔记之一:宿主系统搭

发布时间: 2012-04-04 16:38:51 作者: rapoo

(持续更新)LFS笔记之一:宿主系统搭建和其他预备工作

LFS(Linux From Scratch),不是一个真正意义上的实体Linux发行版,而是提供了一组文档,帮助你从源码一步一步地创建自己定制的Linux系统,相对于其他基于源码发行版(如gentoo),LFS更为基础,他没有提供基本CD,没有一个基本的系统环境,这个基本系统和编译所需的工具链全部要自己制作。换句话说,LFS就是创建一个自己的Linux发行版。

虽然从3月份才开始在真机器上是用Linux,按照通常说法,LFS通常需要一年以上Linux使用经验,不过,我自认为基础还可以,从编程到操作系统机制都有一定了解,决定利用这次的LFS,让自己的Linux的理解快速上一个台阶。

我已经通读了LFS的文档,6.8最新版和6.6中文版对照阅读,以确保不会只阅读英文版而遗漏一些重要细节,该文档十分详细,而且许多东西并不需要你去理解,类似于“手把手”的教学,感觉甚至基本没有什么Linux基础的人也能够完成,这也是我决定做LFS的原因。

我的目标不只是做出一个可用的LFS,我将按照我长期以来学习技术的套路——纵向对比,构建不同版本的LFS,计划至少构建四套——2.6内核的较近期版本,2.6内核较早期版本,2.4内核,2.2内核,当然先从LFS 6.8(2.6内核近期版本2.6.37)开始构建。最新的文档相对来说最详细最完善,而且也有6.6中文版可以对比查漏(2.6.32内核,2.6.3x系列内核最稳定版本,Debian 6稳定版,RHEL和SUSE企业版,Ubuntu 10.04LTS,最稳定的Linux发行版都在用,我现在用的就是Debian 6)。2.6版内核时间跨度很长(2003-至今),看《深入Linux内核架构》这本书时,讲了在2.6.1X~2.6.2x这段时间内加入了不少新功能,那本书基于2.6.24,作者当时还提到了一些新功能将在2.6.26之后实现,因此2.6早期内核和近期内核差距会比较大,因此2.6内核我会做两个版本。

今天记述的是重要的预备工作——宿主系统构建和LFS源码包的准备。

LFS是从头构建Linux系统,但这个“头”不是没有基础的,LFS的构建需要一个宿主操作系统环境,简单的总结LFS的步骤就是:
1.利用宿主系统的编译工具链,编译LFS的编译工具链。
2.重新编译LFS工具链,摆脱对宿主系统各种运行库的依赖。
3.利用LFS工具链,建立文件系统和目录树,编译LFS的各种源码包,调整启动脚本,完成LFS系统。

既然如此,那就先做宿主系统吧。其实,LFS系统构建对宿主系统基本不会造成什么危害,各种编译和修改都在独立的目录甚至分区中进行,决不会扰乱宿主,但我还是决定用VMWare来实现LFS,原因有三:
1.VMware的快照功能太好用了,万一LFS过程出了差错,快照可以完美回溯,不必重头再来。
2.我要构建多个版本,手头上只有Debian 6,他适合构建LFS 6.8,那些较早版本的LFS能否在较新的Linux2.6.32+gcc4.4.5环境下正确构建是未知数,而且我的硬盘已经没有多余分区来引导LFS了
3.不用其他虚拟机软件的原因是VMWare是bug相对比较少功能也比较强的,网上都到的说法也是VirtualBox构建LFS失败的可能性更大,在版权有等于没有的天朝,就不必在意VMWare的价格了。

我手头上有全套的Red Hat Enterprise 6/5/4/3/2,Red Hat 9/8/7/6/5/4虚拟机,涵盖了从Linux 2.0~2.6,从1997年~2011年,做四个版本LFS的宿主系统绰绰有余了,不过我还是决定从新构建一套Debian宿主系统,原因如下:
1.RedHat研发能力强,而且是商业版本,对包括Linux内核在内的各种软件包改动较大,Debian相对来说比较原汁原味,大多数软件包都和原始的默认配置差不多,Debian构建LFS更可靠。
2.经过真机器跑Debian,一来我更熟悉Debian的操作,二来对Debian的印象也比以前装虚拟机时好得多,Debian在VMWare虚拟机中遇到的各种莫名其妙的问题,我基本上也能够解决(RedHat通常会主动配合VMWare进行调整,debian则不一定,因为根据GNU方面的观点,开源软件和闭源软件相配合时出错,GNU会归罪与闭源软件通常不会主动审视自己)。
3.既然要构建历史版本,我也得构建多个历史版本的宿主系统以确保LFS文档的要求(不是必须的,因为最终的工具链肯定是自举编译,与宿主系统无关,但是LFS文档明确说明某些软件包太新可能出问题,主要是第一遍编译工具链的时候,这次不是自举编译)。这就需要宿主系统的历史足够长,现在的主流发行版里,够格的也只有Redhat、Debian、Slackware、SUSE等少数几个,他们涵盖了Linux 2.0以来的内核版本,Slackware那套操作方式我实在不习惯,SUSE 7.3以前的版本已经失踪了(archive.kernel.org也说找不到了),RH有但我不想用,那就只有Debian了。
4.LFS很pure,没有initrd,没有package manager,我打算移植Debian的部分特性。
5.我已经有Window从1.0~Me(dos核),Windows NT 3.51~7(NT核)的全套虚拟机,MSDOS1.0~7.1的全套虚拟机,RedHat系列的几乎全套(RH1/2/3/4没提供光盘镜像,懒得用软盘镜像折腾了,4.2我都是自己封转光盘装的),想趁此机会,收集Debian全套虚拟机。
6.Debian喜欢跳票,发布一般比同期的RHEL晚,所以Debian的软件包更新一点点,也敢于在稳定版提供新内核(这个Debian的优点和和LFS无关……这是我选择Debian做真机系统的理由之一)。

Debian到目前为止大版本号到6,但Debian的稳定版不只6个,比如3.0(woody)和3.1(sarge)虽然只差了个次版本号,但之间却有3年的跨度,软件版本和特性都相差很大(差别超过了Debian 5和6),目前我收集的Debian稳定版有1.3.1(bo),2.0r0(hamm),2.1r2(slink),2.2r7(potato),3.0r6(woody),3.1r8(sarge),4.0r9(etch),5.0.8(lenny),6.0.1a(squeeze),其中1.3.1没有光盘镜像。遂决定从2.2开始安装,一直到6.0.1a。—ebian从5.0后,安全更新版本的版本号发生变化,如前文所示)

既然不仅仅是为了LFS,而是收集Debian虚拟机,那么每台虚拟机就不仅仅要能启动能编译,还要尽量完美才行(桌面环境、vmware-tools等)。

具体过程不赘述,如果玩LFS还的家伙连虚拟机都不会装那还是多练几年吧……

我只提示下在VMWare Workstation 7.1.4环境下Debian几个版本安装注意事项。

Debian的安装介质很好取得,CD、DVD、蓝光介质随意(如果只是做LFS宿主系统的话,基本系统加上Build-essential、linux-headers基本够了),我最近入手了两块2T硬盘,专门收集软件和系统,空间不缺,Debian 5和6下的都是蓝光版本,5是一张蓝光20G,6是两张蓝光30多G(这只是一个架构的,amd64+i386、linux内核+kfreebsd内核一共4张蓝光+14张DVD,大家要下不必下这么大的,除非是我这样的收集狂)。架构的话LFS推荐i386,amd64需要做一些调整,也不复杂。

软件源请选择sohu或网易的镜像,速度基本上都能达到外网最大带宽,不过搜狐网易只有两个稳定版本5/6,再早的版本用日本的镜像ftp.riken.go.jp/Linux/debian/debian-archive/,这个镜像我这里网通白天比较慢,30~100K,夜里也是最大带宽。如果你下载的光盘比较全,用光盘做源也可以,几个历史版本如果用的是最新的更新发布的话(如5.0.8、4.0r9),网络镜像和光盘元基本一样,通常用网络源aptitude upgrade也就几个软件包而已。

2.2r7,有两个内核,2.0.38和2.2.19,vmware-tools请在2.2.19下装,而且perl版本太老,vmware 7的tools装不了,你下一个5.5.9的可以装上,不过gnome启动不了,X可以,不过这个1.0版本的gnome有没有没什么区别……2.2是Debian接近现代化的起始,apt是在这个版本加入的,之前只有dpkg,命令行上用起来没太大差别,早期的vi/vim你可能得忍他一下,操作比现在的vim还要反人类……按退格删不掉字符、按del字符越删越多、功能键会产生字符、莫名其妙退回命令模式等等等等。引导器老老实实用lilo,那个0.5版的grub比lilo还难用、难配置。



3.0r6,第一次有了中文安装界面(繁体),vmware-tools可以装版本7的了,也是双内核2.2.20和2.4.18,tools请在2.4.18下装,新的vmware-tools对早期的debian兼容不如redhat,mkinitrd的命令行调用的还是rh的风格,而debian 3.0的mkinitrd多一个参数-o(现在得办还没有自己的mkinitramfs),装完会报错,你自己mkinitrd一下就行了。3.0和2.2版默认装的gcc和内核编译版本不一致,编译vmware-tools模块会提示的,在软件仓库里把那个更早的gcc装上,设置一下/usr/bin/gcc的符号链接指向。默认引导器还是lilo,不过0.91版的grub已经现代化了,只是还不能自动检测内核,menu.lst得自己写,不复杂,上网抄一个调整一下就行。gnome、kde、xfce都能启动,kde2.2就是中文字体和颜色丑些,其他的和kde3相差不多了。gnome 1.4还是很菜。中文字体不想折腾盗用windows的话,就装ttf-arphic-*系列,丑点而已。

3.1r8,从3.0到3.1可过了整整3年,3.1基本现代化了(2005年的,vista都beta了),内核2.4.27+2.6.8,vmware-tools两边都装下,效果更好,kde3.3+gnome2.8基本上有实用价值了,鼠标可以从客户机到主机自动切换了,不过装tools之后还是要手动mkinitrd,切记:2.4.27内核别mkinitrd,内核会无法引导的。

4.0r9,这个版本和vmware7犯冲,按道理不应该的,debian4是在vmware官方支持之内的(vmware-tools有预编译模块,不需要自己编译)。其实X驱动、网络驱动、鼠标驱动都很正常,问题在于两点——1.gnome经常性崩溃,桌面小程序经常启动报错;2.apt安装程序,到最后一条解压缩或者setting时apt必然挂起无响应,得kill再继续。这两个问题至今我无法解决,不清楚换成VMWare5兼容模式可不可以。

5.0.8,2.6.26内核。vmware 7.1.3时tools的鼠标驱动会造成右键或者滚轮失效,7.1.4解决了,整体比较完美。kde3.5.9+gnome2.20,都是稳定实用的版本,注意kde下用中文必须选圆整边角/抗锯齿开启,否则字体破碎而且还影响到gnome。而kde4下正好相反,Debian6.0里绝对不能选抗锯齿,否则反而破碎并影响gnome……

6.0.1a,首先注意下载时别选成了kfreebsd的……kfreebsd在6.0版开始stable了。2.6.32内核,超稳定的,kde4.4.5+gnome2.30+xfce4.6.2,桌面非常完美,注意kde字体别选抗锯齿,用系统设置就行,vmware7还没对debian6官方支持,vmware-tools的鼠标驱动有问题,kdm/gdm界面时无法移出屏幕,进软件源换成debian自己维护的版本就行了。

下一篇:LFS笔记之二:编译工具链的构建。

预计明后天发布。

[解决办法]
关注~~
[解决办法]

探讨
关注~~

[解决办法]
没看明白题目……
[解决办法]
顶一下
[解决办法]
看起来有点意思,有空玩玩
[解决办法]
加油~~~~
[解决办法]
感兴趣,实力不够。丫的,悲剧。。。。。。。。
[解决办法]
顶一下
[解决办法]
好东西,收藏!
谢谢楼主!!
[解决办法]
路过顶
[解决办法]
关注+接分
[解决办法]
正在干我6年前干的事情。。。Debian Gentoo 最后终于到了 LFS。。。一晚上一晚上不睡觉啊。。。
或者他那边编译我这边睡觉然后突然爬起来看看出错没。。。那简直跟着魔了一般。
楼主加油!呵呵。
[解决办法]
持续关注
[解决办法]
我很喜欢Gentoo和LFS
lz啥时结贴
[解决办法]
mark ,学习
[解决办法]
曾经搞过LFS的路过。。。。
编译几那个大的库着实花了不少时间。以后不想搞了。
[解决办法]
佳康。。。你这话题太高深了,没几个能看懂的。。。换个话题吧
[解决办法]
留个脚印,等离职了也回家玩玩LFS和GENTOO
[解决办法]
关注关注~~

读书人网 >C++

热点推荐