1. 程式人生 > >編譯linux核心 形成可執行的自己的linux系統

編譯linux核心 形成可執行的自己的linux系統

      開始學習linux,老師說可以建立一個自己的linux作業系統。感覺很神奇。

     開始的時候就是看了些資料。說的是通過livecd(linux from scratch),來構建自己的linux系統。記得那份資料大楷有六十來頁,自己跟著做了大楷一半,出了無數的錯,說到底還是相容性,版本的問題。這個livecd是通過構建新的編譯工具鏈來構建。對於自己這個初學者來說還是太麻煩了。其實這些工具鏈其實可以在一些發行版linux找到。自己用的比如(centos)。後來就選擇另外的構建方法:交叉編譯。

     這有目標機,主機的區分。大楷什麼意思也不用太仔細說,就是一個機器編譯,在另一個機器上執行。除錯的話,可以選擇虛擬機器來除錯。

 能夠執行的linux最基本的的兩個東西:核心,檔案系統(選擇的是busybox-1.21.0)。

    大楷思路:有兩種方法:

         1把核心的bzimage和busybox中的檔案系統(initrd)打包成iso檔案(當然還要載入grub)。形成的xx——linux.iso。可以用虛擬機器開啟除錯。

有篇文章寫的非常好,開始自己做的時候都是根據這個步驟弄的。搜尋::基於Linux原始碼及Busybox原始碼製作精簡可啟動核心映象方法

        2直接把檔案系統編譯進核心形成bzimage,然後用grub載入就可以了。

 下面就介紹第二種方法:

       步驟:

   1,下載linux核心原始碼,(最好是最新版本的,);我選擇的是linux-3.13.5 。放在主機(centos)上

     

   2 ,因為是把檔案系統編進核心。所以先編譯busybox'。

       2.1 :下載busybox,busybox-1.21.0.tar.bz2

       2.2 :拷貝到centos(主機)中,然後解壓。命令 tar -xyzf  

       2.3 : 在解壓目錄執行命令:make menuconfig  注:選擇靜態編譯。Busybox Settings –> Build Options –> Build Busybox as a static binary

       2.4:編譯,命令:make  注: 最好還是選擇編譯的目的資料夾,是為了不汙染原始檔。可以選擇 make後面跟引數 O=/dir。

       2.5 :  安裝,命令:make install  .安裝完成後會形成一個_install的資料夾。

       2.6:這步就是配置形成_install資料夾裡面的一些東西。因為在上面提到的那個搜尋出的文章裡面有詳細的說明,就不詳細闡述了。注:在_install中執行這句shell是非常重要的。ln -sv ./bin/busybox init   因為不加的情況下後面在啟動系統的時候會出現這種情況

   3,編譯linux核心:

         3.1 :make i386_defconfig (這個事自己選擇32位(make i386——defconfig)還是64位(x86_64_defconfig));

         3.2 :make menuconfig (配置選單,)注:可能在後面出現有些錯誤,簡單的方法就是在執行make menconfig後出現的選單項中刪除出現錯誤的選項。

          注:因為自己為了簡單就直接把檔案系統編譯到bzImage裡面。所以這裡就需要檔案系統(選擇簡單的(busybox):編譯busybox後面再說。)

         3.2.1  在menuconfig 裡面可以選擇選擇自己編譯的檔案系統。   下面兩個是必須的。

         3.2.2 :General Setup –> Initial RAM filesystem and RAM disk support

          3.2.2    General Setup –> Initial RAM filesystem and RAM disk support後面選擇剛才我們編譯形成的_install 的路徑          3.3編譯               make          然後找到./arch/x86/boot/目錄下的bzImage 。這個就包含了需要的檔案系統和核心。   4,用grub啟動        因為開始自己下載了livecd。就可以直接在livecd裡面啟動。因為livecd裡面配置了sshd服務。可以通過這個考到livecd裡面。然後更改grub配置 最後reboot啟動的就是自己構建的linux系統。下面是自己建立的一些步驟:     4.1:進入livecd系統。        mkdir boot        mkdir boot/grub        mount dev/hda1 /boot        cp /usr/lib/grub/* /boot/grub/ -rf        cp /root/bzImage /boot/grub  注:我上傳的bzimage在root目錄下總之是吧bzimage考在上述資料夾裡面。        vi grub.conf        輸入grub         root  (hd0)     //第一個分割槽         setup             //啟動 重啟介面出現:      輸入 kernel /bzImage              boot       最終開啟的就是我們自己構建的linux系統。