《L4-Linux基本命令(续.ppt》由会员分享,可在线阅读,更多相关《L4-Linux基本命令(续.ppt(55页珍藏版)》请在金锄头文库上搜索。
1、压缩打包相关命令压缩打包相关命令Linux 中打包压缩的如表所示,以 gzip 和 tar 为例进行讲解。1 11gzip(1)作用对文件进行压缩和解压缩,而且 gzip 根据文件类型可自动识别压缩或解压。(2)格式gzip 选项 压缩(解压缩)的文件名。(3)常见参数gzip 主要选项参数如表所示。2 2(4 4)使用实例)使用实例该实例将目录下的“hello.c”文件进行压缩,选项“-l”列出了压缩比。3 3(5 5)使用说明)使用说明使用使用 gzipgzip 压缩只能压缩单个文件,而不能压缩目录,其选压缩只能压缩单个文件,而不能压缩目录,其选项项“ “-d”-d”是将该目录下的所有文件
2、逐个进行压缩,而不是压是将该目录下的所有文件逐个进行压缩,而不是压缩成一个文件。缩成一个文件。2tar(1 1)作用)作用对文件目录进行打包或解包。对文件目录进行打包或解包。在此需要对打包和压缩这两个概念进行区分。打包是指将一在此需要对打包和压缩这两个概念进行区分。打包是指将一些文件或目录变成一个总的文件,而压缩则是将一个大的文些文件或目录变成一个总的文件,而压缩则是将一个大的文件通过一些压缩算法变成一个小文件。为什么要区分这两个件通过一些压缩算法变成一个小文件。为什么要区分这两个概念呢?这是由于在概念呢?这是由于在 Linux Linux 中的很多压缩程序(如前面介绍中的很多压缩程序(如前面
3、介绍的的 gzipgzip)只能针对一个文件进行压缩,这样当想要压缩较多)只能针对一个文件进行压缩,这样当想要压缩较多文件时,就要借助它的工具将这些堆文件先打成一个包,然文件时,就要借助它的工具将这些堆文件先打成一个包,然后再用原来的压缩程序进行压缩。后再用原来的压缩程序进行压缩。(2 2)格式)格式tar tar 选项选项 打包后文件名打包后文件名 文件目录列表。文件目录列表。 4 4tar tar 可自动根据文件名识别打包或解包动作,其中可自动根据文件名识别打包或解包动作,其中打包后文件名为用户自定义的打包后文件名称,文打包后文件名为用户自定义的打包后文件名称,文件目录列表可以是要进行打包
4、备份的文件目录列表,件目录列表可以是要进行打包备份的文件目录列表,也可以是进行解包的文件目录列表。也可以是进行解包的文件目录列表。(3 3)主要参数)主要参数tar tar 主要选项参数如表所示。主要选项参数如表所示。5 5(4 4)使用实例)使用实例n 该实例将“./yul”目录下的文件加以打包,其中选项“-v”在屏幕上输出了打包的具体过程。6 6该实例用选项该实例用选项“ “-z”-z”调用调用 gzipgzip,并,并-x -x 联用时完成解联用时完成解压缩。压缩。(5 5)使用说明)使用说明tar tar 命令除了用于常规的打包之外,使用更为频繁命令除了用于常规的打包之外,使用更为频繁
5、的是用选项的是用选项“ “-z”-z”或或“ “-j”-j”调用调用 gzipgzip 或或bzip2bzip2(Linux Linux 中另一种解压工具)完成对各种不同文件的解压。中另一种解压工具)完成对各种不同文件的解压。表对表对 Linux Linux 中常见类型的文件解压命令做一总结。中常见类型的文件解压命令做一总结。7 78 8比较合并文件相关命令比较合并文件相关命令1 1diffdiff(1 1)作用)作用比较两个不同的文件或不同目录下的两个同名文件功能,并比较两个不同的文件或不同目录下的两个同名文件功能,并生成补丁文件。生成补丁文件。(2 2)格式)格式diffdiff选项选项
6、文件文件 1 1 文件文件 2 2diffdiff 比较文件比较文件 1 1 和文件和文件 2 2 的不同之处,并按照选项所指定的的不同之处,并按照选项所指定的格式加以输出。格式加以输出。diff diff 的格式分为命令格式和上下文格式,其的格式分为命令格式和上下文格式,其中上下文格式又包括了旧版上下文格式和新版上下文格式,中上下文格式又包括了旧版上下文格式和新版上下文格式,命令格式分为标准命令格式、简单命令格式及混合命令格式,命令格式分为标准命令格式、简单命令格式及混合命令格式,它们之间的区别会在使用实例中进行详细地讲解。当选项缺它们之间的区别会在使用实例中进行详细地讲解。当选项缺省时,省
7、时,diff diff 默认使用混合命令格式。默认使用混合命令格式。(3 3)主要参数)主要参数diff diff 主要选项参数如表所示。主要选项参数如表所示。9 9(4)使用实例以下有两个文件 hello1.c 和 hello2.c。1010以下实例主要讲解了各种不同格式的比较和补丁文件的创建方以下实例主要讲解了各种不同格式的比较和补丁文件的创建方法。法。 主要格式比较主要格式比较首先使用旧版上下文格式进行比较。首先使用旧版上下文格式进行比较。1111 可以看出,用旧版上下文格式进行输出时,在显示每个有差可以看出,用旧版上下文格式进行输出时,在显示每个有差别行的同时还显示该行的上下三行,区别
8、的地方用别行的同时还显示该行的上下三行,区别的地方用“ “!” ”加加以标出,由于示例程序较短,上下三行已经包含了全部代码。以标出,由于示例程序较短,上下三行已经包含了全部代码。接着使用新版的上下文格式进行比较。接着使用新版的上下文格式进行比较。1212 可以看出,在新版上下文格式输出时,仅把两个可以看出,在新版上下文格式输出时,仅把两个文件的不同之处分别列出,而相同之处没有重复文件的不同之处分别列出,而相同之处没有重复列出,这样大大方便了用户的阅读。列出,这样大大方便了用户的阅读。接下来使用命令格式进行比较。接下来使用命令格式进行比较。1313 可以看出,命令符格式输出时仅输出了不同的行,可
9、以看出,命令符格式输出时仅输出了不同的行,其中命令符其中命令符“ “4c”4c”中的数字表示行数,字母的含中的数字表示行数,字母的含义为义为 aa添加,添加,bb删除,删除,cc更改。因此,更改。因此, 选项的命令符表示:选项的命令符表示:-e-e若要把若要把 hello1.chello1.c变为变为 hello2.chello2.c,就需要把,就需要把 hello1.c hello1.c 的第四行改为显示出的第四行改为显示出的的“ “printfprintf(“ “Hello!ThisHello!This is your home!n” is your home!n”)” ”即可。即可。选项
10、选项“ “-f”-f”和选项和选项“ “-e”-e”显示的内容基本相同,就是显示的内容基本相同,就是数字和字母的顺序相交换了,从以下的输出结果数字和字母的顺序相交换了,从以下的输出结果可以看出。可以看出。1414在在 diff diff 选项缺省的情况下,输出结果如下所示。选项缺省的情况下,输出结果如下所示。可以看出,diff缺省情况下的输出格式充分显示了如何将 hello1.c 转化为 hello2.c 的方法,即通过“4c4”实现。1515 创建补丁文件(也就是差异文件)是创建补丁文件(也就是差异文件)是 diff diff 的功能的功能之一,不同的选项格式可以生成与之相对应的补丁之一,不
11、同的选项格式可以生成与之相对应的补丁文件。见下例。文件。见下例。可以看出,使用缺省选项创建补丁文件的内容和前面使用缺省选项的输出内容是一样的。上例中所使用的”“是输出重定向。通常在 Linux 上执行一个 shell 命令行时,会自动打开三个标准文件:标准输入文件(stdin),即通常对应终端的键盘;标准输出文件(stdout)和标准错误输出文件(stderr),前两个文件都对应终端的屏幕。进程将从标准输入文件中得到输入数据,并且将正常输出数据输出到标准输出文件,而将错误信息送到标准错误文件中。这就是通常使用的标准输入/输出方式。直接使用标准输入/输出文件存在以下问题:首先,用户输入的数据只能
12、使用一次。当下次希望再次使用这些数据时就不得不重新输入。同样,用户对输出信息不能做更多的处理,只能等待程序的结束。为了解决上述问题,Linux 系统为输入、输出的信息传送引入了两种方式:输入/输出重定向机制和管道。其中,输入重定向是指把命令(或可执行程序)的标准输入重定向到指定的文件中。也就是说,输入可以不来自键盘,而来自一个指定的文件。同样,输出重定向是指把命令(或可执行程序)的标准输出或标准错误输出重新定向到指定文件中。这样,该命令的输出就可以不显示在屏幕上,而是写入到指定文件中。就如上述例子中所用到的把“diff hello1.c hello2.c”的结果重定向到 hello.patch
13、 文件中。这就大大增加了输入/输出的灵活性。16162patch(1)作用命令跟 diff 配合使用,把生成的补丁文件应用到现有代码上。(2)格式patch 选项 待 patch 的文件patch 文件。常用的格式为:patch -pnum patch 文件,其中的-pnum 是选项参数,在后面会详细介绍。(3)常见参数patch 主要选项参数如表所示。1717(4 4)使用实例)使用实例1818在该实例中,由于在该实例中,由于 patch patch 文件和源文件在同一目录下,因此直文件和源文件在同一目录下,因此直接给出了目标文件的目录,在应用了接给出了目标文件的目录,在应用了 patch
14、patch 之后,之后,hello1.c hello1.c 的的内容变为了内容变为了 hello2.c hello2.c 的内容。的内容。(5 5)使用说明)使用说明如果如果 patch patch 失败,失败,patch patch 命令会把成功的命令会把成功的 patch patch 行补上其差行补上其差异,同时(无条件)生成备份文件和一个异,同时(无条件)生成备份文件和一个. .rejrej 文件。文件。. .rejrej 文件里是没有成功提交的文件里是没有成功提交的 patch patch 行,需要手工打上补丁。这行,需要手工打上补丁。这种情况在原码升级的时候有可能会发生。种情况在原码
15、升级的时候有可能会发生。1919在多数情况下,在多数情况下,patch patch 程序可以确定补丁文件的格式,程序可以确定补丁文件的格式,当它不能识别时,可以使用当它不能识别时,可以使用-c-c、-e-e、-n -n 或者或者-u -u 选项选项来指定输入的补丁文件的格式。由于只有来指定输入的补丁文件的格式。由于只有 GNU patch GNU patch 可以创建和读取新版上下文格式的可以创建和读取新版上下文格式的 patch patch 文件,因此,文件,因此,除非能够确定补丁所面向的只是那些使用除非能够确定补丁所面向的只是那些使用 GNU GNU 工具工具的用户,否则应该使用旧版上下文
16、格式来生成补丁文的用户,否则应该使用旧版上下文格式来生成补丁文件。件。为了使为了使 patch patch 程序能够正常工作,需要上下文的行数程序能够正常工作,需要上下文的行数至少是至少是 2 2 行(即至少是有一处差别的文件)。行(即至少是有一处差别的文件)。2020网络相关命令网络相关命令Linux 下网络相关的常见命令如下表所示,以 ifconfig 和 ftp 为例进行说明。21211 1ifconfigifconfig(1 1)作用)作用用于查看和配置网络接口的地址和参数,包括用于查看和配置网络接口的地址和参数,包括 IP IP 地址、地址、网络掩码、广播地址,它的使用权限是超级用户
17、。网络掩码、广播地址,它的使用权限是超级用户。(2 2)格式)格式 ifconfigifconfig 有两种使用格式,分别用于查看和更改网络接有两种使用格式,分别用于查看和更改网络接口。口。 ifconfigifconfig 选项选项 网络接口网络接口 :用来查看当前系统的网:用来查看当前系统的网络配置情况。络配置情况。 ifconfigifconfig 网络接口网络接口 选项选项 地址:用来配置指定接口地址:用来配置指定接口(如(如 eth0eth0,eth1eth1)的)的 IP IP 地址、网络掩码、广播地址等。地址、网络掩码、广播地址等。(3 3)常见参数)常见参数ifconfigif
18、config 第二种格式常见选项参数如表所示。第二种格式常见选项参数如表所示。2222(4 4)使用实例)使用实例首先,在本例中使用首先,在本例中使用 ifconfigifconfig 的第一种格式来查看的第一种格式来查看网口配置情况。网口配置情况。2323可以看出,使用可以看出,使用 ifconfigifconfig 的显示结果中详细列出了所有活跃接口的的显示结果中详细列出了所有活跃接口的 IP IP 地地址、硬件地址、广播地址、子网掩码、回环地址等。址、硬件地址、广播地址、子网掩码、回环地址等。2424在此例中,通过指定接口显示出对应接口的详细信在此例中,通过指定接口显示出对应接口的详细信
19、息。另外,用户还可以通过指定参数息。另外,用户还可以通过指定参数“ “-a”-a”来查看来查看所有接口(包括非活跃接口)的信息。所有接口(包括非活跃接口)的信息。接下来的示例指出了如何使用接下来的示例指出了如何使用 ifconfigifconfig 的第二种格的第二种格式来改变指定接口的网络参数配置。式来改变指定接口的网络参数配置。 2525在此例中,通过将指定接口的状态设置为在此例中,通过将指定接口的状态设置为 DOWNDOWN,暂时暂停该接口的工作。暂时暂停该接口的工作。2626从上例可以看出,从上例可以看出,ifconfigifconfig 改变了接口改变了接口 eth0 eth0 的的
20、 IP IP 地址、子网地址、子网掩码等,在之后的掩码等,在之后的 ifconfigifconfig查看中可以看出确实发生了变化。查看中可以看出确实发生了变化。(5 5)使用说明)使用说明用用 ifconfigifconfig 命令配置的网络设备参数不需重启就可生效,但在命令配置的网络设备参数不需重启就可生效,但在机器重新启动以后将会失效。机器重新启动以后将会失效。27272 2ftpftp(1 1)作用)作用该命令允许用户利用该命令允许用户利用 ftp ftp 协议上传和下载文件。协议上传和下载文件。(2 2)格式)格式ftp ftp 选项选项 主机名主机名/IP/IP。ftp ftp 相关
21、命令包括使用命令和内部命令,其中使用相关命令包括使用命令和内部命令,其中使用命令的格式如上所列,主要用于登录到命令的格式如上所列,主要用于登录到ftp ftp 服务器服务器的过程中使用的。内部命令是指成功登录后进行的的过程中使用的。内部命令是指成功登录后进行的一系列操作,下面会详细列出。若用户缺省一系列操作,下面会详细列出。若用户缺省“ “主机主机名名/IP”/IP”,则可在转入到,则可在转入到 ftp ftp 内部命令后继续选择内部命令后继续选择登录。登录。(3 3)常见参数)常见参数ftp ftp 常见选项参数如表所示。常见选项参数如表所示。2828ftp ftp 常见内部命令如表所示。常
22、见内部命令如表所示。29293030(4 4)使用实例)使用实例首先,在本例中使用首先,在本例中使用 ftp ftp 命令访问命令访问“ “ftp:/ftp:/” ”站点。站点。3131由于该站点可以匿名访问,因此,在用户名处输入由于该站点可以匿名访问,因此,在用户名处输入 anonymousanonymous,在,在 Password Password 处输入任意一个处输入任意一个e-mail e-mail 地址即可登录成功。地址即可登录成功。3232以上使用以上使用 ftp ftp 内部命令内部命令 dir dir 列出了在改目录下文件及目录列出了在改目录下文件及目录的信息。的信息。n 以
23、上实例通过 cd 命令进入相应的目录,可通过 pwd 命令进行验证。3333接下来通过接下来通过 lcdlcd 命令首先改变用户的本地工作目录,命令首先改变用户的本地工作目录,也就是希望下载或上传的工作目录,就着通过也就是希望下载或上传的工作目录,就着通过 get get 命令进行下载文件。由于命令进行下载文件。由于 ftp ftp 默认使用默认使用 ASCII ASCII 模式,模式,因此,若希望改为其他模式如因此,若希望改为其他模式如“ “bin”bin”,直接输入,直接输入 bin bin 即可,如下所示:即可,如下所示:3434最后用最后用 bye bye 命令退出命令退出 ftp f
24、tp 程序。程序。(5 5)使用说明)使用说明若是需要匿名登录,则在若是需要匿名登录,则在“ “Name Name (*.*.*.*):”(*.*.*.*):”处键入处键入 anonymousanonymous,在,在“ “Password:”Password:”处键入自己的处键入自己的 E-mail E-mail 地址即可。地址即可。若要传送二进制文件,务必要把模式改为若要传送二进制文件,务必要把模式改为 binbin。3535联机帮助命令联机帮助命令 l 1. man 命令 系统上几乎每条命令都有相关的Man(manual) page。 在有问题或困难时, 可以立刻找到这个文件。 例如,
25、如果使用ls命令时遇到困难, 可以输入: man ls 系统就会显示出 ls 的 man page。 36362.2.系统帮助文档系统帮助文档help命令用于查看所有Shell命令。用户可以通过该命令寻求Shell命令的用法,只需在所查找的命令后输入help命令,就可以看到所查命令的内容了。 例如:查看cd命令的使用方法。 $ cd -help3.whereis命令这个程序的主要功能是寻找一个命令所在的位置。例如,最常用的ls命令,它是在/bin这个目录下的。如果希望知道某个命令存在哪一个目录下,可以用whereis命令来查询。该命令的一般形式为: whereis 选项 命令名。说明:一般直接
26、使用不加选项的whereis命令,但用户也可根据特殊需要选用它的一些选项。3737由于man page是用less程序来看的, 所以在man page里可以使用less的所有选项。 在less中比较重要的键有: q退出 Enter一行行地下翻 Space一页页地下翻 b往上翻一页 /往后寻找一个字符串和Enter键来寻找字符串 n寻找上一次查寻的下一个符合的字符串 3838Linux 启动过程简介在了解了在了解了Linux Linux 的常见命令之后,下面来了解一下的常见命令之后,下面来了解一下 Linux Linux 的的启动过程。启动过程。Linux Linux 的启动过程包含了的启动过程
27、包含了Linux Linux 工作原理的精髓。工作原理的精髓。概述概述用户开机启动用户开机启动 Linux Linux 过程总体上是这样的:过程总体上是这样的:首先当用户打开首先当用户打开 PC PC 的电源时,的电源时,CPU CPU 将自动进入实模式,并将自动进入实模式,并从地址从地址 0xFFFF0 0xFFFF0 开始自动执行程序代码,这个地址通常是开始自动执行程序代码,这个地址通常是 ROM-BIOS ROM-BIOS 中的地址。这时中的地址。这时 BIOS BIOS 进行开机自检,并按进行开机自检,并按 BIOS BIOS 中设置的启动设备(通常是硬盘)进行启动,接着启中设置的启动
28、设备(通常是硬盘)进行启动,接着启动设备上安装的引导程序动设备上安装的引导程序lilolilo 或或 grub grub 开始引导开始引导 LinuxLinux(也就(也就是启动设备的第一个扇区),这时,是启动设备的第一个扇区),这时,Linux Linux 才获得了启动权。才获得了启动权。接下来的第二阶段,接下来的第二阶段,Linux Linux 首先进行内核的引导,主要完成首先进行内核的引导,主要完成磁盘引导、读取机器系统数据、实模式和保护模式的切换、磁盘引导、读取机器系统数据、实模式和保护模式的切换、加载数据段寄存器以及重置中断描述符表等。加载数据段寄存器以及重置中断描述符表等。3939
29、第三阶段执行 init 程序(也就是系统初始化工作) init 程序调用了 rc.sysinit 和 rc 等程序,而 rc.sysinit 和 rc 在完成系统初始化和运行服务的任务后,返回 init。之后的第四阶段,init 启动 mingetty,打开终端供用户登录系统,用户登录成功后进入了Shell,这样就完成了从开机到登录的整个启动过程。Linux 启动总体流程图如图所示,其中的 4 个阶段分别由同步棒隔开。由于第一阶段不涉及 Linux 自身的启动过程,因此,下面分别对第二和第三阶段进行详细讲解。 4040 两个较为流行的引导加载两个较为流行的引导加载程序程序 LILOLILO(L
30、InuxLInux LOaderLOader)和)和 GNU GNU GRUBGRUB(GRandGRand Unified Unified Boot loader Boot loader 。4141内核引导阶段内核引导阶段在在 grub grub 或或 lilolilo 等引导程序成功完成引导等引导程序成功完成引导 Linux Linux 系统系统的任务后,的任务后,Linux Linux 就从它们手中接管了就从它们手中接管了 CPU CPU 的控的控制权。用户可以从制权。用户可以从 www.kernel.orgwww.kernel.org 上下载最新版上下载最新版本的源码进行阅读,其目录为
31、:本的源码进行阅读,其目录为:linux-linux-2.6.*.*archi386boot2.6.*.*archi386boot。在这过程中主要用到该目。在这过程中主要用到该目录下的这几个文件:录下的这几个文件:bootsect.Sbootsect.S、setup.Ssetup.S以及以及 compressed compressed 目录下的目录下的 head.Shead.S 等。等。首先要介绍一下,首先要介绍一下,Linux Linux 的内核通常是压缩过后的,的内核通常是压缩过后的,包括如上述提到的那几个重要的汇编程序,它们都包括如上述提到的那几个重要的汇编程序,它们都是在压缩内核是在压
32、缩内核 vmlinuzvmlinuz 中的。因为中的。因为 Linux Linux 中提供的中提供的内核包含了众多驱动和功能,因而比较大,所以在内核包含了众多驱动和功能,因而比较大,所以在采用压缩内核可以节省大量的空间。采用压缩内核可以节省大量的空间。4242(1 1)bootsectbootsect 阶段当阶段当 grub grub 读入读入 vmlinuzvmlinuz 后,会根后,会根据据 bootsectbootsect(正好(正好 512bytes512bytes)把它自身和)把它自身和 setup setup 程序程序段读到不大于段读到不大于 0x90000 0x90000 开始的
33、的内存里(注意:在以开始的的内存里(注意:在以往的引导协议里是放在往的引导协议里是放在 0x900000x90000,但现在有所变,但现在有所变化),然后化),然后 grub grub 会跳过会跳过 bootsectbootsect 那那 512bytes 512bytes 的程的程序段,直接运行序段,直接运行 setup setup 里的第一跳指令。就是说里的第一跳指令。就是说 bzImagebzImage 里里 bootsectbootsect 的程序没有再被执行了,的程序没有再被执行了, bootsect.Sbootsect.S 在完成了指令搬移以后就退出而了。之后在完成了指令搬移以后就
34、退出而了。之后执行权就转到了执行权就转到了 setup.Ssetup.S 的程序中。的程序中。4343(2 2)setup setup 阶段阶段setup.Ssetup.S 的主要功能就是利用的主要功能就是利用 ROM BIOS ROM BIOS 中断读取机器系统数据,并将系统参数中断读取机器系统数据,并将系统参数(包括内存、磁盘等)保存到(包括内存、磁盘等)保存到 0x900000x900000x901FF 0x901FF 开始的内存中位置。此外,开始的内存中位置。此外,setup.Ssetup.S 还将还将 video.Svideo.S 中中的代码包含进来,检测和设置显示器和显示模式。的代
35、码包含进来,检测和设置显示器和显示模式。最后,它还会设置最后,它还会设置 CPU CPU 的控制寄存器的控制寄存器 CR0CR0(也称(也称机器状态字),从而进入机器状态字),从而进入 32 32 位保护模式运行,并位保护模式运行,并跳转到绝对地址为跳转到绝对地址为 0x1000000x100000(虚拟地址(虚拟地址 0xC0000000+0x1000000xC0000000+0x100000)处。当)处。当 CPU CPU 跳到跳到 0x100000 0x100000 时,将执行时,将执行“ “arch/i386/kernel/head.S”arch/i386/kernel/head.S”
36、中中的的 startup_32startup_32。4444(3 3)head.Shead.S 阶段阶段当运行到当运行到 head.Shead.S 时,系统已时,系统已经运行在保护模式,经运行在保护模式, head.Shead.S 完成的一个重要任务完成的一个重要任务就是将内而核解压。就如本节前面提到的,内核是就是将内而核解压。就如本节前面提到的,内核是通过压缩的方式放在内存中的,通过压缩的方式放在内存中的,head.Shead.S 通过调用通过调用 misc.cmisc.c中定义的中定义的 decompress_kerneldecompress_kernel() ()函数,将内核函数,将内核
37、 vmlinuzvmlinuz 解压到解压到 0x100000 0x100000 的。接下来的。接下来 head.Shead.S 程序程序完成完成寄存器、分页表的初始化工作,但要注意完成完成寄存器、分页表的初始化工作,但要注意的是,这个的是,这个 head.Shead.S程序与完成解压缩工作的程序与完成解压缩工作的 head.Shead.S 程序是不同的,它在源代码中的位置是程序是不同的,它在源代码中的位置是 arch/i386/kernel/head.Sarch/i386/kernel/head.S。在完成了初始化之后,。在完成了初始化之后,head.Shead.S 就跳转到就跳转到 sta
38、rt_kernelstart_kernel() ()函数中去了。函数中去了。4545(4 4)main.cmain.c 阶段阶段start_kernelstart_kernel() ()是是“ “init/init/main.cmain.c” ”中中的定义的函数,的定义的函数,start kernel()start kernel()调用了一系列初始化函调用了一系列初始化函数,进行内核的初始化工作。要注意的是,在初始数,进行内核的初始化工作。要注意的是,在初始化之前系统中断仍然是被屏蔽的,另外内核也处于化之前系统中断仍然是被屏蔽的,另外内核也处于被锁定状态,以保证只有一个被锁定状态,以保证只有一
39、个 CPU CPU 用于用于 Linux Linux 系统系统的启动。在的启动。在 start_kernelstart_kernel() ()的最后,调用了的最后,调用了 init()init()函函数,也就是下面要讲述的数,也就是下面要讲述的 INIT INIT 阶段。阶段。4646init init 阶段阶段在加载了内核之后,由内核执行引导的第一个进程在加载了内核之后,由内核执行引导的第一个进程就是就是 INIT INIT 进程,该进程号始终是进程,该进程号始终是“ “1”1”。INIT INIT 进进程根据其配置文件程根据其配置文件“ “/etc/etc/inittabinittab”
40、”主要完成系统主要完成系统的一系列初始化的任务。由于该配置文件是的一系列初始化的任务。由于该配置文件是 INIT INIT 进程执行的惟一依据,因此先对它的格式进行统一进程执行的惟一依据,因此先对它的格式进行统一讲解。讲解。inittabinittab 文件中除了注释行外,每一行都有如下格式:文件中除了注释行外,每一行都有如下格式:(1)idn id 是配置记录标识符,由 14 个字符组成,对于 getty 或 mingetty 等其他 login 程序项,要求 id 与 tty 的编号相同,否则 getty 程序将不能正常工作。4747(2 2)runlevelsrunlevelsrunle
41、velsrunlevels 是运行级别记录符,一般使用是运行级别记录符,一般使用 0 06 6 以及以及 S S 和和 s s。其中,。其中,0 0、1 1、6 6 运行级别为系统保留:运行级别为系统保留:0 0 作为作为 shutdown shutdown 动作,动作,1 1 作为重启至单用户模式,作为重启至单用户模式,6 6 为重启;为重启;S S 和和 s s 意义相同,表示单用户模式,且无意义相同,表示单用户模式,且无需需 inittabinittab 文件,因此也不在文件,因此也不在 inittabinittab 中出现。中出现。7 79 9 级别也是可以使用的,传统的级别也是可以使
42、用的,传统的 UNIX UNIX 系统没有定义系统没有定义这几个级别。这几个级别。runlevelrunlevel 可以是并列的多个值,对大可以是并列的多个值,对大多数多数 action action 来说,仅当来说,仅当 runlevelrunlevel 与当前运行级别匹与当前运行级别匹配成功才会执行。配成功才会执行。(3 3)actionactionaction action 字段用于描述系统执行的特定操作,它的常字段用于描述系统执行的特定操作,它的常见设置有:见设置有:initdefaultinitdefault、sysinitsysinit、bootboot、bootwaitbootw
43、ait、respawnrespawn 等。等。4848initdefaultinitdefault 用于标识系统缺省的启动级别。当用于标识系统缺省的启动级别。当 init init 由内核激活以后,它将读取由内核激活以后,它将读取 inittabinittab 中的中的initdefaultinitdefault 项,取得其中的项,取得其中的 runlevelrunlevel,并作为当前的运行级别。,并作为当前的运行级别。如果没有如果没有 inittabinittab 文件,或者其中没有文件,或者其中没有 initdefaultinitdefault 项,项,init init 将在控制台上请
44、求输入将在控制台上请求输入 runlevelrunlevel。sysinitsysinit、bootboot、bootwaitbootwait 等等 action action 将在系统启动时将在系统启动时无条件运行,忽略其中的无条件运行,忽略其中的 runlevelrunlevel。respawnrespawn 字段表示该类进程在结束后会重新启动运字段表示该类进程在结束后会重新启动运行。行。(4 4)processprocessprocess process 字段设置启动进程所执行的命令。字段设置启动进程所执行的命令。以下结合系统中的以下结合系统中的 inittabinittab 配置文件详
45、细讲解该配置配置文件详细讲解该配置文件完成的功能:文件完成的功能:49491 1确定用户登录模式确定用户登录模式在在“ “/etc/etc/inittabinittab” ”中列出了如下所示的登录模式,中列出了如下所示的登录模式,主要有单人维护模式、多用户无网络模式、文字界主要有单人维护模式、多用户无网络模式、文字界面多用户模式、面多用户模式、X-Windows X-Windows 多用户模式等。其中的多用户模式等。其中的单人维护模式(单人维护模式(run level run level 为为 1 1)是类似于)是类似于 Windows Windows 中的中的“ “安全模式安全模式” ”,在
46、这种情况下,系统不加载复,在这种情况下,系统不加载复杂的模式从而使系统能够正常启动。在这些模式中杂的模式从而使系统能够正常启动。在这些模式中最为常见的是最为常见的是 3 3 或或 5 5,其中本系统中默认的为,其中本系统中默认的为 5 5,也就是也就是 X-WindowsX-Windows多用户模式。多用户模式。50502 2执行内容执行内容/etc/etc/rc.d/rc.sysinitrc.d/rc.sysinit在确定了登录模式之后,就要开始将在确定了登录模式之后,就要开始将 Linux Linux 的主机信的主机信息读入息读入 Linux Linux 系统,其内容就是文件系统,其内容就
47、是文件“ “/etc/rc.d/rc.sysinit”/etc/rc.d/rc.sysinit”中的。查看此文件可以中的。查看此文件可以看出,在这里确定了默认路径、主机名称、看出,在这里确定了默认路径、主机名称、“ “/etc/etc/sysconfigsysconfig/network”/network”中所记录的网络信息中所记录的网络信息等。等。51513 3启动内核的外挂模块及各运行级的脚本启动内核的外挂模块及各运行级的脚本在此,主要是选择模块的型态以进行驱动程序的在此,主要是选择模块的型态以进行驱动程序的加载。接下来会根据不同的运行级(加载。接下来会根据不同的运行级(runlevelr
48、unlevel)加)加载不同的模块,启动系统服务。载不同的模块,启动系统服务。52525353INIT INIT 进程的一个重要作用就是启动进程的一个重要作用就是启动 Linux Linux 系统服务系统服务(也就是运行在后台的守护进程)。(也就是运行在后台的守护进程)。Linux Linux 的系统服的系统服务包括两种,第一种是独立运行的系统服务,它们常务包括两种,第一种是独立运行的系统服务,它们常驻内存中,自开机后一直启动着(如驻内存中,自开机后一直启动着(如 httpdhttpd),具有),具有很快的响应速度;第二种是由很快的响应速度;第二种是由 xinetxinet 设定的服务。设定的
49、服务。xinetxinet 能够同时监听多个指定的端口,在接受用户请能够同时监听多个指定的端口,在接受用户请求时,它能够根据用户请求的端口不同,启动不同的求时,它能够根据用户请求的端口不同,启动不同的网络服务进程来处理这些用户请求。因此,可以把网络服务进程来处理这些用户请求。因此,可以把 xinetdxinetd 看作一个启动服务的管理服务器,它决定把一看作一个启动服务的管理服务器,它决定把一个客户请求交给那个程序处理,然后启动相应的守护个客户请求交给那个程序处理,然后启动相应的守护进程。进程。54544.3 小结本章主要介绍了Linux系统常用的一些命令,包括如何登录和退出系统、创建及删除目录、文件管理等。为了使用Linux,首先需要有一个合法的账号,其次要学会使用man命令,以便随时获取需要的帮助信息。5555