第十周

  1. 請詳細描述CentOS的啟動流程

    啟動第一步–加載BIOS 

       當打開計算機電源,計算機會首先加載BIOS信息,BIOS信息是如此的重要,以至于計算機必須在最開始就找到它,這是因為BIOS中包含了CPU的相關信息、設備啟動順序信息、硬盤信息、內存信息、時鐘信息、PNP特性等等。在此之后,計算機心里就有譜了,知道應該去讀取哪個硬件設備了。在BIOS將系統的控制權交給硬盤第一個扇區之后,就開始由Linux來控制系統了。

    啟動第二部–讀取MBR         

      硬盤上第0磁道第一扇區被稱為MBR,也就是Master Boot Record,即主導記錄,它的大小是512字節,可里面卻存放了預啟動信息、分區表信息??煞譃閮刹糠郑旱谝徊糠譃橐龑ィ剂?46個字節;第二部分為分區表,共66個字節,記錄硬盤的分區信息。預引導區的作用之一是找到標記為活動的分區,并將活動分區的引導讀入內存。       系統找到BIOS所指定的硬盤MBR后,就會將其復制到0*7c00地址所在的物理內存中。其實被復制到物理內存的內容就是Boot Loader,而具體到你的電腦,那就是lilo或者grub了。

    啟動第二部–讀取MBR         

      硬盤上第0磁道第一扇區被稱為MBR,也就是Master Boot Record,即主導記錄,它的大小是512字節,可里面卻存放了預啟動信息、分區表信息??煞譃閮刹糠郑旱谝徊糠譃橐龑?,占了446個字節;第二部分為分區表,共66個字節,記錄硬盤的分區信息。預引導區的作用之一是找到標記為活動的分區,并將活動分區的引導讀入內存。       系統找到BIOS所指定的硬盤MBR后,就會將其復制到0*7c00地址所在的物理內存中。其實被復制到物理內存的內容就是Boot Loader,而具體到你的電腦,那就是lilo或者grub了。

    啟動第四步–加載內核      

      根據grub設定的內核映象所在路徑, 系統讀取內存映象,并進行解壓縮操作。此時,屏幕一般會輸出”Uncompressing Linux“的提示。當解壓縮內核完成后,屏幕輸出”OK,booting the kernel”。    系統將壓縮后的內核放置在內存之中,并調用start_kernel()函數來啟動一系列的出事化函數并初始化各種設備,完成Linux核心環境的建立,至此Linux內核已經建立起來了,基于Linux的程序應該可以正常運行了。    Start_kernel()定義在init/main.c中,它就類似于一般可執行程序中的main()函數,系統在此之前所做的僅僅是一些能讓內核程序最低限度執行的初始化操作,真正的內核初始化過程是從這里才開始。函數start_kerenl()將會調用一系列的初始化函數,用來完成內核本身的各方面設置,目的是最終建立起基本完整的Linux核心環境。    在start_kenrel()的結尾,內核通過kenrel thread()創建出第一個系統內核線程(即1號進程),該線程執行的是內核中的init()函數,負責的是下一階段的啟動任務。最后調用cpues_idle()函數,進入了系統主循環體口默認將一直執行default_idele()函數中的指令,即CPU的halt指令,直到就緒隊列中存在其他進程需要被調度是才會轉向執行其他函數,此時,系統中唯一存在就緒狀態的進程就是由kernel_hread()創建的init進程(內核線程),所以內核并不進入default_idle()函數,而是轉向init()函數繼續啟動過程。

    啟動第五步–用戶層init依據inittab文件來設定運行等級   

      內核被加載后,第一個運行的程序便是/sbin/init,該文件會讀取/etc/inittab文件,并依據文件來進行初始化工作。    其實/etc/inittab文件最主要的作用就是設定Linux的運行等級,其設定形式是“:id:5:initdefault:”,這就表明Linux需要運行在等級5上。Linux的運行等級設定如下:  0:關機  1:單用戶模式  2:無網絡支持的多用戶模式 3:有網絡支持的多用戶模式 4:保留,未使用  5:有網絡支持有X-Window支持的多用戶模式 6:重新引導系統,即重啟

    啟動第六步–Init進程執行rc.sysinit    

      在設定了運行等級后,Linux系統執行的第一個用戶層文件就是/etc/rc.sysinit腳本  程序,它做的工作非常多,包括設定PATH、設定網絡配置(/etc/sysconfig/network)、啟動swap分區、設定/proc等等。線程init的最終完成狀態是能夠使得一般的用戶程序可以正常地被執行,從而真正完成可供應用程序運行的系統環境。準備好以上一切之后,系統開始進入用戶層的初始化階段。內核通過系統調用execve()加載執行相應的用戶層初始化程序,依次嘗試加載程序”/sbin/init”,”/etc/init”、“/bin/init”,和“/bin/sh”.只要其中有一個程序加載獲得成功,那么系統就將開始用戶層的初始化,而不會再回到init()函數段中。至此,init()函數結束,Linux內核的引導部分也到此結束。

    啟動第七步–啟動內核模塊      

      具體是依據/etc/modules.conf文件或/etc/modules.d目錄下的文件來裝載內核模塊。

    啟動第八步–執行不同運行級別的腳本程序     

      根據運行級別的不同,系統會運行rc0.d到rc6.d中的響應的腳本程序,來完成相應的初始化工作和啟動相應的服務。

    啟動第九步–執行/etc/rc.d/rc.local     

      rc.lacal就是在一切初始化工作后,Linux留給用戶進行個性化的地方,可以把設置和啟動的東西放到這里

    啟動第十步–執行/bin/login程序,進入登錄狀態     

      此時,系統已經進入到了等待用戶輸入username和password的時候了,已經可以用自己的帳號登入系統了。

2、為運行于虛擬機上的CentOS 6添加一塊新硬件,提供兩個主分區;

  (1) 為硬盤新建兩個主分區;并為其安裝grub;

  (2) 為硬盤的第一個主分區提供內核和ramdisk文件; 為第二個分區提供rootfs;

  (3) 為rootfs提供bash、ls、cat程序及所依賴的庫文件;

  (4) 為grub提供配置文件;

  (5) 將新的硬盤設置為第一啟動項并能夠正常啟動目標主機;

3、制作一個kickstart文件以及一個引導鏡像。描述其過程。

4、寫一個腳本

  (1) 能接受四個參數:start, stop, restart, status

   start: 輸出“starting 腳本名 finished.

   …

  (2) 其它任意參數,均報錯退出;

blob.png

    

5、寫一個腳本,判斷給定的用戶是否登錄了當前系統;

  (1) 如果登錄了,則顯示用戶登錄,腳本終止;

  (2) 每3秒鐘,查看一次用戶是否登錄;

blob.png

6、寫一個腳本,顯示用戶選定要查看的信息;

   cpu) display cpu info

   mem) display memory info

   disk) display disk info

   quit) quit

   非此四項選擇,則提示錯誤,并要求用戶重新選擇,只到其給出正確的選擇為止;

blob.png

7、寫一個腳本

  (1) 用函數實現返回一個用戶的UID和SHELL;用戶名通過參數傳遞而來;

  (2) 提示用戶輸入一個用戶名或輸入“quit”退出;

    當輸入的是用戶名,則調用函數顯示用戶信息;

    當用戶輸入quit,則退出腳本;進一步地:顯示鍵入的用戶相關信息后,再次提醒輸出用戶名或quit: 

    blob.png

8、寫一個腳本,完成如下功能(使用函數)

   (1) 提示用戶輸入一個可執行命令的名字;獲取此命令依賴的所有庫文件;

   (2) 復制命令文件至/mnt/sysroot目錄下的對應的rootfs的路徑上,例如,如果復制的文件原路徑是/usr/bin/useradd,則復制到/mnt/sysroot/usr/bin/目錄中;

   (3) 復制此命令依賴的各庫文件至/mnt/sysroot目錄下的對應的rootfs的路徑上;規則同上面命令相關的要求; 

blob.png

原創文章,作者:N24_xingxiu,如若轉載,請注明出處:http://www.www58058.com/65637

(0)
N24_xingxiuN24_xingxiu
上一篇 2017-01-03
下一篇 2017-01-03

相關推薦

  • 集中管理利器-puppet快速入門-中

    集中管理利器-puppet快速入門-中 6.    嘗試啟動master puppet 啟動master puppet,并確認8140端口已被監聽:  #puppet返回成功,但不一定能成功啟動,puppet這個功能希望能改進… 7.    目錄結構 /etc/puppet/  …

    Linux干貨 2015-05-04
  • 【招聘福利】深圳/系統運維工程師/薪資彈性,可面談

    深圳市鑫順諾科技有限公司 有意向的學員,請聯系magedu-小助手QQ:1522609717 職位職能: 系統運維工程師崗位職責:1、公司日常機房網絡和辦公室網絡管理調優、日常辦公電腦維護。2、管理、維護網站服務器運行狀態,處理系統運行故障;3、負責服務器集群的操作系統安裝、升級、定制、部署與維護工作;4、負責服務器集群的系統監控和自動化腳本的設計與部署;5…

    Linux干貨 2015-11-06
  • 自建CA搭建SSL加密網站

    企業環境中,在安全級別要求較高的公司,經常需要搭建基于SSL加密傳輸的網站,使用https協議訪問web站點,能大大提高網站的安全性。但構建https站點,需要用到證書。內部網站到互聯網上申請費用不菲的證書顯然不符合經濟性。于是,自建內部CA成為我們的首選。 本文以兩臺服務器,分別扮演CA及Web網站的角色,詳細論述自建CA搭建加密網站的過程。  …

    Linux干貨 2016-07-29
  • 全球敏捷運維峰會Gdevops 2017成都站嘉賓主題提前看!

    2017年全球敏捷運維峰會(Gdevops, Global Devops Summit)將于2017年在成都、上海、北京、廣州四城全面啟動,本次峰會由上海市經濟和信息化委員會指導,上海市云計算產業促進中心、DBAplus社群主辦,數十家媒體單位共同支持,活動家提供全球敏捷運維峰會在線報名服務。 成都站即將于13日啟航,搭車地址:https://www.huo…

    Linux干貨 2017-05-11
  • 編譯內核制作小型的linux

    1.  前言       今天我將會給大家帶來如何定制一個屬于自己linux系統,也就是編譯內核,那為什么要編譯內核呢? 內核,是一個操作系統的核心。它負責管理系統的進程、內存、設備驅動程序、文件和網絡系統管理,決定著系統的性能和穩定性。Linux作為一個自由軟件,在廣 大愛好者的支持下,內核版本不…

    Linux干貨 2016-08-03
  • GRUB Legacy&Trouble Shooting

    GRUB (Grand Unified Bootloader)        位于系統引導盤的MBR中的Boot Loader。        GRUB是一個來自GNU項目的啟動引導程序。GRUB是多啟動規范的實現,它允…

    Linux干貨 2016-09-13

評論列表(1條)

  • 馬哥教育
    馬哥教育 2017-01-04 16:29

    寫的很好,如果可以畫圖來解釋一下系統的啟動步驟的話會更好,建議寫腳本的時候多加一些判斷條件

欧美性久久久久