手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>操作系统>Linux>列表

The Linux Bootdisk HOWTO 中译版

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

The rest. They work at the moment, so I leave them alone.
Out of this, 我实际上只必须设定两个档,而它们所应包含的项目惊人地少。

rc 应该包含:
#!/bin/sh
/bin/mount -av
/bin/hostname Kangaroo

请确定上述的目录都是正确的。你并不需要真地去执行 hostname -- 如果你执行只是让系统比较好看 (译注:如此系统会有个名字) 。
fstab 应该至少要包含:
/dev/ram0 / ext2 defaults
/dev/fd0 / ext2 defaults
/proc /proc proc defaults

你可以从你现存的 fstab copy 你想要的项目,但是你并不应该自动地挂上你硬碟任何的 partitions ;请对这些项目使用 noauto 关键字 (译注:用 noauto 代替 default ) 。当使用 bootdisk 时,你的硬碟可能是早已损坏或挂了。
你的 inittab 应该被改变,以使其中 sysinit 这行能执行 rc 或无论什麽将被执行的基本开机 script 。同时,如果你想要确保不可从序列埠 login ,请在所有行尾包括 ttys 或 ttyS 的 getty 项目前加上「#」符号 (comment out) 。请保留 tty 埠以让你可以在 console 前 login 。

一个最起码的 inittab 档看起来样这样:

id:2:initdefault:
si::sysinit:/etc/rc
1:2345:respawn:/sbin/getty 9600 tty1
2:23:respawn:/sbin/getty 9600 tty2

inittab 档定义了系统在各种不同的情况中将执行什麽项目,包括 startup 、切换至多使用者模式等等。请仔细地检查在 inittab 中被提及的档案名称 (filenames) ;如果 init 不能找到所提及的程式,那麽 bootdisk 将会停止运作,而你甚至不会得到错误讯息。


请注意,某些程式不能被移到其它地方,因为其它程式已在撰写时,就把它们的档案位置写死了 (hardcode) 。举例来说在我的系统上, /etc/shutdown 已把 /etc/reboot 的位置写死在其中。如果我移动了 reboot 到 /bin/reboot,然後下达一个 shutdown 指令,将会因为找不到 reboot 档而发生错误。


剩下来的,就是 copy 在你 /etc 目录中的所有文字档 (text files) ,再加上在你 /etc 目录中,你无法确定你需不需要的所有可执行档。需要指示 (guide) 者,请参考在 Sample roodisk directory listings 的样本清单。也许只要 copy 这些档案就足够了,但是系统差异会有很大的影响,所以你无法确定你系统上相同的档案组合,就一定等於清单中的档案。唯一确定的方法就是从 inittab 著手,并找出需要什麽。

现在大部分的系统使用 /etc/rc.d/ 目录,其中包含给不同 run levels 的shell scripts 。最起码会有一个单一的 rc script,但是仅从你现存的系统 copy inittab 与 /etc/rc.d 这两个目录,然後删减 rc.d 目录中的 shell scripts 以移除和磁片系统环境无关的 processing ,会是较为简单的做法。


/bin 与 /sbin

/bin 目录是一个放置为了执行基本作业 (operations) 而所需之额外工具程式的方便好地方,这些工具程式诸如 ls, mv, cat 与 dd 。 bin/ 与 /sbin 这两个目录的档案清单□例请见 Sample rootdisk directory listings 。但□例中并没有包括任何从备份复原时所需之工具程式,诸如 cpio, tar 与 gzip 。这是因为我把这些东西放在另一张 (separate) 工具程式磁片上,以节省 boot/root 磁片的空间。一旦 boot/root 磁片被开机启动,就会被 copy 到 ramdisk 并释放软碟机,让软碟机能挂上另一张磁片,就是工具程式片。我通常把它挂上当做 /usr 。

工具程式磁片 (utility diskette) 的制作被描述在下面 Building a utility disk 这节。保留一份相同版本之备份用工具程式的copy是比较好的,这个备份用工具程式被用来制作备份,如此你就不用浪费时间在尝试安装不能读取你备份磁带的版本。

请确定你包括了以下程式: init, getty 或相等的程式, login, mount, 某种可以执行你rc scripts 的 shell, 以及一个从 sh 指向这个 shell 的 link 。



/lib

在 /lib 中,你要放入必要的共享函式库 (libraries) 与载入程式 (loaders) 。如果无法在你的 /lib 目录中找到必要的函式库,那麽系统将不能够开机。如果你很幸运,你可能会看到告诉你为什麽会发生如此情况的错误讯息。

近来每一个程式至少都要求 libc 函式库, libc.so.N ,其中 N 是目前版本的编号。请检查你的 /lib 目录。 Libc.so.N 通常是一个 symlink ,它指向一个具有完整版本编号的档名:


% 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-2.1.1.so 。为了找到其它函式库,你应该要看过所有你打算包括的二进位档,并且用 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)

在右手边的每一个档案是一定要有的。有些档案可能是一个 symbolic link 。
请注意某些函式库 相当地大 ,而且并不能轻易地配合你的 root filesystem 。举例来说,上述的 libc.so 大约有 4 megabytes 。因此,在你 copy 它们到你 root filesystem 的同时,你可能需要除去一些函式库。请看 Reducing root filesystem size 这一节以了解 instructions 。


在 /lib 内,你也必须包括一个 loader 供这些函式库使用。这个 loader 不是 ld.so (给 A.OUT 函式库使用),就是 ld-linux.so (给 ELF 函式库使用)。较新版的 ldd 会如同上述的例子,正确地告诉你需要哪一种 loader ,然而旧版的就不会。如果你并不确定你需要哪一种 loader ,就对函式库执行 file 指令。举例来说:

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!