出于linux是開源的,是以我們可以随便核心中的參數,這次制作一個最基本的作業系統且帶網絡功能,所有步驟都是用腳本實用。
1,先解釋下Linux啟動的流程:
開機自檢post-->bios--> bootloader(mbr)-->kernel(initrd)-->init程序
(1)bios是一個軟體嵌套在coms晶片上,通過bios去調整coms一些參數。
(2)bootloader:是一個引導程式,目的在有多個系統時,可以選擇進入哪個系統。這裡以grub為主。
(3)kernel:核心,linux的核心裡面已經編譯裡許多常用的硬體驅動。而(initrd)的作用是輔助kernel,因有些硬體的驅動程式在kernel沒有,這時就要依靠initrd。當然如果kernel能夠驅動init程序所在的硬體,initrd也沒存在的必要。
(4)init:init程序并不完成具體的工作,隻是協調其它程序,也就是其他程序的父程序。這時使用者并不能直接操作kernel,是以必須提供一個接口給使用者,而linux預設是bash。init二進制程式要能夠運作,必須依賴于某些共享動态庫。是以必須給程式提供庫檔案,而庫檔案根據FHS的規定,一般主要放置在/lib ,/usr/lib這兩個目錄下。當然bash也是二進制程式,也必須依賴動态共享庫。程式當然會提供配置檔案。
2,根據上面的解釋:當我們自己制作一個linux時,必須包括
(1)bootloader(grub),kernel(initrd),init,bash。
(2)配置檔案:grub.conf,/etc/inittab
(3)庫檔案:用ldd檢視二進制程式依賴的庫,并複制到對應的目标目錄下。
(4)腳本:/etc/rc.d/rc.sysinit(這個腳本對系統做基本的初始化,也是給使用者提供一個可操作的環境)
3,實驗步驟:
(1)此實驗基于redhat 5.8 enterprise,虛拟機virtualbox。
(2)在已經正常運作的虛拟機中添加一塊新硬碟,并分好區。
<a href="http://blog.51cto.com/attachment/201206/165223267.jpg" target="_blank"></a>
(3)由于initrd-2.6.18-308.el5裡面的設定,sdb1必須挂載在某目錄下/boot目錄下,而/可以自由決定,在這裡我分别挂載在/mnt/boot /mnt/sysroot下
(4)在sdb上建立目錄,這些目錄在原系統上也存在,當然有些是可以不用建立,但是為了統一,/sys /proc /dev這三個目錄是必須要存在。
<a href="http://blog.51cto.com/attachment/201206/171244509.jpg" target="_blank"></a>
(5)安裝grub
<a href="http://blog.51cto.com/attachment/201206/171537917.jpg" target="_blank"></a>
(6)提供kernel與initrd
<a href="http://blog.51cto.com/attachment/201206/172921127.jpg" target="_blank"></a>
修改init檔案
<a href="http://blog.51cto.com/attachment/201206/173238616.jpg" target="_blank"></a>
(7)提供應用程式
<a href="http://blog.51cto.com/attachment/201206/173907588.jpg" target="_blank"></a>
bash,ls,mkdir,cp指令的移值完全一樣
(8)切換到/mnt/sysroot測試是否正常
<a href="http://blog.51cto.com/attachment/201206/174334963.jpg" target="_blank"></a>
(9)建立配置檔案
建立grub.conf在/mnt/boot/grub/grub.conf
<a href="http://blog.51cto.com/attachment/201206/175716785.jpg" target="_blank"></a>
建立inittab 在/mnt/sysroot/etc/inittab
<a href="http://blog.51cto.com/attachment/201206/180324575.jpg" target="_blank"></a>
建立腳本/mnt/sysroot/etc/rc.d/rc.sysinit
<a href="http://blog.51cto.com/attachment/201206/181658361.jpg" target="_blank"></a>
建立腳本/mnt/sysroot/etc/rc.d/shutdown
<a href="http://blog.51cto.com/attachment/201206/182345902.jpg" target="_blank"></a>
到此已經結束,附件為腳本,全程自動化。
<a href="http://down.51cto.com/data/2360850" target="_blank">附件:http://down.51cto.com/data/2360850</a>
本文轉自 deng304749970 51CTO部落格,原文連結:http://blog.51cto.com/damondeng/905056,如需轉載請自行聯系原作者