久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Ubuntu-Linux的開(kāi)機(jī)流程

 antyoung 2013-11-13
1.載入BOIS硬件信息,,獲取第一啟動(dòng)設(shè)備代號(hào);
2.讀取第一啟動(dòng)設(shè)備MBR中的引導(dǎo)加載程序(Bootloader),,如grub lilo spfdisk等等;
3.引導(dǎo)加載程序從磁盤(pán)文件中載入操作系統(tǒng)核心;
4.啟動(dòng)管理器upstart啟動(dòng)預(yù)定義runlevel的系統(tǒng)服務(wù);
5.啟動(dòng)管理器啟動(dòng)用戶(hù)定義程序,。
6.啟動(dòng)終端和(/或)x-window,,等待用戶(hù)登錄。
 
 
1.計(jì)算機(jī)加電后,,系統(tǒng)將自動(dòng)讀取bois中保存的硬件信息(即開(kāi)機(jī)時(shí)按delete或F2進(jìn)入的bois設(shè)置畫(huà)面的內(nèi)容),,其中指出了第一啟動(dòng)設(shè)備以及設(shè)備的啟動(dòng)優(yōu)先級(jí)。然后系統(tǒng)開(kāi)始自檢(POST:power on self test),。接下來(lái)執(zhí)行硬件初始化,,設(shè)置PnP設(shè)備。最后開(kāi)始讀取開(kāi)機(jī)設(shè)備的數(shù)據(jù)(MBR),。
2.根據(jù)BOIS中設(shè)定的開(kāi)機(jī)設(shè)備順序,,系統(tǒng)開(kāi)始嘗試從指定的啟動(dòng)設(shè)備的主引導(dǎo)記錄(MBR:Main Boot Record)載入引導(dǎo)加載程序。對(duì)于HDD啟動(dòng)設(shè)備來(lái)說(shuō),,MBR位于第一扇區(qū)0頭0道1扇區(qū),,大小為512K。如果在MBR中找到了引導(dǎo)加載程序,。則由它負(fù)責(zé)加載操作系統(tǒng),。
3.引導(dǎo)加載程序一般包括2個(gè)部分:主引導(dǎo)加載程序和二級(jí)引導(dǎo)加載程序,。其中主引導(dǎo)加載程序位于MBR中,,體積很小,,主要負(fù)責(zé)載入真正的引導(dǎo)加載程序(二級(jí)引導(dǎo)加載程序)。二級(jí)引導(dǎo)加載程序從磁盤(pán)中載入操作系統(tǒng),,并能夠提供更為豐富的人機(jī)交互,。主要的引導(dǎo)加載程序有LILO,GRUB等。其中Ubuntu默認(rèn)GRUB為引導(dǎo)加載程序,。
由于引導(dǎo)加載程序需要讀取文件分區(qū)表(DPL),因此它必須能夠識(shí)別磁盤(pán)的文件系統(tǒng)格式如FAT,FAT32,NTFS,,ex2,ex4...等等。注意windows提供的loader無(wú)法識(shí)別linux的文件系統(tǒng),,而linux下的loader如grub,lilo等既能識(shí)別windows文件系統(tǒng),,也能識(shí)別linux文件系統(tǒng)。
引導(dǎo)加載程序讀取操作系統(tǒng)核心文件,并將其加載到內(nèi)存中,,利用核心的功能開(kāi)始測(cè)試硬件并加載相應(yīng)的驅(qū)動(dòng)程序,,包括硬盤(pán)、CPU,、網(wǎng)卡(對(duì),!你沒(méi)看錯(cuò),確實(shí)有網(wǎng)卡,,linux把網(wǎng)卡驅(qū)動(dòng)并入了核心中),,聲卡等等。
實(shí)際核心文件一般為/boot/vmlinuz-2.x.xx-xx-generic,,但核心在載入過(guò)程中僅載入根目錄/而已,,因此根目錄下存在一個(gè)vmlinuz的鏈接文件指向?qū)嶋H的核心文件。
此外,,核心的一部分功能需要使用別的文件來(lái)提供,,需要在載入核心的同時(shí)也載入這些功能文件(如小型linux系統(tǒng)啟動(dòng)時(shí)常用內(nèi)存模擬的虛擬磁盤(pán)RAM Disk來(lái)完成某些功能)。因此根目錄下還有一個(gè)鏈接文件initrd,,它指向/boot/initrd.img-2.x.xx-xx-generic的映像文件,。Loader加載根目錄的時(shí)候會(huì)同時(shí)加載該映像文件創(chuàng)建RamDisk。
initrd.img所創(chuàng)建的RamDisk中包含了一個(gè)名為linuxrc的程序,,存放在initrd虛擬磁盤(pán)的最頂層目錄下,。RamDisk創(chuàng)建成功后,核心將調(diào)用該程序執(zhí)行硬件驅(qū)動(dòng)模塊的加載以驅(qū)動(dòng)硬件設(shè)備,。硬件驅(qū)動(dòng)加載完成后,,initrd創(chuàng)建的RamDisc將被移除,然后操作系統(tǒng)開(kāi)始運(yùn)行啟動(dòng)管理器,。用于根據(jù)需要加載服務(wù)程序,、用戶(hù)自定義啟動(dòng)程序,直到進(jìn)入登錄界面,。
4.Linux下存在多種啟動(dòng)管理器,,如串行加載服務(wù)的System V init,,通過(guò)設(shè)置服務(wù)依賴(lài)實(shí)現(xiàn)并行加載的initng。Ubuntu采用的是一種基于事件的啟動(dòng)管理器——Upstart,。它實(shí)際有3個(gè)程序和配置文件目錄組成,。
----------------------------------------------------------------------------
程序 | /sbin/init            telinit(8)                runlevel
配置 | /ect/init/            /etc/rcx.d/                /etc/init.d/
----------------------------------------------------------------------------
(1)init作為系統(tǒng)啟動(dòng)后的第一個(gè)程序(利用命令ps -aux查詢(xún)進(jìn)程id,init的PID總是1,,實(shí)際文件為/sbin/init),讀取/etc/init目錄下保存的啟動(dòng)配置文件,。該目錄下的所有文件的文件名都以.conf結(jié)尾(也可存在子目錄中)。每一個(gè)文件都定義了一個(gè)單獨(dú)的服務(wù)或任務(wù),,服務(wù)的名字正是不包括路徑名和擴(kuò)展名的文件名,。如/etc/init/rc-sysinit.conf所描述的服務(wù)就是rc-sysinit。這些文件都是文本類(lèi)型的文件,,而非可執(zhí)行文件,。
init首先啟動(dòng)rc-sysinit任務(wù)。該任務(wù)由/etc/init/rc-system.conf腳本指定,,目的是兼容舊版串行化的system v init,。該腳本讀取默認(rèn)的運(yùn)行等級(jí)(runlevel),并將結(jié)果傳遞給upstart的下一個(gè)組件telinit,。下面的代碼片段節(jié)選自rc-system.conf:
----------------------------------------------------------------------------
# ... 省略
env DEFAULT_RUNLEVEL=2
# ... 省略
script
    # 檢查/etc/inittab中是否指定了默認(rèn)runlevel
    if[ -r /etc/inittab ]
    then
    eval "$(sed -nre 's/^[^#][^:]*:([0-6sS]):initdefault:.*/DEFAULT_RUNLEVEL="\1";/p' /etc/inittab || true)"
    fi
    # 檢查核心命令行典型參數(shù)
    for ARG in $(cat /proc/cmdline)
    do
    case "${ARG}"  in
    -b|emergency)
        # Emergency shell
        [ -n "${FROM_SINGLE_USER_MODE}" ] || sulogin
        ;;
    [0123456sS])
        # Override runlevel
        DEFAULT_RUNLEVEL="${ARG}"
        ;;
    -s|single
        # Single user mode
        [ -n "${FROM_SINGLE_USER_MODE}" ] || DEFAULT_RUNLEVEL=S
        ;;
    esac
    done
    # 運(yùn)行系統(tǒng)初始化腳本
    [ -n "${FROM_SINGLE_USER_MODE}" || /etc/init.d/rcS
    # 切換至默認(rèn)runlevel
    telinit "${DEFAULT_RUNLEVEL}"
end script
----------------------------------------------------------------------------
從上面的代碼可以看出,,rc-sysinit.conf的任務(wù)是讀取默認(rèn)的運(yùn)行等級(jí),然后將其作為參數(shù)傳遞給另一個(gè)啟動(dòng)程序telinit,。
(2)telinit用于將系統(tǒng)轉(zhuǎn)換到選定的runlevel,。telnet通過(guò)比較當(dāng)前runlevel與將要進(jìn)入的runlevel之間運(yùn)行服務(wù)的不同,關(guān)閉不需要的服務(wù)項(xiàng),,啟動(dòng)目前未運(yùn)行的服務(wù),,從而實(shí)現(xiàn)系統(tǒng)狀態(tài)的轉(zhuǎn)換??稍O(shè)置的值包括:2-5為多用戶(hù)模式,,0為系統(tǒng)關(guān)機(jī),6為重啟,,1為單用戶(hù)模式,。runlevel也可以設(shè)為s或S,這會(huì)使得系統(tǒng)直接進(jìn)入單用戶(hù)狀態(tài)而并非首先停止不需要的進(jìn)程(這種情況比較少見(jiàn)),。
runlevel的改變由發(fā)出事件runlevel開(kāi)始,,此時(shí)在環(huán)境變量RUNLEVEL中保存這新的runlevel而在PREVLEVEL變量中保存你前一個(gè)runlevel。telinit首先相應(yīng)事件,,并將新的runlevel寫(xiě)入/var/run/utmp中,,然后在/var/log/wtmp中增加一個(gè)入口。
要查看當(dāng)前runlevel,,可直接在命令行中輸入指令runlevel,。在上面的代碼中可以看到默認(rèn)的runlevel為2,,則此時(shí)返回的是“N 2”。而與runlevel 2對(duì)應(yīng)的服務(wù)設(shè)置保存在/etc/rc2.d/目錄下,,其它以此類(lèi)推。
查看/etc/rc2.d/目錄,,里面全是符號(hào)鏈接,,實(shí)際的目標(biāo)程序在/etc/init.d/下。要關(guān)閉該runlevel下的服務(wù),,將該目錄下的文件名重新命名為"Kxx"打頭(xx為2位數(shù),此數(shù)字代表了根據(jù)服務(wù)依賴(lài)性得到的啟動(dòng)順序),,然后運(yùn)行"update-rc.d script defaults",該指令會(huì)根據(jù)服務(wù)的依賴(lài)性重新對(duì)啟動(dòng)程序排序,。如果當(dāng)前runlevel與init.d腳本中的LSB頭不匹配,,系統(tǒng)將打印輸出警告信息。重新啟動(dòng)已關(guān)閉的服務(wù)只需要將其名稱(chēng)改為"S"開(kāi)頭,,并再次運(yùn)行"update-rc.d",。
K開(kāi)頭的腳本執(zhí)行的是/etc/rcX.d/K??* stop
S開(kāi)頭的腳本執(zhí)行的是/etc/rcX.d/S??* start
(3)runlevel讀取系統(tǒng)UTMP文件(默認(rèn)為/var/run/utmp),找出最新的runlevel記錄,。前一個(gè)runlevel與當(dāng)前runlevel之間用一個(gè)空格隔開(kāi),,如果沒(méi)有前一個(gè)runlevel則記為"N"(因此在終端中輸入runlevel回車(chē)后一般會(huì)看到返回N 2。)
5.啟動(dòng)用戶(hù)定義開(kāi)機(jī)啟動(dòng)程序,。
在查看/etc/rcX.d/目錄時(shí),,應(yīng)當(dāng)注意如下文件:/etc/rc2~5.d/S99rc.local。該文件都指向同一個(gè)腳本/etc/init.d/rc.loacal,。文件以"S99"開(kāi)頭,,說(shuō)明該程序是最后加載的。打開(kāi)該文件,,其中含有如下內(nèi)容:
----------------------------------------------------------------------------
#...
do_start() {
    if [ -x /etc/rc.local ]; then
          [ "$VERBOSE" != no ] && log_begin_msg "Running local boot scripts (/etc/rc.local)"
        /ect/rc.local
#...
----------------------------------------------------------------------------
說(shuō)明用戶(hù)定義的啟動(dòng)內(nèi)容在/etc/rc.local中,。打開(kāi)rc.local,其注釋更證明了這一點(diǎn),。
6.載入終端界面或x-window界面
Upstart啟動(dòng)服務(wù)程序與用戶(hù)定義程序完成后,,系統(tǒng)將啟動(dòng)終端或X-window,等待用戶(hù)登錄,。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多