カーネルパッチの当て方

最近、リリースされるたびにカーネルビルドをしている今日この頃だけど、リリースごとのカーネルパッチの当て方のメモ。

カーネルの差分パッチはkernel.orgからダウンロードできるけど、今のソースが5.3.5で5.3.6にしたい場合は、inc.patchからダウンロードして、たとえば、以下のような感じで当てる。

$ git clone https://github.com/marevol/linux-5.3-xps_13_2in1.git
$ cd linux-5.3-xps_13_2in1
$ wget https://cdn.kernel.org/pub/linux/kernel/v5.x/incr/patch-5.3.5-6.xz
$ xzcat patch-5.3.5-6.xz | patch -p1

XPS 13用のLinuxカーネル5.3を作る

DellのXPS 13 2 in 1に5.4-rc1をビルドして入れたものの、APIのインターフェースが変わったりで、動かないものがあり、ちょっと使えなそうなので、5.3系に転がっているパッチを当てつつ、Ubuntu 18.04でしばらく利用していこうかと思う。

それをするためには、ソース管理もきちんとしておかないと厳しそうなので、githubにlinux-5.3-xps_13_2in1としておいた。とりあえず、パッチ用ブランチとか作って、しばらく使って大丈夫そうだったら、マージしていこうと思う。

XPS 13 2 in 1は性能とかサイズ感とかもいい感じのマシンだと思うが、Ubuntuで使いたい人がどれだけいるかは謎だが、とりあえず、普通の人並みのUbuntu環境として使えるようにはしておきたいところ…。

現時点ではブート時にオプション無しでも起動できるようになった。今後は、Thunderboltあたりを何とかしたいところ…。

Ubuntu 18.04で最新カーネルをビルドして使う

XPS 13でいろいろとデバイス上の問題が多発するので、ここは素直にカーネルのビルドにチャレンジする。昔はカーネルビルドは普通にやっていたけど、今はビルドしなくても特に問題が起こることもないし、平和な日々を送ってこれたが、XPSのせいで一変してしまった…。

というわけで、ビルド。ビルドの前に下準備が必要。この辺を参考にして、以下のものを入れておく。build-depをする前に/etc/apt/source.listは変更が必要。

$ sudo apt install kernel-package
$ sudo apt install git ccache fakeroot libncurses5-dev
$ sudo apt build-dep linux

準備ができたら、適当なディレクトリにカーネルのソースコードを持ってくる。www.kernel.orgを参照する。今回は5.3.1を入れてみる。

$ wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.3.1.tar.xz
$ tar Jxvf linux-5.3.1.tar.xz 
$ cd linux-5.3.1
$ cp /boot/config-`uname -r` .config
$ make oldconfig

make oldconfigをすると、差分のオプションを次々と聞かれる。Enterを押し続ければ、とりあえず、デフォルトで設定される。まぁ、ビルド後、うまくいかないものがあれば、make menuconfigして、変更すれば良いはず。

コア数が8の環境だと、CONCURRENCY_LEVELを+1にして、-jを2倍くらいにしておけば良いっぽい。(追記:ここによるとCONCURRENCY_LEVELは不要らしい)

$ sudo -s
# export CONCURRENCY_LEVEL=9
# make-kpkg -j 16 --rootcmd fakeroot --initrd --append_to_version=-codelibs --revision=001 kernel_image kernel_headers

–append_to_versionと–revisionは適当に設定する。あとは、しばらく待つ。速いマシンだと1時間くらいで終わるかも。

1階層上にdebパッケージができるので

# cd ..
# dpkg -i linux-headers-5.3.1-codelibs_001_amd64.deb linux-image-5.3.1-codelibs_001_amd64.deb 

という感じで、インストールして、あとはrebootして、カーネルが更新されているかをuname -rなどで確認すれば完了。

Ubuntu 18.04のSlackアプリで日本語が使えない

Ubuntu 18.04で

$ sudo snap install slack --classic

で入れたアプリだと日本語入力ができない…。その場合は一旦削除して、公式サイトからダウンロードしてインストールする。

$ sudo dpkg -i slack-desktop-4.0.2-amd64.deb

とすると、日本語入力ができるようになる。

XPS 13 2-in-1 (7390)にUbuntu 18.04を入れる

13インチのノートブックに32Gのメモリを載せられるのは、現時点だとこのマシンくらいしかなかったので、そこそこな値段だったけど購入。結構、気楽な気持ちでUbuntuでもいれればいいかと思っていたのだが、デバイスが新しいせいか、インストールがうまくいかない…。いろいろとやって、とりあえず、Wifiが使えるところまでたどり着いたので、そのメモを兼ねて記録しておく。

まず、Ubuntu 18.04.3のDVDを用意する。でも、インストールする前にBIOSの設定でSecure Bootを無効にして、RAID OnからAHCIに変更する。Secure Bootを無効にするためにはWindowsを暗号化を無効にしてからSecure Bootを無効にするという流れが必要。Windowsとのデュアルブートにしないなら、単純に無効にしてしまえばよいのかもしれないが…。

私の場合は一応、Windows 10 Homeを残したので、パーティションをリサイズと移動して、700G近くを空けることでそこにインストールした。

次にDVDドライブをUSBで繋いでブートする。でも、普通に起動すると、途中で止まってインストールできない…。なので、起動してgrubのインストールするか?とかの選択子が出ているところで、eを押して、編集状態にしてnoapicをカーネルオプションに追加する。これで起動すると、ひとまず、起動ができるようになる。あとは、普通にインストールすれば良いけど、インストール後の普通の起動のときもnoapicがないと起動できないので、インストール後には/etc/default/grubで

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash noapic"

として

# update-grub

をしておけばよい。

次の問題は、Wifiが使えない…。なので、ここを参考にして自分でビルドしていれる。そもそもWifiが使えないので、どっかのマシンで必要なものをダウンロードして、USBメモリとかに入れて持っていくことになる。ビルドが必要なので、build-essentialのインストールが必要になるけど、これはDVDに入っているdebを入れる。依存関係で怒られるものを次々入れていけば準備完了。他の必要なものは

$ git clone https://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/backport-iwlwifi.git
$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git

をして、固めてUSBメモリに入れて持っていき、あとは適当に展開して、

# cd backport-iwlwifi
# make defconfig-iwlwifi-public
# make -j4
# make install
# cd ../linux-firmware
# cp iwlwifi-* /lib/firmware/

をして再起動すれば、普通に認識されて利用できるようになる。カーネルを更新した場合は再度上記の作業をすればまた使えるようになる。

という感じで、とりあえず、Wifiが使えるようになって、人並みには使えるようになった気もするが、APCIも何かおかしいような気もするので、その他については少しずつ何とかしていきたいところではある。Wifiが使えるようになったので、使いながら考えることにしよう。