DIY:自己动手做一个迷你 Linux 系统
本文将带领大家构建一个迷你型的 Linux 系统。它占用的硬盘空间远小于 16M 字节,但是却包括了
XFree86 的 X Window 窗口系统。
目标
本 文要构建的这个迷你型的 Linux 系统只能在一台特定的单机上运行,如果读者朋友们有兴趣的话,在
这个系统的基础上加以改进,是可以构建出通用的、可以在大多数常规 PC 机上即插即用的系统来的。但
是这已经不在本文的话题之内了,读者朋友们如果有兴趣,可以通过我的电子邮件和我讨论其中的细节
问题。
我 们的目标 Linux 系统运行在一台普通的 Intel 386 PC 机上,可以有硬盘,也可以不要硬盘,而用
Flash Disk 来代替。如果是用 Flash 盘的话,需要能够支持从 Flash 盘启动,而且 Flash 盘的大小要在
16M 字节或者以上。我们希望用户一开机启动,就直接进入 X Window 图形界面,运行事先指定好的
程序。不需要用户输入用户名和密码进行登录。
我们设定的这个目标有点像一个 X Terminal 终端工作站。稍加改进,还可以做成干脆无盘的形式,也就
是说,连 16M 的 Flash 盘也不要了。不过,这也超出了本文的话题了。读者朋友们如果有兴趣,可以来
信和我进行讨论。
系统启动
因 为我们要考虑从 Flash 盘进行启动,所以我们选择用 LILO 作为我们的 Boot Loader,而不选用
GRUB。这是考虑到 GRUB 有较强的对硬盘和文件系统的识别能力,而 Flash 盘到底不是标准的硬盘,
并且我们选用的文件系统 GRUB 又不一定认识,搞不好的话 GRUB 反 会弄巧成拙。而 LILO 就简单的多
了,它在硬盘开始的 MBR 写入一个小程序,这个小程序不经过文件系统,直接从硬盘扇区号,读出
Kernel Image 装入内存。这样,保险系数就大大增加。并且也给了我们自由选用文件系统的余地。那么,
我们要如何安装 LILO 呢?
首 先,我们要找一块普通的 800M 左右的 IDE 硬盘,连在目标机器的 IDE 线上。这样在我们的目标机
器上,IDE1 上挂的是 Flash 盘,IDE2 上挂的是一块工作硬盘。我们用标准的步骤在 IDE2 的标准硬盘上
装上一个 Debian GNU/Linux 系统。当然,如果读者朋友们手头没有 Debian,也可以装 Red Hat 系统。
装好工作系统之后,要首先做一些裁减工作,把不必要的 Service 和 X Window 等等东西都删掉。这样
做的目的是增进系统启动速度,因为我们在后面的工作中,肯定要不停的重新启动机器,所以启动速度
对我们的工作效率是很关键的。
装 好工作系统之后,在 Falsh 盘上做一个 Ext2 文件系统,这个用 mke2fs 这个命令就可以完成。由于
Flash 盘是接在 IDE1 上的,所以在 Linux 里面,它的身份是 /dev/hda。本文作者在操作的时候,把整
个 Flash 盘划分了一个整个的分区,所以,调用 mke2fs 的时候,处理的是 /dev/hda1。读者朋友们应
该可以直接在 /dev/hda 上做一个 Ext2 文件系统,而不用事先分区。
在 Flash 盘上做好了文件系统之后,就可以把一个编译好的内核映像文件 vmlinuz 拷贝到 Flash 盘上了。
注意,必须要先把这个 vmlinuz 映像文件拷贝到 Flash 盘上,然后才能在 Flash 盘上安装 LILO。不然的
话,LILO 到时候可是会 LILILILI 打结巴的,因为它会找不到 Kernel Image 在 Flash 盘上的位置的,那
样的话 Flash 盘也就启动不起来了。还有,如果读者朋友们在 Flash 盘上用的是一个压缩的文件系统的
话,到时候 LILO 也会出问题,它虽然能正确的找到 Kernel Image 在硬盘上的起始位置,但是它却没有
评论3