您没有来错地!为了更好的发展,黑基网已于9月19日正式更名为【安基网】,域名更换为www.safebase.cn,请卸载旧的APP并安装新的APP,给您带来不便,敬请理解!谢谢

黑基Web安全攻防班
安基网 首页 IT技术 网络管理 查看内容

Linux启动盘boot/root盘的制作

2005-5-29 13:06| 投稿: Linux

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

小编推荐:欲学习电脑技术、系统维护、网络管理、编程开发和安全攻防等高端IT技术,请 点击这里 注册黑基账号,公开课频道价值万元IT培训教程免费学,让您少走弯路、事半功倍,好工作升职加薪!



免责声明:本文由投稿者转载自互联网,版权归原作者所有,文中所述不代表本站观点,若有侵权或转载等不当之处请联系我们处理,让我们一起为维护良好的互联网秩序而努力!联系方式见网站首页右下角。


鲜花

握手

雷人

路过

鸡蛋

相关阅读

最新评论

最新

返回顶部