• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    Slackware Linux啟動過程詳解

    發布: 2007-5-26 11:30 | 作者: Brockmeier  | 來源: IBM | 查看: 21次 | 進入軟件測試論壇討論

    領測軟件測試網
    Joe Brockmeier 研究了 Slackware Linux init 進程。他討論了系統如何初始化服務、各種運行級別是什么,以及如何從缺省安裝中添加或除去服務來定制系統。

    Linux 用戶正日益成熟,這意味著他們想要將系統配置成執行他們希望完成的任務。但目前 Linux 發行版通常都附帶了自動配置的設備和啟動服務,如 Sendmail 或 Apache。這些發行版沒有考慮到的是毫不更改其缺省設置來運行服務,如 Apache -- 用戶毫不知情 -- 會讓黑客和利用腳本搗亂的人趁虛而入。而且這會用完本可以更好利用的系統資源 -- 比如可以用于 Quake 或您喜歡的編譯器的更多處理器時間。由于缺少控制是件“糟糕的事”,因此讓我們看一下 Linux 系統引導時在 init 進程期間,在所涉及的各個運行級別上都發生了什么,以及如何在系統運行時定制系統或在運行級別之間切換。

    我們的示例使用 x86 平臺上的 Slackware Linux 發行版(請參閱本文后面的 參考資料 )。大多數信息可用于其它 Linux 發行版,但在細節處會略有不同。尤其是,與其說 Slackware 的 init 結構類似于 System V 結構,還不如說它更類似于 BSD UNIX 結構,盡管 Slackware 的最新發行版中的程序做了一些讓步,它們要將服務添加到啟動,但期望這些服務是 System V 目錄結構。(請參閱側欄, “BSD 和系統 V init 腳本之間的差異”。)

    所有進程的父代

    當 Linux 機器引導時,究竟會發生什么?在計算機的 BIOS 完成其任務后,系統會讀取硬盤(或軟盤,或 CD-ROM,或 Zip 驅動器……Linux 是非常靈活的)的第一位,并會遇到引導裝入程序。雖然 GRUB 和其它裝入程序也逐漸變得流行,但通常這就是 Linux 裝入程序 (LInux LOader),一般稱作 LILO。

    然后 LILO 將 Linux 內核裝入內存,并開始展示它的魔力。Linux 內核初始化了諸如 SCSI 卡之類的設備,以及其它內核中內置的硬件設備。然后內核運行 init,它是除內核之外在系統運行的第一個進程。如果執行 ps ax | grep 1 ,就會看到 init 的進程 ID (PID) 是 1。

    裝入 init 之后,它會讀取 inittab 以查看下一步做什么。 inittab 告訴 init 要進入什么運行級別,以及在哪里可以找到該運行級別的配置文件。

    運行級別

    運行級別是由系統上的所有服務在某個給定時間定義的(基本上是操作方式)。Linux 可以有幾種操作方式:單用戶方式、單用戶聯網方式、多用戶方式、始于 X 窗口的多用戶方式,等等。這部分將要說明運行級別的概念、Slackware 上有哪些運行級別,已經它們被叫作什么。

    運行級別由數字或字母標明?上,不是所有的 Linux 發行版在各個運行級別的稱呼問題上都能達成共識。在某些發行版中,運行級別 3 是使用 X 窗口登錄的多用戶方式。而其它的,如 Slackware,將運行級別 3 指定成使用控制臺登錄的多用戶方式。

    據我所知,所有 Linux 發行版都認同運行級別 0 是“停機”、運行級別 1 或 "S" 是單用戶方式(稍后將詳細說明),運行級別 6 是重新引導系統。Slackware 的運行級別如下:

    • 運行級別 0 = 系統停機
    • 運行級別 1 = 單用戶方式,主要用于維護
    • 運行級別 2 = 從不使用
    • 運行級別 3 = 使用控制臺登錄的多用戶方式
    • 運行級別 4 = 使用 X11 會話管理器的多用戶方式 (XDM, GDM, KDM)
    • 運行級別 5 = 從不使用
    • 運行級別 6 = 重新引導
    • 運行級別 S 或 s = 單用戶方式

    這里沒有記錄運行級別 7 到 9,在理論上,它們適用于在需要時定制運行級別。但我還沒有親自嘗試過創建一個。

    運行級別配置

    如果您使用的不是 Slackware Linux,那么配置文件的結構與我談到的結構會大不相同。除了 inittab 文件,所有 Slackware 的啟動配置文件都在 /etc/rc.d/ 目錄中。

    缺省情況下,目錄中有 5 個運行級別 rc.* 腳本,如果將 symlink 從 rc.0 加到 rc.6 ,那么可有 6 個。

    運行級別 init 腳本是:

    • rc.0 = rc.0 文件是到 rc.6 的 symlink
    • rc.M = 多用戶運行級別 2、3 和 5 的 init 腳本
    • rc.K = “管理”運行級別,單用戶方式
    • rc.S = 系統初始化腳本
    • rc.4 = 運行級別 4(自動引導入所選擇的 X 會話管理器)的 init 腳本
    • rc.6 = 重新引導或停止系統時由 init 執行的腳本

    目錄中的其余 rc.* 文件用于啟動諸如聯網、內核模塊、PCMCIA、Samba、Apache、Netatalk 和 GPM 的系統服務。如果想要使某個服務(如 Apache)完全不能在任何運行級別上使用,請使用 chmod 將文件的許可權從可執行更改成不可執行。除去該文件也可以到達相同效果,但我不推薦這種做法。也許在以后某個日子您會發現要重新啟用服務,但卻不知道怎樣做。

    rc..net1 腳本負責啟動基本聯網服務,如設置主機名(IP 和 DHCP)。 rc.inet2 腳本負責啟動所有其它 INET 服務,如 NFS、包轉發、ssh 服務器和其它聯網守護程序。

    所有 Slackware /etc/rc.d/rc.* 文件都是 Bash shell 腳本,都可以進行手工編輯?墒菍τ诼摼W,您可能應該先嘗試 netconfig 實用程序。雖然需要手工編輯 /etc/resolv.conf 來添加多個名稱服務器,但是它也許能處理您想要執行的所有操作,而且它非常易于使用。

    如果您是 Linux 初學者并且要修改系統,那么也許應該確保您有引導軟盤,并且應該復制您所有想要編輯的 rc.* 文件。如果拿不定主意,我通常會將文件保存為 rc.*.old ,使它們變成不可執行文件。,使它們變成不可執行文件。

    使用運行的系統

    好,現在系統已經運行,然而您需要在單用戶方式中執行一些操作 -- 該怎么做呢?本文的下一部分將說明如何在系統運行時更改運行級別,而不是通過重新引導來更改運行級別,而且還說明了為什么執行此操作以及何時執行。

    telinit 命令:在運行的系統上更改運行級別

    telinit 命令可以用于更改運行級別。當以 root 身份執行 telinit S (或者想要更改的任意運行級別)時,它會更改運行級別,關閉前一個運行級別,然后啟動下一個。

    某種程度上您正在重新引導系統的一部分。然而,關閉與重新啟動服務的能力正是 Linux 最可愛的品質之一。想要更改機器的 IP 地址嗎?沒問題,只要進行一些更改,然后重新啟動聯網服務就行了。只要一切配置正確,備份和運行是如此迅速,很難分辯是否做過更改。在其它即使更改了桌面上的墻紙都必須重新引導的操作系統上,嘗試一下執行此操作 :)

    確實需要重新引導或徹底關閉 Linux 機器的唯一情況是如果正在添加或更改硬件,假設您正在使用不能熱插拔的設備,或者已經中斷且需要使機器脫機以修復損壞。與其它操作系統不同,對于那些不經過重新引導就無法解決問題的產品系統,我從來沒有看到過重新引導解決了這些系統上的問題。我曾設法利用諸如 hdparm 的命令來掛起非生產性機器,我希望這種情況發生。

    假設您想要執行一些系統維護,而這些系統維護要求系統處于單用戶方式。例如,使用 hdparm 調整硬盤。第一步是 su (切換)到 root 用戶。

    然后執行 telinit 命令使系統進入單用戶方式:

    telinit S -t 60
                

    自變量 "-t" 是可選的;它告訴 telinit 在真正切換到單用戶方式之前等待 60 秒。然而,只要執行了該命令,登錄到機器的任何人都會看到在控制臺上出現一個警告,指出系統將切換運行級別或將在 60 秒內停機。

    到了 60 秒時,init 會關閉單用戶方式中不使用的進程,并使系統進入單用戶方式。然后,將提示您輸入 root 用戶密碼以執行系統維護。

    系統進入單用戶方式所使用的進程略有不同。缺省情況下,單用戶方式要求 init 在控制臺上調用 sulogin 命令,并要求在單用戶方式中使用 root 登錄。

    系統進入單用戶方式后,應該會看到如下的消息:

               Give root password for system maintenance
                (or type Control-D for normal startup):
                

    執行了維護之后,可以執行以下命令來使系統回到以前的運行級別:

    telinit 3
                

    此命令告訴系統重新進入多用戶運行級別。在此命令中可以用 "2" 或 "4" 來代替 "3"。在 Slackware 系統上,運行級別 4 將使您進入使用 X 窗口顯示管理器之一的多用戶方式,因此您將直接登錄到 X 窗口。

    如果在擁有串行電纜的串行上掛了 UPS,那么就可以讓 UPS 在斷電的情況下向系統發送一個信號。如果您的產品級系統有一個很大的文件系統,那么這是非常有用的。我曾看到過當沒有徹底卸載 100GB RAID ext2 文件系統時(完成 fsck 需要大約 4 小時)發生了什么情況。另一方面,正確配置的 UPS 可以提醒系統斷電情況,并向 telinit/init 發送 SIGPWR 信號,這會使 init 根據其配置情況將系統切換到單用戶方式或者完全關閉系統。

    關機

    好,由于一直使用計算機,您已經覺得疲倦了,并打算到 Big Blue Room 去放松一下。幸好,您已經知道了在結束時直接按電源開關是一大禁忌,但也許還不知道關閉系統的所有方法。

    在 Linux 中,可以使用“三指禮”重新引導系統:Ctrl+Alt+Del 鍵控順序會向系統發送消息,通知它執行關機進程并重新啟動。換句話說,除非告訴它不要那樣做。

    如果要禁用該鍵控順序,需要注釋掉 inittab 中的一行代碼:


    部分 Slackware inittab

    # Script to run when going multi user.
                rc:2345:wait:/etc/rc.d/rc.M
                # What to do at the "Three Finger Salute".
                #ca::ctrlaltdel:/sbin/shutdown -t5 -rf now
                Comment out the above line to disable Ctrl+Alt+Del hotkey.
                

    關機時會發生什么情況?調用 shutdown 命令可以逐步關閉系統。然而,shutdown 自身并不完成所有工作,它通知 init:應該進入運行級別 0、1 或 6。

    shutdown 命令還通知所有已登錄到機器上的用戶:機器將關閉。在此之后將鎖住 login 命令,因此沒有別的人可以再啟動會話。

    要使用 shutdown 命令來關閉 Linux 系統,使用以下命令:


    關機

    shutdown -h now
                

    如果要給用戶注銷和保存文件的時間,請使用以下命令:

    shutdown -h -t 60
                

    shutdown 命令的 "-h" 開關告訴系統在停機后徹底關機。如果在內核中啟用了 APM,那么它會替您關閉電源,否則此時可以放心地按下開關。

    "-t" 開關是到系統開始關機之前所需要的時間,以秒為單位。如果要放棄關機,那么使用此開關可以實現。要停止暫掛關機,輸入:

    shutdown -c
                

    此命令將取消以前的所有 shutdown 命令。如果出于某些原因,您不想關閉系統,但卻要向用戶發送“系統即將關閉”的警告,那么應在 shutdown 中使用 "-k" 自變量。

    知道如何使用 telinitinit 可以在修改 Linux 系統派上用處。本文中,我們討論了更改運行級別和有關 Slackware Linux 發行版的 init 腳本的基礎知識。在各個發行版之間,目錄結構和文件位置都各不相同,但在閱讀了本文之后,您應該能夠掌握系統的 init 腳本,即使您使用的不是 Slackware Linux。

     

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>