基於busybox的Linux小系統製作

來源:互聯網
上載者:User

基於busybox的Linux小系統製作

我們有時候有需要在busybox基礎上,製作linux,可是卻不知道具體怎麼做,這裡將對基於busybox的linux小系統製作做出詳細的步驟說明。準備環境:
1、一個Redhat完整系統的虛擬機器,本次執行個體使用的是Redhat Enterprise Linux 5.8
2、在主要虛擬機器上添加一塊硬碟作為小系統的儲存盤,這裡添加的是IDE硬碟,
3、準備linux核心源碼以及busybox源碼,這裡使用linux-2.6.38.5和busybox-1.20.2版本
4、複製當前系統上的核心配置(/usr/src/kernel/2.6.18-308.el5-i686/.config),做略微修改;若當前系統核心版本與小linux的核心版本不同,可準備一個匹配的核心藍本。我這裡由於主系統的核心版本比較老,所以準備了一個較新的核心藍本(kernel-2.6.38.1-i686.cfg)進行修改編譯。

具體過程:
一、編譯核心
1、將/root下的核心源碼解壓縮至/usr/src下的linux-2.6.38.5,並給其建立一個串連,命名為linux 
2、在linux核心連結檔案中以/root/kernel-2.6.38.1-i686.cfg為藍本編譯核心
(1)複製核心藍本至/usr/src/linux目錄下,命名為.config
(2)對當前核心進行編譯,可根據實際需要來選擇各種功能。本次執行個體主要是將ext3檔案系統以及pcnet32的vmware虛擬機器網卡驅動直接裝載進核心,其他的按需選擇。結束後將編譯的功能可自動儲存至.config檔案中。最後執行make SUBDIR=/arch 進行編譯
【進入手動編譯核心介面,前提是grouplist裡已安裝"Development Tools""Development Libraries"組,若未安裝,則配置yum源,安裝這兩個包組】

【在Device Drivers --> Network device support --> Ethernet (10 or 100Mbit) --> 尋找AMD PCnet32 PCI support ,將其改為* 即直接編譯進核心】
【在File systems --> 中將Ext3裝載進核心】
【儲存退出】
【執行make SUBDIR=/arch進行編譯,註:上述必須在/usr/src/linux中進行】


編譯過程大概需要一段時間,可等其編譯完成,也可提前做下一步。
二、編譯busybox
1、在新硬碟上分區,這裡需要一個大小100M的主要磁碟分割作為小系統的boot分區,一個512M大小的主要磁碟分割為小系統的根分區。將這兩個分區格式化後,分別掛載至/mnt/boot和/mnt/sysroot目錄。
  
(忘了說,w儲存退出)
  # 同步磁碟
2、安裝grub


3、編譯busybox

【此處的預設配置提供很多我們需要的程式,因此不進行過多的修改,只需將編譯選項改改,編譯成一個不使用共用庫的靜態二進位檔案,從而避免了對主系統機的共用庫產生依賴;但你也可以不選擇此項,而完成編譯後把其依賴的共用庫複製至目標系統上的/lib目錄中即可;這裡採用前一種辦法。】
Busybox Settings --> Build Options --> Build BusyBox as a static binary (no shared libs)
【儲存退出】
【接著進行make install編譯 註:是在busybox-1.20.2目錄下進行】

三、製作initrd
(1)建立一個目錄專門用來實現基於busybox的initrd

(2)在/tmp/initrd下製作initrd
【提供基本目錄】

【建立init指令碼】
# vim /tmp/init

# chmod +x init 加執行許可權
【製作initrd;歸檔並壓縮目前的目錄下的所有檔案至/mnt/boot/initrd.gz】
四、核心編譯成功後,裝載核心

五、提供grub設定檔
# vim /mnt/boot/grub/grub.conf


六、建立一個真正的根檔案系統
【將busybox-1.20.2/_install/*複製到/mnt/sysroot/ 即將busybox製作的rootfs作為小linux的根檔案系統】

【建立所需的目錄,即建立rootfs】

【建立兩個必要的裝置檔案】

【配置init及其所需要inittab檔案,即為init進程提供設定檔】
# vim /mnt/sysroot/etc/inittab

【建立系統初始化指令碼】
# vim /mnt/sysroot/etc/rc.d/rc.sysinit

【提供開機自動掛載的設定檔etc/fstab】
# vim /mnt/sysroot/etc/fstab
【為了適應我們習慣了使用的bash,這裡將bash複製過去,並將之前的指令碼中的sh改為bash】

將etc/inittab中設定的sh改為bash即可
# vim /mnt/sysroot/etc/inittab

【進行同步】
# sync  
# sync  
# sync  
# sync  
# sync  
七、測試
啟動裝有小系統硬碟的目標主機,看是否順利執行各個命令。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.