The Linux Bootdisk HOWTO 中译版( 八 )



现在大部分的系统使用;/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;指令 。举例来说:;

%;file;/lib/libc.so.4.7.2;/lib/libc.so.5.4.33;/lib/libc-2.1.1.so
/lib/libc.so.4.7.2:;Linux/i386;demand-paged;executable;(QMAGIC),;stripped
/lib/libc.so.5.4.33:;ELF;32-bit;LSB;shared;object,;Intel;80386,;version;1,;stripped
/lib/libc-2.1.1.so:;ELF;32-bit;LSB;shared;object,;Intel;80386,;version;1,;not;stripped

QMAGIC;指出;4.7.2;版是给;A.OUT;函式库使用,而;ELF;指出;5.4.33;以及;2.1.1;版是给;ELF;使用 。;

推荐阅读