boot/root盘由两部分 盘上去,通常要对内核和根 一些不必要的支持去掉,如 RAMDISK及ext2,否则系统不 成根文件系统的压缩包。对 件系统组件,第二是将根文
|
组成,即核心和根文件系统。要 文件系统进行压缩,压缩核心的 对网络和其它周边设备的支持, 能正常引导。关于内核的编译本 于根文件系统的压缩包括两方面 件系统做成一个压缩包,类似于
|
把这两部分都放到一个1.44MB的软 最好方法是进行重新编译内核,将 重要的一点是记住内核必须支持 文不再阐述,下面重点介绍如何生 的问题,第一是只保留必要的根文 内核工作的原理。
|
一个根文件系统必
|
须包括支持完整Linux系统的全
|
部东西,它至少应包括以下几项:
|
至少含有以下目录
|
:/dev、 /proc、 /bin、 /etc
|
、 /lib、 /usr、 /tmp
|
最基本的应用程序,如sh、 ls、 cp、 mv等 |
最低限度的配置文件,如rc、 inittab、 fstab等 |
设备:/dev/hd*、 /dev/tty*、 /dev/fd0 |
以上所需文件一般情况下会超过 缩到软盘中,当用软盘启动时,再把文件 RAMDISK控制系统启动。
|
1.44M,因此我们通常的做法是先准备好内容后再压 解压到内存中,形成一个虚拟盘(RAMDISK),通过
|
为了能创建以上的根文件系统, 。系统缺省情况下已替我们建好了一个大 我们就使用它来保存我们预先准备好的根
|
你必须有一个空闲的能够放下大约4MB文件的RAMDISK 小为4096KB的RAMDISK,其设备名一般为/dev/ram0, 文件系统。
|
Linux内核识别两 ext2性能更好。mke2fs缺省 件系统需要更多的信息节点 一般不会用完。
|
种可以直接拷贝到RAMDISK的文 情况下在1.44M的软盘上产生360 ,所以使用如下命令创建文件系
|
件系统,它们是minix 和ext2, 个信息节点,使用压缩格式的根文 统可以创建2000个信息节点,而且
|
mke2fs -m 0 -i 2000 /dev/ram0 |
mke2fs将会自动判断设备容量的 留空间,这样会腾出更多的有用空间。接
|
大小并相应地配置自身,-m 0参数防止它给root保 着把虚拟盘挂在节点/mnt上:
|
mount -t ext2 /dev/ram0 /mnt/floppy |
接着是创建目录。根文件系统最少应该有如下8个目录:
#mkdir dev proc
|
etc sbin bin lib mnt usr
|
/dev:/dev中含有 ,然后删除不必要的文件。 dp开关保证链接文件仍然不 备,删除所有的以sd开头的 过记住一定要保留console
|
系统不可缺少的设备文件。可以 命令cp -dpR /dev /mnt会拷贝 变,不会拷贝链接所指原文件, 文件。如果你不想使用串口设备 、kmem、mem、null、ram、tty1
|
把现有系统中/dev的文件拷贝过来 /dev整个目录但不拷贝文件内容, 而且属性不变。如果你没有SCSI设 ,删除所有以cua开头的文件。不 等文件。
|
/etc:这个目录中 底哪些文件是必需的,哪些 ,干脆全部保留算了。
|
含有一些必不可少的系统配置文 可有可无呢?由于这下面的文件
|
件。这下面的文件比较多,那么到 一般是一些文本文件,都不是很大
|
我的启动盘中含有不到15个配置文件,大致可分为3部分: |
/dev/ram0 / ext2 defaults |
/proc /proc proc defaults |
1:2345:respawn:/sbin/getty 9600 tty1 |
2:23:respawn:/sbin/getty 9600 tty2 |
/bin和/sbin:该目录 的需要选择,不过一定要记 壳shell。
|
中包含有必不可少的应用程序, 住包括以下程序:init, getty
|
如ls, mv, cat,你可以根据自己 ,login, mount,运行你的rc的外
|
/lib: 该目录中包 函数库,系统会停止启动或
|
含有你的启动盘启动过程中所需 出现一大堆错误信息,所以一定
|
要的共享函数库,如果缺少必须的 要注意。
|
几乎所有的程序都需要libc库,列一下目录/lib中的libc: |
-rwxr-xr-x 1
|
root root 4016683 Apr 16 18:
|
48 libc-2.1.1.so*
|
lrwxrwxrwx 1 root root 13 Apr 10 12:25 libc.so.6 -> libc-2.1.1.so* |
libc.so.6的6表示版本号,它指向的文件才是你真正需要的。 |
libext2fs.so.2 => /lib/libext2fs.so.2 (0x40014000) |
libcom_err.so.2 => /lib/libcom_err.so.2 (0x40026000) |
libuuid.so.1 => /lib/libuuid.so.1 (0x40028000) |
libc.so.6 => /lib/libc.so.6 (0x4002c000) |
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) |
在/lib目录下你还必须有函数库 ld-linux.so (对 ELF 库)。新版本的l
|
装载器,这个装载器或是ld.so (对 a.out 库) 或是 dd一般会告诉你所需库的装载器。
|
把装载器和库拷贝到/lib后,再仔细检查一遍,一定保证没有遗漏。 |
如果你有一个模块化的内核,你 /lib/modules,你可以把不是很重要的模 启动盘的空间。
|
还得考虑需要加载的模块,它们都位于 块放到别的盘上,当系统启动后再加载,这样会节省
|
一旦你完成了上述工作,卸下虚拟盘,拷贝到一个文件中,然后压缩。 |
dd if=/dev/ram0 bs=1k | gzip -v9>rfs.gz |
压缩结束后,你就 ,你还得删除一些东西。
|
拥有了一个压缩的根文件系统,
|
不过你得检查它的大小,如果大了
|
有了根文件系统和内核之后,最后的工作就是把它们组织在一起。 |
先检查总文件的大小,如果超出 用两张磁盘,你的根文件系统也得小于1.
|
1.44MB,就得考虑重新创建所需或用两张磁盘,即使 44MB。
|
接着就是确定是用LILO 你能增加支持初始化硬件的 建议使用LILO控制系统启动 的方法就不作叙述了。
|
控制启动还是直接用拷贝到盘上 参数到内核中,缺点是较复杂且 。下面我就介绍用LILO的过程,
|
的内核控制启动。用LILO的好处是 占用珍贵的磁盘空间,不过我还是 直接用拷贝到盘上的内核控制启动
|
用LILO控制启动首 已经够用了。
|
先就得写一个LILO配置文件,以
|
下是一个最简单的配置文件,但是
|
参数说明见相关资 件系统。把一张干净的软盘
|
料。然后把它命名为bdlilo.con 插入软驱,在上面创建ext2文件
|
f。 接下来就是创建一个内核文 系统。
|
mke2fs -i 8192 -m 0 /dev/fd0 50 |
“-i 8192”表示每8192位创建一个信息节点。接着登录系统: |
mount /dev/fd0 /mnt/floppy |
rm -rf /mnt/floppy/lost+found |
mkdir /mnt/floppy{boot,dev} |
删去目录/ lost+found,创建两
|
个目录/boot和/dev,再执行:
|
cp -R /dev/{null,fd0} /mnt/floppy/dev |
接着拷贝启动加载器boot.b到目录/boot中, |
cp /boot/boot.b /mnt/floppy/boot |
最后,拷贝你创建的配置文件bd
|
lilo.conf和内核到内核文件系统的根目录下,
|
cp bdlilo.conf KERNEL /mnt/floppy |
现在,根文件系统 LILO引导器到软盘的根文件
|
所需的所有文件都准备就绪了。 系统上面:
|
再执行下面的命令可以帮助安装
|
lilo -v -C bdlilo.conf -r /mnt |
OK,可以运行它了,如果运行结 面的设置。
|
果没有错误就表明成功,否则就应该仔细检查一下上
| | |