Linux 版 (精华区)

发信人: liangzq (萍水), 信区: Linux
标  题: 用好Linux的启动盘(下)
发信站: 哈工大紫丁香 (2000年12月25日21:05:01 星期一), 站内信件


《 {用好Linux的启动盘(下)} 》
{  2.2 创建根文件系统
  Linux内核识别两种可以直接拷贝到RAMDISK的文件系统,它们是minix 和ext2,ex
t2性能更好。
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/modul
es,你可以把不
是很重要的模块放到别的盘上,当系统启动后再加载,这样会节省启动盘的空间。
  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,可以运行它了,如果运行结果没有错误就表明成功,否则就应该仔细检查一下
上面的设置。}

--
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.239.216]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.278毫秒