ポータブック用カスタムカーネルのビルド手順【Ubuntu18.04版】
eMMCが32GBしかないためWindows10での運用がきついので、キングジムのポータブックXMC10にUbuntu18.04をインストールしてみました。そのままでは動かない部分があるので、カーネルにパッチを適用する必要があります。
パッチの当て方がわからないという方向けに手順を紹介します。
注意事項
ポータブック専用のパッチですが、個人的に作成・公開しているもので、メーカーとは一切関係ありません。
ポータブックはLinuxは公式サポートしていないのでメーカー保証も受けられなくなります。自己責任でお願いいたします。
カーネルパッチについて
パッチは下記のGithubで公開しています。4.19も公開しましたが、サスペンドすると復帰時に固まります。4.15を推奨します。
https://github.com/mongonta0716/portabook/
cd ~
git clone https://github.com/mongonta0716/portabook
ビルドするPC
ビルドするPCはポータブックである必要はありません。Ubuntu18.04(amd64)が動作していれば大丈夫です。
ポータブックだとeMMCが32GBしかないためカーネルをビルドすると空き容量が無くなります。また、microSD上でビルドするとビルドに4時間以上かかります。
以下、ポータブック上での作業は【XMC】、母艦のPCで作業する項目には【母艦】と付けます。
母艦でのカーネルビルド環境は構築できているとします。(後日別記事で解説します。)
【XMC】【母艦】ソースの準備
カーネルをビルドする前にソースの準備をします。
【XMC】①ソースパッケージのインストール
sudo apt install linux-source
【母艦】②scp等で母艦にコピー
cd ~
mkdir src
cd src
scp xmc10:/usr/src/linux-source-4.15.0.tar.bz2 .
tar xvf linux-source-4.15.0.tar.bz2
【母艦】③.configファイルのコピー
カーネルをゼロからconfigしようとすると大変なので/bootからコピーします。
cd linux-source-4.15.0
scp xmc10:/boot/config-4.15.0-42-generic ./.config
【母艦】パッチの適用
portabook_kernel4.15.patchを適用します。
patch -u -p 1 < ~/portabook/patch/portabook_kernel.4.15.patch
ソースを開いてパッチが当たっているか確認してください。
【母艦】ビルド
【母艦】①make oldconfig
HID_KINGJIMという設定が増えています。make oldconfigを実行すると、、、
make oldconfig
下記のように聞かれるので「m」と答えてください。
Kingjim (HID_KINGJIM) [N/m/?] (NEW)
【母艦】②ビルド開始
ビルドを開始します。sudo -sを忘れずに。Ubuntu18.04の場合、LANG=Cを入れないと後述のエラーが出ます。
sudo -s
time CONCURRENCY_LEVEL=9 LANG=C make-kpkg -j 18 --rootcmd fakeroot --initrd --append_to_version=-xmc10-custom-20181217001 --revision=001 kernel_image kernel_headers
make-kpkgのオプションについて
環境によって変わるので下記のパラメータは自分で決めてください。()は私がWebで調べてしっくりきた値です。
- CONCURRENCY_LEVEL(物理コア数×2+1)
- -j (CONCURRENCY_LEVEL×2)
- --append_to_version (自分で分かりやすいものを付ける。)
- --revision (リビジョンを管理したい時に使用)
LANG=Cを忘れると出るエラー
./scripts/ubuntu-retpoline-extract-one: 134 行: printf: 0x十六進数ダンプ:: 無効な十六進数です
symbolmap: 00000000: invalid section
ビルド時間について
カーネルビルドは時間がかかりますがビルド環境が良ければもっと短くなると思います。CPUとストレージの速さに依存する気がします。
●ビルド時間の参考値
- ポータブックのmicroSD上でビルド ==> 4時間
- Core i7-920+SSD ==> 1時間
【補足】ビルドに必要なパッケージ
ビルドするPCでは下記のパッケージが必要です。あらかじめインストールしてください。
- build-essential
- libncurses-dev
- fakeroot
- kernel-package
- linux-source
- libssl-dev
●コマンド
sudo apt-get -y install build-essential libncurses-dev fakeroot kernel-package linux-source libssl-dev
カーネル4.16以降で必要なパッケージ
bisonとflexが必要になりました。
sudo apt-get install -y bison flex
最後に
Ubuntu化したポータブックは、個人的にはLibretto20やEeePC901につづく名機(迷機?)だと思っています。壊れるまで活用していきたいと思います。液晶さえ(ry
カーネル以外の変更手順は別記事にて紹介します。
> カーネル4.16以降で必要なパッケージ
> bisonとflexが必要になりました。
> sudo apt-get -y bison flex
の部分、
installが欠けています。
sudo apt-get -y install bison flex
ご指摘ありがとうございます。m(_ _)m
修正しました。