国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開發(fā) > 綜合 > 正文

Slackware Linux 101 在引導(dǎo) Linux 機(jī)器時(shí)發(fā)生了什么

2024-07-21 02:35:29
字體:
供稿:網(wǎng)友

  作者:Joe "Zonker" Brockmeier (jbrockmeier@earthlink.net),高級(jí)編輯,User Friendly Media
  提要:Joe Brockmeier 研究了 Slackware linux init 進(jìn)程。他討論了系統(tǒng)如何初始化服務(wù)、各種運(yùn)行級(jí)別是什么,以及如何從缺省安裝中添加或除去服務(wù)來定制系統(tǒng)。
  
  
  Linux 用戶正日益成熟,這意味著他們想要將系統(tǒng)配置成執(zhí)行他們希望完成的任務(wù)。但目前 Linux 發(fā)行版通常都附帶了自動(dòng)配置的設(shè)備和啟動(dòng)服務(wù),如 Sendmail 或 Apache。這些發(fā)行版沒有考慮到的是毫不更改其缺省設(shè)置來運(yùn)行服務(wù),如 Apache -- 用戶毫不知情 -- 會(huì)讓黑客和利用腳本搗亂的人趁虛而入。而且這會(huì)用完本可以更好利用的系統(tǒng)資源 -- 比如可以用于 Quake 或您喜歡的編譯器的更多處理器時(shí)間。由于缺少控制是件“糟糕的事”,因此讓我們看一下 Linux 系統(tǒng)引導(dǎo)時(shí)在 init 進(jìn)程期間,在所涉及的各個(gè)運(yùn)行級(jí)別上都發(fā)生了什么,以及如何在系統(tǒng)運(yùn)行時(shí)定制系統(tǒng)或在運(yùn)行級(jí)別之間切換。
  
  我們的示例使用 x86 平臺(tái)上的 Slackware Linux 發(fā)行版(請(qǐng)參閱本文后面的參考資料)。大多數(shù)信息可用于其它 Linux 發(fā)行版,但在細(xì)節(jié)處會(huì)略有不同。尤其是,與其說 Slackware 的 init 結(jié)構(gòu)類似于 System V 結(jié)構(gòu),還不如說它更類似于 BSD UNIX 結(jié)構(gòu),盡管 Slackware 的最新發(fā)行版中的程序做了一些讓步,它們要將服務(wù)添加到啟動(dòng),但期望這些服務(wù)是 System V 目錄結(jié)構(gòu)。(請(qǐng)參閱側(cè)欄,“BSD 和系統(tǒng) V init 腳本之間的差異”。)
  
  所有進(jìn)程的父代
  當(dāng) Linux 機(jī)器引導(dǎo)時(shí),究竟會(huì)發(fā)生什么?在計(jì)算機(jī)的 BIOS 完成其任務(wù)后,系統(tǒng)會(huì)讀取硬盤(或軟盤,或 CD-ROM,或 Zip 驅(qū)動(dòng)器……Linux 是非常靈活的)的第一位,并會(huì)碰到引導(dǎo)裝入程序。雖然 GRUB 和其它裝入程序也逐漸變得流行,但通常這就是 Linux 裝入程序 (LInux LOader),一般稱作 LILO。
  
  然后 LILO 將 Linux 內(nèi)核裝入內(nèi)存,并開始展示它的魔力。Linux 內(nèi)核初始化了諸如 SCSI 卡之類的設(shè)備,以及其它內(nèi)核中內(nèi)置的硬件設(shè)備。然后內(nèi)核運(yùn)行 init,它是除內(nèi)核之外在系統(tǒng)運(yùn)行的第一個(gè)進(jìn)程。假如執(zhí)行 ps ax grep 1,就會(huì)看到 init 的進(jìn)程 ID (PID) 是 1。
  
  裝入 init 之后,它會(huì)讀取 inittab 以查看下一步做什么。inittab 告訴 init 要進(jìn)入什么運(yùn)行級(jí)別,以及在哪里可以找到該運(yùn)行級(jí)別的配置文件。
  
  運(yùn)行級(jí)別
  運(yùn)行級(jí)別是由系統(tǒng)上的所有服務(wù)在某個(gè)給定時(shí)間定義的(基本上是操作方式)。Linux 可以有幾種操作方式:?jiǎn)斡脩舴绞健斡脩袈?lián)網(wǎng)方式、多用戶方式、始于 X 窗口的多用戶方式,等等。這部分將要說明運(yùn)行級(jí)別的概念、Slackware 上有哪些運(yùn)行級(jí)別,已經(jīng)它們被叫作什么。
  
  運(yùn)行級(jí)別由數(shù)字或字母標(biāo)明。可惜,不是所有的 Linux 發(fā)行版在各個(gè)運(yùn)行級(jí)別的稱呼問題上都能達(dá)成共識(shí)。在某些發(fā)行版中,運(yùn)行級(jí)別 3 是使用 X 窗口登錄的多用戶方式。而其它的,如 Slackware,將運(yùn)行級(jí)別 3 指定成使用控制臺(tái)登錄的多用戶方式。
  
  據(jù)我所知,所有 Linux 發(fā)行版都認(rèn)同運(yùn)行級(jí)別 0 是“停機(jī)”、運(yùn)行級(jí)別 1 或 "S" 是單用戶方式(稍后將具體說明),運(yùn)行級(jí)別 6 是重新引導(dǎo)系統(tǒng)。Slackware 的運(yùn)行級(jí)別如下:
  
  運(yùn)行級(jí)別 0 = 系統(tǒng)停機(jī)
  運(yùn)行級(jí)別 1 = 單用戶方式,主要用于維護(hù)
  運(yùn)行級(jí)別 2 = 從不使用
  運(yùn)行級(jí)別 3 = 使用控制臺(tái)登錄的多用戶方式
  運(yùn)行級(jí)別 4 = 使用 X11 會(huì)話治理器的多用戶方式 (XDM, GDM, KDM)
  運(yùn)行級(jí)別 5 = 從不使用
  運(yùn)行級(jí)別 6 = 重新引導(dǎo)
  運(yùn)行級(jí)別 S 或 s = 單用戶方式
  
  這里沒有記錄運(yùn)行級(jí)別 7 到 9,在理論上,它們適用于在需要時(shí)定制運(yùn)行級(jí)別。但我還沒有親自嘗試過創(chuàng)建一個(gè)。
  
  BSD 和 System V init 腳本之間的差異
  Slackware Linux 使用 BSD init 腳本說說挺輕易,但這究竟表示什么?
  
  仿真 BSD init 樣式的 Linux 和 UNIX 系統(tǒng)有一個(gè) /etc/rc.d/ 目錄,其中每個(gè)運(yùn)行級(jí)別都包含一個(gè) init 腳本。因此,假如要查看或修改運(yùn)行級(jí)別 4 的 init 腳本,應(yīng)該編輯文件 /etc/rc.d/rc.4。
  
  另一方面,其 init 腳本基于 System V 的系統(tǒng)對(duì)于每個(gè)運(yùn)行級(jí)別都有獨(dú)立的目錄。因此,假如要編輯運(yùn)行級(jí)別 4 init 腳本,應(yīng)查找 /etc/rc4.d/ 目錄,并查找該目錄中對(duì)應(yīng)于要修改的服務(wù)的腳本。
  
  這個(gè)差異導(dǎo)致了 Berkeley Software Distribution (BSD) UNIX 和 AT&T System V UNIX 之間的設(shè)計(jì)差異,這兩者都開創(chuàng)了各自的 UNIX 商業(yè)版本。它們連同 Vi 以及 Emacs 一起是計(jì)算機(jī)界的激烈爭(zhēng)論之一。
  
  由于許多 Linux 發(fā)行版都喜歡 System V init 布局,Slackware 現(xiàn)在也附帶了目錄和 rc.sysvinit init 腳本,用于保持兼容性。
  
  運(yùn)行級(jí)別配置
  假如您使用的不是 Slackware Linux,那么配置文件的結(jié)構(gòu)與我談到的結(jié)構(gòu)會(huì)大不相同。
除了 inittab 文件,所有 Slackware 的啟動(dòng)配置文件都在 /etc/rc.d/ 目錄中。
  
  缺省情況下,目錄中有 5 個(gè)運(yùn)行級(jí)別 rc.* 腳本,假如將 symlink 從 rc.0 加到 rc.6,那么可有 6 個(gè)。
  
  運(yùn)行級(jí)別 init 腳本是:
  
  rc.0 = rc.0 文件是到 rc.6 的 symlink
  rc.M = 多用戶運(yùn)行級(jí)別 2、3 和 5 的 init 腳本
  rc.K = “治理”運(yùn)行級(jí)別,單用戶方式
  rc.S = 系統(tǒng)初始化腳本
  rc.4 = 運(yùn)行級(jí)別 4(自動(dòng)引導(dǎo)入所選擇的 X 會(huì)話治理器)的 init 腳本
  rc.6 = 重新引導(dǎo)或停止系統(tǒng)時(shí)由 init 執(zhí)行的腳本
  
  目錄中的其余 rc.* 文件用于啟動(dòng)諸如聯(lián)網(wǎng)、內(nèi)核模塊、PCMCIA、Samba、Apache、Netatalk 和 GPM 的系統(tǒng)服務(wù)。假如想要使某個(gè)服務(wù)(如 Apache)完全不能在任何運(yùn)行級(jí)別上使用,請(qǐng)使用 chmod 將文件的許可權(quán)從可執(zhí)行更改成不可執(zhí)行。除去該文件也可以到達(dá)相同效果,但我不推薦這種做法。也許在以后某個(gè)日子您會(huì)發(fā)現(xiàn)要重新啟用服務(wù),但卻不知道怎樣做。
  
  rc.inet1 腳本負(fù)責(zé)啟動(dòng)基本聯(lián)網(wǎng)服務(wù),如設(shè)置主機(jī)名(IP 和 DHCP)。rc.inet2 腳本負(fù)責(zé)啟動(dòng)所有其它 INET 服務(wù),如 NFS、包轉(zhuǎn)發(fā)、ssh 服務(wù)器和其它聯(lián)網(wǎng)守護(hù)程序。
  
  所有 Slackware /etc/rc.d/rc.* 文件都是 Bash shell 腳本,都可以進(jìn)行手工編輯。可是對(duì)于聯(lián)網(wǎng),您可能應(yīng)該先嘗試 netconfig 實(shí)用程序。雖然需要手工編輯 /etc/resolv.conf 來添加多個(gè)名稱服務(wù)器,但是它也許能處理您想要執(zhí)行的所有操作,而且它非常易于使用。
  
  假如您是 Linux 初學(xué)者并且要修改系統(tǒng),那么也許應(yīng)該確保您有引導(dǎo)軟盤,并且應(yīng)該復(fù)制您所有想要編輯的 rc.* 文件。假如拿不定主意,我通常會(huì)將文件保存為 rc.*.old,使它們變成不可執(zhí)行文件。
  
  使用運(yùn)行的系統(tǒng)
  好,現(xiàn)在系統(tǒng)已經(jīng)運(yùn)行,然而您需要在單用戶方式中執(zhí)行一些操作 -- 該怎么做呢?本文的下一部分將說明如何在系統(tǒng)運(yùn)行時(shí)更改運(yùn)行級(jí)別,而不是通過重新引導(dǎo)來更改運(yùn)行級(jí)別,而且還說明了為什么執(zhí)行此操作以及何時(shí)執(zhí)行。
  
  telinit 命令:在運(yùn)行的系統(tǒng)上更改運(yùn)行級(jí)別
  telinit 命令可以用于更改運(yùn)行級(jí)別。當(dāng)以 root 身份執(zhí)行 telinit S(或者想要更改的任意運(yùn)行級(jí)別)時(shí),它會(huì)更改運(yùn)行級(jí)別,關(guān)閉前一個(gè)運(yùn)行級(jí)別,然后啟動(dòng)下一個(gè)。
  
  某種程度上您正在重新引導(dǎo)系統(tǒng)的一部分。然而,關(guān)閉與重新啟動(dòng)服務(wù)的能力正是 Linux 最可愛的品質(zhì)之一。想要更改機(jī)器的 IP 地址嗎?沒問題,只要進(jìn)行一些更改,然后重新啟動(dòng)聯(lián)網(wǎng)服務(wù)就行了。只要一切配置正確,備份和運(yùn)行是如此迅速,很難分辯是否做過更改。在其它即使更改了桌面上的墻紙都必須重新引導(dǎo)的操作系統(tǒng)上,嘗試一下執(zhí)行此操作
  
  確實(shí)需要重新引導(dǎo)或徹底關(guān)閉 Linux 機(jī)器的唯一情況是假如正在添加或更改硬件,假設(shè)您正在使用不能熱插拔的設(shè)備,或者已經(jīng)中斷且需要使機(jī)器脫機(jī)以修復(fù)損壞。與其它操作系統(tǒng)不同,對(duì)于那些不經(jīng)過重新引導(dǎo)就無法解決問題的產(chǎn)品系統(tǒng),我從來沒有看到過重新引導(dǎo)解決了這些系統(tǒng)上的問題。我曾設(shè)法利用諸如 hdparm 的命令來掛起非生產(chǎn)性機(jī)器,我希望這種情況發(fā)生。
  
  假設(shè)您想要執(zhí)行一些系統(tǒng)維護(hù),而這些系統(tǒng)維護(hù)要求系統(tǒng)處于單用戶方式。例如,使用 hdparm 調(diào)整硬盤。第一步是 su(切換)到 root 用戶。
  
  然后執(zhí)行 telinit 命令使系統(tǒng)進(jìn)入單用戶方式:
  
  telinit S -t 60
  
  自變量 "-t" 是可選的;它告訴 telinit 在真正切換到單用戶方式之前等待 60 秒。然而,只要執(zhí)行了該命令,登錄到機(jī)器的任何人都會(huì)看到在控制臺(tái)上出現(xiàn)一個(gè)警告,指出系統(tǒng)將切換運(yùn)行級(jí)別或?qū)⒃?60 秒內(nèi)停機(jī)。
  
  到了 60 秒時(shí),init 會(huì)關(guān)閉單用戶方式中不使用的進(jìn)程,并使系統(tǒng)進(jìn)入單用戶方式。然后,將提示您輸入 root 用戶密碼以執(zhí)行系統(tǒng)維護(hù)。
  
  系統(tǒng)進(jìn)入單用戶方式所使用的進(jìn)程略有不同。缺省情況下,單用戶方式要求 init 在控制臺(tái)上調(diào)用 sulogin 命令,并要求在單用戶方式中使用 root 登錄。
  
  系統(tǒng)進(jìn)入單用戶方式后,應(yīng)該會(huì)看到如下的消息:
  
  Give root passWord for system maintenance
  (or type Control-D for normal startup):
  
  執(zhí)行了維護(hù)之后,可以執(zhí)行以下命令來使系統(tǒng)回到以前的運(yùn)行級(jí)別:
  
  telinit 3
  
  此命令告訴系統(tǒng)重新進(jìn)入多用戶運(yùn)行級(jí)別。在此命令中可以用 "2" 或 "4" 來代替 "3"。在 Slackware 系統(tǒng)上,運(yùn)行級(jí)別 4 將使您進(jìn)入使用 X 窗口顯示治理器之一的多用戶方式,因此您將直接登錄到 X 窗口。
  
  假如在擁有串行電纜的串行上掛了 UPS,那么就可以讓 UPS 在斷電的情況下向系統(tǒng)發(fā)送一個(gè)信號(hào)。假如您的產(chǎn)品級(jí)系統(tǒng)有一個(gè)很大的文件系統(tǒng),那么這是非常有用的。我曾看到過當(dāng)沒

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 长泰县| 西华县| 凯里市| 三明市| 错那县| 嘉义县| 白沙| 虎林市| 华阴市| 呼玛县| 潍坊市| 项城市| 吉安县| 滕州市| 阜宁县| 浙江省| 凤阳县| 吕梁市| 扶风县| 孟州市| 徐闻县| 航空| 蚌埠市| 布尔津县| 江北区| 准格尔旗| 上林县| 英吉沙县| 松桃| 冕宁县| 青海省| 乌兰察布市| 靖江市| 阿瓦提县| 宝坻区| 炎陵县| 天峨县| 偏关县| 张掖市| 满洲里市| 海伦市|