Linux 作業系統、虛擬機器與精簡電腦操作簡介課程

Linux暑期課程 > 核心編譯

Linux 暑期課程-核心編譯

Linux 核心使用 C 程式語言寫成,因此如果你需要重新編譯核心,就得要安裝 gcc 等軟體,否則無法編譯的。 此外,Linux 作業系統可以擁有多個不同的核心,所以,當你安裝新核心,就得要重新處理開機選單才行!
  1. 前置作業
    1. 因為核心也是 C 寫成的,也需要編譯器,也需要相關的函式庫。所以,你一定要回去看 軟體編譯
    2. 相關的核心編譯課程,要先去看鳥哥的文章:http://linux.vbird.org/linux_basic/0540kernel.php
    3. 先看一下 /boot/configXXX 的檔案,你會知道,其實核心編譯,就是將哪些需要的功能整合到核心裡面去而已。
  2. 直接進行核心編譯
    1. 直接手動設定核心功能予以編譯
      • 請從 www.kernel.org 下載最新的核心 (由虛擬機處下載 http://172.16.200.254/linux-4.12.3.tar.xz)
      • 將核心解壓縮,然後進行 make mrproper 之後進行 make menuconfig 來處理核心功能的挑選
      • 依序執行 make vmlinux; make modules; make bzImage ,看看能否順利完成編譯
      • 安裝模組,請使用 make modules_install
      • 安裝核心與 initramfs,請使用 arch/x86/boot/bzImage 到 /boot/vmlinuz-xxx; cp .config /boot/config-xxx; System.map /boot/System.map-xxx; gzip -C Module.symvers > boot/symvers-xxx; restorecon -Rv /boot
      • 建立 initramfs 使用: dracut -v /boot/initramfs-xxx xxx
      • 最終修改 grub.cfg 使用 grub2-mkconfig -o /boot/grub2/grub.cfg
    2. 讀入目前核心的功能設定檔案
      • 上一個動作在挑選時沒有參考點,所以速度很慢!
      • 如果你有上次的設定,就能夠直接取用來處理!例如將 /boot/config-xxx 讀入來處理即可!
      • 請將剛剛編譯好的核心刪除,重新解壓縮核心,並進行上面流程,直到 make menuconfig 處。 在 make menuconfig 時,使用設定檔讀入的方式,將最新的核心設定檔讀入即可!
      • 接下來請修改核心釋出版本,然行按照上一個流程,重複處理後續的行為!
  3. 將核心打包成為 RPM 檔案
    1. 先從 ELRepo 網站下載不含原始碼的 SRPM 檔案,並且安裝該檔案 (由虛擬機處下載 http://172.16.200.254/kernel-ml-4.12.3-1.el7.elrepo.nosrc.rpm)
    2. 從 www.kernel.org 網站下載滿足 ELRepo 網站所需要的核心版本來處理 (用剛剛 2.a 下載的檔案)
    3. 修改核心功能 (因為需要加上未來虛擬化的功能!)
    4. 透過 SRPM 的 rpmbuild 重新編譯打包核心
    5. 請參照鳥哥網站的 24.5 章節內容來處理這部份的動作!
  4. 建立自己所需要的 yum server 軟體庫
    1. 建立 httpd 服務
    2. 將所有 RPM 軟體放置在 /var/www/html/mysoftware 目錄內
    3. 執行 repocreate -v . 來建立好清單資料庫
    4. 未來 client 端只要加入這個軟體庫,就可以直接安裝我們的最新核心與相關最新軟體了。