最好的方式應該是這一篇文章
不要再用什麼 fakeroot 去編了, 失敗率超高, 尤其是在 ARM 平台
https://wiki.ubuntu.com/KernelTeam/GitKernelBuild
Install necessary ubuntu packages.
sudo apt-get install git build-essential kernel-package fakeroot libncurses5-dev libssl-dev ccache bison flex libelf-dev dwarves
來個範例, 在 ARM64 上編了 4.10~4.17 其中幾個版本, 每次都成功
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git cd linux git checkout -b 4.17 v4.17 cp /boot/config-`uname -r` .config scripts/config --disable SYSTEM_REVOCATION_KEYS make olddefconfig make -j `getconf _NPROCESSORS_ONLN` deb-pkg LOCALVERSION=-custom
不知道為什麼,Ubuntu 22.04 Linux kernel 5.19 上這個方法又不行了,可能是因為取用 vanilla Linux kernel git source 的關係
copy /boot/config-5.19 到 Linux 時要注意要移掉認證的 .pem ,要不然會編不過,命令如下,記得還是要 make olddefconfig 讓新設定生效[ref]
scripts/config --disable SYSTEM_REVOCATION_KEYS scripts/config --disable SYSTEM_TRUSTED_KEYS
接下來下面這一段就可以編了,在我的系統上沒問題
fakeroot debian/rules clean cp /boot/config-`uname -r` .config scripts/config --disable SYSTEM_REVOCATION_KEYS scripts/config --disable SYSTEM_TRUSTED_KEYS make olddefconfig make clean #remove the non git files git clean -f rm vmlinux-gdb.py #make sure there is no linux*.tar too rm ../linux*.gz # cherry pick RC6 hack (or necessary command), if don't have it can by pass it. git cherry-pick 0c6b6fa52c6ad54332eed64acb6aebc59f75e0b2 # make -j `getconf _NPROCESSORS_ONLN` deb-pkg LOCALVERSION=-custom cd ..
不過這是包成 package ,如果只是單純的要改參數開發時開機用,那就直接 make install 就好了,但是抄 ubutnu 的 kernel configure file 檔案會太大,應該是包了 debug info,這時要 strip modules ,以免 ramdisk 太大
make -j `nproc` && make INSTALL_MOD_STRIP=1 modules_install && make install
ref. ubuntu build kernel from git with a source change, how to ignore ‘unrepresentable changes to source’ error
Why is my initial ramdisk so big?
發佈留言