启动流程和系统管理
? 了解linux的工作原理,可以通過(guò)linux的啟動(dòng)的過(guò)程一步步理解linux的工作原理,這就需要深入了解操作系統(tǒng)啟動(dòng)的每一步,不用了解每一步啟動(dòng)的細(xì)節(jié),只要了解系統(tǒng)啟動(dòng)的時(shí)每一步的特性就差不多。這里主要介紹centos6,它的大致流程是,post(計(jì)算機(jī)開(kāi)機(jī)自檢)->grub(引導(dǎo)操作系統(tǒng)的程序)->kernel(內(nèi)核)->init(進(jìn)程管理程序)->bash(用戶(hù)交互程序)
一一個(gè)計(jì)算機(jī)啟動(dòng)流程
1 post過(guò)程
首先計(jì)算機(jī)加電,cpu就會(huì)讀取bios(cpu內(nèi)置某種特殊的指令,會(huì)默認(rèn)的讀取bios),bios讀進(jìn)內(nèi)存后檢查計(jì)算機(jī)上所有硬件,并按照配置內(nèi)容啟動(dòng)的下一步。bios包括兩部分,一部分是rom,內(nèi)部存儲(chǔ)一些不可改變機(jī)器指令,另一部分是ram,存儲(chǔ)人們?cè)O(shè)定的開(kāi)機(jī)特性(這個(gè)模塊需要持續(xù)供電,一旦斷電設(shè)定的數(shù)據(jù)就會(huì)丟失)。控制bios一般都是計(jì)算機(jī)加電后,按F#(不同的計(jì)算機(jī)不同)進(jìn)入藍(lán)白相間到的配置界面,這里可以配置第一啟動(dòng)硬件、開(kāi)啟cpu的虛擬化特性、聲卡等等功能。
???? 2 grub
? bios程序運(yùn)行后,會(huì)加載第一啟動(dòng)項(xiàng),假如第一啟動(dòng)項(xiàng)是硬盤(pán)。這時(shí)cpu會(huì)讀取硬盤(pán)第一磁道第一扇區(qū)的數(shù)據(jù),讀取的是前446字節(jié)的數(shù)據(jù),這部分?jǐn)?shù)據(jù)叫做mbr,grub比較大不能完全放在mbr里,還有一部分放在了前27個(gè)扇區(qū)里,然而前27扇區(qū)也放不開(kāi),還有一部分?jǐn)?shù)據(jù)存放在/boot目錄下的grub下stage2里??偨Y(jié)一下,一部分?jǐn)?shù)據(jù)存放在mbr里稱(chēng)這部分?jǐn)?shù)據(jù)叫stage1,還有一般數(shù)據(jù)放在硬盤(pán)前27個(gè)扇區(qū)里叫stage1.5,最后一部分?jǐn)?shù)據(jù)存放在/boot/grub目錄下叫stage2.
???? 3 kernel
?在grub中可以選擇啟動(dòng)哪個(gè)系統(tǒng),這里啟動(dòng)的不是我們的要啟動(dòng)系統(tǒng),真正啟動(dòng)的是/boot目錄下的vmlinuz和initramfs文件,vmlinuz是需要的內(nèi)核,而initramfs不是需要的,initramfs文件里有一個(gè)簡(jiǎn)易的系統(tǒng),內(nèi)嵌了部分驅(qū)動(dòng),是啟動(dòng)真正文件系統(tǒng)的中間步驟,設(shè)計(jì)它的主要目的是防止內(nèi)核過(guò)大,內(nèi)核文件vmlinuz只有4M而initramfs卻20M多。內(nèi)核通過(guò)initramfs內(nèi)部的驅(qū)動(dòng)去加載真正的文件系統(tǒng),加載各種磁盤(pán)、網(wǎng)卡、usb等等驅(qū)動(dòng),實(shí)現(xiàn)系統(tǒng)的高級(jí)功能。
???? 4 init
??它不是系統(tǒng)必須有的程序,只是內(nèi)核把一部分監(jiān)控和管理權(quán)限放給了init,讓init代理內(nèi)核實(shí)現(xiàn)進(jìn)程管理。內(nèi)核之所以讓渡這些權(quán)限是因?yàn)檫M(jìn)程調(diào)度是最浪費(fèi)系統(tǒng)時(shí)間。進(jìn)程調(diào)度的一個(gè)過(guò)程:首先cpu收到中斷信號(hào),cpu就會(huì)把當(dāng)前正在運(yùn)行的進(jìn)程的數(shù)據(jù)全部挪到內(nèi)存里,并且給這個(gè)進(jìn)程貼上標(biāo)簽,它運(yùn)行到哪一步了;然后cpu把內(nèi)核讀進(jìn)來(lái),還原內(nèi)核的狀態(tài),加載上次運(yùn)行內(nèi)核數(shù)據(jù),cpu判斷下一個(gè)需要運(yùn)行的程序分配好時(shí)間片后自己離場(chǎng);最后加載下一個(gè)進(jìn)程。這里有一個(gè)概念,cpu 的處理數(shù)據(jù)的速度遠(yuǎn)遠(yuǎn)大于磁盤(pán)讀取的速度。當(dāng)內(nèi)核特別大的時(shí)候,一次調(diào)度i/o量將會(huì)特別大。這里就解釋通了內(nèi)核一定要小,越精巧cpu的利用率越高。
???? 5 bash
??用戶(hù)交互工具可以看之前的博客。
二系統(tǒng)補(bǔ)救
???? 1 post階段
??按F#進(jìn)入bios更改,忘記bios密碼,可以取下主板上的紐扣電池,bios中配置的數(shù)據(jù)都會(huì)丟失。
???? 2 grub階段
開(kāi)機(jī)后計(jì)算機(jī)處于黑屏狀態(tài),這時(shí)硬盤(pán)的數(shù)據(jù)時(shí)有效的,這時(shí)破壞的一般是grub的stage1階段??梢酝ㄟ^(guò)光盤(pán)的救援模式進(jìn)行救援,操作流程大致如下:
光盤(pán)引導(dǎo)選擇第三個(gè),一路確認(rèn)開(kāi)啟一個(gè)shell
grub-install /dev/sd*????? 這里的/dev/sd*是原grub所在的硬盤(pán)
開(kāi)機(jī)后計(jì)算機(jī)黑屏但是有報(bào)錯(cuò)erorr ##,這時(shí)stage1.5或stage2被破壞了,和修復(fù)stage修復(fù)流程類(lèi)似:
光盤(pán)引導(dǎo)選擇第三個(gè),一路確認(rèn)開(kāi)啟一個(gè)shell
grub-install --root-direcoty=/path /dev/sd* ?????? /path是boot的父目錄,/dev/sd*是原grub所在的硬盤(pán)
開(kāi)機(jī)后系統(tǒng)顯示grub >這時(shí)是grub的配置文件被破壞了,grub配置文件的位置/boot/grub/grub.conf。grub配置文件的格式
3 kernel,init,bash補(bǔ)救
kernel,init,bash丟失,進(jìn)入救援模式安裝對(duì)應(yīng)的rpm包就可了。
init的配置文件位于/etc/inittab
bash的配置文件位于/etc/bashrc和用戶(hù)家目錄的.bashrc
三服務(wù)管理
??服務(wù)器啟動(dòng)的時(shí)候,一般都服務(wù)和系統(tǒng)一起啟動(dòng),開(kāi)機(jī)啟動(dòng)的服務(wù)的管理腳本位于/etc/init.d/目錄下,是通過(guò)init這一步調(diào)用的。格式就是bash腳本,只是多了啟動(dòng)和關(guān)閉順序。可以把一些想開(kāi)機(jī)后執(zhí)行的腳本定義在local里。
? ?servicesername start|stop|restart|reload|status???? 服務(wù)的管理
? ?chkonfigadd name????????????????????把服務(wù)的添加到開(kāi)機(jī)管理里
? ?chkonfig-l level name on|off ? ? ? ? ? ? ? ? ??設(shè)置服務(wù)開(kāi)機(jī)開(kāi)啟在哪個(gè)等級(jí)里
??有些程序需要監(jiān)聽(tīng)端口,但是只是偶爾使用,讓這個(gè)服務(wù)永駐內(nèi)存會(huì)浪費(fèi)內(nèi)存和cpu的時(shí)間片,但是還不能停止,這時(shí)有人寫(xiě)了個(gè)xinted幫一批程序監(jiān)聽(tīng)端口,只有被調(diào)用的時(shí)候才會(huì)運(yùn)行服務(wù)程序。
總結(jié)
??這一節(jié)主要介紹了計(jì)算機(jī)啟動(dòng)的各個(gè)階段和各個(gè)階段的補(bǔ)救措施,并且簡(jiǎn)單介紹了服務(wù)程序的管理命令。
轉(zhuǎn)載于:https://blog.51cto.com/oldking/1879116
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
- 上一篇: 161023解答
- 下一篇: 远程过程调用RPC RMI(Remote