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