一、編譯環境
1、準備一臺測試機,放置兩塊硬盤
2、安裝"Development Tools"和"Server Platform Development"編譯環境
3、內核下載地址:https://www.kernel.org(本人使用的是3.10版本)
4、下載busybox:http://www.busybox.net
二、編譯
1、分區,將新添加的硬盤進行分區,結果如下:
2、在/mnt目錄下創建boot,sysroot目錄,格式化新磁盤分區,分別掛載至/mnt/boot,/mnt/sysroot
3、以/mnt/boot目錄為新系統的/boot目錄,/mnt/sysroot/為新系統的根目錄,安裝grub到/mnt/boot目錄,安裝方式如下:
4、解壓內核源文件至/usr/src,并創建軟連接為linux
5、使用make allnoconfig 清除內核所有默認配置:
6、運行make menuconfig,在出現的菜單中選擇要使用的內核功能;
(1)選擇內核支持64位操作系統,支持裝載模塊
(2)選擇內核支持模塊卸載
(3)選擇CPU型號
(4)保存退出
(5)運行make bzImage進行編譯
(6)復制編譯后的內核文件(bzImage)到/mnt/boot目錄下
(7)切換到/mnt/boot/grub/目錄中,創建grub.conf文件,內容如下:
7、新建虛擬機,以宿主機的磁盤(/dev/sdb)為系統盤
在選擇磁盤時使用現有磁盤,如下
8、虛擬創建完成,在宿主機運行sync,將內存信息同步到磁盤
9、掛起宿主機,啟動新建的虛擬機:
啟動界面
啟動完成后提示內恐慌,沒有文件系統
10、給內核添加文件系統,使其能夠識別文件系統
(1)添加支持的文件系統類型
(2)選擇支持的塊設備
(3)選擇磁盤驅動程序
(4)選擇磁盤接口類型
(4)保存選擇的配置信息,再次運行make bzImage進行編譯
(5)將新的內核文件bzImage復制到/mnt/boot/覆蓋原有的bzImage
(6)運行sync,同步數據信息
(7)掛起宿主機,運行新建的虛擬主機,結果如下
11、添加init程序
(1)在/mnt/sysroot/目錄中創建系統所需要的目錄
(2)將bash以及bash依賴的庫文件復制到/mnt/sysroot對應的目錄中,使用腳本bincp.txt(馬哥提供的腳本)復制,上傳到宿主機,修改后綴名為bincp.sh,添加執行權限即可使用;
(3)查看復制的結果:
(4)切換到/mnt/sysroot/bin/目錄,給bash做軟連接為sh
(5)編輯/mnt/boot/grub/grub.conf,指定init程序是/bin/sh
(6)切換到/usr/src/linux,運行make menuconfig,給內核添加可以支持bash的程序
(7)添加完成后保存退出,運行 make bzImage進行編譯,然后將編譯后的結果復制到/mnt/boot/目錄中,覆蓋原有的bzImage文件
(8)運行sync,同步數據
(9)同步完數據后,掛起宿主機,啟動新建的虛擬機;啟動結果如下:
12、雖然內核已經可以正常啟動,但是沒有鍵盤和鼠標驅動,無法使用鍵盤鼠標,接下來給內核添加鼠標鍵盤驅動
(1)添加鍵盤
(2)添加鼠標
(3)添加USB驅動
(4)添加以上設備驅動后,保存退出,運行make menuconfig,將生成的bzImage復制到/mnt/boot/,覆蓋原有的bzImage
(5)運行sync同步數據
(6)同步完數據后,掛起宿主機,運行新建的虛擬機,結果如下:
13、添加常用的bash命令,使用bincp.sh腳本添加;
14、添加完bash命令后,運行sync,進行數據同步,同步完成后,掛起宿主機,啟動新建的虛擬機,運行添加的bash命令
15、編寫init腳本,替換/bin/sh,init腳本內容如下:
添加執行權限
16、編輯/mnt/boot/grub/grub.conf,修改init程序位置,使用bincp.sh移植mount命令到/mnt/sysroot對應的目錄中
(1)編輯/mnt/boot/grub/grub.conf,修改內容如下:
(2)移植mount命令
(3)運行sync同步數據,同步完成后掛起宿主機,運行新建的測試機,結果如下:
17、給內核添加網絡功能
(1)cd /usr/src/linux目錄,運行 make menuconfig,選取網絡驅動跟網絡功能
(2)選取網絡驅動
(3)保存退出,運行make bzImage進行編譯,將生成的bzImage復制到/mnt/boot/,覆蓋原有的bzImage內核
(4)復制相關的ip命令到/mnt/sysroot對應目錄中
(5)運行sync同步數據,掛起宿主機,啟動新建的測試機;結果如下
原創文章,作者:馬行空,如若轉載,請注明出處:http://www.www58058.com/4792
小伙伴的圖真是專業哇~
@stanley:謝謝,剛剛開始寫,寫的不怎么好,還得向您學習 :smile: