歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

教你制作基於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  

七、測試

啟動裝有小系統硬盤的目標主機,看是否順利執行各個命令。

本文出自 “對著陽光微笑著” 博客,請務必保留此出處http://dongld.blog.51cto.com/4234800/1168769

Copyright © Linux教程網 All Rights Reserved