一次簡單的內核編譯(一)

一、編譯環境

  1、準備一臺測試機,放置兩塊硬盤

  2、安裝"Development Tools"和"Server Platform Development"編譯環境

  3、內核下載地址:https://www.kernel.org(本人使用的是3.10版本)

  4、下載busybox:http://www.busybox.net

二、編譯

 1、分區,將新添加的硬盤進行分區,結果如下:

  1.png

 2、在/mnt目錄下創建boot,sysroot目錄,格式化新磁盤分區,分別掛載至/mnt/boot,/mnt/sysroot

  2.png

 

 3、以/mnt/boot目錄為新系統的/boot目錄,/mnt/sysroot/為新系統的根目錄,安裝grub到/mnt/boot目錄,安裝方式如下:

  3.png

 

 4、解壓內核源文件至/usr/src,并創建軟連接為linux  1.png

 5、使用make allnoconfig 清除內核所有默認配置:

  5.png

  

 6、運行make menuconfig,在出現的菜單中選擇要使用的內核功能;

  (1)選擇內核支持64位操作系統,支持裝載模塊

   2.png

    

  (2)選擇內核支持模塊卸載

6.png

   

 (3)選擇CPU型號 8.png

 (4)保存退出

 9.png

 (5)運行make bzImage進行編譯 

  10.png

  11.png

  (6)復制編譯后的內核文件(bzImage)到/mnt/boot目錄下

  12.png

  

  (7)切換到/mnt/boot/grub/目錄中,創建grub.conf文件,內容如下:

    13.png

 

 7、新建虛擬機,以宿主機的磁盤(/dev/sdb)為系統盤

    在選擇磁盤時使用現有磁盤,如下

   15.png

   16.png

 8、虛擬創建完成,在宿主機運行sync,將內存信息同步到磁盤

   17.png

 

 9、掛起宿主機,啟動新建的虛擬機:

   啟動界面

    18.png

   啟動完成后提示內恐慌,沒有文件系統

    3.png

 10、給內核添加文件系統,使其能夠識別文件系統

  (1)添加支持的文件系統類型   4.png

  

 (2)選擇支持的塊設備 5.png 

(3)選擇磁盤驅動程序

6.png

9.png

(4)選擇磁盤接口類型

8.png

   

 (4)保存選擇的配置信息,再次運行make bzImage進行編譯

 (5)將新的內核文件bzImage復制到/mnt/boot/覆蓋原有的bzImage

   7.png

 (6)運行sync,同步數據信息

   17.png

 (7)掛起宿主機,運行新建的虛擬主機,結果如下

  10.png

   

 11、添加init程序

   (1)在/mnt/sysroot/目錄中創建系統所需要的目錄   11.png

     

 (2)將bash以及bash依賴的庫文件復制到/mnt/sysroot對應的目錄中,使用腳本一次簡單的內核編譯(一)bincp.txt(馬哥提供的腳本)復制,上傳到宿主機,修改后綴名為bincp.sh,添加執行權限即可使用;

   12.png

(3)查看復制的結果:

    13.png

 

   (4)切換到/mnt/sysroot/bin/目錄,給bash做軟連接為sh

    14.png

 

   (5)編輯/mnt/boot/grub/grub.conf,指定init程序是/bin/sh

    15.png

 

   (6)切換到/usr/src/linux,運行make   menuconfig,給內核添加可以支持bash的程序  16.png

 (7)添加完成后保存退出,運行 make bzImage進行編譯,然后將編譯后的結果復制到/mnt/boot/目錄中,覆蓋原有的bzImage文件

  19.png

  

 (8)運行sync,同步數據

 (9)同步完數據后,掛起宿主機,啟動新建的虛擬機;啟動結果如下:

   21.png    

 12、雖然內核已經可以正常啟動,但是沒有鍵盤和鼠標驅動,無法使用鍵盤鼠標,接下來給內核添加鼠標鍵盤驅動

   (1)添加鍵盤

    22.png   23.png

   

 (2)添加鼠標    24.png

 (3)添加USB驅動   25.png

(4)添加以上設備驅動后,保存退出,運行make  menuconfig,將生成的bzImage復制到/mnt/boot/,覆蓋原有的bzImage

  26.png

(5)運行sync同步數據

(6)同步完數據后,掛起宿主機,運行新建的虛擬機,結果如下: 27.png

 13、添加常用的bash命令,使用bincp.sh腳本添加;

    28.png

    

 14、添加完bash命令后,運行sync,進行數據同步,同步完成后,掛起宿主機,啟動新建的虛擬機,運行添加的bash命令

   29.png

 15、編寫init腳本,替換/bin/sh,init腳本內容如下:

    30.png  

    添加執行權限

   31.png

 16、編輯/mnt/boot/grub/grub.conf,修改init程序位置,使用bincp.sh移植mount命令到/mnt/sysroot對應的目錄中

   (1)編輯/mnt/boot/grub/grub.conf,修改內容如下:

       32.png   

  

    (2)移植mount命令

     33.png

   (3)運行sync同步數據,同步完成后掛起宿主機,運行新建的測試機,結果如下:  34.png   

  17、給內核添加網絡功能

    (1)cd  /usr/src/linux目錄,運行 make  menuconfig,選取網絡驅動跟網絡功能    35.png  

 (2)選取網絡驅動 36.png

 (3)保存退出,運行make bzImage進行編譯,將生成的bzImage復制到/mnt/boot/,覆蓋原有的bzImage內核

   37.png

 

 (4)復制相關的ip命令到/mnt/sysroot對應目錄中

   38.png

 (5)運行sync同步數據,掛起宿主機,啟動新建的測試機;結果如下

   39.png

  40.png

  41.png

  42.png

    

   

原創文章,作者:馬行空,如若轉載,請注明出處:http://www.www58058.com/4792

(0)
馬行空馬行空
上一篇 2015-06-01 19:19
下一篇 2015-06-02 09:44

相關推薦

  • Linux系統命令使用格式已經如何查看幫助

    在Linux 系統中有非常多的命令一般的命令格式:“COMMAND OPTIONS ARGUMENTS” 下面有一些基礎命令可以體驗下命令的基本格式用法 ifconfig命令    作用: 配置網絡接口,查看網絡接口信息    基本語法:     ifconfig  […

    Linux干貨 2016-08-15
  • GlusterFS測試報告-02(結合samba為windows提供服務)

    在掛載glusterFS的客戶機的目錄下,使用samba分享給windows機器使用 1、samba服務的安裝 [root@client01 ~]# yum -y install samba [root@client01 ~]# /etc/init.d/smb restart S…

    Linux干貨 2016-07-22
  • SSL應用系列之一:CA證書頒發機構(中心)安裝圖文詳解

    原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://jeffyyko.blog.51cto.com/28563/140518        如果你需要在組織里發布exchange,或者需要給IIS配置SSL的訪問方…

    Linux干貨 2015-03-26
  • Zabbix通過郵件報警

                    Zabbix通過郵件報警 前言 本篇文章轉自我的個人博客 http://anyisalin.com 歡迎大家訪問 這次的內容大部分都是操作, 但是大家需要對定…

    2016-05-13
  • 分布式文件系統之fastDFS部署

    fastDFS下載地址:https://github.com/happyfish100/fastdfs部署參考文檔:http://joelhy.github.io/2015/01/27/FastDFS-v5-06-deploy/ 我們接下來來部署fastDFS 部署結構: 192.168.42.150 node1 [Tracker]192.168.42.15…

    Linux干貨 2017-06-16
  • N21沉舟第六周作業

    N21沉舟第六周作業 1、  復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#; cp /etc/rc.d/rc.sysinit /tmp vim /tmp/rc.sysinit %s/^[[:space:]]\+/#&…

    Linux干貨 2016-08-08

評論列表(2條)

  • stanley
    stanley 2015-06-01 19:21

    小伙伴的圖真是專業哇~

    • 馬行空
      馬行空 2015-06-01 23:07

      @stanley謝謝,剛剛開始寫,寫的不怎么好,還得向您學習 :smile:

欧美性久久久久