基于busybox的Linux小系统制作 (initrd)
生活随笔
收集整理的這篇文章主要介紹了
基于busybox的Linux小系统制作 (initrd)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
我們有時候有需要在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
【進行同步】
啟動裝有小系統硬盤的目標主機,看是否順利執行各個命令。
準備環境:
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
啟動裝有小系統硬盤的目標主機,看是否順利執行各個命令。
總結
以上是生活随笔為你收集整理的基于busybox的Linux小系统制作 (initrd)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQL SERVER 2012 修改数据
- 下一篇: 出现An App ID with Ide