ポータブック用のカーネルパッチを作るまでの手順
※例は4.19.8です。バージョンが変更になるとファイル構成が変わる可能性あり。
最新カーネルを取得
カーネルソースをダウンロード
https://www.kernel.orgからカーネルソースをダウンロード
mkdir kernel419
cd kernel419
wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.19.8.tar.xz
解凍する
tar xvf linux-4.19.8.tar.xz
configファイルの取得
カーネルのメジャーリリースの場合は、configが大幅に変更されているため、対話形式で設定するのは面倒である。従って、開発PCにgeneric版のdebパッケージをインストールしてからgeneric版のconfigファイルを利用すると楽。
debパッケージの取得
http://kernel.ubuntu.com/~kernel-ppa/mainline/からダウンロード。
・linux-headers…deb
・linux-headers…-generic…deb
・linux-image-unsigned…generic…deb
・linux-modules-…generic…deb
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.19.8/linux-headers-4.19.8-041908_4.19.8-041908.201812080831_all.deb
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.19.8/linux-headers-4.19.8-041908-generic_4.19.8-041908.201812080831_amd64.deb
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.19.8/linux-image-unsigned-4.19.8-041908-generic_4.19.8-041908.201812080831_amd64.deb
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.19.8/linux-modules-4.19.8-041908-generic_4.19.8-041908.201812080831_amd64.deb
debパッケージのインストール
sudo dpkg -i *.deb
configファイルのコピー
cp /boot/config-4.19.8-019108-generic ./linux-4.19.8/.config
configファイルのmake
cd linux-4.19.8
make oldconfig
gitの準備
差分を取るためにgitで初期化を行う。ベースラインのcommitメッセージは適当に。
git init
git add .
git commit -m "master of kernel.org"
ctags
ctags用のファイルを作る。
ctags -R
ソースの編集
変更点を確認しつつソースを解析して編集する。
カーネルビルド
変更が終わったらカーネルをビルドする。sudo -sが必要。
下記のパラメータは環境に合わせて変更
・CONCURRENCY_LEVEL(CPUコア数+1)
・-j(CPUスレッド数×2)
・–append_to_version (わかりやすい名前を付ける。)
・–revision (リビジョンを管理したい時に使用する。)
sudo -s
time CONCURRENCY_LEVEL=9 make-kpkg -j 18 --rootcmd fakeroot --initrd --append_to_version=-xmc10-custom-20181213001 --revision=001 kernel_image kernel_headers
※ commitしていないのでこの時点でビルドされるカーネルバージョンには「+」というsuffixが付加される。
動作確認
ビルドが正常に完了すると親ディレクトリにdebファイルが作成される。実行端末にコピーしてインストールしてから動作確認を行う。