⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000001.htm

📁 一份很好的linux入门资料
💻 HTM
📖 第 1 页 / 共 3 页
字号:
<HTML><HEAD>  <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Linux&nbsp;开机程序之研讨(1)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CCCA&nbsp;资工86&nbsp;许景华&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;各位是否曾经对电脑整个开机的流程感到好奇呢&nbsp;?&nbsp;这一次&nbsp;,&nbsp;我们所要讨论的&nbsp;<BR>&nbsp;&nbsp;&nbsp;主题&nbsp;,&nbsp;就是&nbsp;Linux&nbsp;从开机的一瞬间到&nbsp;login&nbsp;为止&nbsp;,&nbsp;到底发生了什麽事情&nbsp;?&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;想必各位都知道&nbsp;,&nbsp;在刚开机时&nbsp;,&nbsp;由於&nbsp;80x86&nbsp;的特性&nbsp;,&nbsp;CS&nbsp;(&nbsp;Code&nbsp;Segment&nbsp;)&nbsp;<BR>&nbsp;&nbsp;&nbsp;这个暂存器中全部都放著&nbsp;1&nbsp;,&nbsp;而&nbsp;IP&nbsp;(&nbsp;Instruction&nbsp;Pointer&nbsp;)&nbsp;这个暂存器&nbsp;<BR>&nbsp;&nbsp;&nbsp;中全部都放著&nbsp;0&nbsp;,&nbsp;换句话说&nbsp;,&nbsp;CS=FFFF&nbsp;而&nbsp;IP=0000&nbsp;,&nbsp;此时&nbsp;,&nbsp;CPU&nbsp;就依据&nbsp;<BR>&nbsp;&nbsp;&nbsp;CS&nbsp;及&nbsp;IP&nbsp;的值&nbsp;,&nbsp;到&nbsp;FFFF0H&nbsp;去执行那个地方所放的指令&nbsp;.&nbsp;这时候&nbsp;,&nbsp;由於&nbsp;<BR>&nbsp;&nbsp;&nbsp;FFFF0H&nbsp;已经到了高位址的顶端&nbsp;,&nbsp;所以&nbsp;,&nbsp;FFFF0H&nbsp;这个地方&nbsp;,&nbsp;总是会放一个&nbsp;<BR>&nbsp;&nbsp;&nbsp;JMP&nbsp;指令&nbsp;,&nbsp;跳到比较低的位址&nbsp;.&nbsp;接著&nbsp;,&nbsp;ROM&nbsp;BIOS&nbsp;就会作一些检查的动作&nbsp;<BR>&nbsp;&nbsp;&nbsp;像记忆体&nbsp;,&nbsp;键盘&nbsp;等......&nbsp;并在我们俗称的&nbsp;UMB&nbsp;(&nbsp;Upper&nbsp;Memory&nbsp;Block&nbsp;)&nbsp;<BR>&nbsp;&nbsp;&nbsp;之中扫描&nbsp;,&nbsp;看看是否有合法的&nbsp;ROM&nbsp;存在&nbsp;(&nbsp;比如&nbsp;SCSI&nbsp;卡上的&nbsp;ROM&nbsp;)&nbsp;.&nbsp;<BR>&nbsp;&nbsp;&nbsp;假如有&nbsp;,&nbsp;就到里面去执行一些东西&nbsp;,&nbsp;执行完之後再继续刚才的行程&nbsp;.&nbsp;到了&nbsp;<BR>&nbsp;&nbsp;&nbsp;最後&nbsp;,&nbsp;读取磁碟机上的第一个&nbsp;sector&nbsp;.&nbsp;在这里&nbsp;,&nbsp;我假设各位由硬碟启动&nbsp;<BR>&nbsp;&nbsp;&nbsp;因此&nbsp;,&nbsp;就硬碟的构造而言&nbsp;,&nbsp;它的第一个&nbsp;sector&nbsp;称为&nbsp;MBR&nbsp;(&nbsp;Master&nbsp;Boot&nbsp;<BR>&nbsp;&nbsp;&nbsp;Record&nbsp;)&nbsp;.&nbsp;因为一个&nbsp;sector&nbsp;是&nbsp;512&nbsp;bytes&nbsp;,&nbsp;而&nbsp;MBR&nbsp;这&nbsp;512&nbsp;bytes&nbsp;可分&nbsp;<BR>&nbsp;&nbsp;&nbsp;为两个部份&nbsp;,&nbsp;第一个部份为&nbsp;Pre-Boot&nbsp;区&nbsp;,&nbsp;占了&nbsp;446&nbsp;bytes&nbsp;;&nbsp;第二部份&nbsp;<BR>&nbsp;&nbsp;&nbsp;是&nbsp;Partition&nbsp;Table&nbsp;,&nbsp;占了&nbsp;66&nbsp;bytes&nbsp;.&nbsp;Pre-Boot&nbsp;区的作用之一&nbsp;,&nbsp;就是&nbsp;<BR>&nbsp;&nbsp;&nbsp;去看看那个&nbsp;Partition&nbsp;被标成&nbsp;Active&nbsp;,&nbsp;然後去读那个&nbsp;Partition&nbsp;的&nbsp;Boot&nbsp;<BR>&nbsp;&nbsp;&nbsp;区&nbsp;.&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在&nbsp;Linux&nbsp;的启动方面&nbsp;,&nbsp;一般人最常把&nbsp;LILO&nbsp;放在&nbsp;MBR&nbsp;或&nbsp;Superblock&nbsp;<BR>&nbsp;&nbsp;&nbsp;假如你把&nbsp;LILO&nbsp;放在&nbsp;MBR&nbsp;,&nbsp;那很明显的&nbsp;,&nbsp;当读取到&nbsp;MBR&nbsp;的时候&nbsp;,&nbsp;LILO&nbsp;<BR>&nbsp;&nbsp;&nbsp;就被执行&nbsp;,&nbsp;此时&nbsp;,&nbsp;你的萤幕上会出现&nbsp;&nbsp;boot:&nbsp;接著&nbsp;,&nbsp;就进行&nbsp;Load&nbsp;Kernel&nbsp;<BR>&nbsp;&nbsp;&nbsp;的动作&nbsp;.&nbsp;在另一方面来说&nbsp;,&nbsp;假如你把&nbsp;LILO&nbsp;安装在&nbsp;Superblock&nbsp;,&nbsp;通常你&nbsp;<BR>&nbsp;&nbsp;&nbsp;还会有一个管理开机的程式&nbsp;,&nbsp;也许是住在&nbsp;MBR&nbsp;(&nbsp;像&nbsp;OSBS&nbsp;)&nbsp;或者是放在一&nbsp;<BR>&nbsp;&nbsp;&nbsp;个单独的&nbsp;Partition&nbsp;(&nbsp;像&nbsp;OS/2&nbsp;的&nbsp;Boot&nbsp;Manager&nbsp;)&nbsp;.&nbsp;再由这个管理开机&nbsp;<BR>&nbsp;&nbsp;&nbsp;的程式去读取&nbsp;LILO&nbsp;,&nbsp;进而做&nbsp;Load&nbsp;Kernel&nbsp;的动作&nbsp;.&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;好了&nbsp;,&nbsp;到了目前为止&nbsp;,&nbsp;我们已经讲到&nbsp;Load&nbsp;Kernel&nbsp;的动作&nbsp;.&nbsp;Kernel&nbsp;被&nbsp;<BR>&nbsp;&nbsp;&nbsp;load&nbsp;到&nbsp;memory&nbsp;中之後&nbsp;,&nbsp;接著进行一连串&nbsp;probe&nbsp;周边的动作&nbsp;,&nbsp;像串联埠&nbsp;<BR>&nbsp;&nbsp;&nbsp;并联埠&nbsp;,&nbsp;软碟&nbsp;,&nbsp;音效卡&nbsp;,&nbsp;硬碟&nbsp;,&nbsp;光碟机&nbsp;等&nbsp;......&nbsp;接著&nbsp;mount&nbsp;root&nbsp;<BR>&nbsp;&nbsp;&nbsp;partition&nbsp;.&nbsp;在这之後&nbsp;,&nbsp;kernel&nbsp;会起动&nbsp;init&nbsp;这个&nbsp;process&nbsp;.&nbsp;init&nbsp;这&nbsp;<BR>&nbsp;&nbsp;&nbsp;个&nbsp;process&nbsp;的&nbsp;PID&nbsp;为&nbsp;1&nbsp;,&nbsp;它是所有&nbsp;process&nbsp;的祖先&nbsp;.&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;接下来呢&nbsp;?&nbsp;系统就开始执行&nbsp;&nbsp;/rc.d/rc.S&nbsp;&nbsp;,&nbsp;在这里&nbsp;,&nbsp;我们暂时打住&nbsp;,&nbsp;<BR>&nbsp;&nbsp;&nbsp;先对大概的&nbsp;initialization&nbsp;script&nbsp;执行的顺序作一个浏览&nbsp;,&nbsp;请看下面&nbsp;<BR>&nbsp;&nbsp;&nbsp;的流程&nbsp;:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;init[1]&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rc.S&nbsp;&nbsp;&nbsp;begin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;---&nbsp;目前我们已经讲到这里&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rc.serial&nbsp;&nbsp;&nbsp;begin&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rc.serial&nbsp;&nbsp;&nbsp;end&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rc.S&nbsp;&nbsp;&nbsp;end&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;init[1]&nbsp;enter&nbsp;runlevel&nbsp;5&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rc.M&nbsp;&nbsp;&nbsp;begin&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rc.inet1&nbsp;&nbsp;&nbsp;&nbsp;begin&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rc.inet1&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rc.inet2&nbsp;&nbsp;&nbsp;&nbsp;begin&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rc.inet2&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rc.font&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rc.font&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rc.local&nbsp;&nbsp;&nbsp;&nbsp;begin&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rc.local&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rc.M&nbsp;&nbsp;&nbsp;end&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;login&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;上面的流程清楚的指出&nbsp;,&nbsp;在&nbsp;rc.S&nbsp;这个&nbsp;shell&nbsp;script&nbsp;中&nbsp;,&nbsp;会去执行&nbsp;rc.serial&nbsp;<BR>&nbsp;&nbsp;&nbsp;接著再执行&nbsp;rc.M&nbsp;,&nbsp;rc.M&nbsp;中又包含了&nbsp;rc.inet1&nbsp;,&nbsp;rc.inet2&nbsp;,&nbsp;rc.font&nbsp;,&nbsp;rc.local&nbsp;<BR>&nbsp;&nbsp;&nbsp;最後执行&nbsp;login&nbsp;.&nbsp;在下面的内容中&nbsp;,&nbsp;将为各位介绍这几个&nbsp;shell&nbsp;script&nbsp;<BR>&nbsp;&nbsp;&nbsp;从下面开始&nbsp;,&nbsp;凡是每一列之前有一个&nbsp;#&nbsp;的&nbsp;,&nbsp;为原来&nbsp;shell&nbsp;script&nbsp;中的注解&nbsp;<BR>&nbsp;&nbsp;&nbsp;有两个&nbsp;#&nbsp;的&nbsp;,&nbsp;为笔者加上的注解&nbsp;,&nbsp;当然啦&nbsp;,&nbsp;没有任何&nbsp;#&nbsp;的为&nbsp;shell&nbsp;script&nbsp;<BR>&nbsp;&nbsp;&nbsp;的内容&nbsp;,&nbsp;而对命令或内容的解释&nbsp;,&nbsp;一律都写在命令或内容的前面&nbsp;.&nbsp;<BR>&nbsp;&nbsp;&nbsp;首先由&nbsp;rc.S&nbsp;开始&nbsp;:&nbsp;<BR>&nbsp;<BR>*****************************&nbsp;rc.S&nbsp;**********************************&nbsp;<BR>&nbsp;<BR>#!/bin/sh&nbsp;<BR>#&nbsp;<BR>#&nbsp;/etc/rc&nbsp;<BR>#&nbsp;<BR>#&nbsp;These&nbsp;commands&nbsp;are&nbsp;executed&nbsp;at&nbsp;boot&nbsp;time&nbsp;by&nbsp;init(8).&nbsp;<BR>#&nbsp;User&nbsp;customization&nbsp;should&nbsp;go&nbsp;in&nbsp;/etc/rc.local.&nbsp;<BR>&nbsp;<BR>echo&nbsp;'========&nbsp;rc.S&nbsp;is&nbsp;running&nbsp;!&nbsp;&nbsp;System&nbsp;Initializing&nbsp;Now&nbsp;!!!&nbsp;========'&nbsp;<BR>PATH=/sbin:/usr/sbin:/bin:/usr/bin&nbsp;<BR>&nbsp;<BR>##&nbsp;打开所有&nbsp;swap&nbsp;!&nbsp;下面&nbsp;/sbin/swapon&nbsp;-a&nbsp;的意思是&nbsp;:&nbsp;使得&nbsp;/etc/fstab&nbsp;中被记录&nbsp;<BR>##&nbsp;成&nbsp;swap&nbsp;的&nbsp;device&nbsp;全部启动&nbsp;.&nbsp;<BR>&nbsp;<BR>/sbin/swapon&nbsp;-a&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>##&nbsp;喔&nbsp;!&nbsp;下面这个指令&nbsp;update&nbsp;就很重要了&nbsp;,&nbsp;它负责每隔一段固定的时间&nbsp;,&nbsp;就将&nbsp;<BR>##&nbsp;buffer&nbsp;中的资料&nbsp;,&nbsp;利用&nbsp;sync&nbsp;写回磁碟机上&nbsp;,&nbsp;并将&nbsp;superblock&nbsp;做&nbsp;update&nbsp;<BR>##&nbsp;的动作&nbsp;.&nbsp;使用&nbsp;ps&nbsp;这个指令看看有那些&nbsp;process&nbsp;,&nbsp;就可看到&nbsp;update&nbsp;还有一个&nbsp;<BR>##&nbsp;bdflush&nbsp;,&nbsp;这两个&nbsp;process&nbsp;都是必然要存在的&nbsp;,&nbsp;可不要随便砍掉&nbsp;,&nbsp;要不然&nbsp;,&nbsp;<BR>##&nbsp;万一系统&nbsp;crash&nbsp;了&nbsp;,&nbsp;那磁碟机里面的资料就不是最新的了&nbsp;......&nbsp;<BR>&nbsp;<BR>/sbin/update&nbsp;&amp;&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>##&nbsp;利用&nbsp;echo&nbsp;-n&nbsp;&gt;&gt;&nbsp;制造一个档案&nbsp;,&nbsp;并用&nbsp;rm&nbsp;-f&nbsp;这个档案来测试&nbsp;root&nbsp;partition&nbsp;<BR>##&nbsp;是不是&nbsp;read-only&nbsp;或者是可读写&nbsp;<BR>&nbsp;<BR>READWRITE=no&nbsp;<BR>if&nbsp;echo&nbsp;-n&nbsp;&gt;&gt;&nbsp;&quot;Testing&nbsp;filesystem&nbsp;status&quot;;&nbsp;then&nbsp;<BR>&nbsp;rm&nbsp;-f&nbsp;&quot;Testing&nbsp;filesystem&nbsp;status&quot;&nbsp;<BR>&nbsp;READWRITE=yes&nbsp;<BR>fi&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>##&nbsp;假如&nbsp;root&nbsp;partition&nbsp;是&nbsp;read-only&nbsp;就作&nbsp;fsck&nbsp;的动作&nbsp;,&nbsp;假如不是&nbsp;read-only&nbsp;<BR>##&nbsp;而是&nbsp;read-write&nbsp;的话&nbsp;,&nbsp;就做下面&nbsp;else&nbsp;之後的动作&nbsp;<BR>&nbsp;<BR>if&nbsp;[&nbsp;!&nbsp;$READWRITE&nbsp;=&nbsp;yes&nbsp;];&nbsp;then&nbsp;<BR>&nbsp;##&nbsp;利用&nbsp;fsck&nbsp;做检查及修复档案系统的工作&nbsp;,&nbsp;後面接的两个参数&nbsp;-A&nbsp;,&nbsp;-a&nbsp;.&nbsp;<BR>&nbsp;##&nbsp;-A&nbsp;的意思是&nbsp;:&nbsp;fsck&nbsp;会依据&nbsp;/etc/fstab&nbsp;中的记录&nbsp;,&nbsp;去检查所有的档案&nbsp;<BR>&nbsp;##&nbsp;系统&nbsp;;&nbsp;而&nbsp;-a&nbsp;就是&nbsp;auto&nbsp;的意思&nbsp;,&nbsp;当&nbsp;fsck&nbsp;有修复的动作时&nbsp;,&nbsp;它不会问&nbsp;<BR>&nbsp;##&nbsp;你问题&nbsp;,&nbsp;而直接修复&nbsp;.&nbsp;<BR>&nbsp;<BR>&nbsp;/sbin/fsck&nbsp;-A&nbsp;-a&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;##&nbsp;假如&nbsp;fsck&nbsp;有&nbsp;error&nbsp;,&nbsp;[&nbsp;$?&nbsp;-gt&nbsp;1&nbsp;]&nbsp;括号里面的意思是&nbsp;:&nbsp;若上个命令的&nbsp;<BR>&nbsp;##&nbsp;传回值大於&nbsp;1&nbsp;,&nbsp;而上个命令就是&nbsp;fsck&nbsp;.&nbsp;让我们看看&nbsp;fsck&nbsp;的传回值&nbsp;:&nbsp;<BR>&nbsp;##&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;No&nbsp;errors&nbsp;<BR>&nbsp;##&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;File&nbsp;system&nbsp;errors&nbsp;corrected&nbsp;<BR>&nbsp;##&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;File&nbsp;system&nbsp;errors&nbsp;corrected,&nbsp;system&nbsp;should&nbsp;<BR>&nbsp;##&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;be&nbsp;rebooted&nbsp;if&nbsp;file&nbsp;system&nbsp;was&nbsp;mounted&nbsp;<BR>&nbsp;##&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;File&nbsp;system&nbsp;errors&nbsp;left&nbsp;uncorrected&nbsp;<BR>&nbsp;##&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;Operational&nbsp;error&nbsp;<BR>&nbsp;##&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;16&nbsp;&nbsp;&nbsp;-&nbsp;Usage&nbsp;or&nbsp;syntax&nbsp;error&nbsp;<BR>&nbsp;##&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;128&nbsp;&nbsp;-&nbsp;Shared&nbsp;library&nbsp;error&nbsp;<BR>&nbsp;##&nbsp;很明显的&nbsp;,&nbsp;若有任何错误产生的话&nbsp;,&nbsp;那&nbsp;fsck&nbsp;的传回值都大於&nbsp;1&nbsp;.&nbsp;其实&nbsp;<BR>&nbsp;##&nbsp;就我的观点认为&nbsp;,&nbsp;应该写成&nbsp;if&nbsp;[&nbsp;$?&nbsp;-ge&nbsp;1&nbsp;]&nbsp;比较好&nbsp;.&nbsp;既然有错呢&nbsp;,&nbsp;系统&nbsp;<BR>&nbsp;##&nbsp;应该就要跳至单人模式&nbsp;,&nbsp;在单人模式中主要就是&nbsp;/etc/rc.d/rc.K&nbsp;<BR>&nbsp;##&nbsp;中的两件事&nbsp;:&nbsp;关掉&nbsp;swap&nbsp;及&nbsp;卸下所有的档案系统&nbsp;,&nbsp;而最後重新&nbsp;login&nbsp;.&nbsp;<BR>&nbsp;##&nbsp;一般正常的情况下&nbsp;,&nbsp;&nbsp;if&nbsp;下面这一大段是不会执行的&nbsp;,&nbsp;而会跳至下面&nbsp;<BR>&nbsp;##&nbsp;标有&nbsp;*************************&nbsp;&nbsp;Normal&nbsp;1&nbsp;&nbsp;*************************&nbsp;处&nbsp;<BR>&nbsp;<BR>&nbsp;if&nbsp;[&nbsp;$?&nbsp;-gt&nbsp;1&nbsp;]&nbsp;;&nbsp;then&nbsp;<BR>&nbsp;&nbsp;echo&nbsp;<BR>&nbsp;&nbsp;echo&nbsp;<BR>&nbsp;&nbsp;echo&nbsp;&quot;**************************************&quot;&nbsp;<BR>&nbsp;&nbsp;echo&nbsp;&quot;fsck&nbsp;returned&nbsp;error&nbsp;code&nbsp;-&nbsp;REBOOT&nbsp;NOW!&quot;&nbsp;<BR>&nbsp;&nbsp;echo&nbsp;&quot;**************************************&quot;&nbsp;<BR>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -