參考:
最近由於專案需要,需要編譯裁剪符合需求的kernel。大家都知道distribution的版本大都比較龐大,裡面很多東西其實對於自己的機器根本用不到,在嵌入式系統中由於flash與rom的大小有限。顯得裁剪kernel更加有必要。
自己編譯核心能在選項裡去除這些多餘的選項, 只挑選當前機器適用的硬體驅動, 往往能得到1個更精簡的核心,理論上是比1個臃腫的核心更加穩定和快速的。 第二,對於任何軟體來講。理論上用當前機器自己編譯出來的會比用其他環境機器編譯出來的效能要高一點點。
其實裁剪kernel很簡單,我主要用fedora做演示。
#####* fedora 編譯完後並不生成安裝包, 但是實際上核心檔案和模組和標頭檔案都編譯出來了。只需要在當前源**目錄下執行:
#####make modules
#####make modules_install #這一步是安裝模組
#####make install #安裝核心和標頭檔案。fedora執行安裝命令完後系統也會自動幫你更新grub配置。
fedora 自編譯並不是用包管理器安裝的, 所以要手動刪除核心和模組,並更新gurb設定,當然個人建議寫成1個指令碼,用root來執行就ok啦, 指令碼參照下面: rm -rf /lib/modules/***xx/ #刪除模組 ls /boot/***xx | xargs rm #刪除核心 注意有3個檔案,注意關鍵字 這一步要小心 rm -rf /boot/grub2/grub.cfg #刪除grub配置 grub2-mkconfig -o /boot/grub2/grub.cfg #重新生成grub配置
__最近編了定製了一些核心,遇到了一些問題。比如高版本gcc編譯低版本核心,會出現 ata4 failed現象。這時我們要檢視gcc版本,可以選擇gcc 4.3版本。
多次編譯需要清理。
__比如使用make clean會清理掉除.config檔案。make mrproper清楚所有temp檔案包括.config檔案。
參考文獻:
關於linux kernel編譯的幾項關鍵點
1.make引數 cross compile 即交叉編譯器的字首 prefix 也就是選擇將 編譯成目標cpu的指令的工具,如指定make cross compile arm none linux gnueabi 就是使用arm none linux gnueabi gcc,arm none lin...
Android核心編譯與裁剪
編譯android核心 命令 mkdir android 進入上一步中建立好的目錄android。命令 cd android 命令 git clone 檢視goldfish核心在git中的所有分支資訊。命令 git branch a 命令 git branch android goldfish 2....
Linux kernel 關於keyboard部分
linux kernel 關於keyboard部分 keyboard.c 用於處理和鍵盤相關的input handler。其中包括後續的鍵碼轉換和輸出 atkbd.c 常用的鍵盤布局,用於獲得掃瞄碼,並將其傳送到input handler 鍊錶中 struct input handler kbd h...