天天看點

制作微型linux

 出于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,如需轉載請自行聯系原作者

繼續閱讀