版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MagicLinux很难。你能行。好多人很想参与MagicLinux的开发,但多数不知从何入手。386gcc对,这就够了,其他的软件都是在帮助你更快的、更简便的完成这个工作。由于Linux源自于网络,进展于网络,能够上网才能得到Linux;LinuxgccShell和一些应用软件,一点一点的就构成了一个完整的可用的Linux系统。Linux使用过如:cp、mv、rmLinux以源代码形式公布的软件,有一些C/C++或其他语言的阅历。gccgcc软件集合,它们共同工作,完成从源代码到可执行程序的转换过程,这个过程一般被称之为创立。第一章工具链的制作者之间的关系了。假设要获得更为专业、具体的学问请阅读相关专业书籍。gccbinutils、供了这些内容:binutilsLinux发挥着巨大的作用。你可以在/usr/bingccC、C++、Objective-C、Fortran、JavaAda语言,同时为这些语言供给了一些标准库,如:libstdc++、libgcj,„„。gccCLinux,linuxgcc,其他编译器不能编译linuxABI(ApplicationBinaryInterface)的不兼容,其他编译器C++作为开发语言的软件系IntelC/C++编译器开头兼容gccABIIntelC/C++LinuxC/C++开发的软件系统,但内核不行。gcc/usr/bin、/usr/lib/usr/includeglibcCopen,malloc,printf等,全部动态连接的程序都要用到它。它是用户程序与内核沟通的标准接口。glibc包含(自己依靠于自己)的外,其他两个都要依靠于glibc,同时glibc内binutils计来。但他们不是我们要的全部。gcc程LinuxWindows不MagicLinux属gcc现Linuxglibcglibc信你MagicLinuxgcc。预备环境最好能在你的硬盘上划分出一个独立的分区,1G都嫌来吧,创立/mnt/ml的话,先找找资料,google一下mount)。#mkdir/mnt/ml#mount/dev/hda6/mnt/ml(我假设你的分区设备名为hda6)cd/mnt/mltoolchain#cd/mnt/ml#mkdirtoolchain在你的根名目创立一个连接到toolchain上(假设不了解,google一下ln)。#ln-sv/mnt/ml/toolchain/toolchainsources#mkdirsourcessources找到它们,名:名:gcc-4.2.2.tar.bz2;glibc2.7,源代码包可能是这样的文件名:。#exportPATH=/toolchain/bin:$PATHPATHgcc环境已经预备好了,我们开头吧。gcc环境为了创立完全独立于你现有系统的gcc环境,我们要创立两次binutils和gcc。他们创建的次序是很重要的。我们现在进展第一次创立。进入sources名目。#cdsourcesbinutils首先创立binutils,是由于在创立gcc和glibc时,它们会检测连接器和汇编器,以便打算5〔依据你机器的处理力量会有很大的不同〕,占用200MB左右的磁盘空间。解压缩源代码包,并进入解压后的名目:#tar-jvxfbinutils-2.18.tar.gz#cdbinutils-2.18由于binutils在某些时候会有一点小问题,要修复它,需要下在一个补丁,对应2.18版本的补丁是:binutils-2.18-configure-1.patch。#patch–Np1-i../binutils-2.18-configure-1.patchbinutils的文档说应当在一个独立的名目中创立binutilsbuild名目。#mkdirbuild#cdbuild现在为创立binutils做预备工作:#CC=”gcc-B/usr/bin/”../configure\--prefix=/toolchain--disable-nls--disable-werror各选项的含义是:CC=”gcc-B/usr/bin/”Linux公布是很重要的,由于创立的连接器ld可能与它所供给的gcc不兼容。--prefix=/toolchainconfigurebinutils软件包中的程序安装到/toolchina名目中,也就是/mnt/ml/toolchain。--disable-nls这个参数制止了国际化〔通常简称i18n〕。此时根本不需要国际化支持。--disable-werrorgcc在产生警告大事时停顿创立过程。预备好了,我们可以创立了:#make创立完成后,安装:#makeinstall别焦急,还没完事。还得调整一下:#make–Cldclean#make–CldLIB_PATH=/toolchain/libmake参数的含义是:-Cldcleanld中编译生成的文件。-CldLIB_PATH=/toolchain/libld子名目中的全部文件。LIB_PATHMakefile的一个变量,在命令行里制定他,可以掩盖默认值,并让它指向/toolchain/lib名目。这个变量手工将的程序复制到/toolchain/bin名目:#cpvld/ld-new/toolchain/bin好了,binutils创立完成了,你现在可以删除build名目了。但是不要删除binutils-2.18目sourcesgcc的创立工作。#cd../#rm–rfbuild#cd../gcc再次gcc50650MB间。gcc的源代码包并进入源代码名目。#tar–jvxfgcc-4.2.2.tar.bz2#cdgcc-4.2.2gccbinutilsbuild名目。#mkdirbuild#cdbuildgcc做预备。#../configure–prefix=/toolchain–with-local-prefix=/toolchain\--disable-nls–enable-shared–enable-languages=c各选项的含义是:CC=”gcc-B/usr/bin/”告知gcc使用你当前操作系统/usr/bin名目下的连接器。也就是不使用你刚创立完ld。这也是为了避开一些麻烦,可以参考创立binutils该选项的说明。--with-local-prefix=/toolchain默认状况下,gcc会搜寻两个include名目,一个是其安装名目下的include,这里是/toolchian/include,另外一个是/usr/local/include。这个选项就是将/usr/local/include这个默认搜寻名目删除,而还是指向/toolchain/include。--enable-sharedlibgcc_s.so.1libgcc_eh.a的glibc需要要是没有它就不会产生正确的结果。--enable-languages=cC,那就没什么可说的了。预备好了,我们可以开头创立了:#make创立完成,安装:#makeinstallccgcccc而不gcc,这是为Unix平台保持全都,便于程序的移植。#ln–vsgcc/toolchain/bin/ccgcc的,由于你修改PATH环境变量。做些首尾工作,要不然你的磁盘可能吃紧了。#cd../#rm–rfbuild#cd../glibc前面我说过,glibc是自包含的,不会依靠于那个软件包。但是我也说过,它是用户程序与只要是一个系列的内核,根本上是没多少关系的,比方现今的2.6系列,它们会有供给统一的系统调用。glibcLinux内核做得很好,不需话,假设你够牛的话,其实完全可以不用glibc,只利用这些头文件就可以写出适宜的用户程序的,甚至比利用glibc的更为优秀。不过假设你确实那么牛,这篇文章也就不适合你了。不多说了,下载一个内核源代码到你的source名目吧。最的是2。解压缩内核源代码包并进入源代码名目:#tar–jvxflinux-2.tar.bz2#cdlinux-2安装相关的头文件:#makemrproper#makeheaders_check#makeINSTALL_HDR_PATH=destheader_install#cp–rvdest/include/*/toolchain/include#cd../关于内核操作有什么不了解的,可以使用makehelp命令获得帮助。glibc的源代码包并进入源代码名目:#tar–jvxfglibc-2.7.tar.bz2#cdglibc-2.7gccbuild名目:#mkdirbuild#cdbuildglibci386体系了,因此它的开发者们建议在创立glibc是,最好使用-march=i486编译选项。确实如此,假设你不指定这个选项,会创立失败。但是到底现在i486用的已经很少了,我们也可以不考虑兼顾,为了进一步提高性能,我建议使用-march=i686编译选项。你可以通过下面的命令完成这些:#echo“CFLAGS+=-march=i686”>configparms接着,为创立glibc做预备工作:#configure–prefix=/toolchain–disable-profile–enable-add-ons\--enable-kernel=2.6.0–with-binutils=/toolchain/bin–without-gd\--with=headers=/toolchain/include–without-selinux各选项的含义如下:--disable-profile无视掉profiling信息相关的库文件创立,这个时候一般不需要。--enable-add-onsglibcNPTL〔POSIX线程库〕包作为线程库。--enable-kernel=2.6.0glibc2.6.x内核。--with-binutils=/toolchain/bin这个参数并不是必要的,只是为了防止在创立glibc时用错了binutils程序。binutils。--without-gd保证不生成memusagestat程序,这个程序会产生对你现有系统的依靠。--with-headers=/toolchain/include这个选项就是告知glibc,使用刚刚安装的内核都文件创立自己。--without-selinux不供给SELinux特性的支持,由于toolchain是不需要的。什么影响的。configure:WARNING:***Theseauxiliaryprogramsaremissingor***incompatibleversions:msgfmt***somefeatureswillbedisabled.***ChecktheINSTALLfileforrequiredversions.创立软件包:#makeglibc/toolchain/etc/ld.so.conf不会有什么影响,只要提供一个空文件它就闭嘴了:#mkdir–v/toolchain/etc#touch/toolchain/etc/ld.so.conf一切顺当就可以安装了:#makeinstall恭喜你,又干了一件了不起的事情,不过别忘了收尾阿,空间有限。#cd../#rm–rfbuild#cd../MagicLinuxgcc环境能够真正的工作起来编译器、连接器、程序库都创立好了,可以开头创立MagicLinux了吧?呵呵,不行!这个gccC#echo”main{}”>ttt.c#gccttt.c#readelf-la.out看看结果,是不是有一行类似下面的内容:[Requestingprograminterpreter:/lib/ld-linux.so.2]elf(Linux的工具,-l系。上面的结果glibc这是为什么?该怎么办?问题在创立binutils是就已经作了一些解决,但是还没有完全解决。回想一下,在安装完binutils#make-Cldclean#make-CldLIB_PATH=/toolchain/lib#cp-vld/ld-new/toolchain/bin/toolchain/binld-new执行下面操作:#mv-v/toolchain/bin/{ld,ld-old}#mv-v/toolchain/$(gcc-dumpmachine)/bin/{ld,ld-old}#mv-v/toolchain/bin/{ld-new,ld}#ln-sv/toolchain/bin/ld/toolchain/$(gcc-dumpmachine)/bin/ld要现在才作上述操作呢?由于在这之前,glibc,/toolchain/lib静态库和动态一起成为一个是完全独立的个体。这里不要将连接器和动态连接器弄混了,连接器是binutils供给的ld程序,而动态连接台上则可能是译器还不行呢?还要告知编译置,你现在应specsgccspecs#gcc-dumpspecs>`dirname$(gcc-print-libgcc-file-name)`/specs径:#dirname$(gcc-printf-libgcc-file-name)spces“/lib/ld-linux.so.2”内容为下:#gcc-dumpspecs|sed”s@/lib/ld-linux.so.2@/tools&@g”\>`dirname$(gcc-print-libgcc-file-name)`/specsUnixUnix一下《Unix艺术》一书。动态连接器问题解决了,还有一些麻烦问题需要处理,要不然,这个的gccfixincludesgcc于某些缘由把你系,是有方法挽救的。执行下面的命令会将fixincludes产生的影响处理掉,固然,假设fixincludes忙,下面的命令也不会作坏事,破坏这个生的gcc环境:#GCC_INCLUDEDIR=`dirname$(gcc-print-libgcc-file-name)`/include-maxdepth0-xtyped-execrm-rvf”{}”\;#rm-vf`grep-l“DONOTEDITTHISFILE“${GCC_INCLUDEDIR}/*`#unsetGCC_INCLUDEDIR这下好了,马上检测一下:#gccttt.c#readelf-la.out假设你能看到如下结果就证明成功了:[Requestingprograminterpreter:/lib/ld-linux.so.2]gccPATH否与“预备环境”一节相符。最终,应当收一下尾了。#rm-vttt.ca.out连续工作这个时候你的全的gcc建一次binutilsgccbinutilscgcccbinutils和gcc真正的与你的系统脱离了,而且你要用它们来完成接下来很多重要程序的创立工作。这次的创立如此之重要,你需要保证创立完成的binutils和gcc可以很好的工作。不要以为大且简单的工不用担忧这些,持,所以,你在binutilsgccTcl、ExpectDejaGNU,它们它们。Tcl,呵呵,和你家的电视机没什么关系。TclToolCommandLanguage的简称,即工具行,功能强大。编辑器、调试器、Tcl分析器,不但用于执行内建命令的例程,还可以使用你扩大〔定义的过程〕的库函数。ExpectTclShell〔开头、停顿等〕,而把交互的特性留给了用户。这意味着有些程序你不。有一些程序可以非交互的运行,但在很大程序上丧失了敏捷fsckUnixExpect其中的一些裂痕,还是非交互的,Unix功能的经典例子。DejaGNUFramework,如DejaGNU为前面所说的测试套件供给了一个统一的框架,它也是Tcl的一个扩展。另外,补充一句,大局部软件包,都会包含测试工具的,建议你执行以下,这样可以保证你公布的系统有很好的可用性。Tcl目前最版本的Tcl是8.5.0,但是Expect还没有跟上脚步,所以建议使8.4.17。源代码24MB左右的磁盘空间。解压缩源代码包,并进入源代码名目:#tar-zvxftcl8.4.17-src.tar.gz#cdtcl8.4.17现在为创立Tcl作预备工作:#cdunix#./configure--prefix=/toolchain开头创立:#make安装:#makeinstallTcl操作:#makeinstall-private-headers为了兼容性,还需要创立一个符号连接,如下:#ln-svtclsh8.4/tools/bin/tclshTcl#cd../../#rm-rftcl8.4.17Tcl可以测试一下:#TZ=UTCmaketest也并不是很关键。TZ=UTC(UTC),也就是格林尼治时间(GMT),但只是在运行测试程序的时候才这样设置,这将确保时钟测试正确。建议使用5.43。5.43bug,需要修复一下,补丁文件可能是这样的文件名:expect-5.43.0-spawn-1.patch。4~5MB首先解压缩源代码,进入源代码名目:#tar-jvxfexpect-5.43.0.tar.bz2#cdexpect-5.43打补丁,修Bug:#pathc-Np1-i../expect-5.43.0-spawn-1.patch为了让Expect也能够完全独立,还需要对它的configure文件做些修改:#cpconfigure{,.bak}#sed”s:/usr/local/bin:/bin:”configure.bak>configure作预备工作:#./configure--prefix=/toolchain--with-tcl=/toolchina/lib\--with-tclinclude=/toolchain/include--with-x=no各选项的含义是:--with-tcl=/toolchain/libconfigure,TclTcl,否则就会使用你系--with-tclinclude=/toolchain/include告知configure脚本,Tcl的头文件位置。--with-x=no不使用X图形系统支持,由于没有Tk〔Tcl的图形用户界面组件〕。开头创立:#make安装:#makeSCRIPTS=““install安装选项的含义:SCRIPTS=““Expectsources#maketest但是这也是不必要的,同样在某些环境下会失败。创立DejaGNU过程不到一分钟,需要6~7MB的磁盘空间。解压缩源代码包,进入源代码名目:#tar-zvxfdejagnu-1.4.4.tar.gz#cddejagnu-1.4.4过程很简洁,执行以下操作:#./configure--prefix=/toolchain#makeinstall你要测试的话,执行下面的操作:#makecheck最终别忘了收尾工作。其次次创立gccgcc和binutils了。这次的创glibc,这样就与你的系统彻底脱离了。绝工作的。为了保证这一点,你可以执行以下命令:#expect–c“spawnls”假设你得到下面的结果:Thesystemhasnomoreptys.Askyoursystemadministratortocreatemore.有什么意义。至于如何设置虚拟终端,已经超过本文的范围,请查看相关专业文档。闲谈不多说,首先应当创立gcc,到底这是一个编译器集,让它先工作起来似乎比较让人感到宽心。但这时候要留意的是,这次创立的gcc是独立于任何系统的,那么首先就要让它法规的一点,不要与任何系统有什么丝毫牵连。这里有一个惹祸的根苗——fixincludesgcc的编件,然后把修正后gcc专属头文件名目里。另外,由于gcc专属头文件名目会被优先搜寻,结果就是gcc使用的头文件是你系统的头文件,而不是你创立的那个。这个好心办坏事的东西,还是把它除掉算了。通过修改gcc/Makefile.in文件来完成这个操作。将“./fixinc.sh”用“-ctrue”替换。简单的命令行操作如下:#cdgcc-4.2.2#cp–vgcc/Makefile.in{,.orig}#sed‘s@\./fixinc\.sh@-ctrue@’gcc/Makefile.in.orig\>gcc/Makefile.ingcc,而是重复创立它几程序来第三次编译自身。在这种模式下,会默认带有一个-fomit-frame-pointerbootstrap模式后,这个选项模式时同样开启-fomit-frame-pointer编译选项,我们需要手文件,在“XCFLAGS=…”的内容后面添加“-fomit-frame-pointer”,可以通过下面简洁的指令完成操作:#cp–vgcc/Makefile.in{,.orig}#sed‘s/^XCFLAGS=$/&-fomit-frame-pointer/’gcc/Makefile.in.tmp\>gcc/Moolchainglibc,而且默认搜寻名目也不要再有/usr/include,为了保证这一点,需要执行以下操作:#forfilein$(findgcc/config-namelinux64.h-o-namelinux.h)docp-uv$file{,.orig}sed-e”s@/lib\(64\)\?\(32\)\?/ld@/tools&@g”\-e”s@/usr@/tools@g”$file.orig>$fileecho“#undefSTANDARD_INCLUDE_DIR#defineSTANDARD_INCLUDE_DIR0“>>$filetouch$file.origdone文件要好,这样可以保证的动态连接器在这次gcc的时候就glibc上。上述这些操作是格外重要的,gcc的创立,肯定要执行它们。build名目:#mkdirbuild#cdbuildconfigure脚本:#../configure–prefix=/toolchain\--with-local-prefix=/toolchain--enable-clocale=gnu\--enable-shared--enable-threads=posix\--enable- cxa_atexit--enable-languages=c,c++\--disable-libstdcxx-pch--disable-bootstrap各选项的含义是:--enable-clocale=gnu这个参数确保C++库在任何状况下都能使用正确的locale模块。--enable-threads=posix--enable- cxa_atexit用 cxa_atexit代替atexit来登记C++对象的本地静态和全局析构函数,这是为了完C++共享库在Linux发行版上也能使用。--enable-languages=c,c++同第一次一样,此时又参加了C++编译器的支持。--disable-libstdcxx-pch该选项使得不创立libstdc++预编译头〔PCH〕,它占用了很大的空间,而且还用不到它。--disable-bootstrap该选项关闭bootstrap模式。目前的gcc是默认开启bootstrap模式的。#makegcc的测试套件了,不过确定会有错误的,由于它太过全面了:#make–kcheck这里的-k安装程序:#makeinstall好了,这项重要的工作完成了。可以执行2.4章所介绍的测试方法测试一下,假设执行以下命令后:#readelf–la.out假设可以看到类似下面的内容:[Requestingprograminterpreter:/lib/ld-linux.so.2]这说明你的操作成功了,假设没有,你的麻烦就大了。好了,你已经完成了gcc的其次次创立工作,可以连续下面的工作了,最终别忘了收尾工gcc的源代码都删掉了。其次次创立binutils这次创立binutils的步骤与第一次根本一样:#cdbinutils-2.18#mkdirbuild#cdbuild#../configure–prefix=/toolchain\--disable-nls–with-lib-path=/toolchain/lib#make不太一样的是在执行configure脚本时,带有一个--with-lib-path选项。这个选项configure脚本在binutils创立过程中将传递给连接器的库搜寻路径设置为/toolchain/lib,也就是使用创立的程序库。接下来测试套件可以发挥一下了:#makecheck现在就可以安装了:#makeinstall最终我们还要再创立一次连接器ld,以待后面使用:#make–cldclean#make–cldLIB_PATH=/usr/lib:/lib#cp–vld/ld-new/toolchain/bin时已经说明白,不再复述。不要忘了收尾工作,这次binutils的源代码名目一同删除了。锦上添花到了这个阶段,你的toolchain制作算是告一个段落了。由于前面说过,glibc器、连接器大的测试套件支持工具。toolchain还不能脱离你现有的系统独立工作,除非你非C将它们产生的已经很简单了,这些工具大多维护,假设只的大多数软Unix虽然都属于类需要利用预编译量很可能是一任何问题,但是程。懒散是人类文明进步与进展的原动力。Unix世界的程序员经过几十年的不懈努力,困难卓我和其他全部人都因此而受益非浅。这其中就包括gcc、binutilsglibc,还有后面我将介绍给你的全部用于这个toolchain的工具。重要,到底你不make重要的软件创建工具。不管是自己进展工程开发还是安装应用软件,你都常常要用到make或makeinstall。于一个包括几百文件之间纷繁复gcc那对程序员来Makefile译工作,并且可以只对程序员在上次编译后修改正的局部进展编译。因此,有效的利用make和makefilemakemakefileLinux参考有关专业文档。另外一个与创立软件包有关的工具是configure脚本。Linux上的软件大多是可以运行在其他类Unix系统上的,而且它们之间或多或少的存在一些差异,这些差异对程序员是不透亮的,ccgcc而且,即便是在Linux上,不同的发行版本也可能存在一些差异,比方有些支持framebuffer,而有些可能的工作,他们交付给用户,生了,它来检Makefileconfigure编译选项等内OKconfigureshell脚本编写的,几乎可以在全部类Unix系统中运行,这就保证了它的通用性。随着configure的进展,渐渐的扩创立,那些可configure的工作变得越来越简洁了。前面介绍了Make工具和confiugre脚本。这两个重要的工具是你在创立Linuxgcc、binutilsglibc一样,否则你就无MakeconfigureMakefileconfigureshellshellconfigureNcurses、Bash、CoreutilsDiffutilsFindutilsGawkGettextGrepGzipMake、Patch、的,由于它们之间不存在太多必要的依靠关系。NcursesSystemVRelease4.0(SVr4)中CURSES这是一个可自由。简而言之,它是一个治理应用程序在字符终端显示的函架可以在字符模式下产生美观的界面。它供给了一些创立窗口的函数。而它的姊cursescurses面板和表单〔forms〕的应用程序。窗口可以被独立治理,例如让它滚动或者隐蔽。能。BashBourne-AgainShell的缩写,这个Shell是BourneShell的增强版本,也是基GNUshellStevenBourne出来的,为了sh。而后来另一个广为流传的shell是由柏克莱大学的BillJoyBSDUnixshell,shell的语法有点类似C语言,cshSun主机势力相当的浩大,而Sun主要是BSDCshellshell之一。BashGNUsh。所以,可想而知的,目前几乎全部的Linux公布都是使用bash作为治理核心的主要shell。假设没有shell,configureBzip2Burrows-Wheeler块排列文本压缩算法和霍夫曼编码来压缩文件。压缩比要大于gzip工具使用的基于LZ77/LZ78的压缩算法(如gzipPPM说明它使用了bzip2bzip2Coreutilscp、ls、mkdir、catshelltoolchain有这些常用命令。Diffutils成软件的补丁。它包括cmpdiffdiff3sdifftoolchain应当拥有它们。Findutils并可以显示、更的状况下,结果并不行靠)。configure脚本在做一些系统检测时会用到,所以你的toolchain。Gawk文件里的内容做awkCPascal等语言写程序来完成上述的动作,不但不便利还需要花费大量时间,所写的程序也会很大。awkawk法等内容的说明已经超出本文的范围,请读者阅读专业著作。Gettext都承受英语英语。假设变。然而,需要被其他语期望程序的界种方法可以让语言。正是基开发出真正些集成的工具要说明的是,gettexttoolchain要支持多语言,gettextGrep〔globalsearchregularexpression(RE)andprintouttheline,全面搜寻正文本,并把Unixgrepgrepegrepfgrepegrepfgrep的命令只跟grep有很小不同。egrepgreprefgrepfixedgrepfastgrep,的字面意义,grep。它功能更强,可以通过-G、-E、-F令行选项来使用egrepfgrep的功能。ShellgrepGNUgzip的根底是是LZ77与哈夫曼编码的一个组合体。文件名以.gz源代码包就是采GzipMake就不用多说了,前面已经有很具体的介绍了,没有它你将寸步难行。diffdiff多项选择项,但是该示两个原始文下的源代码patchdiffpatch最初源自十几Unix一样,直到现在,patch还在广泛应用。我想你的toolchain没有理由不包含这个工具吧。那以后,它逐步进展成为一种全功能的程序设计语言,特别是在各种计算平台上,它被用作Web编程、数处理小的日常工作的完善工具,这是它的设计初衷。Perl人由于需要toolchain有关Perl的语法等内容超过了本文的范围,请读者参考其他专业著作。Sed(StreamEDitor)UNIX用者无需直接20编辑动作。此sed编辑那些需要不串等。这些emacs〕用手动的方式修改文件,sed较为省力。前面的内容,有关修改文件内容的操作,我使用的都是sed。Tar可以为文件和名目创立档案。利用tar,用户可以为某一特定文件创立档案初被用来在磁tar可以把一大个文件以便于一个文件,这对于备份文件或将几个文件组合成为一个文件以便于网络传输是格外有用的。Tarbzip2gzip,LinuxTarbzip2gzip.tarbzip2产生的包以.tar.bz2gzip.tar.gzUtil-linux分区和治理硬盘驱动器。你的toolchainLinux系统时需要挂接proc不一一列举了。包,创立安装不仅仅是为了你细心体会去吧。完毕语MagicLinux而来阅读这么生涩的文章。本章前局部具体讲述了如何创立一个gccToolchain技术不仅仅在制作Linux公布时起到很大作用。而且在诸如嵌入式开发等那些需要MagicLinux开发toolchain的制作,同样适用于其他方面应用的toolchain的制作,不过是给定的一些编译选项有些变化。假设读者你要了解的问而完全自己做感觉吃力的话,LFS,“:///“要全面,而且更为专业,本文的大局部内容也是参考它的。下一章我将让你了解Linux的构造,让你对Linux有一个彻底的了解。MagicLinux一旦你拥有了一个toolchain,就拥有了制作MagicLinux的初级武器了。这个时候你可能已经开头辂于你还不了解如何使用toolchain来制作MagicLinuxLinuxLinux有一个彻底的了解,为正MagicLinux作预备。其次章Linux的文件组织构造LinuxUnix操作系统与你所熟知的Windows有很大的不同,其中Unix操作系统的文件治理方式,它只有一个文件树,以一个树根“/”为起点,全部的文件和外部设备都以有着格外严格的组织下面将介绍的内容是相全都的。Linux操作系统下,众多软件都被安装在既定的位置,它们的文件名、文件内容、名目构造等都作伙伴,相互协作完否安装了自己需要的结果。为了实现这些目的,Linux必需严格的组织文件层次关系,且形成一种标准行为,才不至于由于混乱而使得用户以及软件系统对操作系统产生恐慌。这充分表达了Unix的传统——简洁。MagicLinuxLinuxMagicLinux的开发者,生疏Linux的文件组织构造也很自然的成为你必修的根本功课,由于这打算了你制作出来的系统能否被其他人所承受,以及能否正确运行那些成熟稳定且应用广泛的软件产品。根本组织原则深入理解这些原则之后,不由自主的做出与现今沿袭下来的根本全都的布局来。依据各文件在系统中所起的作用,可以划分为是否共享与是否可变两类属性。一般来说,不肯定件则可以看作为非共必需要存在可读写存储设备上的文件就是可变的。Unix操作系统极强的敏捷性与可扩展性。由于承受单一储设备通过某种网络就不在你的计算机里,作变得轻松且合理,大功能。其实这也是的一个设备来存储大而这种共享不能解决不能供给应别人使用,自然的也就是非共享文件了。Unix系统供给了很大的伸缩性,可以简洁的将它们始终到很多非通用只读设备上,而那些样便于你最大限度的期望他们那些常用的程序可以很简洁的被一些恶意程序所修改,这点Windows上的用户们是感同身受的。Unix系统的文件组织构造不是格外清楚,/usr和/etc名目混合着大量的可变与不行变的文件。由此,引入了/var名目,将/usr名目下的可变文件全部转移至/var名目下,这就保证了/usr名目可以单独放在其他设备上且以只读方式被挂接在树根上。目前/etc名目下的可变文件还没有完全转移至/var可共享不行共享名目下,但是从技术角度看,这也只是一个时间问题。可共享不行共享不行变/usr/etc可变/opt/var/mail/boot/var/run/var/spool/news/var/lock2-1根文件系统根文件系统保存在根分区,它担负着系统启动、修复、更、恢复等重要任务。当你启动系统成功后,可以执行以下命令查看树根的内容:#cd/#ls结果可能是下面的内容:binbindev lib media optrootsystmpusrboot etc homemntproc sbinsrvvar比方/usr、/var等,而且/sys和/proc根本不在任何外部存储设备上,而是在内存中。这里,将直接挂接在树根“/”上的设备叫做根设备,可能是内存,也可能是磁盘,假设是磁盘的系统的根源。可谓有有唯一的选择——重装。盘分区之后。这就要求它必需包含必要的工具〔如init、mount等〕,配置信息〔如inittab、fstab等〕以及其他重要的启动数据。还应当包含引导器的配置信息,但与具体引导器的不同而不同,有的需要有的可以放在其他地方。证有阅历的系统治理员能够重建被毁坏的局部。以前的备份恢复系统的运行。这些备份往往保存在光盘、磁带等大容量外存上面。量保证根分区的精巧。的配置文件,如:内hostname络系统共享。保证网这也使得工作站可它付诸了你的心血,装文件,你可能会发给你的宽阔用户了。种致命问题的发生。他位置可以为任何软系统治理员需要保根文件系统必需包含以下名目,某些可以是符号连接:名称名称功能bin重要的可执行文件,shell命令bootboot引导器配置文件,内核等。dev设备文件etc系统专有配置文件lib重要的共享库和内核模块media可移动设备挂接点mnt其他文件系统的临时挂接点opt附加应用软件包sbin重要的系统可执行文件srv本系统供给的用于效劳器的数据tmp临时文件usr文件系统的其次层var可变数据2-2-1容下面会逐一介绍。候才需要。不过对于大多数通用系统它们都是需要的。名称名称功能home用户自己的名目lib<qual>其他各式的重要共享库,比较少见rootroot用户的专知名目2-2-2它们的具体内容也会在下面内容进展具体介绍。子名目所必需包含的内容。/usr和/var由于本身的简单性,我会以单独的章节介绍它们。/bin/bin名目下包含了用户命令文件,也就是shell命令,供全部用户使用。不仅仅是用户,脚本程序也要使用它们。即使其他文件系统还没有被挂接时,它们也要能够工作。/bin名目不得包含任何子名目,下表列出了它必有的内容,有些文件可能是一个符号连接:名称catchgrpchmodchowncpdatedddfdmesgechofalsehostnamekill
功能转变文件的所属组转变文件的访问权限复制文件和名目转换并复制文件打印或掌握内核的消息缓冲显示一行文本显示或设置系统的主机名向进程发送信号lnln创立文件连接login开头系统上的一个会话ls列知名目内容mkdir创立名目mknod创立块或字符设备的专用文件more分页显示文本mount挂接一个文件系统mv移动文件或更改文件名ps查看系统进程状态pwd打印当前工作名目名rm删除文件或名目rmdir删除空名目sed一个流式文本编辑器shBourne命令shellstty转变或打印终端行设置su转变用户标识sync刷文件系统缓存true什么也不做,表示成功umount卸载文件系统uname打印系统信息2-3-1假设/bin/sh不是真正的Bourneshell,它必需连接到一个真正的shell命令上,既可以是硬连接也可以是软连接。例如,调用shbash时,bash会有不同的行为。使用符号连接也使得用户简洁地了解到/bin/sh不Bourneshell。“[”和“test”命令必需被放在一起,既可以在/bin名目下也可以在/usr/binshell程序内部实现了。数公布都会局部的提供它们。名称名称功能cshCshelled“ed文本编辑器tartartar打包工具cpiocpio打包工具gzipGNU压缩工具gunzipGNU解压缩工具zcatGNU解压缩工具netstat网络统计工具pingICMP网络测试工具2-3-2gunzipzcatgzip/bin/csh可能是/bin/tcsh或/usr/bin/tcsh的符号连接。tar、gzip和cpio为系统供给了恢复力量,反之,假设不考虑从根分区恢复系统的话,这些程序可被无视〔例如一个只读片内根系统,通过NFS挂接/usr名目〕。假设要通过网络ftp或tftp存在于根分区。/boot需要的全部内容。换句话说,/boot名目下存储的数据用于内核开头执行用户级程序之前的操作。这里也可能包含备份的主/”或“/boot”名目下。/dev/dev/dev中的设备需要手工创建,/dev必需含有一个MAKEDEV的命令,它能够创立需要的设备文件。同时也应当为任何本地设备包含一个MAKEDEV.local文件。假设需要,MAKEDEV必需具备为任何觉察与系统的设备创立文件的权限,而不限于那些特定的安装实现。/etc/etc包含了系统特有的配置文件。所谓配置文件,就是用于掌握程序运行的本地文件,它肯定是不行变文件,而且是可编辑的,那些二进制可执行文件是不能作为配置文件的。/etc下根本没有二进制文件,下表中列出的名目需要包含在/etc下,有些可能是符号连接。名称名称功能opt/opt名目下各软件的配置文件X11XWindow系统的配置文件,可选。sgmlSGML的配置文件,可选。xmlXML的配置文件,可选。2-3-3当相关子系统安装后,以下文件必需放在/etc中,有些也可以是符号连接:名称名称功能csh.loginexportsfstabftpusersgetewaysgettydefsgrouphost.confhostshosts.allowhosts.denyhosts.equivhosts.lpdinetd.confinittabissueld.so.confmotdmtabmtools.confnetworkspasswdprintcapprofile
CshellCshell时有效。NFSNFS支持时有效。件系统时需要。FTP守护进程的用户访问掌握列表。routed的网关列表。getty程序的配置文件。用户组列表文件。主机名静态信息。允许访问本机的IP地址列表。rlogin,rsh,rcp。inetd守护进程的配置文件。init程序的配置文件。搜寻共享库的名目列表文件。机还是远程计算机。文件系统的动态信息,记录当前挂载的文件系统。mtools程序的配置文件。用户密码文件。ldp打印机的性能数据库。shshell登陆的全局初始化文件。protocolsresolv.confrpcsecurettyservicesshellssyslog.conf
网络协议定义文件。DNS域名解析的配置文件。RPC协议定义文件。RootTTY访问掌握文件。shell路径名。syslogd守护进程的配置文件。2-3-4这里,明显mtab就不适合/etc内单纯为不行变文件的原则,这在今后会逐步得到解决。MagicLinux/etc/opt名目下的内容是为/opt装在/etc/opt/<subdir>下,其中的<subdir>与/opt下的对应软件包名目一样。/etc/X11XWindowsXWindows主机相关配置文件全都在这里。这使得在/usr以只读方式挂接时,可以局部掌握XWindowsXWindows/etc/X11名称XconfigXF86ConfigXmodmapxorg.conf
功能XFree86早期版本的配置文件。xdm和xinit所要使用的键盘映射。Xorg的配置文件。2-3-5xdm以及别的程序〔如窗口治理器〕预备的。那些只有名
除非有商定俗成的字文件名相全都。/etc/sgml和/etc/xmlSGMLXML的配置文件,这是可选的。定义它们高级参数的根本配置文件就安装在这里。/home/home为用户专知名目,每个用户都会在/home名目下有其对应的子名目,而且这个子名目一般与他的用户名一样。没有任何程序会依靠于这个名目。存在他的home名目中,一般以“.”开头〔即隐蔽文件〕。假设某个程序需要创立多个配置文件,它就会在用户的home名目下创立一个以“.〔即隐蔽名目〕,将这些配置文件放入名目中。这种状况下,配置文件不再需要以“.”开头了。/lib/lib名目里存放着必备的共享库和内核模块。在系统启动和运行根文件系统上的组文件〔可以是文件,也可以是符号连接〕:文件名组合文件名组合功能libc.so.*C动态链接库。ld*运行时连接器/加载器。2-3-6假设安装了某个C预处理器,由于历史缘由,/lib/cpp必需是它的连接。modules子名目必需存在于/lib名目下,它是内核可装载模块的存放位置。/lib<qula>/lib目录来单独保存必需的共享库。一般的,在处理这个问题时会在lib后面追加一些修AMD64系统的/lib64等。这种状况下就不再需要/lib<qula>/cpp了。象PPC64、s390x、sparc65AMD646432位程序的平台/lib<qula64位库放置在中,而32位库则照旧放置在/lib32位程序的平滑兼容。完64位IA6432/lib64位库都要放置在/lib中。/mediaU盘等可移动设备,其各子名目挂接各种类型这些可移动设备挂接在/mnt子名目中,但这与传统不符,由于/mnt实际上只是临时挂接点。下表的内容肯定要消灭在/media名目中,具体内容与系统实际状况有关。名称名称功能floppycdromcdrecorderzip
软盘驱动器CD-ROM光盘刻录机Zip磁盘驱动器,现在比较少见2-3-7假设系统中有不止一个同类的驱动器,则在其挂接类型名目名后面带有一个0起始的数字,比方“cdrom、cdrom、”。/mnt局临时名目在系统不需要它的时候会被其他东西占用。/opt/opt下拥有一个自己的目录,名名称必需是在Linux件名,到底同一个厂商可以有多个软件。/opt/bin、/opt/doc、/opt/include、/opt/info、/opt/lib和/opt/man是保存给本地系统治理〔连接或副本〕,系统治理员可以工作。用户调用的程序必需放在软件包名目下的bin子名目中。假设包含Unix指南页,则要将它们放在对应软件包的share/man子名目下,而且也必需拥有与/usr/share/man名目软件包有可变文件,必需将这些可变文件安装在/var/opt名目下。见/var/opt一节,会有更具体的介绍。本机专有的配置文件必需安装在/etc/opt名目下,见/etc一节的介绍。没有哪些附加软件包会将它们的文件放在/opt、/var/opt和/etc/opt之外,除非那个放在/var/lock中,设备文件必需放在/dev中。一些Linux发行版可能在/opt名目下安装了软件,在没有征得本地治理员同意时,千万不要擅自更改或删除这里的软件。为附加软件供给/optUnix/opt目录的使用应当做些少许的限制,由于公布的软件与本地安装软件可能会发生冲突,尤其那些使用固定路径的软件。/root是否为root帐户供给专有home过还是建议供给这个/root名目。/sbin必备的系统软件存放处。用于系统维护的软件和某些只限root用户使用的命令存储在/sbin、/usr/sbin以及/usr/local/sbin名目下。/sbin名目存储的则是那些在系统启动、恢复、复原以及修复过程中必备系统工具,也是对/bin下内容的补充。那些在/usr被挂接之后才需要的程序一般可以放在/usr/sbin名目下。用户自行安装的系统管理程序应当放在/usr/local/sbin名目下。下表所列的各种命令应当消灭在/sbin名目下。名称shutdownfastbootfasthaltfdiskfsckfsck.*gettyhaltifconfiginit
功能磁盘分区表维护工具。文件系统检测与修复工具。getty程序,设置终端机模式、连线速率和管制线路。停顿系统运行。网口配置工具。系统初始化进程。内核调用的第一个用户进程。mkfsmkfs创立文件系统,也叫格式化。mkfs.*创立特有的文件系统。mkswap格式化交换分区。reboot重启动系统。routeIP路由表维护工具。swapon开启页交换。swapoff关闭页交换。update周期性的刷文件系统缓冲的守护进程。2-3-8/srv某些效劳进程启动之后,它们需要读取的数据会放在/srv名目中。供给/srv名目的用户的数据应当放在那个用户的home名目下。目前还没有标准的/srv下子名目的命名方法。有一种方式是依据协议构造/srv下的数据,如ftp、rsync、www、cvs等等。对于大型系统,可能利用功能管辖范围构造/srv下的内容,如/srv/physics/www、/srv/compsci/cvs等。它的具体内容在不同主机间会有很大的差异,因此,没有程序会依靠于/srv下特定的子名目构造,也没有那个程序必需在/srv下保存数据。不过,/srv名目始终会作为效劳进程数据存放地而始终存在着。/tmp/tmp用对/tmp/tmp目录下的内容。/usr名目组织构造/usr是整个文件系统的其次个主要区段。它既是可共享的也是只读的,这意味着/usr可以共享于多种主机之间,但不能写入。任何主机专有的或随时间变化的信息只能存放在其他地方。即使是大型软件包,也不得占用/usr下的一个独立子名目。下表所列的名目或目录的符号连接要求消灭在/usr下:名称名称功能bin大局部用户命令。includeC/C++程序头文件名目。liblib程序库。local用户自行安装的程序存放于此。sbin非重要的系统程序。share体系构造独立数据。2-4-1下表所列名目是可选的,依据具体软件安装状况而定:名称名称功能X11R6XWindow11第六版games育教消遣程序lib<qual>src源代码。sbinsbin非重要的系统程序。2-4-2系统,它占有了一个独立子名目,这是历史缘由导致的。为了与老系统保持兼容,可以在/usr名目下创立以下符号连接:/usr/spool/usr/spool—〉/var/spool/usr/tmp—〉/var/tmp/usr/spool/locaks—〉/var/lock2-4-3这是由于这些名目早先是在/usr下的,后来转移到了/var名目下。一旦系统不再需要那些符号连接了,可以直接删除。/usr/X11R6该名目保存给XWindow11第六版和与其有关的文件的。为了使XFree86与其它系统的XWindow/usr/X11R6名目就肯定要有下表中的符号连接:/usr/bin/X11/usr/bin/X11—〉/usr/X11R6/bin/usr/lib/X11—〉/usr/X11R6/lib/X11/usr/include/X11—〉/usr/X11R6/include/X112-4-4通常,不得利用这些符号连接安装或治理软件,它们仅供用户使用。另外,在X11的那个版本。保存在/usr/X11R6/lib/X11的主机专属数据应解释为示范文件。应用程序需要了解本机信息时,必需参考/etc/X11下的某个配置文件,虽然这个配置文件可能是/usr/X11R6/lib下某个文件的连接。/usr/bin系统中绝大多数的可执行文件都放置在这里。下表所列的名目必需放在/usr/bin下,除非没有安装与它们相关的系统:名称名称功能mhMH邮件处理系统的命名所在名目。/usr/bin/X11 假设存在/usr/X11R6/bin名目,肯定是它的符号连接。2-4-5下表所列的文件或符号连接也必需放在/usr/bin名目下,除非你没有安装这些软件:名称名称功能perlperl语言解释器。python最近格外流行的python语言解释器tclsh古老而特别的tcl解释器。wish图形界面的tcl解释器。expectTcl语言格外经典的扩展局部,实现程序的自动交互。2-4-6或〔shell脚本的第一行往往带有一个!#<path>类型的注释Bournshell和Cshell解释器已经被锁定在/bin名目中了,可是Perl、PythonTcl却常常被放置在不同的地方,于是/usr/bin下的内容往往是到其实际位置的符号连接。/usr/include标准头文件存放名目,系统内全部通用的C语言头文件都要放置在这里。假设有/usr/X11R6/include/X11存在,则肯定要建立/usr/include/X11这个符号连接。/usr/lib/usr/libshell脚本独由于历史缘由,假设有/usr/sbin/sendmail存在,则必需在/usr/lib下创立sendmail符号/lib/X11/usr/lib下创立X11/lib/X11也是一个符号连接也要这样做。/usr/local/usr/local会把/usr/local/usr中也有同样的东西。下表所列的名目或符号连接必需消灭在/usr/local中。名称名称功能bin局域性可执行文件。etc局域性软件的配置文件名目。games局域性育教消遣可执行文件。includeC头文件。lib局域性程序库。man局域性在线指南。sbin局域性系统治理可执行文件。share局域性体系构造无关数据。src局域性源代码。2-4-7默认状况下不会再有其他的子名目了。/usr/local/etc也可能符号连接到/etc/local,这更适用于将全部配置文件放置在/etc下这一规章。/usr/sbin修复系统,以及挂接/usr名目的系统治理程序都必需放置在/sbin名目下。/usr/share体系构造下的操作系统。例如,某个站点可能由i386、Aplpah和PPC三种体系构造平台构成,但是它们可能共同维护唯一的一个挂接自某处的/usr/share名目。需要留意的是,虽然/usr/share可以共享于不同体系构造之间,但必需保证它们运行的是不同公布平台的一样操作系统。任何程序或软件包包含或需要的不需要修改的体系构造无关的数据都应当保存在/usr/share〔假设安装的是局域性软件,应当是/usr/local/share〕名目中。同时也建议/usr/share/usr/share/games下的玩耍数据必须是纯粹的静态文件,类似于分值、日志等文件,必需放置在/var/games中。下表所列名目或符号连接必需消灭在/usr/share中:名称名称功能man在线指南。misc体系构造无关的其他数据。2-4-8下表所列名目或符号连接,与你所安装的软件有关,假设有则必需消灭在/usr/share中:名称名称功能dict单词列表。doc其他文档。games/usr/games的静态数据文件。infoGNUInfo系统的主名目。locale本地信息。nls本地语言支持的消息名目。sgmlSGML数据。terminfoterminfo数据库名目。tmacgrofftroff宏。xmlXML数据。zoneinfo时区配置信息。2-4-9groff、perlghostscripttexmf/usr/lib下,出于同样的缘由,/usr/share/games也可能会被这样处理。/usr/share/man包括/usr/share/man名目下的组织构造。/usr/share/man/”和“/usr”下大部<mandir>/<locale>/man<section>/<arch>这一<mandir>、<locale>、<secton>和<arch>。/usr/share/manman1、man2、…、man8这样的子名目,它们的具体分工如下:man1:公共可用的命令或软件的指南页面保存在这里。〔WindowsAPI〕的说明保存在这里。man3:库函数的说明信息保存在这里。man4/dev名目下的设备文件和供给网络协议支持的内核接口等。man5序输出文件和系统文件。man6这里。troff等文本处理宏的信息。man8户使用。/usr/share/man/<locale>中,除非它们里面没有任何内容。这是为了供给多语言版本支持而供给的,其中<locale>就代表了不同的语言。不过非<locale>en、fr、ko、ja等,具体资料还请参考其他文献,这里就不一一列举了。假设系统只使用一种语言的话,<locale>是可以无视的。可能被保存为/usr/share/man/<locale>/man8/i386/ctrlaltde1.8这个文件。/usr/local下的软件的在线帮助信息保存在/usr/local/man中。X11R6的保存在/usr/X11R6/man中。它们的组织构造与/usr/share/man是一样的。18即为前面表达的<section>件,系统XWindow就会使用.x作为后缀。其他位置的帮助文档,供给多语言版本支持时,同样遵循/usr/share/man的多语言版本支持规章,包括后面将要表达的/var/cache/man名目。/usr/share/misc那些不需要在/usr/share名目下拥有自己名目的应用程序,会将它们的体系构造无关的数据放置在这里。下表所列内容就是会消灭在/usr/share/misc名目下的内容:名称名称功能asciiASCII码表。magicfile命令使用的特征符号表。termcap终端性能数据库。termacp.db终端性能数据库。2-4-10/var名目组织构造/var名目包含着系统中绝大多数的可变数据,如系统日志、spool名目与文件等。/var/var/logs/var/lock和/var/run。固然,某些内容是可以共享给其他系统的,特别是/var/mail、/var/cache/man和。/var的创立就是为了使得/usr可以只读方式被挂接成为可能。/usr里面的东西一旦有被写入的要求,则必需转移到/var下。假设是无法为/var安排一个单独的分区,通常更好的选择是将/var转移至/usr名目下〕。不过即使这样,也千万不要直接将/var连接到/usr,由于这就很难区分/var和/usr了。正确做法是将/var连接至/usr/var。通常状况下,应用程序不得在/var顶层添加任何名目。这个位置只留给那些影响到整个系统的软件,而且还需要经过Linux社团协商之后打算是否添加。下表所列名目或符号连接是/var下必需具备的内容。名称名称功能cache应用程序的缓存数据。lib可变状态信息。locallocal/usr/local的可变数据。lock锁文件。log日志文件与名目。opt/opt的可变数据。run与当前运行进程有关的数据。spoolspool应用程序数据。tmp系统重启动期间起到保护作用的临时文件。2-5-1成与历史或局部性规章产生冲突:/var/backups/var/cron/var/msgs/var/preserve当你的系统安装了某些程序,则下表所列的名目或符号连接必需放置在/var中。名称名称功能account记录进程的运行状况。crash系统崩溃产生的dumps。games寓教于乐程序的可变数据。mail用户邮箱文件。yp网络信息效劳〔NIS〕数据库文件。2-5-2/var/account内Unixlastcommsa程序。/var/cache算或I/O/var/spool除缓存文件不会造成数据丧失错误。/var/chace有缓〔通常是由于磁盘空间有限,才会手工删除缓存文件〕。另外,缓存数据没有格式要求。上,而且还可以从/var的其他名目备份策略。这是/var/cache存在的意义所在。/var/crash虽然这个名目不能被Linux系统所使用〔Linux不支持系统崩溃dumps〕,但是它可Unix系统所使用。/var/games/usr中那些寓教于乐类程序的可变数据存放于此,而那些静态数据,如帮助文本,级别定义等内容,必需放在别处,最合理的就是/usr/share/games下。/var/lib序为,用户不应当通过修改/var/lib下的文件来完成。序的所处的状态的。一个应用程序〔或一组相关联的应用程序〕必需为其状态数据占有/var/lib下的一个子名目。不过还有一个misc子名目,特地供给应那些不需要一个子名目的程序。其他子名目应仅供给应那些包含在发行版中有这一需求的应用程序。/var/lib下的各子名目的命名应当被所公布的全部软件包支持,固然,不同的公布版可以使用不同的命名方式。/var/lock锁文件必需被保存在/var/lock名目构造中。件,最初可能放在/usr/spool/locks或/usr/spool/uucp中,现在,必需放在/var/lock中。锁为“LCK..ttyS0”。锁文件的内容组织格式,必需是HDBUUCP锁文件格式。HDB格式以10字节1230,它的锁文件将包含11字符:空格、空格、空格、空格、空格、空格、1、2、3、0和换行符。/var/log中。下表所列的文件或符号连接应当消灭在/var/log中,不过这取决于系统中安名称功能lastlog每个用户上次登陆记录。名称功能lastlog每个用户上次登陆记录。messagessyslogd产生的系统消息。wtmp全部登陆于登出地记录。2-5-3/var/mailboxUNIX邮箱格式存储。mailspool必需能够访问/var/mailboxmailspool文件取自具体用户。此目录移自Unix实现相全都。这一转变,使得一个Unix实现成为可能。更为重要的是,这不mailspool/var/mail中。/var/opt/opt下软件包的可变数据都应当安装到/var/opt下对应的子名目中去,这个子名目名称应当与/opt下的子名目名称相全都,里面内容的组织构造没有特别要求。/var/run从系统启动开头至当前的系统运行状态信息就保存于此。该名目下的文件,在系统启动进程执行开头,必需被清空。程序可以在/var/run下拥有一个子名目;鼓舞程序使用不止一个运行时文件。进程标识文件〔PID文件〕,原来是放置在/etc中<程序名>.pid”,例如:PIDcrond.pid。PIDASCII码的数字字符描述进程标识crondID25,则/var/run/crond.pid将包含三个字符:1、2和换行符。记录当前谁正在使用系统的utmpUnix-domain套接字的系统程序,必需将它们的套接字文件放置在该名目中。/var/spool/var/spool中的数据就是供以后用的〔可以被程序,用户,治理员处理〕,一旦被处理完毕,就会被删除。/var/spool,不过这取决于系统中安装的具体软件。名称名称功能lpdspool名目。mqueue邮件待发队列。newsspool名目。rwhoRwhod文件。uucp2-5-4/var/tmp/var/tmp名目使得应用程序要求在系统重起期间保护临时文件或名目成为可能,因此,保存在/var/tmp中的数据,比/tmp中的数据得到更多的保护。/var/tmp中的文件或名目,在系统启动时不得删除。/var/yp网络信息效劳(NIS)SunYellows〔YP〕,其可变数据,必需保存在/var/ypNIS(YP)的标准名目,而且几乎被它所独占。(未完 待续 )MagicLinux虚拟文件系统前面几节所介绍的名目和文件,都是真真正正、实实在在的存储在具体的外部一个磁个文件储设备中找到,由于它们都在内存中。proc件系统proc是一个重要虚拟文件系统,通过它里面的一些文件,可以猎取系统状态信息并修改某些系统的配置信息。proc文件系统本身不占用磁盘空间,它仅存在于内我们在般这样这样的系统调用来完成。系统调用接口对于一些功处理。计资料等,我们更需要一个比较简洁易用的接口来取得它们。proc文件系统就是这样的一个接口,我们可以简洁的用cat、strings程序来查看这些信息。例如,执行下面的命令:#cat/proc/meminfo你可能会得到如下结果:MemTotal:254272kBMemFree:104416kBBuffers:23940kBCached:103972kBSwapCache
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 墓碑雕刻行业市场调研分析报告
- 碳酸水用虹吸瓶细分市场深度研究报告
- 自动配页机项目运营指导方案
- 蓄电瓶项目营销计划书
- 保险客户服务行业经营分析报告
- 目录册市场分析及投资价值研究报告
- 低碳出行行业市场调研分析报告
- 广告代理服务行业经营分析报告
- 自助取款机ATM细分市场深度研究报告
- 定制旅行品牌推广行业营销策略方案
- 高压氧疗法应用于神经系统疾病的研究进展
- 墙面绘画策划方案
- 高校科研成果与技术转移转化
- 物流运输生产能力评估报告
- 给排水实习报告篇
- 教育魅力:青年教师成长钥匙
- 设立供应链管理公司组建方案
- 权变管理理论
- 中班健康课件《生气和快乐》
- 4.2海水的性质第一课时教学设计高中地理人教版必修一
- 年度人力资源预算编制
评论
0/150
提交评论