版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
/initrd映像文檔的作用和制作我們在安裝新內(nèi)核的時候,通常都會編輯lilo.conf和grub.conf文檔。里面有一段“initrd=/boot/initrd-***.img”(其中的***表示內(nèi)核的版本號)的我們都很少會注意到,有時候還會發(fā)現(xiàn)這一行不要也能夠正常開機。那這個initrd***.img究竟是用來干什么的呢?
其實initrd***.img是個映像文檔,類似ramdisk,把一段程式打包到img里,然后在開機的時候在內(nèi)存里開辟一段區(qū)域,一般是2m,釋放到那里運行,都是一些初始化的程式,比如sisc_mod、ext3、sd_mod等模塊和insmod、nash等命令。不同內(nèi)核初始化的img能夠相同,也能夠不同,假如沒有,能夠在grub.conf里加上noinitrd,他就跳過initrd的檢測和執(zhí)行了,以前似乎就沒有,后來才有的。
他的作用是在沒有mount/分區(qū)以前,系統(tǒng)要執(zhí)行一些操作,比如掛載scsi驅(qū)動,他就把initrd釋放到內(nèi)存里,作一個虛擬的/,然后執(zhí)行其根目錄下的一個腳本"linuxrc",運行insmod和nash命令掛裝模塊。為什么有的時候我們在lilo或grub的配置文檔中不加入該行都能夠正常開機呢?這是因為我們一般的PC機都沒有使用scsi硬盤等需要先加載其驅(qū)動的設備,所以就算沒有initrd***.img也能夠正常開機。但是假如我們要在服務器上為其編譯新內(nèi)核那就一定不要忘記也為其新建一個initrd文檔呀!
好,下面來看看怎樣查看initrd***.img里面的內(nèi)容和怎樣為您的新內(nèi)核創(chuàng)建一個新的initrd.img文檔。
查看initrd.img:
initrd***.img雖然后綴是“img”,但其實他是個gz格式的文檔,我們能夠先把他解壓,然后載掛裝到目錄下:
1、cpinitrd.imginitrd.gz
2、guzipinitrd.gz
3、mount-oloopinitrd/mnt/floppy
進入/mnt/floppy目錄,我們就能夠看到initrd***.img文檔的廬山真面目了。
制作initrd文檔
當我們編譯了一個新的內(nèi)核,也不要忘了為我們的scsi設備做一個新的initrd映像:
語法:
mkinitrd文檔名內(nèi)核的目錄名
示例:
mkinitrdinitrd-2.4.19.img2.4.19
initrd-2.4.19.img文檔是自己任意取的,但最好對應自己的內(nèi)核版本號。
2.4.19是在/lib/modules中的目錄名,對應內(nèi)核的版本。
當然,我們也能夠在掛裝了initrd***.img文檔后直接添加模塊到/lib目錄中,然后修改linuxrc腳本讓其開機進行掛裝。但必須具備一定的shell腳本的能力才行。
怎樣生成內(nèi)核映像文檔initrd.img,有什么作用??
initrd是內(nèi)核啟動映象,假如沒有這個文檔,有時系統(tǒng)啟動時沒有辦法找到根分區(qū)
initrd.img這樣類似的文檔,是用下面的命令創(chuàng)建面來。我舉例說明:能夠用兩個方法,比如我的系統(tǒng)的內(nèi)核版本是2.4.20-8
假如我們重編了內(nèi)核,就要用下面的兩個命令來生成映像文檔,否則有時系統(tǒng)啟動時會很難找到/根分區(qū)。
mkinitrd/boot/initrd-.2.4.20-8img2.4.20-8
這樣就會在/boot目錄中看到initrd-2.4.20-8.img的文檔,其實您所說的initrd.img就是initrd-2.4.20-8.img文檔的鏈接。
能夠這樣生成
#cd/boot
#ln-sinitrd-2.4.20-8.imginitrd.img
其實看列一下目錄就知道這是個鏈接。
用這個命令來生成新的內(nèi)核映象,要使新內(nèi)核啟動,要改變/etc/grub.conf或lilo.conf才能生效。
[root@linuxsir001boot]#llinitrd.img
lrwxrwxrwx1rootroot195月2413:46initrd.img->initrd-2.4.20-8.img
也能夠用下面的命令
new-kernel-pkg--mkinitrd--depmod--install2.4.20-8
這個命令執(zhí)行的結(jié)果是會生成intrd文檔,也會自動改/etc/grub.conf或lilo.conf,這樣就一步到位使新內(nèi)核生效。
幾個重要的RedHatLinux內(nèi)核文檔介紹
在網(wǎng)絡中,不少服務器采用的是Linux系統(tǒng)。為了進一步提高服務器的性能,可能需要根據(jù)特定的硬件與需求重新編譯Linux內(nèi)核。編譯Linux內(nèi)核,需要根據(jù)規(guī)定的步驟進行,編譯內(nèi)核過程中涉與到幾個重要的文檔。比如對于RedHatLinux,在/boot目錄下有一些和Linux內(nèi)核有關的文檔,進入/boot執(zhí)行。
編譯過RedHatLinux內(nèi)核的人對其中的System.map、vmlinuz、initrd-2.4.7-10.img印象可能比較深刻,因為編譯內(nèi)核過程中涉與到這些文檔的建立等操作。那么這幾個文檔是怎么產(chǎn)生的?又有什么作用呢?本文對此做些介紹。
一、vmlinuz
vmlinuz是可引導的、壓縮的內(nèi)核?!皏m”代表“VirtualMemory”。Linux支持虛擬內(nèi)存,不像老的操作系統(tǒng)比如DOS有640KB內(nèi)存的限制。Linux能夠使用硬盤空間作為虛擬內(nèi)存,因此得名“vm”。vmlinuz是可執(zhí)行的Linux內(nèi)核,他位于/boot/vmlinuz,他一般是個軟鏈接,比如圖中是vmlinuz-2.4.7-10的軟鏈接。
vmlinuz的建立有兩種方式。一是編譯內(nèi)核時通過“makezImage”創(chuàng)建,然后通過:“cp/usr/src/linux-2.4/arch/i386/linux/boot/zImage/boot/vmlinuz”產(chǎn)生。zImage適用于小內(nèi)核的情況,他的存在是為了向后的兼容性。
二是內(nèi)核編譯時通過命令makebzImage創(chuàng)建,然后通過:“cp/usr/src/linux-2.4/arch/i386/linux/boot/bzImage/boot/vmlinuz”產(chǎn)生。bzImage是壓縮的內(nèi)核映像,需要注意,bzImage不是用bzip2壓縮的,bzImage中的bz容易引起誤解,bz表示“bigzImage”。bzImage中的b是“big”意思。zImage(vmlinuz)和bzImage(vmlinuz)都是用gzip壓縮的。他們不但是個壓縮文檔,而且在這兩個文檔的開頭部分內(nèi)嵌有g(shù)zip解壓縮代碼。所以您不能用gunzip或gzip?dc解包vmlinuz。
內(nèi)核文檔中包含一個微型的gzip用于解壓縮內(nèi)核并引導他。兩者的不同之處在于,老的zImage解壓縮內(nèi)核到低端內(nèi)存(第一個640K),bzImage解壓縮內(nèi)核到高端內(nèi)存(1M以上)。假如內(nèi)核比較小,那么能夠采用zImage或bzImage之一,兩種方式引導的系統(tǒng)運行時是相同的。大的內(nèi)核采用bzImage,不能采用zImage。vmlinux是未壓縮的內(nèi)核,vmlinuz是vmlinux的壓縮文檔。
二、initrd-x.x.x.img
initrd是“initialramdisk”的簡寫。initrd一般被用來臨時的引導硬件到實際內(nèi)核vmlinuz能夠接管并繼續(xù)引導的狀態(tài)。圖中的initrd-2.4.7-10.img主要是用于加載ext3等文檔系統(tǒng)與scsi設備的驅(qū)動。
比如,使用的是scsi硬盤,而內(nèi)核vmlinuz中并沒有這個scsi硬件的驅(qū)動,那么在裝入scsi模塊之前,內(nèi)核不能加載根文檔系統(tǒng),但scsi模塊存儲在根文檔系統(tǒng)的/lib/modules下。為了解決這個問題,能夠引導一個能夠讀實際內(nèi)核的initrd內(nèi)核并用initrd修正scsi引導問題。initrd-2.4.7-10.img是用gzip壓縮的文檔,initrd實現(xiàn)加載一些模塊和安裝文檔系統(tǒng)等功能。
initrd映象文檔是使用mkinitrd創(chuàng)建的。mkinitrd實用程式能夠創(chuàng)建initrd映象文檔。這個命令是RedHat專有的。其他Linux發(fā)行版或許有相應的命令。這是個很方便的實用程式。具體情況請看幫助:manmkinitrd下面的命令創(chuàng)建initrd映象文檔。
三、System.map
System.map是個特定內(nèi)核的內(nèi)核符號表。他是您當前運行的內(nèi)核的System.map的鏈接。
內(nèi)核符號表是怎么創(chuàng)建的呢?System.map是由“nmvmlinux”產(chǎn)生并且不相關的符號被濾出。
對于本文中的例子,編譯內(nèi)核時,System.map創(chuàng)建在/usr/src/linux-2.4/System.map。像下面這樣:
nm/boot/vmlinux-2.4.7-10>System.map
下面幾行來自/usr/src/linux-2.4/Makefile:
nmvmlinux|grep-v’\(compiled\)\|\(\.o$$\)\|\([aUw]\)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)’|sort>System.map
然后復制到/boot:
cp/usr/src/linux/System.map/boot/System.map-2.4.7-10
下圖是System.map文檔的一部分:
在進行程式設計時,會命名一些變量名或函數(shù)名之類的符號。Linux內(nèi)核是個很復雜的代碼塊,有很多的全局符號。
Linux內(nèi)核不使用符號名,而是通過變量或函數(shù)的地址來識別變量或函數(shù)名。比如不是使用size_tBytesRead這樣的符號,而是像c0343f20這樣引用這個變量。
對于使用電腦的人來說,更喜歡使用那些像size_tBytesRead這樣的名字,而不喜歡像c0343f20這樣的名字。內(nèi)核主要是用c寫的,所以編譯器/連接器允許我們編碼時使用符號名,當內(nèi)核運行時使用地址。
然而,在有的情況下,我們需要知道符號的地址,或需要知道地址對應的符號。這由符號表來完成,符號表是任何符號連同他們的地址的列表。上圖就是個內(nèi)核符號表,由上圖可知變量名checkCPUtype在內(nèi)核地址c01000a5。
Linux符號表使用到2個文檔:
/proc/ksyms
System.map
/proc/ksyms是個“procfile”,在內(nèi)核引導時創(chuàng)建。實際上,他并不真正的是個文檔,他只但是是內(nèi)核數(shù)據(jù)的表示,卻給人們是個磁盤文檔的假象,這從他的文檔大小是0能夠看出來。然而,System.map是存在于您的文檔系統(tǒng)上的實際文檔。
當您編譯一個新內(nèi)核時,各個符號名的地址要發(fā)生變化,您的老的System.map具備的是錯誤的符號信息。每次內(nèi)核編譯時產(chǎn)生一個新的System.map,您應當用新的System.map來取代老的System.map。
雖然內(nèi)核本身并不真正使用System.map,但其他程式比如klogd,lsof和ps等軟件需要一個正確的System.map。假如您使用錯誤的或沒有System.map,klogd的輸出將是不可靠的,這對于排除程式故障會帶來困難。沒有System.map,您可能會面臨一些令人煩惱的提示信息。
另外少數(shù)驅(qū)動需要System.map來解析符號,沒有為您當前運行的特定內(nèi)核創(chuàng)建的System.map他們就不能正常工作。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)獨棟總部出售合同范例
- 簽約合同范例
- 勞務派遣進廠合同范例
- 2025簡單版重慶購房合同
- 工程預算施工合同范例
- 勞務總包大合同范例
- 土地簽約合同范例
- 橋梁木工班組勞務合同范例
- 快速簽約洽談合同范例
- 銅仁職業(yè)技術(shù)學院《地震地質(zhì)綜合解釋》2023-2024學年第一學期期末試卷
- 如何防止個人信息被盜用
- 期末檢測試卷(含答案)2024-2025學年數(shù)學五年級上冊人教版
- 未來當兵職業(yè)生涯規(guī)劃書
- 標準2024項目投資協(xié)議書
- 中建幕墻高處防墜落專項方案方案
- 鎂合金回收與再利用
- 帶狀皰疹中醫(yī)護理
- BOSS GT-6效果處理器中文說明書
- 網(wǎng)絡安全培訓
- 2024年貴州省農(nóng)業(yè)農(nóng)村廳所屬事業(yè)單位招聘人員管理單位遴選500模擬題附帶答案詳解
- 頭皮腫物患者的護理
評論
0/150
提交評論