国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
打造個人專屬的微型Linux --啟動原理篇

首先此篇先大體介紹下整個系統(tǒng)的開機流程,再來對其一一展開進行詳細的說明

第一步:首先進行開機自檢POST,確認硬件正常后進入下一步

第二步:BIOS initialization(BOOT SEQ)BIOS初始化,并按照BIOS中設(shè)定的開機啟動加載設(shè)備進行依次的檢測

第三步:MBR(bootloader)在BIOS檢測到某一設(shè)備可以啟動后,開始加載MBR上的引導(dǎo)程序,在linux中,引導(dǎo)分為2個階段,首先加載在MBR上的一段極其精簡的啟動程序,由此啟動程序引導(dǎo)boot目錄中的grub,再由grub進行具體系統(tǒng)的引導(dǎo)啟動(grub是一個很強大的系統(tǒng)啟動引導(dǎo)管理軟件,也可以引導(dǎo)window)

第三步:Kernel initialization 在由grub引導(dǎo)linux內(nèi)核后,啟動內(nèi)核,由內(nèi)核檢測基本硬件設(shè)備裝載對應(yīng)驅(qū)動,并裝載rootfs和啟動init(/etc/inittab)

第四步:系統(tǒng)啟動和初始化,在啟動init后,才開始真正的系統(tǒng)啟動,內(nèi)核退居到后臺,由init來接管整個系統(tǒng)的加載和啟動,init會根據(jù)設(shè)定進行系統(tǒng)進一步的初始化,下面是init啟動后進行的一系列操作

1.完成系統(tǒng)整體初始化:/etc/rc.d/rc.sysinit (此腳本可以細細研讀)

2.啟動對應(yīng)級別的各個服務(wù):/etc/rc.d/rc 利用/etc/rc.d/ec[0-6].d/目錄下的所有腳本啟動或者停止服務(wù)

/etc/rc.d/ec[0-6].d/下都是鏈接文件,鏈接到/etc/rc.d/init.d/下的各個腳本

3./etc/rc.local (鏈接到/etc/rc.d/rc.local)給用戶定義的額外開機操作項

4.啟動虛擬終端,驗證用戶登錄(圖形界面則調(diào)用其他如XDM來驗證用戶登錄)

至此 系統(tǒng)啟動完整,可以說,整個系統(tǒng)的啟動都是靠一堆腳本來完成的

第一二步驟涉及到硬件的POST和BIOS階段就不再細說了,從bootloader開始說起

bootloader

這是一段放置在MBR錢446字節(jié)中的一段精簡的引導(dǎo)程序(MBR一共有512字節(jié),后64字節(jié)既是分區(qū)表,還有最后2個字節(jié)的填充)

常見的bootloader程序有

LILO:LInux LOader 可以引導(dǎo)多個操作系統(tǒng),但不支持大硬盤

GRUB:GRand Unified Bootloader 目前比較常見的引導(dǎo)加載器,這是一個分段的引導(dǎo)加載器,在Ubunt上用的是GRUB1.9x。

時隔10年,最新的GRUB2在昨天正式發(fā)布了,有興趣的童鞋可以去關(guān)注下

可以在開機時進入GRUB的交互模式,直接輸入?yún)?shù)啟動系統(tǒng),在這里可以輸入單用戶啟動參數(shù)直接進入單用戶模式進行密碼修改等操作

之前說這是一個分段的引導(dǎo)程序這里來說說具體是怎么分段的

第一段:MBR

用來引導(dǎo)進入第二段,在完成第一段后,初始化GRUB自我初始化后,并正常啟動第二段

第二段:/boot/grub

由于MBR上的引導(dǎo)程序只有446字節(jié),所以能放置的內(nèi)容很少,功能很弱,所以通過引導(dǎo)啟動第二段放置在磁盤中/boot/grub目錄下強大的GRUB程序,來擴展其更為強大的引導(dǎo)功能

此目錄下的配置文件

/boot/grub/grub.conf

搬照我的配置文件來詳細說明

  1. # grub.conf generated by anaconda  
  2. #  
  3. # Note that you do not have to rerun grub after making changes to this file  
  4. # NOTICE:  You do not have a /boot partition.  This means that  
  5. #          all kernel and initrd paths are relative to /, eg.  
  6. #          root (hd0,0)  
  7. #          kernel /boot/vmlinuz-version ro  root =/dev/sda1  
  8. #          initrd /boot/initrd-[generic-]version.img  
  9. # boot =/dev/sda 
  10.  
  11. #以上是注釋說明 
  12.  
  13. #以下是全局設(shè)定  
  14. default = 0  #默認啟動的系統(tǒng)順序,從0開始數(shù) 
  1. timeout = 5  #等待用戶選擇系統(tǒng)的超時時間  
  2.  
  3. splashimage =(hd0,0)/boot/grub/splash.xpm.gz #開機圖片的位置,這里的位置,由于GRUB是直接識別硬盤的,所以和在linux的樹狀文件系統(tǒng)要區(qū)分一下,如果在linux中boot掛載點是和單獨分區(qū),那么只要指向boot分區(qū)下的目錄,不用從boot開始,直接寫成 splashimage =(hd0,0)/grub/splash.xpm.gz 我這里將boot和根放在同一分區(qū),所以從boot目錄開始寫  
  4.  
  5. hiddenmenu #是否隱藏菜單 
  6.  
  7.   
  8.  
  9. #以下是各個引導(dǎo)系統(tǒng)的設(shè)定  
  10. title CentOS (2.6.32-220.el6.i686) #菜單顯示名稱  
  11.  
  12.     root (hd0,0) #內(nèi)核所在分區(qū)  
  13.  
  14.     kernel /boot/vmlinuz-2.6.32-220.el6.i686 ro  root = UUID =f7ba45db-7d52-407e-996d-0d7c087f7a1a rd_NO_LUKS rd_NO_LVM  LANG = en_US .UTF-8 rd_NO_MD quiet  SYSFONT = latarcyrheb -sun16 rhgb  crashkernel = auto    KEYBOARDTYPE = pc   KEYTABLE = us  rd_NO_DM #內(nèi)核所在位置和需要向內(nèi)核傳遞的參數(shù)  
  15.  
  16.      initrd /boot/initramfs-2.6.32-220.el6.i686.img #這是一個小linux,完整,精悍。 為了防止內(nèi)核中沒有根系統(tǒng)文件的驅(qū)動產(chǎn)生系統(tǒng)啟動死循環(huán)(比如根是放在lvm設(shè)備中),先加載initrd這個精簡的linux,然后內(nèi)核借助這個精簡的linux加載根文件系統(tǒng)的驅(qū)動,然后切換到真正的根文件系統(tǒng)繼續(xù)進行系統(tǒng)加載 
  17.  
  18.     password 123456 #啟動此系統(tǒng)需要的密碼,也可以放在全局設(shè)定中,表示在開機進入交互式GRUB編輯需要輸入密碼 

Kernel initialization

1、硬件探測

2、硬件驅(qū)動初始化(initrd)

3、掛載根文件系統(tǒng)(為了避免額外進程寫操作破壞文件系統(tǒng),所以在這里是使用只讀掛載)

4、啟動/sbin/init (PID:1)

在Kernel階段,需要掛在根目錄,而linux單內(nèi)核系統(tǒng),但它也吸收了微內(nèi)核的特性,所以它包括了內(nèi)核模塊。

內(nèi)核:/boot/vmlinuz-version 模塊:/libmodules/version/

把模塊集成進內(nèi)核能提高效率,但也增大了內(nèi)核體積,所以使用加載模塊的方式提高了可管理性

這里就造就了一個問題,由于內(nèi)核比較精簡,所以不可能集成進很多的驅(qū)動進去,由內(nèi)核初始化后是必須要加載根文件系統(tǒng)的,一旦根文件系統(tǒng)放在RAID或LVM設(shè)備上,由于內(nèi)核缺少這些高級文件系統(tǒng)的驅(qū)動,會導(dǎo)致無法加載。于是就在這里加了一層中間層,就是這里的initrd了。initrd是一個微型的根文件系統(tǒng),內(nèi)置額外內(nèi)核中沒有的驅(qū)動模塊

首先內(nèi)核借助initrd加載根文件系統(tǒng),然后加載真實根文件系統(tǒng)驅(qū)動和其它必須驅(qū)動后,切換到真正的根文件系統(tǒng)。所以initrd只是起到一個過渡的作用

內(nèi)核初始化產(chǎn)生的所有信息保存在/var/log/dmesg 二進制文件,使用dmesg命令查看

init 系統(tǒng)初始化

加載完成內(nèi)核后,啟動整個系統(tǒng)的父進程,PID為1 的init

init接管系統(tǒng)后,結(jié)合/etc/initab的配置,加載各種需要的庫文件,啟動各個進程,比如bash,用戶登錄驗證等。。。

此篇寫述說原理,具體打造過程請期待下一篇。 見 http://www.linuxidc.com/Linux/2012-07/64754.htm

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Linux系統(tǒng)啟動流程
Linux 系統(tǒng)啟動過程分析
Linux系統(tǒng)啟動詳解
一文看懂Linux開機流程BIOS
Linux系統(tǒng)啟動的基本過程和步驟--轉(zhuǎn)載?。?- lanhaitaoa的個人空間 - C...
Linux系統(tǒng)啟動過程詳解
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服