用自己編譯的linux內核自己制作一個很簡單的啟動盤,能夠成功啟動且能有簡單的shell環境。
第一步:從內核官網www.kernel.org 下載相應的內核版本,現在到本地后,將它解壓(我是解壓到/usr/src目錄下),解壓后進入目錄。由于編譯的選項太多,為了簡化設置編譯選項,直接將本地的/boot/config-*文件復制到目錄下并改名為.config,使用命令“make menuconfig”進入編譯設置界面:
進入“General setup”設置編譯的版本號:
進入“File Systems”設置ntfs文件格式為“M”,將其編譯成模塊:
完成相應的相關設置后,保存退出。使用命令“make”開始編譯(這需要很長的是時間)。注意:在使用make命令之前要確保系統已經安裝了“Server Platform Development”和“Development Tools”兩個包組,如果沒有安裝,編譯會因為卻庫文件報錯。完成后要安裝相關模塊使用命令“make modules_install”。最后使用“make install”完成編譯。
編譯完成后,可以在/boot目錄下看見編譯的內核和initramfs文件:
并且在/lib/modules目錄下面也有相應版本的模塊:
為了驗證編譯時候成功,將系統重啟。
如上圖,啟動的時候已經有了對應的啟動命令,選擇并啟動。
能夠正常啟動,編譯完成。
下面將做好的內核遷移至一塊新的磁盤,做成一個及其簡易的系統,能夠啟動起來并且能夠運行一些簡單的bash命令。
首先在剛才編譯內核的機器上新增一塊磁盤,大小120G(盡量設置大點),如下圖的方式讓機器找到設備:
將/dev/sdf設備分區,這里簡單點,分成兩個分區,一個作為/boot的分區,一個作為/的分區。格式化為ext4格式的文件系統。將作為/boot的/dev/sdb1掛載到/mnt/boot目錄下,注意,這個掛載點的基名一定要為boot,否則不能將grub安裝進去:
將剛才編譯好的內核和initramfs文件復制進入/mnt/boot目錄下,編輯/mnt/boot/grub/grub.conf文件如下:
由于啟動設置的直接使用bash,不用init程序程序用戶空間,因此指定init為/bin/bash,并且要停用selinux。然后在另一個分區將/mnt/sysroot下面建立根文件系統應該有的目錄:
并從宿主機上面復制bash、ls、ip等命令及其依賴的庫文件到/mnt/sysroot下面,復制完后的目錄如下:
完成后,新建一臺虛擬機,使用該磁盤,啟動結果:
成功進入grub,開始引導:
成功啟動,并且能使用幾個簡單的命令,整個過程完成。
原創文章,作者:王更生,如若轉載,請注明出處:http://www.www58058.com/60609