hp t5570へdebian11を入れる時の注意点


※現在は解消されているようです。linux-image-5.10.0-24-amd64でパッチ適用なしで起動する事を確認しています。(これより前のバージョンで解消している可能性があります)

概要

hp t5570とは

hp社が販売したシンクライアントです。今となっては古い機器ですが、消費電力が10Wを切る省電力性を備えており、オークションサイトなどで安価に入手できます。私も秋葉原のジャンク屋で2000円未満で購入しましたが、その後パッとする用途もなくタンスの肥やしとなっていました。一応、HDDを搭載する事ができるのですが専用スロットの為アダプターなどの入手が難しく、また仮に入手したとしてもHDDそのものの入手性があまりよくありません。この機種はカバーを外した所にUSBの隠しポートが用意されており、私はUSBメモリをメインストレージとして利用しています。

今回VPNボックスを構築するにあたって使えないか検証していました。

debian11のインストーラーがpanicする

手順に従ってインストール用のUSBを作成し、起動します。キーボードやロケールの設定までは問題ないのですが、その後画面が固まってしまいます。Ctrl+Alt+F3なども反応しません。シリアルコンソールなどで確認するとkernel panicていました。

このpanicはインストーラーの起動時に下記のオプションを加える事でこのkernel panicは回避できます。

しかしインストールの全ての行程が完了して再起動を実行するタイミングでpanicを引き起こしてしまいます。

その後電源を強制リセットするとOSは問題なく起動しました。これで大丈夫かなとおもいきや、先程同様にrebootやshutdownの時にpanicしてしまいました。オプションにacpi=offなどを加えてもこの症状は改善しません。

下記はpanic時のメッセージの一例です。

filepanic_message.txt

カーネルのパッチ当て&再コンパイル

調査の結果VIAのCPUの実装が怪しい事による物のようです。これを修正するにはkernelにパッチ当てをする必要があります。ここではその手順を紹介します。

マシンの準備

Kernel再構築はそれなりの時間がかかります。t5570は非力な為別のマシンを用意する事をオススメします。今回はVMwareの仮想マシンを用意しました。今回用意した仮想マシンの設定です。

この仮想マシンにdebian11を最小構成でインストールしておきます。

必要なパッケージの用意

# apt update
# apt install build-essential libncurses-dev fakeroot linux-source libssl-dev bison flex rsync libelf-dev

ソースの入手

現在利用可能なバージョンなどを念の為確認しておきましょう。

# apt search ^linux-source
Sorting... Done
Full Text Search... Done
linux-source/stable,now 5.10.46-4 all
  Linux kernel source (meta-package)

linux-source-5.10/stable,now 5.10.46-4 all
  Linux kernel source for version 5.10 with Debian patches

apt経由でソースを入手できます。

# apt install linux-source-5.10

ソースは/usr/srcに配置されます。

ソース展開とパッチ当て

# cd /usr/local/src
# tar xf /usr/src/linux-source-5.10.tar.xz 
# mv linux-source-5.10 linux-source-5.10-via-custom
# cd linux-source-5.10-via-custom
# xzcat /usr/src/linux-config-5.10/config.amd64_none_amd64.xz > .config

設定ファイルを編集します。

# vi .config

今回下記を確認してください。

CPUの問題を修正するパッチを当てます。

# wget -O via_cpu.patch https://note.nogisawa.net/files/2021/0826_t5570/_F/via_cpu.patch
# patch -p0 < via_cpu.patch

コンパイル

# make oldconfig
(いくつか対話で聞かれるので全部Enter)
# time make deb-pkg -j 8 LOCALVERSION=-via-custom
real	36m47.844s 
user	168m7.911s
sys	15m37.244s

手元の環境では40分弱ほどかかりました。

インストール

コンパイルが完了すると/usr/local/srcにdebパッケージが生成されています。そのうち下記の3つをdpkgでインストールしましょう。

# dpkg -i linux-headers-5.10.46-via-custom_5.10.46-via-custom-1_amd64.deb \
               linux-image-5.10.46-via-custom_5.10.46-via-custom-1_amd64.deb \
               linux-libc-dev_5.10.46-via-custom-1_amd64.deb

インストールが完了したらgrubのアップデートを実行して次回から新しいKernelが起動するようにします。

# update-grub

また、インストール時に指定していたnolapicはもう外しても大丈夫です。

kernelコンパイルFAQ

debian/certs/debian-uefi-certs.pemが見つからないというエラー

BTF: .tmp_vmlinux.btf: pahole (pahole) is not available

BTF: .tmp_vmlinux.btf: pahole (pahole) is not available
Failed to generate BTF for vmlinux
Try to disable CONFIG_DEBUG_INFO_BTF
make[3]: *** [Makefile:1167: vmlinux] Error 1
make[2]: *** [debian/rules:7: build-arch] Error 2
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2
make[1]: *** [scripts/Makefile.package:77: deb-pkg] Error 2
make: *** [Makefile:1573: deb-pkg] Error 2

試してダメだった事

参考