欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

鳥哥的linux私房菜——第20章 啟動流程、模塊管

系統(tǒng) 1930 0

20.1 Linux啟動流程分析

Linux啟動過程:

按下開機電源后計算機硬件主動讀取BIOS來加載硬件信息以及硬件系統(tǒng)的自我測試,之后系統(tǒng)會主動讀取第一個可啟動的設(shè)備(由BIOS設(shè)置),此時就可以讀入引導(dǎo)加載程序(boot loader)了,引導(dǎo)加載程序指定使用那個內(nèi)核文件來啟動,并實際加載內(nèi)核到內(nèi)存中解壓縮與執(zhí)行,此時內(nèi)核就能夠在內(nèi)存中活動,并檢測所有硬件信息與加載適當?shù)尿?qū)動程序來使主機運行,等內(nèi)核檢測硬件與加載驅(qū)動程序完畢后,就可以登錄了。

1)加載BIOS的硬件信息與進行自我測試,并依據(jù)設(shè)置取得第一個可啟動的設(shè)備

2)讀取并執(zhí)行第一個啟動設(shè)備內(nèi)MBR的boot Loader(即grub,spfdisk等程序)

3)依據(jù)boot loader的設(shè)置加載內(nèi)核,內(nèi)核開始檢測硬件和加載驅(qū)動程序

4)在硬件驅(qū)動成功后,Kernel會主動調(diào)用init進程,而init會取得run-level信息

5)init執(zhí)行/etc/rc.d/rc.sysinit文件來準備軟件執(zhí)行的操作環(huán)境

6)init執(zhí)行run-level的各個服務(wù)的啟動

7)init執(zhí)行/etc/rc.d/rc.local文件

8)init執(zhí)行終端機模擬程序mingetty來啟動login進程,最后等待用戶登錄

?

Boot Loader的主要功能:

提供菜單:用戶可以選擇不同的啟動選項,也是多重引導(dǎo)的重要功能

加載內(nèi)核文件:直接指向可啟動的程序區(qū)段來開始操作系統(tǒng)

轉(zhuǎn)交其他loader:將引導(dǎo)裝載功能轉(zhuǎn)交給其他loader負責

?

問題1):每種操作系統(tǒng)都有自己的boot loader,對于多操作系統(tǒng),每個操作系統(tǒng)必須使用自己的loader才能加載自己的操作系統(tǒng)內(nèi)核,而系統(tǒng)的MBR只有一個,怎么能同時在一部主機上安裝windows和linux呢

答案:由于boot loader具有菜單功能,因此可以選擇不同的內(nèi)核來啟動。由于具有控制權(quán)轉(zhuǎn)交的功能,因此可以加載其他boot sector內(nèi)的loader,(windows的loader默認布局有控制權(quán)轉(zhuǎn)交功能,因此不能用windows的loader加載linux的loader)

?

問題2):假設(shè)linuux安裝在SATA硬盤上,可以通過BIOS的INT13取得boot loader與kenerl文件來啟動,然后kernel會開始接管系統(tǒng)并且檢測硬件及嘗試掛載根目錄來取得額外的驅(qū)動程序。但是內(nèi)核根本不認識SATA磁盤,所以需要加載SATA磁盤的驅(qū)動程序,否則根本無法掛載根目錄,但是SATA的驅(qū)動程序在/lib/modules內(nèi),根本無法掛載根目錄,又怎么能讀取到/lib/modules內(nèi)的驅(qū)動程序呢?

答案:通過虛擬文件系統(tǒng)解決,一般使用的文件名是/boot/initrd。該文件能夠通過boot loader加載到內(nèi)存中,文件被解壓縮并在內(nèi)存中仿真成一個根目錄,且此仿真在內(nèi)存中的文件系統(tǒng)能夠提供一個可執(zhí)行程序,通過該程序來加載啟動過程中所需要的內(nèi)核模塊,通常是USB,RAID,LVM,SCSI等文件系統(tǒng)與硬盤接口的驅(qū)動程序。等載入完成后,會幫助內(nèi)核重新調(diào)用/sbin/init來開始后續(xù)的正常流程

(如果linux安裝在IDE接口的磁盤上,且默認使用ext2/ext3文件系統(tǒng),那么不需要initrd也能順利啟動linux)

?

內(nèi)核加載完畢進行完硬件檢測與驅(qū)動程序加載后,主機硬件就已經(jīng)準備就緒來,此時內(nèi)核會主動調(diào)用第一個進程,就是/sbin/init (init的PID為1),/sbin/init的主要功能就是準備軟件執(zhí)行的環(huán)境,包括系統(tǒng)主機名、網(wǎng)絡(luò)設(shè)置、語系處理、文件系統(tǒng)格式及其他服務(wù)的啟動。而所有的操作都會通過init的配置文件/etc/inittab來規(guī)劃

inittab一個很重要的設(shè)置選項就是run level

0——halt (系統(tǒng)直接關(guān)機)

1——single user mode(單用戶維護模式,用在系統(tǒng)出問題時維護)

2——Multi-user,without NFS(類似run level3,但無NFS服務(wù))

3——Full multi-user mode(完整含有網(wǎng)絡(luò)功能的純文本模式)

4——unused (系統(tǒng)保留功能)

5——X11(與run level3 類似,但加載使用X Windows)

6——reboot (重新啟動)

?

在/etc/inittab里有一句:"si::sysint:/etc/rc.d/rc.sysinit"表示:開始加載各項系統(tǒng)服務(wù)之前,得先設(shè)置好整個系統(tǒng)環(huán)境,主要利用/etc/rc.d/rc.sysinit這個shell script 來設(shè)置好系統(tǒng)環(huán)境的

?

啟動系統(tǒng)服務(wù)與相關(guān)啟動配置文件(/etc/rc.d/rc N & /etc/sysconfig)

/etc/rc.d/rc5的意義是這樣的:

通過外部第一號參數(shù)($1)來取得想要執(zhí)行的腳本目錄,即由/etc/rc.d/rc 5可以取得/etc/rc5.d/這個目錄來準備處理相關(guān)的腳本程序

找到/etc/rc5.d/K??*開頭的文件,并進行/etc/rc5.d/K??* stop 的操作

找到/etc/rc5.d/S??*開頭的文件,并進行/etc/rc5.d/S??* start的操作

(/etc/rc5.d下的文件全部是鏈接文件,鏈接到stand alone服務(wù)啟動的目錄/etc/init.d中)

如/etc/rc5.d/K91capistop-->/etc/init.d/capistop

/etc/rc5.d/S10networkstart--> /etc/init.d/networdkstart?

S和K后的數(shù)字表示文件執(zhí)行的順序,S99local就是/etc/rc.d/rc.local是最后執(zhí)行

?

用戶自定義開機啟動程序(/etc/rc.d/rc.local)

如果用戶有任何想要在啟動時進行的工作,直接將它寫入/etc/rc.d/local,那個該工作就會在啟動的時候自動加載

?

啟動過程會用到的主要配置文件:

1)模塊:/etc/modprobe.conf (這個文件大多在于指定系統(tǒng)內(nèi)的硬件所使用的模塊,如果系統(tǒng)檢測到錯誤的驅(qū)動程序,或者你想要使用更新的驅(qū)動程序來對應(yīng)相關(guān)的硬件配備時,就得要手動處理該文件)

2)/etc/sysconfig/*下的幾個文件:

authconfig 這個文件主要設(shè)置用戶的身份認證的機制,包括是否使用本地/etc/passwd,/etc/shadow等

clock 該文件用于設(shè)置linux主機的失去,可以使用格林威治時間,也可以使用本地時間

i18n 用于設(shè)置一些語系的使用方面

keyboard&mouse 設(shè)置鍵盤與鼠標的形式

network 可以設(shè)置是否啟動網(wǎng)絡(luò),以及設(shè)置主機名還有網(wǎng)關(guān)信息

network-scripts 主要用于設(shè)置網(wǎng)卡

?

切換run level: init N

顯示當前的run level :runlevel  ?。ㄝ敵鼋Y(jié)果左邊代表前一個runlevel,右邊代表目前的runlevel)

init 0 關(guān)機

init 6 重啟

?

?

20.2 內(nèi)核與內(nèi)核模塊

內(nèi)核和內(nèi)核模塊存放位置:

內(nèi)核:/boot/vmlinuz或/boot/vmlinuz-version

內(nèi)核解壓所需RAMDisk:/boot/initrd (/boot/initrd-version)

內(nèi)核模塊:/lib/modules/version/kernel或 /lib/modules/$(uname -r)/kernel

內(nèi)核源碼:/usr/src/linux 或/usr/src/kernels(要安裝才會有,默認不安裝)

內(nèi)核版本:/proc/version

系統(tǒng)內(nèi)核功能:/proc/sys/kernel

?

內(nèi)核模塊與依賴性:

/lib/modules/$(uname -r)/modules.dep文件記錄了在內(nèi)核支持的模塊的各項依賴性

例如,做好的網(wǎng)卡驅(qū)動程序,文件名為a.ko,如何更新內(nèi)核依賴性?

使用depmod命令就可以實現(xiàn)(depmod [-Ane])

cp a.ko /lib/module/$(uname -r)/kernel/driver/net

depmod

?

內(nèi)核模塊的查看:

lsmod

使用lsmod后,系統(tǒng)會顯示出目前已存在與內(nèi)核中的模塊,顯示包括:模塊名稱module、模塊的大小size、此模塊是否被其他模塊所使用Used by

modinfo [-adln] [module_name|filename]

如:modinfo wmi

?

內(nèi)核模塊的加載與刪除:

如果想要自行手動加載模塊,最簡單也建議使用modprobe命令來加載模塊,因為modprobe會主動查找modules.dep的內(nèi)容,先克服了模塊的依賴性后,菜決定需要加載的模塊有哪些。insmod則完全有用戶加載一個完整文件名的模塊,并不會主動分析模塊依賴性

modprobe [-lcfr] module_name

insmod [/full/path/module_name] [parameters]

例如:嘗試載入cifs.ko這個文件系統(tǒng)模塊

insmod /lib/module/$(uname -r)/kernel/fs/cifs/cifs.ko

lsmod | grep cifs

刪除模塊:rmmod [-fw] module_name

?

?

20.3 Boot Loader:Grub

boot loader的程序代碼執(zhí)行與設(shè)置值加載分為兩個階段來執(zhí)行

stage1:執(zhí)行boot loader主程序(這個主程序必須要安裝在啟動區(qū),即MBR或者boot sector,因為MBR實在太小來,所以MBR或boot sector通常僅安裝boot loader最小主程序,并沒有安裝loader的相關(guān)配置文件)

stage2:通過boot loader加載所有配置文件與相關(guān)的環(huán)境參數(shù)文件(包括文件系統(tǒng)定義與主要配置文件menu.lst),一般來說,配置文件都在/boot下

?

安裝在MBR的grub主程序最終要的任務(wù)之一就是從磁盤中加載內(nèi)核文件,以讓內(nèi)核能夠順利驅(qū)動整個系統(tǒng)的硬件

grub的硬盤代號如hd(0,0)表示第一塊查找到的硬盤代號為(hd0),該硬盤的第一號分區(qū)為(hd0,0)

?

/boot/grub/menu.lst (grub.cfg)

default=0  默認的啟動選項,使用第一個啟動菜單

timeout=5?  若5秒內(nèi)未動鍵盤,使用默認菜單啟動

hiddenmenu 讀秒期間是否顯示完整的菜單界面

?

需要initrd時刻為:

根目錄所在磁盤為SATA、USB或SCSI等連接接口

跟母所在文件系統(tǒng)為LVM、RAID等特殊格式

根目錄所在文件系統(tǒng)為非傳統(tǒng)Linux“認識”的文件系統(tǒng)

其他必須要在內(nèi)核加載時提供的模塊

?

可以使用mkinitrd命令來重制initrd文件

mkinitrd [-v] [--with=模塊名稱] initrd文件名 內(nèi)核版本

例1:以mkinitrd的默認功能創(chuàng)建一個initrd虛擬硬盤文件

mkinitrd -v initrd_$(uanem -r) ?$(uname -r)

例2:增加8139too這個模塊的initrd文件

mkinitrd -v --with=8139too initrd_vbirdtest ?$(uname -r)

?

安裝grub(grub-install是安裝grub相關(guān)的文件到設(shè)備上去等待在啟動時被讀取,但還需要設(shè)置好配置文件menu.lst后,再以grub shell來安裝grub主程序到MBR或者boot sector上面去)

grub-install [--root-directory=DIR] ?INSTALL_DEVICE

例1:將grub安裝到目前系統(tǒng)的MBR下面,我的系統(tǒng)為/dev/had

grub-install /dev/hda

例2:我的/home為獨立的/dev/sda3,如何安裝grub到/dev/sda3

grub-install --root-directory=/home /dev/sda3

?

內(nèi)核功能中的vga設(shè)置

解決tty1~tty6的分辨率問題

首先產(chǎn)看是否支持FRAMEBUFFER_CONSOLE這個內(nèi)核功能參數(shù)

grep 'FRAMEBUFFER_CONSOLE' ?/boot/config-3.2.0-23-generic-pae (如果出現(xiàn)CONFIG FRAMEBUFFER CONSOLE=y表示有支持)

修改分辨率 vi /boot/grub/menu.lst (或者是grub.cfg文件 添加紅色部分)

menuentry 'Ubuntu,Linux 3.2.0-67-generic-pae' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
gfxmode $linux_gfx_mode
insmod gzio
insmod part_msdos
insmod ext2
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set=root c6008246-e4ee-490f-bec6-3f72108424dd
linux /boot/vmlinuz-3.2.0-67-generic-pae root=UUID=c6008246-e4ee-490f-bec6-3f72108424dd ro quiet splash $vt_handoff vga=790
initrd /boot/initrd.img-3.2.0-67-generic-pae
}

790對應(yīng)著1024*768的分辨率,還有其他參數(shù),如784~795,769,771,773,775

?

20.4啟動過程的問題解決

1)忘記密碼

a.重新啟動

b.啟動進入grub菜單后,在要進入的菜單上按“e” 進入菜單設(shè)置

grub edit>kernel /vmlinuz-2.6.18-92.e15 ro root=LABEL=/ rhgb quiet single

(我的ubuntu下應(yīng)該是linux /boot/vmlinuz-3.2.0-67-generic-pae root=UUID=c6008246-e4ee-490f-bec6-3f72108424dd ro quiet splash $vt_handoff single

按下enter在按b就能夠啟動進入單用戶維護模式

c.進入單用戶模式后,就可以執(zhí)行shell,輸入passwd就能夠重新root密碼,在執(zhí)行init 5可以切換成X窗口界面

?

2)init配置文件錯誤

a.同樣啟動進入grub后

grub edit>kernel /vmlinuz-2.6.18-92.e15 ro root=LABEL=/ rhgb quiet? init=/bin/bash

將內(nèi)核調(diào)用的第一個進程init變成/bin/bash

b.在shell中輸入mount -o remount,rw /(將根目錄重新掛載成可讀寫)

mount -a(參考/etc/fstab的內(nèi)容重新掛載文件系統(tǒng))

c.然后進行救援工作,完畢后,重啟一次就可以了

?

鳥哥的linux私房菜——第20章 啟動流程、模塊管理與loader


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。。?/p>

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 中文视频在线 | 亚洲精品国产自在久久出水 | 99热在线国产| 视频一区中文字幕 | 亚洲欧美一区二区三区另类 | 成人精品福利 | 成年人网站在线免费观看 | 色噜噜狠狠狠狠色综合久不 | 久久精品一 | 国产精品一区二区三区99 | 狠鲁| 欧美精品一区二区三区在线 | 亚洲网站在线 | 激情小说图 | 国产精品视频免费播放 | www欧美| 插下面视频| 久久成人一区 | 成a人片在线观看 | 色999久久久精品人人澡69 | 日韩在线黄色片 | 91茄子国产线观看免费 | 在线观看特色大片免费网站 | 亚洲精品国产成人一区二区 | 中文字幕日本视频 | 五月丁香综合啪啪成人小说 | 国产色在线 | 久久久久久久99精品免费观看 | 婷婷色综合久久 | 日韩中文有码高清 | 日本精品久久无码影院 | 亚洲欧美中文日韩在线v日本 | 国产传媒在线视频 | 国产精品入口免费麻豆 | 国产精品13页 | 亚洲热影院 | 亚洲在线视频播放 | 亚洲欧美日韩在线一区二区三区 | 久久久www成人免费无遮挡大片 | 免费网站国产 | 特黄视频|