了解linux的工作原理,可以通過linux的啟動的過程一步步了解linux的工作原理,這就需要深入了解作業系統啟動的每一步,不用了解每一步啟動的細節,隻要了解系統啟動的時每一步的特性就差不多。這裡主要介紹centos6,它的大緻流程是,post(計算機開機自檢)->grub(引導作業系統的程式)->kernel(核心)->init(程序管理程式)->bash(使用者互動程式)
一一個計算機啟動流程
首先計算機加電,cpu就會讀取bios(cpu内置某種特殊的指令,會預設的讀取bios),bios讀進記憶體後檢查計算機上所有硬體,并按照配置内容啟動的下一步。bios包括兩部分,一部分是rom,内部存儲一些不可改變機器指令,另一部分是ram,存儲人們設定的開機特性(這個子產品需要持續供電,一旦斷電設定的資料就會丢失)。控制bios一般都是計算機加電後,按f#(不同的計算機不同)進入藍白相間到的配置界面,這裡可以配置第一啟動硬體、開啟cpu的虛拟化特性、聲霸卡等等功能。
bios程式運作後,會加載第一啟動項,假如第一啟動項是硬碟。這時cpu會讀取硬碟第一磁道第一扇區的資料,讀取的是前446位元組的資料,這部分資料叫做mbr,grub比較大不能完全放在mbr裡,還有一部分放在了前27個扇區裡,然而前27扇區也放不開,還有一部分資料存放在/boot目錄下的grub下stage2裡。總結一下,一部分資料存放在mbr裡稱這部分資料叫stage1,還有一般資料放在硬碟前27個扇區裡叫stage1.5,最後一部分資料存放在/boot/grub目錄下叫stage2.
在grub中可以選擇啟動哪個系統,這裡啟動的不是我們的要啟動系統,真正啟動的是/boot目錄下的vmlinuz和initramfs檔案,vmlinuz是需要的核心,而initramfs不是需要的,initramfs檔案裡有一個簡易的系統,内嵌了部分驅動,是啟動真正檔案系統的中間步驟,設計它的主要目的是防止核心過大,核心檔案vmlinuz隻有4m而initramfs卻20m多。核心通過initramfs内部的驅動去加載真正的檔案系統,加載各種磁盤、網卡、usb等等驅動,實作系統的進階功能。
它不是系統必須有的程式,隻是核心把一部分監控和管理權限放給了init,讓init代理核心實作程序管理。核心之是以讓渡這些權限是因為程序排程是最浪費系統時間。程序排程的一個過程:首先cpu收到中斷信号,cpu就會把目前正在運作的程序的資料全部挪到記憶體裡,并且給這個程序貼上标簽,它運作到哪一步了;然後cpu把核心讀進來,還原核心的狀态,加載上次運作核心資料,cpu判斷下一個需要運作的程式配置設定好時間片後自己離場;最後加載下一個程序。這裡有一個概念,cpu 的處理資料的速度遠遠大于磁盤讀取的速度。當核心特别大的時候,一次排程i/o量将會特别大。這裡就解釋通了核心一定要小,越精巧cpu的使用率越高。
使用者互動工具可以看之前的部落格。
按f#進入bios更改,忘記bios密碼,可以取下主機闆上的紐扣電池,bios中配置的資料都會丢失。
開機後計算機處于黑屏狀态,這時硬碟的資料時有效的,這時破壞的一般是grub的stage1階段。可以通過CD光牒的救援模式進行救援,操作流程大緻如下:
CD光牒引導選擇第三個,一路确認開啟一個shell
grub-install /dev/sd* 這裡的/dev/sd*是原grub所在的硬碟
開機後計算機黑屏但是有報錯erorr ##,這時stage1.5或stage2被破壞了,和修複stage修複流程類似:
grub-install --root-direcoty=/path /dev/sd* /path是boot的父目錄,/dev/sd*是原grub所在的硬碟
開機後系統顯示grub >這時是grub的配置檔案被破壞了,grub配置檔案的位置/boot/grub/grub.conf。grub配置檔案的格式
kernel,init,bash丢失,進入救援模式安裝對應的rpm包就可了。
init的配置檔案位于/etc/inittab
bash的配置檔案位于/etc/bashrc和使用者家目錄的.bashrc
三服務管理
伺服器啟動的時候,一般都服務和系統一起啟動,開機啟動的服務的管理腳本位于/etc/init.d/目錄下,是通過init這一步調用的。格式就是bash腳本,隻是多了啟動和關閉順序。可以把一些想開機後執行的腳本定義在local裡。
servicesername start|stop|restart|reload|status 服務的管理
chkonfigadd name 把服務的添加到開機管理裡
chkonfig-l level name on|off 設定服務開機開啟在哪個等級裡
有些程式需要監聽端口,但是隻是偶爾使用,讓這個服務永駐記憶體會浪費記憶體和cpu的時間片,但是還不能停止,這時有人寫了個xinted幫一批程式監聽端口,隻有被調用的時候才會運作服務程式。
總結
這一節主要介紹了計算機啟動的各個階段和各個階段的補救措施,并且簡單介紹了服務程式的管理指令。