《2022年从源代码打造一个最小化的Linux系统实作指南 .pdf》由会员分享,可在线阅读,更多相关《2022年从源代码打造一个最小化的Linux系统实作指南 .pdf(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、从源代码打造一个最小化的Linux 系统实作指南从源代码打造一个最小化的linux系统实作指南作者: gregokeefe,gcokeefepostoffice.utas.edu.au译者: 梁昌泰linuxratgnuchina.orgv0.8,sep 2000 翻译日期:2001 年 01月第 0.8 版以下就是从源代码中打造一个最小化的linux系统的操作说明 它曾经是 从加电启动到bash 提示符 (frompowerup tobash prompt) 的一部分但是我将它们分离开来,以便使得它们更简短而更为集中化我们在此所要打造的系统是非常小的,而且并不准备作为工作产品来使用如果您想从
2、头开始打造一个有实际用途的系统,请参阅 gerardbeekmans所撰写的linux空手道实作指南篇(linuxfrom scratchhowto) 。1.您所需要具备的条件我们首先要安装一个linux发行套件比如小红帽 (redhat) 到一个分区上,然后使用它来在另一个分区上打造一个新的 linux系统我将我们所要打造的系统称为目标系统(target)而把我们所使用来打造新系统的系统称为源头系统 (source) 可别把这个源头 (source) 系统同我们同时使用的源码(sourcecode)相混淆了哦 :)因此,您得需要一台具有两个独立分区的机器如果可能,请尽量使用一台没有重要资料在
3、里头的机器,以免数据受损 您可以使用一个已经存在的linux系统作为源头系统,但是我并不推荐这种方式如果您不慎遗漏了我们打造的指令的某些参数,您有可能会意外地在这个系统上安装了一些没有必要的东西,有可能会导致不兼容和冲突。旧型的 pc 机硬件, 大部分的 486 机器或者更早的机型,其 bios 都有一些极其烦人的限制它们没有办法读取硬盘超过前512 兆之后的空间 当然, 这个对于 linux来说并不是什么大问题,因为只要 linux能够引导启动了,将使用 linux自己的磁盘io ,略过 bios的调用 但是为了能够让这些旧型机器能够引导linux , 那么 linux内核必须存放在硬盘的前
4、512 兆之前的某个位置 如果您正好有这么个旧型机器,您得准备好一个独立的且完全在前 512 兆范围内的硬盘分区,并将其挂载为/boot 其它的分区就可以在任何位置,可以任意处理而不必担心是在硬盘的什么位置了。上一次我打造这个系统时,所使用的源头系统是小红帽6.1(redhat6.1) ,我安装了基本系统,附加有以下软件包* cpp (c+编译器)* egcs (增强型 c 编译器)* egcs-c+(增强型 c+语言编译器)* patch(打补丁程序)* make (编译批处理解释器)* dev86 (设备文件包)* ncurses-devel(ncurses库开发包)* glibc-dev
5、el(glibc库开发包)* kernel-headers(内核源码头文件包)我还安装了x window 视窗系统和mozilla网络浏览器以便更轻松地阅读文档,而实际上这两个东东并不是名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 10 页 - - - - - - - - - 必要的在我竣工之时,这个源头系统大概使用了350兆的磁盘空间 (看起来是多了一些,可是我还在纳闷为什么呢) 。竣工之时的目标系统占用了650 兆磁盘空间,但是这个数值包含了所有的源码以及中途打造出
6、来的文件如果空间比较紧凑,您应该在每个软件包都打造完毕之后执行一下make clean 来清除临时文件当然了,我对这个也是有点吃惊的。最后, 您的准备好我们所要用来打造系统的源码包这些就是我在本文所讨论的软件包这些软件包都可以从源码盘里面找到,或者从国际互联网上找到我会给出美国的站点和位于澳大利亚的镜像站点的地址。* makedev (设备生成器包)美国站点 :ftp:/tsx-11.mit.edu/pub/linux/sources/sbin另外一个美国站点 :ftp:/sunsite.unc.edu/pub/linux/system/admin* lilo(linux引导器包)美国站点:
7、ftp:/lrcftp.epfl.ch/pub/linux/local/lilo/澳大利亚:ftp:/mirror.aarnet.edu.au/pub/linux/metalab/system/boot/lilo* linux内核包 (kernel)使用 主页上所列举的镜像站点而最好不要使用美国站点站点下载,因为这些站点通常是超负荷运转的。美国站点: ftp:/ftp.kernel.org/pub/linux/kernel澳大利亚站点:ftp:/kernel.mirror.aarnet.edu.au/pub/linux/kernel/* gnu libc库包 其本身,以及liuxthreads
8、线程附加库可在以下地址下载到美国站点 :ftp:/ftp.gnu.org/pub/gnu/glibc澳大利亚站点 :ftp:/mirror.aarnet.edu.au/pub/gnu/glibc* gnu libc附加库包您可能还会需要linuxthreads线程附加库和libcrypt加密附加库如果libcrypt没在那个站点找到, 那就是因为美国出口法律限制的原因,那么您就可以从这里弄到libcrypt加密附加库通常 linuxthreads线程附加库跟libc库是放在同一个地方的libcrypt加密附加库: ftp:/ftp.gwdg.de/pub/linux/glibc* gnu nc
9、urses美国站点 :ftp:/ftp.gnu.org/gnu/ncurses澳大利亚站点 :ftp:/mirror.aarnet.edu.au/pub/gnu/ncurses* sysvinit(初始化脚本包)美国站点 :ftp:/sunsite.unc.edu/pub/linux/system/daemons/init澳大利亚:ftp:/mirror.aarnet.edu.au/pub/linux/metalab/system/daemons/init* gnu bash (命令解释器包)美国站点 :ftp:/ftp.gnu.org/gnu/bash澳大利亚站点 :ftp:/mirror.
10、aarnet.edu.au/pub/gnu/bash* gnu sh-utils(命令解释器工具包)美国站点 :ftp:/ftp.gnu.org/gnu/sh-utils澳大利亚站点 :ftp:/mirror.aarnet.edu.au/pub/gnu/sh-utils* util-linux(linux常用工具包)本软件包包含有agetty和 login 。另外一个站点 :ftp:/ftp.win.tue.nl/pub/linux/utils/util-linux/澳大利亚站点 :ftp:/mirror.aarnet.edu.au/pub/linux/metalab/system/misc总
11、结一下,您所需要的就是* 一台具有两个分别是400 兆和 700 兆独立分区的机器,或许您可能会需要少一些。* 一个 linux发行套件 (譬如一个redhat光盘)和安装方式 (譬如一个光驱)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 10 页 - - - - - - - - - * 以上所列举的源码的tar包。我假定您可以自己安装源头系统,而用不着我来帮忙从这里开始,我假定源头系统已经安装好了。本小项目的第一个里程碑就是使得内核启动起来然后死翘翘,因为它没找到in
12、it初始化程序也就是说我们得安装一个内核和安装lilo为了顺利安装lilo,我们要用上在目标系统上 /dev目录下的设备文件lilo需要它们来实现底层必需的磁盘存取来写入引导扇区makedev正是用来创建这些设备文件的脚本程序(您当然可以只需要从源头系统当中复制出来,不过这可是作弊不劳而获哦)但是最重要的事情就是,我们需要一个文件系统来放置所有的这些东西。2.文件系统我们的新系统是要安装在文件系统上的因此首先我们得使用命令mke2fs 来创建文件系统,然后将其挂载到某个地方我建议是挂载到/mnt/target这个目录上接下来的操作中,我假定就用这个目录了为了节省您的宝贵时间,您可以在 /etc
13、/fstab文件里面添加上这一项,以便每次源头系统启动的时候就能够自动将这个目录挂载上。当我们启动了目标系统,放置在/mnt/target上的所有东西就会被当成了放置在/ 根目录上。我们需要在目标系统上建立固定的目录结构请参阅文件层次结构标准 (简称fhs ,fileheirarchystandard) ,见于文件系统一节来了解详情,或者只需要cd 切换目录到目标系统所挂载的地方然后尽管执行以下命令mkdirbinbootdev etchome libmnt rootsbintmp usrvarcd var;mkdirlocklogrun spoolcd ./usr;mkdirbininclu
14、deliblocalsbinsharesrccd share/;mkdirman; cd manmkdirman1 man2 man3 .man9因为 fhs 标准和大部分的软件包在手册页(manpage)放置位置上的处理并不一致,因此我们需要做一个符号连接cd .;ln-sshare/manman3.makedev(设备生成器)我们要把源代码放置到目标系统的/usr/src目录下面因此,举个例子吧,如果您的目标系统是挂载在/mnt/target这个地方,且您的tar 包是放在 /root里面,那么您要做的就是cd /mnt/target/usr/srctar-xzvf/root/makede
15、v-2.5.tar.gz然后就把这些tar包复制到您要解开它们的地方就行了千万别迷糊了哦;-当您安装软件的时候,通常情况下您会把它们安装在正在使用的系统上但是我们并不想这么做,因为我们是要把 /mnt/target当做根文件系统 (rootfilesystem),就是要把这些软件安装到这个地方不同的软件包有不同的处理方式比如说makedev 设备生成器包,您要做的是root=/mnt/targetmake install名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 10
16、 页 - - - - - - - - - 您 得先 在这 个包 当中 的 readme 说 明文 件和install安 装说 明文 件当 中查 出这 些选 项 ,或 者执 行命令./configure-help查看帮助说明。查看一下 makedev 包当中的 makefile文件,看看它是怎样处理我们在命令行当中设置的root 变量的 接着通过执行 man./makedev.man 来查看一下它的手册页,看看它是怎么起到作用的您会发现生成我们自己的设备的方式就是执行cd /mnt/target/dev然后./makedevgeneric 请使用ls 命令来看看它都为我们生成了哪些设备文件吧。4
17、.内核下一步就是生成内核了我假设您以前是做过编译内核这种事的,所以我就长话短说了如果要启动的内核已经准备好的话,那么要安装lilo就会更容易请返回到目标系统的usr/src目录,然后在那儿解开linux内核源码进入linux源码树 (cdlinux)然后使用您最喜欢的方式配置内核,比如make menuconfig如果您想让自己的轻松一些,那么您可以为自己配置一个没有模块的内核如果您已经配置了模块,那么您就得编辑makefile文件,找出 install_mod_path并将其设置为 /mnt/target现在您可以执行make dep,make bzimage 了如果您设置了模块项,可以再执
18、行make modules,makemodules_install把内核映象文件arch/i386/boot/bzimage和系统函数映象文件system.map 复制到目标系统的 boot 启动目录 /mnt/target/boot下面,然后准备安装系统引导器lilo了。5.lilo系统引导器lilo包里面带有一个很小巧的脚本,名叫quickinst请把lilo源码包解压到目标系统的源代码目录/mnt/target/usr/src下面,然后执行该脚本,方法是root=/mnt/target./quickinst它会询问您一些关于您想怎样安装lilo的问题。切记因为我们已经设置root 根系统
19、为目标系统分区了,所以您回答提问时所给出的文件名同它是密切相关 的 比 如 当 它 询 问 您 默 认 想 启 动 哪 个 内 核 的 时 候 , 您 的 回 答 应 该 是 /boot/bzimage, 而 并 不 是/mnt/target/boot/bzimage哦我发现这个脚本里面有个小错误,它会提示说./quickinst:/boot/bzimage:no such file但是您甭理这个提示就是了,不会有事的。我们该让 quickinst把引导扇区 (bootsector) 放在何处为妥呢?当我们重启时,我们希望可以选择引导进入源头系统或者目标系统或者其它共存于同一台机器的其它系统而
20、且我们还希望我们要使用所编译的lilo来引导我们新系统的内核我们怎么把这两件事情合而为一呢?让我们先跑一小会儿题,看看lilo在一个双重启动的 linux系统上是怎样引导dos 的在这样的一个系统上的lilo.conf文件的内容看起来可能会跟下面的差不多prompttimeout= 50default= linuximage = /boot/bzimagelabel= linux名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 10 页 - - - - - - - - -
21、root= /dev/hda1read-onlyother= /dev/hda2label= dos如果机器是这么安装起来的,那么主引导记录(mbr,masterboot record) 就可以被bios 读取并加载,然后mbr 加载 lilo启动引导器,而后者则给出一个提示如果您在提示后面输入dos,lilo就会从 hda2 加载引导记录,就加载了dos。我们所要做的事情跟上头是一样的,除了在 hda2 的引导记录应该是另外一个lilo引导记录之外, 也就是在quickinst所询问要安装的那个因此来自linux发行套件的lilo会加载我们所编译安装的lilo,然后我们所编译安装的lilo就
22、会加载我们所编译安装的内核当您重启后,您会看到两次lilo的提示。长话短说,当quickinst询问您该把引导扇区 (bootsector) 放到什么地方时,您就回答目标系统所在的分区,比如说是 /dev/hda2 现在来修改您的源头系统上的lilo.conf配置文件,那么看起来会有点像这个样子other= /dev/hda2label= target修改完毕,接着执行lilo安装 lilo我们应该可以第一个引导进入目标系统了。本小项目的第一个里程碑就是使得内核启动起来然后死翘翘,因为它没找到init初始化程序也就是说我们得安装一个内核和安装lilo为了顺利安装lilo,我们要用上在目标系统上
23、 /dev目录下的设备文件lilo需要它们来实现底层必需的磁盘存取来写入引导扇区makedev正是用来创建这些设备文件的脚本程序(您当然可以只需要从源头系统当中复制出来,不过这可是作弊不劳而获哦)但是最重要的事情就是,我们需要一个文件系统来放置所有的这些东西。2.文件系统我们的新系统是要安装在文件系统上的因此首先我们得使用命令mke2fs 来创建文件系统,然后将其挂载到某个地方我建议是挂载到/mnt/target这个目录上接下来的操作中,我假定就用这个目录了为了节省您的宝贵时间,您可以在 /etc/fstab文件里面添加上这一项,以便每次源头系统启动的时候就能够自动将这个目录挂载上。当我们启动
24、了目标系统,放置在/mnt/target上的所有东西就会被当成了放置在/ 根目录上。我们需要在目标系统上建立固定的目录结构请参阅文件层次结构标准 (简称fhs ,fileheirarchystandard) ,见于文件系统一节来了解详情,或者只需要cd 切换目录到目标系统所挂载的地方然后尽管执行以下命令mkdirbinbootdev etchome libmnt rootsbintmp usrvarcd var;mkdirlocklogrun spoolcd ./usr;mkdirbinincludeliblocalsbinsharesrccd share/;mkdirman; cd man名
25、师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 10 页 - - - - - - - - - mkdirman1 man2 man3 .man9因为 fhs 标准和大部分的软件包在手册页(manpage)放置位置上的处理并不一致,因此我们需要做一个符号连接cd .;ln-sshare/manman3.makedev(设备生成器)我们要把源代码放置到目标系统的/usr/src目录下面因此,举个例子吧,如果您的目标系统是挂载在/mnt/target这个地方,且您的tar 包是放
26、在 /root里面,那么您要做的就是cd /mnt/target/usr/srctar-xzvf/root/makedev-2.5.tar.gz然后就把这些tar包复制到您要解开它们的地方就行了千万别迷糊了哦;-当您安装软件的时候,通常情况下您会把它们安装在正在使用的系统上但是我们并不想这么做,因为我们是要把 /mnt/target当做根文件系统 (rootfilesystem),就是要把这些软件安装到这个地方不同的软件包有不同的处理方式比如说makedev 设备生成器包,您要做的是root=/mnt/targetmake install您 得先 在这 个包 当中 的 readme 说 明文
27、件和install安 装说 明文 件当 中查 出这 些选 项 ,或 者执 行命令./configure-help查看帮助说明。查看一下 makedev 包当中的 makefile文件,看看它是怎样处理我们在命令行当中设置的root 变量的 接着通过执行 man./makedev.man 来查看一下它的手册页,看看它是怎么起到作用的您会发现生成我们自己的设备的方式就是执行cd /mnt/target/dev然后./makedevgeneric 请使用ls 命令来看看它都为我们生成了哪些设备文件吧。4.内核下一步就是生成内核了我假设您以前是做过编译内核这种事的,所以我就长话短说了如果要启动的内核已
28、经准备好的话,那么要安装lilo就会更容易请返回到目标系统的usr/src目录,然后在那儿解开linux内核源码进入linux源码树 (cdlinux)然后使用您最喜欢的方式配置内核,比如make menuconfig如果您想让自己的轻松一些,那么您可以为自己配置一个没有模块的内核如果您已经配置了模块,那么您就得编辑makefile文件,找出 install_mod_path并将其设置为 /mnt/target现在您可以执行make dep,make bzimage 了如果您设置了模块项,可以再执行make modules,makemodules_install把内核映象文件arch/i386
29、/boot/bzimage和系统函数映象文件system.map 复制到目标系统的 boot 启动目录 /mnt/target/boot下面,然后准备安装系统引导器lilo了。5.lilo系统引导器lilo包里面带有一个很小巧的脚本,名叫quickinst请把lilo源码包解压到目标系统的源代码目录/mnt/target/usr/src下面,然后执行该脚本,方法是root=/mnt/target./quickinst它会询问您一些关于名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6
30、 页,共 10 页 - - - - - - - - - 您想怎样安装lilo的问题。切记因为我们已经设置root 根系统为目标系统分区了,所以您回答提问时所给出的文件名同它是密切相关 的 比 如 当 它 询 问 您 默 认 想 启 动 哪 个 内 核 的 时 候 , 您 的 回 答 应 该 是 /boot/bzimage, 而 并 不 是/mnt/target/boot/bzimage哦我发现这个脚本里面有个小错误,它会提示说./quickinst:/boot/bzimage:no such file但是您甭理这个提示就是了,不会有事的。我们该让 quickinst把引导扇区 (bootsec
31、tor) 放在何处为妥呢?当我们重启时,我们希望可以选择引导进入源头系统或者目标系统或者其它共存于同一台机器的其它系统而且我们还希望我们要使用所编译的lilo来引导我们新系统的内核我们怎么把这两件事情合而为一呢?让我们先跑一小会儿题,看看lilo在一个双重启动的 linux系统上是怎样引导dos 的在这样的一个系统上的lilo.conf文件的内容看起来可能会跟下面的差不多prompttimeout= 50default= linuximage = /boot/bzimagelabel= linuxroot= /dev/hda1read-onlyother= /dev/hda2label= do
32、s如果机器是这么安装起来的,那么主引导记录(mbr,masterboot record) 就可以被bios 读取并加载,然后mbr 加载 lilo启动引导器,而后者则给出一个提示如果您在提示后面输入dos,lilo就会从 hda2 加载引导记录,就加载了dos。我们所要做的事情跟上头是一样的,除了在 hda2 的引导记录应该是另外一个lilo引导记录之外, 也就是在quickinst所询问要安装的那个因此来自linux发行套件的lilo会加载我们所编译安装的lilo,然后我们所编译安装的lilo就会加载我们所编译安装的内核当您重启后,您会看到两次lilo的提示。长话短说,当quickinst询
33、问您该把引导扇区 (bootsector) 放到什么地方时,您就回答目标系统所在的分区,比如说是 /dev/hda2 现在来修改您的源头系统上的lilo.conf配置文件,那么看起来会有点像这个样子other= /dev/hda2label= target修改完毕,接着执行lilo安装 lilo我们应该可以第一个引导进入目标系统了。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 10 页 - - - - - - - - - 看起来好像我们打造的是一个毫无用处的系统说真的,
34、 要让它能够有实用价值也并不是什么难事首先要做的事情之一就是您应该使得根文件系统(rootfilesystem)以可读写方式挂载起来 sysvinit软件包里面有干这活儿的脚本,就在 /etc/init.d/mountall.sh里面还执行了一次mount -a 把所有在 /etc/fstab当中的条目以您所指定的方式挂载起来请在目标系统的etc/rc2.d目录下生成一个类似s05mountall的符号连接。您可能会看到这个脚本会用到您尚未安装的命令如果真是这样, 找到包含该命令的软件包并安装之请参看 随机小技巧 (randomtips) 这一小节,了解如何查找软件包看看在 /etc/init
35、.d里面的其它脚本它们大部分都应该包含在任何正经的系统里面一次添加一个,别忘了要确定添加下一个之前个个都运行无误请对照文件层次结构标准(fileheirarchystandard) ,请参看文件系统(filesystem)一节 那里有一个命令列表,都是该在 /bin和/sbin的命令 请确定您已经把那里列举的所有命令都安装在系统上了最好就是再找找相关这类问题的posix 文档来看看从此,在这个系统里面添加更多必要的软件包就真是个事儿了越是早些把编译工具,比如说gcc 和 make这些添加进去就越好一旦这些都完工了,您就可以利用目标系统来自我生息,就会越来越简单了13.更多信息13.1随机小技巧
36、如果您的 linux系统上曾经使用rpm 安装过有一个叫做thingy命令,而您想获知这个命令的源码来源,那么您就使用如下命令rpm -qifwhichthingy如果您有小红帽redhat的源码光盘,那么您就可以使用下列命令安装源码包了rpm -i/mnt/cdrom/srpms/what.it.just.said-1.2.srpm这个命令会把tar包以及任何redhat补丁包放到 /usr/src/redhat/sources目录下面。13.2资源链接* 有一个关于从源代码编译软件的小型实作指南(mini-howto),就是软件打造小小实作指南(softwarebuildingmini-h
37、owto) :http:/www.linuxdoc.org/howto/software-building.html.* 另外还有一个关于从一穷二白空手起家打造一个linux系统的实作指南 该文更为集中于打造一个有实际应用价值的系统, 而不仅仅是一个实习 请看 linux系统空手道实作指南篇 (thelinuxfrom scratchhowto) :http:/www.linuxfromscratch.org/* unix 文件系统标准 (unixfilesystem standard)还有一个关于unix 文件系统标准的链接这个标准描述了在一个unix 系统中什么东东该呆在什么位置以及原因它
38、还描述了在/bin ,/sbin等等目录中最小化的要求如果您的目标是要打造一个小而全的系统,那么这个标准正是一个好的参考ftp:/tsx-11.mit.edu/pub/linux/docs/linux-standards/fsstnd/名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 10 页 - - - - - - - - - 14.administrivia14.1版权声明 (copyright)本文版权所有,归属gregokeefe 欢迎您在遵循gnu 通用公共许可证
39、 (gnugeneralpubliclicence)的各项条款的前提下无需付费来使用,复制,散发或者修改本文如果您在其它文档里面使用了本文的全文或者部分,请在鸣谢录提提我就行了thisdocument iscopyright(c)1999, 2000 greg okeefe.you are welcome touse,copy, distributeor modifyit,withoutcharge,underthetermsofthegnu gpl(gnugeneralpubliclicence).pleaseacknowledgeme ifyou use allor partofthisi
40、nanotherdocument.14.2主页本文最新的英文版本 frompowerup tobash prompt 可在此找到http:/learning.taslug.org.au/power2bash14.3您的反馈意见我很乐意从读者您那儿得知任何评论、改进意见和建议请写信给我greg okeefe14.4鸣谢录本文所提及的产品名称是相应持有者的商标,在此我一并致谢我想对以下人员致谢,因为他们的帮助才有了这篇实作指南michaelemery因其提醒我注意到unios timlittle因其提供了关于 /etc/passwd的一些线索spakron #linuxinefnet因其发现 sy
41、slogd需要/etc/services的支持以及介绍给我使用短语 rollingyour own来表述从源码打造系统alexaitkin因其引起了我对vico 以及他的 verumipsum factum( 对编译进一步的理解)的注意dennisscott因其纠正了我的十六进制计算错误jdd因其指出一些拼写错误14.5修订历史记录名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 10 页 - - - - - - - - - 0.8* 最初版本自 frompowerup tobash prompt( 从加电启动到bash 提示符 )实作篇 分离独立出来14.6未来计划 (todo)* 转换为 docbook 格式名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 10 页 - - - - - - - - -