IBM AIX 5.3 系统管理 -- 系统启动过程详解
?
一. 啟動(dòng)過(guò)程
啟動(dòng)過(guò)程包含下面的一些步驟:
?????? 1.1啟動(dòng)一個(gè)系統(tǒng)的初始步驟是上電自檢(Power On Self Test,POST)。其目的是驗(yàn)證基本硬件是否處于正常的工作狀態(tài)。同時(shí)初始化內(nèi)存、鍵盤、通信,以及音頻設(shè)備。您可以看到在屏幕上顯示了所有的這些設(shè)備。在這個(gè)步驟中,您可以按下功能鍵,以選擇不同的啟動(dòng)列表。這個(gè)階段中所顯示的 LED 值是模型特定的。硬件和軟件方面的問(wèn)題都可能使得系統(tǒng)無(wú)法啟動(dòng)。
?????? 注意:基于 MCI 體系結(jié)構(gòu)的舊系統(tǒng)在這個(gè)步驟之前還將執(zhí)行一個(gè)附加的步驟,即所謂的內(nèi)建自檢(Built In Self Test,BIST)。對(duì)于基于 PCI 體系結(jié)構(gòu)的系統(tǒng),不再需要執(zhí)行這個(gè)步驟。
?????? 1.2 系統(tǒng)只讀存儲(chǔ)器(System Read Only Storage,ROS)對(duì)于每種類型的系統(tǒng)來(lái)說(shuō)都是特定的。它是啟動(dòng) AIX 5L Version 5.3 所必需的,但是它并不為啟動(dòng)工作構(gòu)建所需的數(shù)據(jù)結(jié)構(gòu)。它將定位和加載引導(dǎo) (bootstrap) 代碼。系統(tǒng) ROS 中包含通用的啟動(dòng)信息,并且是獨(dú)立于操作系統(tǒng)的。
?????? 1.3 軟件 ROS(也稱為引導(dǎo)程序)構(gòu)成了 IPL 控制塊,它與 AIX 5L Version 5.3 是兼容的,用于接收控制和構(gòu)建 AIX 5L 的特定啟動(dòng)信息。將在內(nèi)存中定位一種特殊的文件系統(tǒng),并創(chuàng)建一種名為 RAMFS 的文件系統(tǒng)。然后,軟件 ROS 定位、加載、并將控制權(quán)交給 AIX 5L 啟動(dòng)邏輯卷 (BLV)。軟件 ROS 是基于計(jì)算機(jī)類型的 AIX 5L 信息,并且負(fù)責(zé)完成計(jì)算機(jī)準(zhǔn)備工作,以使得它能夠啟動(dòng) AIX 5L 內(nèi)核。
???? 1.4 可以從 /usr/lib/boot 目錄中獲得 BLV 中所包含的文件的完整列表。其中最重要的組件包含以下內(nèi)容:
?????? ?????? (1)AIX 5L 內(nèi)核
?????? ?????? (2)在啟動(dòng)過(guò)程中調(diào)用的啟動(dòng)命令,如 bootinfo 和 cfgmgr
?????? ?????? (3)ODM 的一個(gè)簡(jiǎn)化的版本。在 hd4 可供使用之前,需要對(duì)許多設(shè)備進(jìn)行配置,所以它們的相應(yīng)方法必須存儲(chǔ)在 BLV 中。這些設(shè)備都被標(biāo)記為預(yù)定義設(shè)備 (PdDv) 中的基礎(chǔ)設(shè)備。
?????? ?????? (4)rc.boot 腳本
?????? 1.5 加載 AIX 5L 內(nèi)核,并接管控制權(quán)。系統(tǒng)將在 LED 面板上顯示 0299。前面所有的代碼都是與硬件相關(guān)的。通過(guò)配置設(shè)備和啟動(dòng) init 進(jìn)程,內(nèi)核將完成啟動(dòng)過(guò)程。在這個(gè)階段中所顯示的 LED 代碼都是通用的 AIX 5L 代碼。
?????? 1.6 到此為止,系統(tǒng)對(duì)硬件進(jìn)行了檢測(cè)、找到了 BLV、創(chuàng)建了 RAMFS,并且從 BLV 中啟動(dòng)了 init 進(jìn)程。但是尚未激活 rootvg。從現(xiàn)在開始,將調(diào)用三次 rc.boot 腳本,并且每次都傳遞不同的參數(shù)。
?
?????? 1.6.1 啟動(dòng)階段 1
?????? 在這個(gè)階段中,將執(zhí)行下面的步驟:
?????? (1)從 RAMFS 啟動(dòng)的 init 進(jìn)程將執(zhí)行啟動(dòng)腳本 rc.boot 1。如果出于某種原因,init 進(jìn)程執(zhí)行失敗,那么將在 LED 顯示屏上顯示代碼 c06。
?????? (2)在這個(gè)階段中,將調(diào)用 restbase 命令,以便將 ODM 的部分鏡像從 BLV 復(fù)制到 RAMFS。如果這個(gè)操作成功完成,那么 LED 顯示屏將顯示 510;否則,將顯示 LED 代碼 548。
?????? (3)在執(zhí)行了該操作之后,cfgmgr -f 命令將從簡(jiǎn)化的 ODM 中讀取 Config_Rules 類。在這個(gè)類中,將屬性 phase=1 的設(shè)備認(rèn)為是基礎(chǔ)設(shè)備。基礎(chǔ)設(shè)備是訪問(wèn) rootvg 所需的所有設(shè)備。例如,如果 rootvg 位于某塊磁盤中,那么必須對(duì)從主板到磁盤之間的所有設(shè)備進(jìn)行初始化。調(diào)用相應(yīng)的方法,以便能夠在啟動(dòng)階段 2 中激活 rootvg。
?????? (4)在啟動(dòng)階段 1 結(jié)束后,將調(diào)用 bootinfo -b 命令以確定最后的啟動(dòng)設(shè)備。在這個(gè)階段中,LED 將顯示 511。
?
?????? 1.6.2 啟動(dòng)階段 2
?????? 在啟動(dòng)階段 2 中,向 rc.boot 腳本傳遞的參數(shù)為 2。在這個(gè)階段中,將執(zhí)行下面的這些步驟:
?????? (1)可以使用 varyonvg 命令(名為 ipl_varyon 命令)的特殊版本來(lái)激活 rootvg 卷組。如果這個(gè)命令執(zhí)行成功,那么系統(tǒng)將顯示 517;否則,將顯示下面 LED 代碼中的某一個(gè):552、554、或者 556,并且停止啟動(dòng)過(guò)程。
?????? (2)使用 fsck -f 命令來(lái)檢查根文件系統(tǒng) hd4。該操作將驗(yàn)證在上一次關(guān)機(jī)之前是否已經(jīng)干凈地卸載了這個(gè)文件系統(tǒng)。如果這個(gè)命令執(zhí)行失敗,那么系統(tǒng)將顯示代碼 555。
?????? (3)將根文件系統(tǒng) (/dev/hd4) 裝入到 RAMFS 中的臨時(shí)裝入點(diǎn) (/mnt)。如果這個(gè)操作執(zhí)行失敗,那么在 LED 顯示屏中將顯示 557。
?????? (4)使用 fsck -f 命令檢查 /usr 文件系統(tǒng),然后進(jìn)行裝入。如果這個(gè)操作執(zhí)行失敗,那么 LED 將顯示 518。
?????? (5) 使用 fsck -f 命令檢查 /var 文件系統(tǒng),然后進(jìn)行裝入。使用 copycore 命令檢查是否發(fā)生了轉(zhuǎn)儲(chǔ)。如果發(fā)生了轉(zhuǎn)儲(chǔ),那么從缺省轉(zhuǎn)儲(chǔ)設(shè)備 /dev/hd6 復(fù)制到缺省復(fù)制目錄 /var/adm/ras。然后,卸載 /var。
?????? (6)激活 rootvg 的主分頁(yè)空間 /dev/hd6。
?????? (7)調(diào)用 mergedev 進(jìn)程,并將 RAM 文件系統(tǒng)的所有 /dev 文件復(fù)制到磁盤。
?????? (8)將 RAM 文件系統(tǒng)中所有自定義的 ODM 文件復(fù)制到磁盤。對(duì)于 hd4 和 hd5 中的兩個(gè) ODM 版本,現(xiàn)在進(jìn)行同步。
?????? (9)最后,將 rootvg(磁盤)中的根文件系統(tǒng)裝入到 RAMFS 的根文件系統(tǒng)。rootvg 文件系統(tǒng)的裝入點(diǎn)已變得可用。現(xiàn)在,再次將 rootvg 的 /var 和 /usr 文件系統(tǒng)裝入到它們的正常裝入點(diǎn)。
在這個(gè)階段中,不能使用控制臺(tái),所以所有的啟動(dòng)消息都將復(fù)制到 alog。alog 命令可以對(duì)日志進(jìn)行維護(hù)和管理。
?
?????? 1.6.3 啟動(dòng)階段 3
?????? 在階段 2 完成之后,激活了 rootvg,并將執(zhí)行下面的步驟:
?????? (1)啟動(dòng) /etc/init 進(jìn)程。它將讀取 /etc/inittab 文件,并使用參數(shù) 3 調(diào)用 rc.boot。
?????? (2)裝入 /tmp 文件系統(tǒng)。
?????? (3)通過(guò)調(diào)用 syncvg 命令(將該命令啟動(dòng)作為一個(gè)后臺(tái)進(jìn)程)對(duì) rootvg 進(jìn)行同步。因此,將對(duì) rootvg 中所有過(guò)時(shí)的分區(qū)進(jìn)行更新。在這個(gè)階段中,將顯示 LED 代碼 553。
?????? (4)在這個(gè)階段中,將調(diào)用 cfgmgr 命令;如果系統(tǒng)以正常模式進(jìn)行啟動(dòng),那么將使用選項(xiàng) -p2 來(lái)調(diào)用 cfgmgr 命令;如果系統(tǒng)以服務(wù)模式進(jìn)行啟動(dòng),那么將使用選項(xiàng) -p3 來(lái)調(diào)用 cfgmgr 命令。cfgmgr 命令將從 ODM 讀取 Config_rules 文件,并且調(diào)用與 phase=2 或者 phase=3 相對(duì)應(yīng)的所有方法。所有其他非基礎(chǔ)設(shè)備的設(shè)備,并不在這里進(jìn)行配置。
?????? (4)接下來(lái),通過(guò)調(diào)用 cfgcon 命令對(duì)控制臺(tái)進(jìn)行配置。在配置了控制臺(tái)之后,如果沒(méi)有設(shè)置 STDOUT 重定向,那么啟動(dòng)消息將發(fā)送到控制臺(tái)。然而,可以在 /var/adm/ras/conslog 中找到所有遺漏的消息。此時(shí),可能顯示的 LED 代碼包括:
????????????? 1)c31:控制臺(tái)尚未配置。提供相應(yīng)的指令以選擇控制臺(tái)。
????????????? 2)c32:控制臺(tái)是 LFT 終端。
????????????? 3)c33:控制臺(tái)為 TTY。
????????????? 4)c34:控制臺(tái)為磁盤中的文件。
?????? (5)最后,使用 savebase 命令對(duì) BLV 中的 ODM 與 / (root) 文件系統(tǒng)中的 ODM 進(jìn)行同步。
?????? (6)啟動(dòng) syncd 守護(hù)進(jìn)程和 errdemon。
?????? (7)LED 顯示屏將關(guān)閉。
?????? (8)如果文件 /etc/nologin 存在,則將其刪除。
?????? (9)如果 CuDv 中有設(shè)備被標(biāo)記為缺失,那么將在控制臺(tái)中顯示一條消息。
?????? (10)消息“System initialization completed”發(fā)送到控制臺(tái)。rc.boot 執(zhí)行完成。進(jìn)程 init 將繼續(xù)處理 /etc/inittab 中的下一條命令。
?
?
二. 系統(tǒng)初始化
?????? 在系統(tǒng)啟動(dòng)過(guò)程中,在預(yù)初始化過(guò)程中裝入根文件系統(tǒng)之后,將發(fā)生下面這些事件:
?????? (1)作為啟動(dòng)過(guò)程中的最后一個(gè)步驟,運(yùn)行 init 命令。
?????? (2)init 命令嘗試讀取 /etc/inittab 文件。
?????? (3)如果 /etc/inittab 文件存在,那么 init 命令將嘗試在 /etc/inittab 文件中查找 initdefault 條目。
?????? ?????? ?????? 1)如果 initdefault 條目存在,那么 init 命令使用指定的運(yùn)行級(jí)別作為初始的系統(tǒng)運(yùn)行級(jí)別。
?????? ?????? ?????? 2)如果 initdefault 條目不存在,那么 init 命令將請(qǐng)求用戶從系統(tǒng)控制臺(tái) (/dev/console) 輸入一個(gè)運(yùn)行級(jí)別。
?????? ?????? ?????? 3)如果用戶輸入 S、s、M、或者 m 運(yùn)行級(jí)別,那么 init 命令將進(jìn)入維護(hù)運(yùn)行級(jí)別。只有這些運(yùn)行級(jí)別不需要經(jīng)過(guò)正確格式化的 /etc/inittab 文件。
?????? (4)如果 /etc/inittab 文件不存在,那么 init 命令在缺省情況下將使系統(tǒng)進(jìn)入維護(hù)運(yùn)行級(jí)別。
?????? (5)init 命令每隔 60 秒將再次讀取 /etc/inittab 文件。如果在 init 命令上一次讀取 /etc/inittab 文件之后,其中的內(nèi)容發(fā)生了更改,那么將執(zhí)行 /etc/inittab 文件中的新命令。
?
2.1 /etc/inittab 文件
?????? /etc/inittab 文件用于控制初始化過(guò)程。
??????
?????? /etc/inittab 文件提供了相應(yīng)的腳本,以使得 init 命令的角色成為通用的進(jìn)程調(diào)度器。init 命令的進(jìn)程調(diào)度活動(dòng)中的主要進(jìn)程是 /etc/getty 線路進(jìn)程,它將啟動(dòng)單獨(dú)終端線路。通常由 init 命令進(jìn)行調(diào)度的其他進(jìn)程包括守護(hù)進(jìn)程和 Shell。
?
?????? /etc/inittab 文件由一些與位置無(wú)關(guān)的條目組成,它們的格式如下所示:
????????????? Identifier:RunLevel:Action:Command
?
?????? 每個(gè)條目之間由一個(gè)換行符進(jìn)行分隔。換行符前面加上一個(gè)反斜杠 (/) 表示繼續(xù)該條目。在 /etc/inittab 文件中,對(duì)于條目的數(shù)目沒(méi)有任何限制(但不能超過(guò)最大的條目大小)。最大的條目大小為 1024 個(gè)字符。
?
條目字段包括:
(1)Identifier,由一到十四個(gè)字符組成的字段,唯一地標(biāo)識(shí)一個(gè)對(duì)象。
(2)RunLevel,可以對(duì)該條目進(jìn)行處理的運(yùn)行級(jí)別。
運(yùn)行級(jí)別具有下面的屬性:
????????????? 1)運(yùn)行級(jí)別有效地對(duì)應(yīng)于系統(tǒng)中的進(jìn)程配置。
????????????? 2)可以為每個(gè)由 init 命令啟動(dòng)的進(jìn)程分配一個(gè)或者多個(gè)運(yùn)行級(jí)別(該進(jìn)程可以存在于其中)。
????????????? 3)運(yùn)行級(jí)別使用數(shù)字 0 到 9 進(jìn)行表示。例如,如果系統(tǒng)處于運(yùn)行級(jí)別 1,那么只有那些在運(yùn)行級(jí)別字段中包含 1 的條目才會(huì)啟動(dòng)。
?????? ?????? 4)當(dāng)您請(qǐng)求 init 命令更改運(yùn)行級(jí)別時(shí),在運(yùn)行級(jí)別字段中不包含匹配條目(對(duì)于目標(biāo)運(yùn)行級(jí)別)的所有進(jìn)程都將接收到一個(gè)警告信號(hào) (SIGTERM)。在使用刪除信號(hào) (SIGKILL) 強(qiáng)行結(jié)束這些進(jìn)程之前,有 20 秒鐘的過(guò)渡期。
?????? ?????? 5)通過(guò)使用從 0 到 9 的任意組合,可以選擇多個(gè)運(yùn)行級(jí)別,從而在運(yùn)行級(jí)別字段中為一個(gè)進(jìn)程定義多個(gè)運(yùn)行級(jí)別。如果沒(méi)有指定運(yùn)行級(jí)別,那么就假定該進(jìn)程在所有的運(yùn)行級(jí)別中都是有效的。
????????????? 6)在運(yùn)行級(jí)別字段中,還可能出現(xiàn)其他四種取值,即使它們并不是真正的運(yùn)行級(jí)別:a、b、c 和 h。僅當(dāng)使用 telinit 命令請(qǐng)求它們運(yùn)行時(shí)(無(wú)論系統(tǒng)當(dāng)前運(yùn)行級(jí)別如何),才會(huì)處理那些運(yùn)行級(jí)別字段中包含這些字符的條目。它們與運(yùn)行級(jí)別的不同之處在于,init 命令不可能進(jìn)入到運(yùn)行級(jí)別 a、b、c 或者 h。另外,任何這些進(jìn)程的執(zhí)行請(qǐng)求都不會(huì)更改當(dāng)前運(yùn)行級(jí)別。而且,在 init 命令更改級(jí)別時(shí),不會(huì)終止以 a、b 或者 c 命令開頭的進(jìn)程。只有在下面三種情況下才會(huì)終止它們:在 /etc/inittab 文件中,它們所在行的操作字段被標(biāo)記為 off,從 /etc/inittab 中完全刪除它們所在的行,或者 init 命令進(jìn)入到單用戶模式。
?
(3)Action,用于告訴 init 命令如何處理在進(jìn)程字段中指定的進(jìn)程。init 命令能識(shí)別下列的操作:
????????????? 1)respawn:如果進(jìn)程不存在,則啟動(dòng)該進(jìn)程。不需要等待它的結(jié)束(繼續(xù)掃描 /etc/inittab 文件)。當(dāng)進(jìn)程中止時(shí),重新啟動(dòng)該進(jìn)程。如果該進(jìn)程已經(jīng)存在,則什么也不做,繼續(xù)掃描 /etc/inittab 文件。
????????????? 2)wait:當(dāng) init 命令進(jìn)入到與該條目的運(yùn)行級(jí)別相匹配的運(yùn)行級(jí)別時(shí),啟動(dòng)該進(jìn)程,并等待它的結(jié)束。當(dāng) init 命令處于相同的運(yùn)行級(jí)別時(shí),所有后續(xù)對(duì) /etc/inittab 文件的讀取操作都將導(dǎo)致 init 命令忽略這個(gè)條目。
????????????? 3)once:當(dāng) init 命令進(jìn)入到與該條目的運(yùn)行級(jí)別相匹配的運(yùn)行級(jí)別時(shí),啟動(dòng)該進(jìn)程,并且不需要等待它的結(jié)束。當(dāng)它中止時(shí),不重新啟動(dòng)該進(jìn)程。當(dāng)系統(tǒng)進(jìn)入一個(gè)新的運(yùn)行級(jí)別,并且該進(jìn)程的運(yùn)行來(lái)自前一個(gè)運(yùn)行級(jí)別更改時(shí),不重新啟動(dòng)該程序。
????????????? 4)boot:僅在系統(tǒng)啟動(dòng)時(shí)(即在系統(tǒng)啟動(dòng)的過(guò)程中當(dāng) init 命令讀取 /etc/inittab 文件的時(shí)候)處理該條目。啟動(dòng)該進(jìn)程,不需要等待它的結(jié)束,并且當(dāng)它中止時(shí),不重新啟動(dòng)該進(jìn)程。為了使得該指令有意義,運(yùn)行級(jí)別應(yīng)該為缺省值,或者它必須與啟動(dòng)時(shí) init 命令的運(yùn)行級(jí)別相匹配。對(duì)于系統(tǒng)硬件重新啟動(dòng)之后的初始化功能來(lái)說(shuō),這種操作是非常有價(jià)值的。
????????????? 5)bootwait:在系統(tǒng)啟動(dòng)之后,當(dāng) init 命令第一次從單用戶進(jìn)入到多用戶狀態(tài)時(shí),處理該條目。啟動(dòng)該進(jìn)程,等待它的結(jié)束;并且當(dāng)它中止時(shí),不重新啟動(dòng)該進(jìn)程。如果 initdefault 為 2,那么在啟動(dòng)之后運(yùn)行該進(jìn)程。
????????????? 6)powerfail:僅當(dāng) init 命令接收到電源故障信號(hào) (SIGPWR) 時(shí),才執(zhí)行與這個(gè)條目相關(guān)聯(lián)的進(jìn)程。
?????? ?????? 7)powerwait:僅當(dāng) init 命令接收到電源故障信號(hào) (SIGPWR) 時(shí),才執(zhí)行與這個(gè)條目相關(guān)聯(lián)的進(jìn)程,并且在繼續(xù)處理 /etc/inittab 文件之前,必須等待它結(jié)束。
????????????? 8)off:如果與這個(gè)條目相關(guān)聯(lián)的進(jìn)程目前正在運(yùn)行,那么發(fā)送警告信號(hào) (SIGTERM),等待 20 秒鐘,然后使用刪除信號(hào) (SIGKILL) 終止該進(jìn)程。如果該進(jìn)程沒(méi)有運(yùn)行,則忽略這個(gè)條目。
????????????? 9)ondemand:從功能上看,與 respawn 是相同的,但是這個(gè)操作適用于 a、b 或者 c 值,而不是運(yùn)行級(jí)別。
????????????? 10)initdefault:僅在 init 命令最初被調(diào)用時(shí),才掃描包含這個(gè)操作的條目。init 命令使用這個(gè)條目(如果它存在的話)來(lái)確定最初要進(jìn)入的運(yùn)行級(jí)別。通過(guò)使用運(yùn)行級(jí)別字段中所指定的最高運(yùn)行級(jí)別,就可以實(shí)現(xiàn)這一點(diǎn),并使用它作為其初始狀態(tài)。如果運(yùn)行級(jí)別字段為空,那么將其解釋為“0123456789”:因此,init 命令將進(jìn)入運(yùn)行級(jí)別 9。另外,如果 init 命令在 /etc/inittab 文件中沒(méi)有找到 initdefault 條目,那么將要求用戶在啟動(dòng)時(shí)指定一個(gè)最初的運(yùn)行級(jí)別。
????????????? 11)sysinit:當(dāng) init 命令在登錄之前嘗試訪問(wèn)控制臺(tái)時(shí),將執(zhí)行這種類型的條目。在正常情況下,這個(gè)條目?jī)H用于初始化設(shè)備(init 命令可能會(huì)對(duì)這些設(shè)備詢問(wèn)有關(guān)運(yùn)行級(jí)別的問(wèn)題)。執(zhí)行這些條目,并等待它們結(jié)束,然后再繼續(xù)。
?
(4)Command:要執(zhí)行的 Shell 命令。整個(gè)命令字段以 exec 作為前綴,然后以 sh -c exec command 的形式傳遞給一個(gè)使用 fork 系統(tǒng)調(diào)用生成的 sh。任何合法的 sh 命令語(yǔ)法都可以出現(xiàn)在這個(gè)字段中??梢允褂?/span> # comment 語(yǔ)法插入注釋。
?
?????? getty 命令將覆蓋 /etc/inittab 文件中出現(xiàn)在它之前的任何命令的輸出。要將這些命令的輸出記錄到啟動(dòng)日志,可以使用管道將它們的輸出傳遞給 alog -tboot 命令。
?
?????? 在 init 命令處理 inittab 條目時(shí),stdin、stdout 和 stderr 文件描述符可能是不可用的。向 stdout 或者 stderr 進(jìn)行寫入操作的任何條目都可能無(wú)法按照預(yù)期的方式工作,除非它們將自己的輸出重定向到一個(gè)文件或者 /dev/console。
?
對(duì)于修改 /etc/inittab 文件中的記錄,僅支持下列的命令:
?????? (1)mkitab:將記錄添加到 /etc/inittab 文件。
?????? (2)lsitab:列出 /etc/inittab 文件中的記錄。
?????? (3)chitab:更改 /etc/inittab 文件中的記錄。
?????? (4)rmitab:刪除 /etc/inittab 文件中的記錄。
?
例如,向 /etc/inittab 文件添加一條記錄,以便在運(yùn)行級(jí)別 2 中運(yùn)行 find 命令,并且在它結(jié)束后再次啟動(dòng)它:
1. 運(yùn)行 ps 命令,并顯示那些僅包含單詞 find 的進(jìn)程:
| # ps -ef | grep find???????????????????????????????????? ?????? root 19750 13964?? 0 10:47:23? pts/0? 0:00 grep find # |
?
2. 使用 mkitab 命令向 /etc/inittab 添加一條名為 xcmd 的記錄:
| # mkitab "xcmd:2:respawn:find / -type f > /dev/null 2>&1" |
?
3. 使用 lsitab 命令顯示新的記錄:
| # lsitab xcmd xcmd:2:respawn:find / -type f > /dev/null 2>&1 |
?
4. 顯示進(jìn)程:
| # ps -ef | grep find????????????????????????????????????? ?????? root 28972 13964?? 0 11:07:33? pts/0? 0:00 grep find? |
?
5. 結(jié)束 find 進(jìn)程:
| # kill 25462 |
?
6. 顯示進(jìn)程:
| # ps -ef | grep find????????????????????????????????????????????????????????? ?????? root 23538 13964?? 0 10:58:24? pts/0? 0:00 grep find????????????????????? ?????? root 28966???? 1?? 4 10:58:21????? -? 0:00 find / -type f |
?
由于 action 項(xiàng)被設(shè)置成為了 respawn,所以一個(gè)新的 find 進(jìn)程(上面顯示的 28966)在前一個(gè)進(jìn)程結(jié)束后又被系統(tǒng)啟動(dòng)了。
這個(gè)進(jìn)程會(huì)被不斷的重新啟動(dòng),除非把 action 項(xiàng)的設(shè)置修改,如:
1. 把 xcmd 這條記錄的 action 項(xiàng)的值從 respawn 修改為 once:
| # chitab "xcmd:2:once:find / -type f > /dev/null 2>&1" |
?
2. 顯示進(jìn)程:
| # ps -ef | grep find?????????????????????? ??????????????????????????????????? ?????? root 20378 13964?? 0 11:07:20? pts/0? 0:00 grep find????????????????????? ?????? root 28970???? 1?? 4 11:05:46????? -? 0:03 find / -type f |
?
3. 結(jié)束 find 進(jìn)程:
| # kill 28970 |
?
4. 顯示進(jìn)程:
| # ps -ef | grep find??????????????????? ?????????????????? ?????? root 28972 13964?? 0 11:07:33? pts/0? 0:00 grep find? |
?
可以看到 find 進(jìn)程沒(méi)有再被系統(tǒng)啟動(dòng)。
要從 /etc/inittab 文件中刪除這條記錄,您可以使用 rmitab 命令。例如:
| # rmitab xcmd # lsitab xcmd # |
?
2.2 /etc/inittab 條目的順序
?
在 /etc/inittab 文件中,基本條目按照如下所示的方式進(jìn)行排序:
(1)initdefault
(2)sysinit
(3)Powerfailure Detection (powerfail)
(4)Multiuser check (rc)
(5)/etc/firstboot (fbcheck)
(6)System Resource Controller (srcmstr)
(7)Start TCP/IP daemons (rctcpip)
(8)Start NFS daemons (rcnfs)
(9)cron
(10)pb cleanup (piobe)
(11)getty for the console (cons)
??????
?????? 必須在 etc/inittab 文件的開始處附近啟動(dòng)系統(tǒng)資源控制器(System Resource Controller,SRC),因?yàn)樾枰?/span> SRC 守護(hù)進(jìn)程來(lái)啟動(dòng)其他進(jìn)程。因?yàn)?/span> NFS 需要 TCP/IP 守護(hù)進(jìn)程正確地運(yùn)行,所以應(yīng)該在啟動(dòng) NFS 守護(hù)進(jìn)程之前啟動(dòng) TCP/IP 守護(hù)進(jìn)程。/etc/inittab 文件中的條目根據(jù)依賴關(guān)系進(jìn)行排序,這意味著,如果一個(gè)進(jìn)程 (process2) 的正常運(yùn)行需要另一個(gè)進(jìn)程 (process1) 的存在,那么在 /etc/inittab 文件中,process1 的條目應(yīng)該出現(xiàn)在 process2 的條目之前。
?
三.? 如何對(duì)無(wú)響應(yīng)的啟動(dòng)過(guò)程進(jìn)行恢復(fù)
?????? 如果您的系統(tǒng)無(wú)法啟動(dòng),AIX 5L 提供了一些工具和方法以便對(duì)掛起的啟動(dòng)過(guò)程進(jìn)行恢復(fù)。
?????? 這個(gè)部分將介紹可能導(dǎo)致系統(tǒng)在啟動(dòng)過(guò)程中出現(xiàn)掛起的情況。
?
3.1? bootlist 命令
?????? 可以更改系統(tǒng)查找相關(guān)設(shè)備(以獲得其啟動(dòng)代碼)的順序。bootlist 命令顯示并改變可用于系統(tǒng)的啟動(dòng)設(shè)備列表。該命令的一般語(yǔ)法規(guī)則如下所示:
| ? |
?????? bootlist [ { -m Mode } [ -r ] [? -o? ] [ [ -i ] | [ [ -f File ]
?????? [ Device [ Attr=Value ... ] ... ] ] ]
?
bootlist 命令最常使用的一些標(biāo)志。
| 標(biāo)志 | 說(shuō)明 |
| -m mode | 指定所要顯示或改變的啟動(dòng)列表。模式變量的可能取值為 normal、service、both 或者 prevboot。 |
| -f File | 表示從指定的文件名讀取設(shè)備信息。 |
| -i | 表示由 -m 標(biāo)志指定的設(shè)備列表應(yīng)該失效。 |
| -o | 表示執(zhí)行了任何指定的改變之后,將顯示指定的啟動(dòng)列表。輸出是設(shè)備名稱列表。 |
| -r | 表示執(zhí)行了任何指定的改變之后,將顯示指定的啟動(dòng)列表。輸出取決于硬件平臺(tái)。 |
?
bootlist 命令允許用戶顯示和改變要啟動(dòng)的系統(tǒng)中可能的啟動(dòng)設(shè)備的列表。這個(gè)命令支持下面的更新:
?????? (1)常規(guī)啟動(dòng)列表:當(dāng)系統(tǒng)以常規(guī)方式啟動(dòng)時(shí),常規(guī)列表為此指定可能的啟動(dòng)設(shè)備。
?????? (2)服務(wù)啟動(dòng)列表:當(dāng)系統(tǒng)以服務(wù)方式啟動(dòng)時(shí),服務(wù)列表為此指定可能的啟動(dòng)設(shè)備。
?????? (3)前一啟動(dòng)設(shè)備條目:該條目指定了最近一次啟動(dòng)系統(tǒng)的設(shè)備。一些硬件平臺(tái)可能試圖在查找其他列表中的啟動(dòng)設(shè)備之前先從前一啟動(dòng)設(shè)備進(jìn)行啟動(dòng)。
?
?????? 對(duì)這些啟動(dòng)列表的支持,可能隨著平臺(tái)的不同而不同,并且在某些平臺(tái)中可能沒(méi)有啟動(dòng)列表。當(dāng)系統(tǒng)啟動(dòng)時(shí),它將在啟動(dòng)列表中搜索啟動(dòng)設(shè)備,系統(tǒng)將選擇列表中的第一個(gè)設(shè)備,并確定它是否可以啟動(dòng)。如果在第一個(gè)設(shè)備上沒(méi)有檢測(cè)到啟動(dòng)文件系統(tǒng),該系統(tǒng)將轉(zhuǎn)移至列表中的下一個(gè)設(shè)備。因此,設(shè)備在設(shè)備列表中的排序是非常重要的。
?
要顯示啟動(dòng)列表(AIX Version 4.2 或更高版本),可以使用下面的命令:
| # bootlist -m normal -o cd0 hdisk0 blv=hd5 rmt0 |
?
對(duì)正常的啟動(dòng)列表進(jìn)行更改,并且刪除 rmt0(舉例來(lái)說(shuō)),可以使用下面的命令:
| # bootlist -m normal cd0 hdisk0 |
?
或者創(chuàng)建一個(gè)包含 cd0 hdisk0 的列表的文件(由空格進(jìn)行分隔,或者每個(gè)設(shè)備占一行),并且使用下面的命令:
| # bootlist -m normal -f filename |
?
?????? 這將更改常規(guī)啟動(dòng)列表,以表示在啟動(dòng)系統(tǒng)時(shí),它將首先嘗試從 cd0 進(jìn)行啟動(dòng)。如果在 cd0 中無(wú)法找到啟動(dòng)鏡像,那么它將轉(zhuǎn)向 hdisk0。如果搜索失敗,那么它將顯示一個(gè) LED 代碼,并等待用戶進(jìn)行干預(yù)。它不會(huì)繼續(xù)搜索 rmt0。
在更改了啟動(dòng)列表之后,對(duì)其進(jìn)行驗(yàn)證,如下所示:
| # bootlist -m normal -o hdisk0 blv=hd5 cd0 |
?
?????? 對(duì)這些啟動(dòng)列表的支持可能隨著平臺(tái)的不同而不同,并且在某些平臺(tái)中可能沒(méi)有啟動(dòng)列表。當(dāng)搜索啟動(dòng)設(shè)備時(shí),系統(tǒng)將選擇列表中的第一個(gè)設(shè)備,并確定它是否可以啟動(dòng)。如果在第一個(gè)設(shè)備中沒(méi)有檢測(cè)到 BLV,那么系統(tǒng)將轉(zhuǎn)移至列表中的下一個(gè)設(shè)備。因此,設(shè)備在設(shè)備列表中的排序是非常重要的。
?
?
3.2? 啟動(dòng)設(shè)備選擇
?????? 下表提供了可以在您的啟動(dòng)列表中使用的命名規(guī)范。向啟動(dòng)列表所添加的每個(gè)設(shè)備都必須處于 AVAILABLE 狀態(tài)。否則,bootlist 命令將失敗,并且您將碰到與以下所示類似的錯(cuò)誤:
| 0514-210 bootlist: Device xxxxx is not in the AVAILABLE state |
?
| 設(shè)備 | 說(shuō)明 |
| hdiskxx | 物理卷設(shè)備邏輯名 |
| cdxx | SCSI 和 IDE CD-ROM 設(shè)備邏輯名 |
| rmtxx | 磁帶設(shè)備邏輯名 |
| entxx | 以太網(wǎng)適配器邏輯名 |
| tokxx | 令牌環(huán)適配器邏輯名 |
?
?
3.3? 訪問(wèn)無(wú)法啟動(dòng)的系統(tǒng)
?????? 如果您無(wú)法啟動(dòng)系統(tǒng),那么第一步是訪問(wèn)該系統(tǒng),并查看導(dǎo)致該故障的可能原因。這個(gè)過(guò)程允許您獲得系統(tǒng)提示符,以便您可以嘗試從系統(tǒng)恢復(fù)數(shù)據(jù),或者執(zhí)行糾正性的操作以使得系統(tǒng)能夠從硬盤啟動(dòng)。
?
要訪問(wèn)該系統(tǒng),需要執(zhí)行以下步驟:
?????? (1)將系統(tǒng)功能鍵(如果有的話)旋至 Service 位置,或者在基于 PCI 的系統(tǒng)中按 F5,以便使系統(tǒng)從磁帶/CD-ROM/DVD-ROM 驅(qū)動(dòng)器進(jìn)行啟動(dòng)(在步驟 4 的執(zhí)行過(guò)程中)。
?????? (2)在打開系統(tǒng)單元的電源之前,先打開所有外部設(shè)備的電源,如終端、CDROM 或 DVD-ROM 驅(qū)動(dòng)器、磁帶驅(qū)動(dòng)器、監(jiān)視器和外部磁盤驅(qū)動(dòng)器。然后,打開系統(tǒng)單元以便從安裝媒體進(jìn)行啟動(dòng)。
?????? (3)將安裝媒體 Volume 1 插入到磁帶驅(qū)動(dòng)器、CDROM 或 DVD-ROM 驅(qū)動(dòng)器,關(guān)閉系統(tǒng)單元的電源。
?????? (4)將系統(tǒng)單元的電源開關(guān)切換到打開位置。在啟動(dòng)時(shí),將會(huì)顯示這樣一個(gè)屏幕(在圖 1 的屏幕之前),其中要求您按 F1 功能鍵以選擇合適的顯示器作為系統(tǒng)控制臺(tái)。系統(tǒng)中每個(gè)顯示器都將接收一個(gè)功能鍵數(shù)值,以便將其標(biāo)識(shí)為系統(tǒng)控制臺(tái)。系統(tǒng)從安裝媒體啟動(dòng)。幾分鐘之后,LED 中將顯示 c31(如果您的系統(tǒng)有 LED;否則,將會(huì)顯示與圖 1 所示類似的屏幕)。
圖 1. BOS 安裝和維護(hù)屏幕
???????????????????????????????????
?????? (5)選擇選項(xiàng) 3“Start Maintenance Mode for System Recovery”,并按回車。這時(shí)將顯示與圖 2 所示類似的屏幕。
圖 2. 維護(hù)菜單
?????????????
?????? (6)輸入 1,即“Access a Root Volume Group”。這時(shí)將顯示與圖 3 所示類似的屏幕。
圖 3. 警告屏幕
?????????????
?????? (7)請(qǐng)記下警告信息。如果您希望返回到前一個(gè)菜單,請(qǐng)輸入 99;否則,輸入 0 以進(jìn)行確認(rèn)。這將顯示圖 4 中的屏幕。
圖 4. 所找到的卷組的列表
??????????????????
?????? (8)選擇您希望顯示邏輯卷信息的卷組。這是非常重要的,因?yàn)?/span> rootvg 中將包含 hd5,即啟動(dòng)邏輯卷。輸入卷組編號(hào),并按回車。這時(shí)將顯示與圖 5 所示類似的屏幕。
圖 5. 在所選擇的卷組中找到的邏輯卷的列表
???????????? ?
?????? (9)從“Volume Group Information”屏幕中選擇一個(gè)選項(xiàng),并按回車。其中每一項(xiàng)將進(jìn)行以下操作:
????????????? 1)選項(xiàng) 1:選擇這個(gè)選項(xiàng),將在系統(tǒng)為您提供 Shell 和系統(tǒng)提示符之前,先導(dǎo)入并激活 rootvg 卷組,并為根卷組裝入文件系統(tǒng)。
????????????? 2)選項(xiàng) 2:選擇這個(gè)選項(xiàng),將在為根卷組裝入文件系統(tǒng)之前,先導(dǎo)入并激活 rootvg 卷組,并為您提供 Shell 和系統(tǒng)提示符。
????????????? 3)選項(xiàng) 99:輸入 99 將使您返回到“Access a Root Volume Group”屏幕。
?????? (10)使用適當(dāng)?shù)姆椒▉?lái)恢復(fù)數(shù)據(jù),或者采用動(dòng)作(如使用 bosboot 命令)使系統(tǒng)可以正常地啟動(dòng)。
?
3.4? 常見的啟動(dòng) LED 代碼
?????? 在系統(tǒng)初始化過(guò)程中,提供了操作員面板顯示屏的服務(wù)器將顯示一些 LED 代碼,這些代碼可以提供有關(guān)啟動(dòng)過(guò)程狀態(tài)的信息。一些代碼是指示服務(wù)器運(yùn)行到啟動(dòng)過(guò)程哪一步的檢查點(diǎn)。對(duì)于不同的服務(wù)器類型,這些代碼也有所不同。 例如,在一個(gè)提供了 4 個(gè)字符的顯示屏的服務(wù)器上,E1F1 表示系統(tǒng)定義的控制臺(tái)已經(jīng)激活,而在提供了 3 個(gè)字符的顯示屏的服務(wù)器上,則使用 FF1 進(jìn)行表示。Fxx(其中 xx 為十六進(jìn)制數(shù)字)格式的代碼一般是與固件有關(guān)的。 其他代碼用來(lái)表示所檢測(cè)到的錯(cuò)誤。表 3 中給出了一些最常見的 LED 代碼,它們用于表示啟動(dòng)問(wèn)題,以及如何解決它們以使得您的系統(tǒng)能夠再次啟動(dòng)并運(yùn)行。
表 3
| LED 201 - 啟動(dòng)鏡像損壞 |
| 1. 按照“訪問(wèn)無(wú)法啟動(dòng)的系統(tǒng)”中所描述的過(guò)程來(lái)訪問(wèn)您的 rootvg。 |
| LED 223-229 - 無(wú)效的啟動(dòng)列表 |
| 1. 將鍵模式切換到 Service(或者 F5,對(duì)于那些沒(méi)有鍵盤鎖的系統(tǒng)),并打開計(jì)算機(jī)的電源。 |
| LED 551、555 和 557 - 損壞的文件系統(tǒng)、損壞的 JFS 日志等等 |
| 1. 在裝入任何文件系統(tǒng)(“Volume Group Information”屏幕中的選項(xiàng) 2)之前,按照“訪問(wèn)無(wú)法啟動(dòng)的系統(tǒng)”中所描述的過(guò)程來(lái)訪問(wèn) rootvg。 |
| LED 552、554 和 556 - 損壞的超級(jí)塊和損壞的自定義 ODM 數(shù)據(jù)庫(kù) |
| 1. 重復(fù) LED 551、555 和 557 中的步驟 1 到 2。 |
?
常見的啟動(dòng) LED 和解決方案
| LED 553 - 損壞的 /etc/inittab 文件 |
| 1. 按照“訪問(wèn)無(wú)法啟動(dòng)的系統(tǒng)”中所描述的過(guò)程來(lái)訪問(wèn)所有已裝入的文件系統(tǒng)的 rootvg。 |
?
?
四.? 運(yùn)行級(jí)別
?????? 在操作系統(tǒng)中執(zhí)行維護(hù)任務(wù),或在更改運(yùn)行級(jí)別之前,您應(yīng)該深入地研究各種運(yùn)行級(jí)別。運(yùn)行級(jí)別是只允許選定的一組進(jìn)程存在的一種軟件配置。
?
4.1 確定系統(tǒng)運(yùn)行級(jí)別
?????? 這個(gè)部分描述如何確定系統(tǒng)當(dāng)前所處的運(yùn)行級(jí)別,以及如何顯示以前的運(yùn)行級(jí)別的歷史。表 4 中列出了系統(tǒng)可用的運(yùn)行級(jí)別。
表 4
| 運(yùn)行級(jí)別 | 說(shuō)明 |
| 0-1 | 保留為操作系統(tǒng)將來(lái)使用。 |
| 2 | 包含多用戶環(huán)境下的所有終端進(jìn)程和守護(hù)進(jìn)程。這是缺省的運(yùn)行級(jí)別。 |
| 3-9 | 可以根據(jù)用戶的首選項(xiàng)進(jìn)行定義。 |
| a、b、c、h | 這些并不是真正的運(yùn)行級(jí)別;它們與運(yùn)行級(jí)別的不同之處在于,init 命令無(wú)法請(qǐng)求整個(gè)系統(tǒng)進(jìn)入這些運(yùn)行級(jí)別。請(qǐng)參見上半部分的“/etc/inittab 文件”,以獲得更詳細(xì)的信息。 |
| S、s、M、m | 維護(hù)模式。當(dāng)系統(tǒng)從其他運(yùn)行級(jí)別進(jìn)入維護(hù)模式時(shí),只有系統(tǒng)控制臺(tái)可以作為終端使用。 |
?
4.2? 確定當(dāng)前運(yùn)行級(jí)別
在命令行中,輸入下面的命令:
| # cat /etc/.init.state? 2??????????????????????? |
?
系統(tǒng)將顯示一個(gè)數(shù)字,即當(dāng)前運(yùn)行級(jí)別。
?
4.3? 顯示以前的運(yùn)行級(jí)別的歷史
使用 fwtmp 命令,您可以顯示以前的運(yùn)行級(jí)別的歷史,如下所示:
?????? (1). 以 root 用戶的身份登錄。
??(2). 輸入下面的命令,系統(tǒng)將顯示與下面所示類似的信息:
| # /usr/lib/acct/fwtmp < /var/adm/wtmp |grep run-level run-level 2?? 1???? 0 0062 0123 1132072406??? Tue Nov 15 10:33:26 CST 2005????????????????????? run-level 2?? 1???? 0 0062 0123 1132075614??? Tue Nov 15 11:26:54 CST 2005????????????????????? run-level 2?? 1???? 0 0062 0123 1132092491??? Tue Nov 15 16:08:11 CST 2005????????????????????? run-level 2?? 1???? 0 0062 0123 1132094756??? Tue Nov 15 16:45:56 CST 2005 |
?
4.4 更改系統(tǒng)運(yùn)行級(jí)別
?????? 系當(dāng)系統(tǒng)第一次啟動(dòng)時(shí),它會(huì)進(jìn)入 /etc/inittab 文件中的 initdefault 項(xiàng)所定義的缺省運(yùn)行級(jí)別。系統(tǒng)會(huì)一直在該運(yùn)行級(jí)別中運(yùn)行,直到它收到一個(gè)更改運(yùn)行級(jí)別的信號(hào)。您可以執(zhí)行 lsitab 命令,以查看您的系統(tǒng)的缺省運(yùn)行級(jí)別:
| # lsitab init init:2:initdefault: |
?
要更改運(yùn)行級(jí)別,請(qǐng)執(zhí)行下面的過(guò)程:
?????? 1. 檢查 /etc/inittab 文件,以確認(rèn)您將要改變到的運(yùn)行級(jí)別是否支持您正在運(yùn)行的進(jìn)程。進(jìn)程 getty 是很重要的,因?yàn)樗梢钥刂葡到y(tǒng)控制臺(tái)和其他登錄的終端線路訪問(wèn)。確保 getty 進(jìn)程在所有的運(yùn)行級(jí)別中都可以運(yùn)行。
?????? 2. 使用 wall 命令通知所有的用戶,您將要改變系統(tǒng)運(yùn)行級(jí)別,并要求這些用戶退出系統(tǒng)。
?????? 3. 使用 telinit 命令(以您將要切換到的運(yùn)行級(jí)別作為該命令的參數(shù)),例如:
| ?????? # telinit M?? ?????? |
?
telinit 命令
?????? 通過(guò)接受單個(gè)字符的參數(shù),并發(fā)送信號(hào)以告知 init 進(jìn)程執(zhí)行適當(dāng)?shù)膭?dòng)作,telinit 命令可以直接控制 init 進(jìn)程(進(jìn)程 ID 為 1)的操作。通常情況下,telinit 命令將使系統(tǒng)進(jìn)入到指定的運(yùn)行級(jí)別。telinit 命令可以向 init 進(jìn)程傳遞下列參數(shù)作為指令:
?????? (1)0-9:告知 init 進(jìn)程將系統(tǒng)置于運(yùn)行級(jí)別 0-9。
?????? (2)S、s、M、m:告知 init 進(jìn)程將系統(tǒng)置于維護(hù)模式。
?????? (3)a、b、c:告知 init 進(jìn)程僅檢查 /etc/inittab 文件中在運(yùn)行級(jí)別字段中包含 a、b、c 的那些記錄。
?????? (4)Q、q:告知 init 進(jìn)程重新檢查整個(gè) /etc/inittab 文件。
?????? (5)N:向重新生成的進(jìn)程發(fā)送中止進(jìn)程的信號(hào)。
?
例如,要進(jìn)入到維護(hù)模式,可以輸入:
| # telinit M |
?
注意:您還可以使用 shutdown -m 命令進(jìn)入到維護(hù)模式。
?
4.5 執(zhí)行運(yùn)行級(jí)別腳本
?????? 運(yùn)行級(jí)別腳本允許用戶在更改運(yùn)行級(jí)別時(shí)啟動(dòng)和停止所選擇的應(yīng)用程序。以 K 開頭的腳本是停止腳本,以 S 開頭的腳本是啟動(dòng)腳本。
?????? 這些腳本保存于它們所從屬的運(yùn)行級(jí)別的特定子目錄中,每個(gè)子目錄的格式為 rcn.d,其中 n 表示運(yùn)行級(jí)別:
/etc/rc.d/rc2.d
/etc/rc.d/rc3.d
/etc/rc.d/rc4.d
/etc/rc.d/rc5.d
/etc/rc.d/rc6.d
/etc/rc.d/rc7.d
/etc/rc.d/rc8.d
/etc/rc.d/rc9.d
?
/etc/rc.d/rc 腳本將運(yùn)行它在指定目錄中發(fā)現(xiàn)的啟動(dòng)腳本,并在運(yùn)行級(jí)別更改時(shí)執(zhí)行該啟動(dòng)腳本。腳本將首先運(yùn)行停止應(yīng)用程序的腳本,然后運(yùn)行啟動(dòng)應(yīng)用程序的腳本。
?
五.?? rc.* 文件的介紹
?????? rc 文件作為初始化過(guò)程中的一部分加以執(zhí)行;它們?yōu)橄到y(tǒng)做好配置的準(zhǔn)備,并做好運(yùn)行的準(zhǔn)備。
?
5.1?? rc.boot 文件
?????? /sbin/rc.boot 文件是一個(gè)可以由簡(jiǎn)單的 Shell init和標(biāo)準(zhǔn) init 命令調(diào)用的、用來(lái)使系統(tǒng)啟動(dòng)的腳本。它可以控制計(jì)算機(jī)的啟動(dòng)進(jìn)程。當(dāng)系統(tǒng)啟動(dòng)時(shí),在每個(gè)啟動(dòng)階段都會(huì)調(diào)用 /sbin/rc.boot 文件,每次都使用一個(gè)不同的參數(shù)。
??????
?????? 根據(jù)啟動(dòng)設(shè)備的類型,rc.boot 文件對(duì)設(shè)備進(jìn)行配置,并調(diào)用合適的應(yīng)用程序。合適的應(yīng)用程序包括:
?????? (1)從磁盤進(jìn)行啟動(dòng)(啟動(dòng)階段 1)
?????? (2)激活根卷組(啟動(dòng)階段 2)
?????? (3)啟用文件系統(tǒng)(啟動(dòng)階段 2)
?????? (4)調(diào)用 BOS 安裝程序或者診斷程序
?????? 注意:rc.boot 程序只能由 init 進(jìn)程調(diào)用;在一個(gè)正在運(yùn)行的系統(tǒng)上執(zhí)行 rc.boot 腳本會(huì)產(chǎn)生不可預(yù)知的結(jié)果。
?
5.2? /etc/rc 文件
?????? /etc/rc 文件執(zhí)行正常的啟動(dòng)初始化;在 /etc/inittab 文件中,它的條目位于 rc.boot 條目之后。init 命令將讀取 /etc/inittab 文件,并為 /etc/rc 文件創(chuàng)建一個(gè)進(jìn)程。對(duì)于不同的安裝,/etc/rc 文件的內(nèi)容也有所不同。如果所有必需的操作都已成功完成,那么文件會(huì)出現(xiàn)一個(gè)返回碼 0,以便允許 init 命令啟動(dòng)登錄程序來(lái)完成正常的初始化和啟動(dòng)。
?
?????? /etc/rc 文件可以完成許多啟動(dòng)功能,如:
?????? (1)激活所有標(biāo)記為自動(dòng)激活的卷組。
?????? (2)激活 /etc/swapspaces 文件中列出的所有分頁(yè)空間(使用 swapon -a 命令)。
?????? (3)配置所有的轉(zhuǎn)儲(chǔ)設(shè)備(使用 sysdumpdev -q 命令)。
?????? (4)執(zhí)行文件系統(tǒng)檢查(使用 fsck -fp 命令)。
?????? (5)裝入在 /etc/filesystems 文件中列出的標(biāo)記為 mount=true 的文件系統(tǒng)(使用 mount all 命令)。
?
?????? 注意:/、/usr、/var 和 /tmp 文件系統(tǒng)會(huì)在啟動(dòng)過(guò)程(階段 2)中自動(dòng)地裝入。/etc/rc 文件在運(yùn)行 mount all 命令時(shí)不會(huì)嘗試再次裝入這些文件系統(tǒng)。
?
5.3? rc.net 文件
???? /etc/rc.net 文件是一個(gè)包含網(wǎng)絡(luò)配置信息的 Shell 腳本。其中的一些節(jié)允許您啟用網(wǎng)絡(luò)接口和設(shè)置主機(jī)名、缺省網(wǎng)關(guān)以及當(dāng)前主機(jī)的靜態(tài)路由信息。這個(gè)文件可用于進(jìn)行單步配置,作為單獨(dú)配置主機(jī)所需的一組命令和文件的替代方法。 rc.net Shell 腳本在配置過(guò)程的第二階段中通過(guò)配置管理器程序運(yùn)行。如果 TCP/IP 已經(jīng)安裝,那么在配置過(guò)程的第二階段完成,并且 init 命令啟動(dòng)了 SRC 之后,由 init 命令運(yùn)行第二個(gè)腳本 rc.tcp。
?
?????? 應(yīng)該顯示該文件中的節(jié),以便提示用戶目前的運(yùn)行狀態(tài)。
?
?????? 如果在系統(tǒng)配置完成之后運(yùn)行 cfgmgr 命令,/etc/rc.net Shell 腳本還可以由配置管理器程序 (cfgmgr) 運(yùn)行。它經(jīng)常在系統(tǒng)添加新設(shè)備后,在系統(tǒng)啟動(dòng)時(shí)運(yùn)行。如果 cfgmgr 命令運(yùn)行 rc.net,那么配置方法和 rc.net 文件本身都要檢查網(wǎng)絡(luò)設(shè)備是否已經(jīng)處于可用狀態(tài)。如果是,那么就不改變?cè)O(shè)備的屬性值,以避免覆蓋啟動(dòng)之后的任何配置更改。
?
?????? 如果在運(yùn)行 /etc/rc.net 時(shí)沒(méi)有調(diào)用 cfgmgr 命令,那么將設(shè)備屬性重設(shè)為在 ODM 庫(kù)中的屬性值,而不管它當(dāng)前的狀態(tài)如何。這就允許系統(tǒng)配置恢復(fù)為 ODM 庫(kù)中指定的屬性值。
?
5.4? rc.tcpip 文件
?????? /etc/rc.tcpip 文件是一個(gè) Shell 腳本,當(dāng)它執(zhí)行時(shí),使用 SRC 命令初始化所選擇的守護(hù)進(jìn)程。在系統(tǒng)每次重新啟動(dòng)時(shí),rc.tcpip 腳本文件都會(huì)自動(dòng)地執(zhí)行。它也可以在任何時(shí)間從命令行加以執(zhí)行。
?
?????? 大多數(shù)守護(hù)進(jìn)程可以由 TCP/IP 特定的 rc.tcpip 文件進(jìn)行初始化。這些守護(hù)進(jìn)程包括:
?????? (1)inetd(在缺省情況下會(huì)啟動(dòng))
?????? (2)gated
?????? (3)routed
?????? (4)named
?????? (5)timed
?????? (6)rwhod
注意:在一臺(tái)主機(jī)上同時(shí)運(yùn)行 routed 和 gated 會(huì)引起不可預(yù)知的結(jié)果。
?
?????? 還有一些特定于基本操作系統(tǒng)或其他應(yīng)用程序的守護(hù)進(jìn)程,也可以在 rc.tcpip 文件中啟動(dòng)。這些守護(hù)進(jìn)程包括:
?????? (1)lpd
?????? (2)portmap
?????? (3)sendmail
?????? (4)syslogd(在缺省情況下會(huì)啟動(dòng))
?
以下的示例可以作為參考:
(1)下面的命令將啟動(dòng) syslogd 守護(hù)進(jìn)程:
#啟動(dòng) syslog 守護(hù)進(jìn)程(用于錯(cuò)誤和事件日志記錄)
start /usr/sbin/syslogd "$src_running"
(2)下面的節(jié)將啟動(dòng) lpd 守護(hù)進(jìn)程:
#啟動(dòng) print 守護(hù)進(jìn)程
start /usr/sbin/lpd "$src_running"
(3)下面的節(jié)將啟動(dòng) routed 守護(hù)進(jìn)程,但是不啟動(dòng) gated 守護(hù)進(jìn)程:
#啟動(dòng) routing 守護(hù)進(jìn)程(僅啟動(dòng)一個(gè))
start /usr/sbin/routed "$src_running" -g
#start /usr/sbin/gated "$src_running"
?
?
整理自:
啟動(dòng)過(guò)程(上)
http://www.ibm.com/developerworks/cn/aix/redbooks/test222/boot-process/test222-bootprocess1.html
?
啟動(dòng)過(guò)程(下)
http://www.ibm.com/developerworks/cn/aix/redbooks/test222/boot-process/test222-bootprocess2.html
?
?
?
------------------------------------------------------------------------------
Blog: http://blog.csdn.net/tianlesoftware
網(wǎng)上資源: http://tianlesoftware.download.csdn.net
相關(guān)視頻:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx
DBA1 群:62697716(滿); DBA2 群:62697977(滿)
DBA3 群:62697850?? DBA 超級(jí)群:63306533;????
聊天 群:40132017
--加群需要在備注說(shuō)明Oracle表空間和數(shù)據(jù)文件的關(guān)系,否則拒絕申請(qǐng)
轉(zhuǎn)載于:https://www.cnblogs.com/tianlesoftware/archive/2010/12/23/3609856.html
總結(jié)
以上是生活随笔為你收集整理的IBM AIX 5.3 系统管理 -- 系统启动过程详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: hdu 1250 Hat's Fibon
- 下一篇: Eclipse编写Java程序