MacBookAir向けLinuxカーネルBuild


LinuxカーネルBuild

MacにてLinuxカーネルBuildにトライ。できるだけ軽量かつ最低限の機能は搭載することを意図する。

用いたマシン

MacBook Air 11 inch
2GHz Intel Core i7
(購入時のマザーボードは故障して交換したため、スペックアップ)
8GB RAM

準備

マルチブート

MacOSとのマルーチブートを実現したかったため、rEFIndをインストール(Mac OS High Sierra(10.13.6)経由)。Windows10もインストールしているため、トリプルブートとなっている。

Lubuntuダウンロード

ここから、最新LTSである20.04をダウンロードしてインストールする。

Build

LinuxカーネルBuildについて検索すると多数の情報が見つかるが、このサイトをベースにすすめた。

カーネルソースコード

本家サイトからソースコードをダウンロード。用いたバージョンは、5.10.32。

$ wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.10.32.tar.xz

必要なパッケージのインストール

$ sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison

Configuration

起動中Linuxのバージョンの情報を使って、「.config」をカスタマイズする。

$ cd linux-5.10.32
$ cp /boot/config-$(uname -r) .config

軽量化するために、このサイトを参考にした。下記順にmakeを実行。

$ make allnoconfig
$ make defconfig
$ make menuconfig

「allnoconfig」で最小化、「defconfig」でアーキテクチャ依存のデフォルト化を行う。「menuconfig」では、カーネル名の文字列追加("_may1")のみを実施。

MacBookAir(Mac?)固有のConfiguration

上記だけでは不十分であろうと判断して、「.config」中のApple関連をすべて有効化した(オリジナルの「.config」を参考に)。

CONFIG_APPLE_PROPERTIES=y
CONFIG_MOUSE_APPLETOUCH=m
CONFIG_SENSORS_APPLESMC=m
CONFIG_BACKLIGHT_APPLE=m
CONFIG_HID_APPLE=y
CONFIG_HID_APPLEIR=m
CONFIG_USB_APPLEDISPLAY=m
CONFIG_APPLE_MFI_FASTCHARGE=m
CONFIG_APPLE_GMUX=m

これでBuildしてトライしたが、タッチパッドおよびWiFiが使えず。調べたところ、次の有効化が必要であった。

CONFIG_MOUSE_BCM5974=m
CONFIG_BRCMSMAC=m

前者がタッチパッド、後者がWiFi用のConfiguration。

make

$ make -j 4

おおよそ45分くらい要した。ちなみに、単に/bootディレクトリからコピーしてきた「.config」を使ってBuildしたときには、4時間以上かかった。当然であるが、軽量化すれば、Build時間も減る。

$ sudo make install_module
$ sudo make install

によりインストール。/bootディレクトリにBuildされたカーネルがコピーされる。

起動

rEFIndによるOS選択画面は次にようになり、デフォルトでは最後にBuildしたカーネル(末尾に追加した文字列「_may1」)で起動する。

ここでF2を押すと、

となり、他のカーネルを選択できる。

作成したカーネルの状況をunameコマンドで確認。(小さくてごめんなさい。MacBookAirを見せたかったので。)

成功。