沈阳电脑维修网,沈阳上门维修电脑服务
当前位置: 主页 > 系统故障维修> 用好Linux的启动盘 >

用好Linux的启动盘

时间:2011-6-12来源:www.sypcwx.cn 作者: 沈阳电脑维修网点击:
沈阳电脑维修,上门维修电脑
  一、为什么需要Linux启动盘   有很多理由来说明这个问题:首先它可用于启动Linux系统。其次,当系统发生错误,需要进行系统恢复时我们需要用到它。还有,如果你喜欢经常更新系统内核的话,那么一张启动盘则是必不可少的。   希望了解Linux系统组成及启动过程的朋友,如果按照本文提供的方法做下去,相信你做完启动盘之后,你对Linux又会有新的认识。   二、启动盘的类型   启动盘一般可分为如下两种:一种是只含内核(kernel)的启动盘,这种盘只含有系统内核,并不包括根文件系统(rootfilesystem),它在其内核中指明了根文件系统所在的位置,在启动过程中根据该参数去安装根文件系统。也就是说,这种类型的启动盘必须和硬盘上的根文件系统配合才能使用。我们平常意义上的启动盘一般指的就是这种类型,有些资料上也把这种盘称之为boot盘。   另外还有一种类型的启动盘除了包含内核以外,还包含了文件系统。这种类型的启动盘从某种意义上来说已经是一个完整的操作系统。由于有自己的根文件系统,这种类型的启动盘可以在没有硬盘的机器上启动一个小的Linux系统。这种类型的盘有时也称作boot/root盘。   三、启动盘的制作   1.boot盘的制作   很多Linux发行套件已经提供了boot盘,一般情况是在DOS下使用RAWRITE制作一张boot盘。当然这种方法是在安装Linux之前进行制作。如果在安装了Linux之后希望再制作系统盘,请按以下步骤进行:   (1)以root的身份进行登录。   (2)确定内核的位置,一般情况下内核位于/vmlinuz中,当然不同的发行套件中该位置可能会有区别,可以查看相关的文档。   (3)用rdev命令设置根设备为Linux系统的根文件系统。首先查看内核中对根文件系统的配置,执行如下命令   #rdev/vmlinuz   如果你的Linux根文件系统位于/dev/hda1,那么应该有如下的信息:   RootDevice/dev/hda1   注意:该信息随你在安装时的配置不同而结果可能不同。另外还有一点值得注意的是,该设置值可能并不正确,例如我的系统(RedHat6.0kernel2.2.5-15)上的配置值就显示如下:   #rdev/boot/vmlinuz   RootDevice/dev/sdc1(显示为sdc1即第三SCSI硬盘,而我的机器上根本没有!)   但是这并不表明该配置有问题,因为lilo.conf中的相关配置项会覆盖该值,详见boot/root盘中的分析。   (4)如果上一步的显示信息和你的实际配置有偏差,可以执行如下命令进行修正:   rdev/dev/vmlinuz/dev/hda1(假设根文件系统位于/dev/hda1上)   再次执行rdev/vmliuz确保正确,否则做出来的盘是不会启动的!   (5)拿一张已格式化的软盘(Linux下用fdformat格式化),执行下述命令:   #ddif=/vmlinuzof=/def/fd0bs=8192   至此,一张专用于引导Linux系统的boot盘就做好了。去测试一下吧!   2.boot/root盘的制作   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)创建根文件系统   Linux内核识别两种可以直接拷贝到RAMDISK的文件系统,它们是minix和ext2,ext2性能更好。mke2fs缺省情况下在1.44M的软盘上产生360个信息节点,使用压缩格式的根文件系统需要更多的信息节点,所以使用如下命令创建文件系统可以创建2000个信息节点,而且一般不会用完。   mke2fs-m0-i2000/dev/ram0   mke2fs将会自动判断设备容量的大小并相应地配置自身,-m0参数防止它给root保留空间,这样会腾出更多的有用空间。接着把虚拟盘挂在节点/mnt上:   mount-text2/dev/ram0/mnt/floppy   接着是创建目录。根文件系统最少应该有如下8个目录:   /dev—设备   /proc—proc文件系统所需目录   /etc—系统配置文件   /sbin—重要的系统程序   /bin—基本应用程序   /lib—共享函数库   /mnt—装载其他磁盘节点   /usr—附加应用程序   执行如下命令创建这些目录:   #cd/mnt/floppy   #mkdirdevprocetcsbinbinlibmntusr   接下来的工作就是确定各个目录下的内容了:   ·/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/hostnameyjy   fstab应包括:   /dev/ram0/ext2defaults   /dev/fd0/ext2defaults   /proc/procprocdefaults   inittab包括:   id:2:initdefault:   si::sysinit:/etc/rc   1:2345:respawn:/sbin/getty9600tty1   2:23:respawn:/sbin/getty9600tty2   ·/bin和/sbin:该目录中包含有必不可少的应用程序,如ls,mv,cat,你可以根据自己的需要选择,不过一定要记住包括以下程序:init,getty,login,mount,运行你的rc的外壳shell。   ·/lib:该目录中包含有你的启动盘启动过程中所需要的共享函数库,如果缺少必须的函数库,系统会停止启动或出现一大堆错误信息,所以一定要注意。   几乎所有的程序都需要libc库,列一下目录/lib中的libc:   %ls-l/lib/libc*   -rwxr-xr-x1rootroot4016683Apr1618:48libc-2.1.1.so*   lrwxrwxrwx1rootroot13Apr1012:25libc.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后,再仔细检查一遍,一定保证没有遗漏。   (3)模块   如果你有一个模块化的内核,你还得考虑需要加载的模块,它们都位于/lib/modules,你可以把不是很重要的模块放到别的盘上,当系统启动后再加载,这样会节省启动盘的空间。   (4)打包   一旦你完成了上述工作,卸下虚拟盘,拷贝到一个文件中,然后压缩。   umount/mnt   ddif=/dev/ram0bs=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-i8192-m0/dev/fd050   “-i8192”表示每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和内核到内核文件系统的根目录下,   cpbdlilo.confKERNEL/mnt/floppy   现在,根文件系统所需的所有文件都准备就绪了。再执行下面的命令可以帮助安装LILO引导器到软盘的根文件系统上面:   lilo-v-Cbdlilo.conf-r/mnt   OK,可以运行它了,如果运行结果没有错误就表明成功,否则就应该仔细检查一下上面的设置。
上一篇: 用多重启动优化Novell无盘站的内存
下一篇: 安装程序启动安装引擎失败
查看[ 用好Linux的启动盘 ]所有评论
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:
推荐内容
关于我们 服务价格 联系我们 企业网站优化 沈阳网站建设 沈阳维修电脑