乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Linux內(nèi)核編譯

       adkada 2012-09-11
      年紀大了,記性不好,這篇文檔作為自學(xué)筆記,也算是積累,給自己一個交待。
       
      Linux內(nèi)核編譯的大致流程如下:
       
      一、獲取內(nèi)核代碼:編譯內(nèi)核代碼之前一定要獲取到內(nèi)核代碼,到http://www./下載
      查詢當前系統(tǒng)的版本號的命令:uname
      切換到root用戶: su
       
      二、配置內(nèi)核:內(nèi)核代碼包括有很多功能,通過配置文件,選擇編譯選項,實現(xiàn)定制內(nèi)核的目的。
       
      1、內(nèi)核的幾種配置方式
      1. 如果.config不存在,運行make config/menuconfig時,編譯器找到每個子目錄下的Kconfig文件,并使用其中的缺省值生成.config文件。
      2. 如果.config存在,運行make config/menuconfig時的缺省設(shè)置即是當前.config的設(shè)置,若對設(shè)置進行了修改,.config將被更新。
      3. arch/xxx/defconfig是一個缺省的配置文件,make defconfig時會根據(jù)這個文件生成當前的.config。
      4. arch/xxx/configs文件夾中有許多命名為xxx_defconfig的配置文件,如果運行make xxx_defconfig,當前.config文件會由xxx_defconfig文件生成。
      5. make oldconfig的作用和make config類似,但是它的作用是在現(xiàn)有的內(nèi)核設(shè)置文件基礎(chǔ)上建立一個新的設(shè)置文件,只會向用戶提供有關(guān)新內(nèi)核特性的問題,在新內(nèi)核升級的過程 中,make oldconfig非常有用,用戶將舊的配置文件.config復(fù)制到新內(nèi)核的源碼中,執(zhí)行make oldconfig,舊的配置文件.config會被備份,同時用戶只需要回答那些針對新增特性的問題。
       一般,就用make menuconfig。
       
      2、內(nèi)核編譯選項
      編譯選項數(shù)量眾多,詳細請參考《Linux內(nèi)核配置參考》,反正我是直接使用默認生成的.config就可以了。不過以下建議將避免您最終得出一個不能工作的內(nèi)核:
      1. 除非您使用初始化 ramdisk (initrd),否則絕不要把掛載根文件系統(tǒng)必需的驅(qū)動程序(硬件驅(qū)動以及文件系統(tǒng)驅(qū)動)編譯成模塊!而如果您確實使用初始化 ramdisk,請為 ext2FS 支持選項選擇 Y,因為 ramdisk 使用該文件系統(tǒng)。您還需要 initrd 支持。

      2. 如果您系統(tǒng)中有網(wǎng)卡,將它們的驅(qū)動編譯成模塊。這樣,您就能夠在 /etc/modules.conf 中用別名定義哪一塊網(wǎng)卡第一,哪一塊第二,等等。如果您將驅(qū)動程序編譯進了內(nèi)核,它們加載的順序?qū)⑷Q于當初它們鏈接進內(nèi)核的順序,而這不一定是您想要的。

      3. 最后,如果您不清楚某個選項的含義,請閱讀其幫助!而如果該幫助信息依然不能解決您的困惑,請保留該選項原來的樣子。(在 configoldconfig 中可以按 ? 鍵訪問幫助。)

      配置最終結(jié)束后,請保存您的配置并退出。

      三、編譯內(nèi)核
      1、編譯內(nèi)核
      make或make bzImage
      編譯好的內(nèi)核文件名是bzImage,生成的文件放在arch/<cpu>/boot/目錄下面。
       
      2、編譯內(nèi)核模塊
      make moudles
       
      3、安裝內(nèi)核模塊
       make moudles_install
      所謂安裝,就是將編譯好的內(nèi)核模塊從內(nèi)核源代碼目錄copy到lib/modules/目錄下,并根據(jù)被編譯內(nèi)核的版本號生成一個新的子目錄。我們在做實驗的時候,為了安全起見,最好備份好modules目錄。
       
      四、制作Ramdisk
      首先要了解內(nèi)核與ramdisk的關(guān)系:
      Linux系統(tǒng)在啟動的過程中,需要mount根文件系統(tǒng),此時除非將根文件系統(tǒng)涉及的所有模塊全部(各種文件系統(tǒng)、各種塊設(shè)備驅(qū)動、IDE、SATA)編譯到內(nèi)核文件,否則內(nèi)核無法完成根文件系統(tǒng)的mount操作,但是如果都編譯的話,內(nèi)核就太大了,所以一般來說驅(qū)動/模塊都駐留在根文件系統(tǒng)本身上/lib/modules/xxx,那么問題就來了,現(xiàn)在要mount根文件系統(tǒng)卻需要根文件系統(tǒng)上的模塊文件,怎么辦?于是,就想出ramdisk,內(nèi)核總是能安裝ramdisk的(注:這是因為ramdisk和內(nèi)核一樣都是一個內(nèi)存文件,也是由bootloader通過低級讀寫命令(如uboot用nand read,而不用通過文件系統(tǒng)層提供的高級讀寫接口)加載進內(nèi)存,因此內(nèi)核可以掛載內(nèi)存里ramdisk文件系統(tǒng)),然后把所有可能需要的驅(qū)動/模塊都放在ramdisk上,首先,讓內(nèi)核將ramdisk當作根文件系統(tǒng)來安裝,然后再用這個根文件系統(tǒng)上的驅(qū)動來安裝真正的根文件系統(tǒng),就將這個矛盾問題解決了。
       
      1、重新制作內(nèi)核映像
      mkinitrd initrd-2.6.29  2.6.29
      其中 2.6.29為/lib/modules下的目錄名稱
       
      將內(nèi)核文件bzImage和鏡像文件initrd-2.6.29一起拷貝到/boot/目錄下,并將內(nèi)核改名為vmlinuz-2.6.29。
      修改/etc/grub.conf文件
       
      title MyZinux (2.6.29)
          root (hd0,0)
          kernel /vmlinuz-2.6.29 ro root=UUID=e7ff8cb4-6560-4c5e-99f3-9314e10ed40d rhgb quiet
          initrd /initrd-2.6.29
       
       
      【相關(guān)知識】makefile文件:
      內(nèi)核版本號由 Makefile 的第一行決定:

      $ head -4 Makefile
      VERSION = 2
      PATCHLEVEL = 6
      SUBLEVEL = 8
      EXTRAVERSION = -1mdkcustom
      

      Makefile 后面,您會發(fā)現(xiàn)內(nèi)核版本號的組成是:

      KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
      

      所以我們可以自定義內(nèi)核的版本號。做的就是更改這些域之一以定義您自己的版本號。一般只改變 EXTRAVERSION。例如您將其改為 -foo。新內(nèi)核版本就會是 2.6.29-foo。

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多