32bit RPI OS bookwormの32bitカーネルを64bitにアップグレードしてしまう方法

先日busterからの2段階アップグレードを決行したばかりのRPI 4B bookwormで、このブログ原稿を書いておりますyagiです。

一応ひと通りの作業は快適にこなせておりまして、アップグレードに後悔はないのですが、やはりというかラズパイの場合、OSの出だしは何かとごたつくのが恒例行事であるようで。私はwaylandではなくX11環境で作業することが多いのですが、X11でyoutubeなどの動画を見ていると画面がティアリングしていて、これはなんとかならないものかと思っていました。

ただ、それも2、3日前に出たアップデートで解消されたみたいです。youtubeをフルスクリーンで見たところ、以前あったティアリングが消えているようです(フルスクリーンでない場合はティアリングするようなのですが、それは私にとって許容範囲です) こうした実地テストで熟成されていくRPI OSに、ユーザーとしてあえて巻き込まれてみるのがラズパイの醍醐味でありましょうか(笑)。

しかし、これでますますwaylandに移動する理由がなくなりましたね(笑)。たまにwaylandに切り替えつつ様子を見て、良い頃合いでwaylandに移行するのが良い選択ではないでしょうか。

RPI OS Bookworm 32bitをクリーンインストールすると64bitカーネルが起動する

さて、昨日、クリーンインストールしたbookworm 32bitで、設定を調べていてたまたま気づいたのですが、

クリーンインストールの32bit RPI OS Bookwormは
64bitカーネルで動いていた

のですね。お前は頭がおかしいのかと言われそうですが、うそではありません。公式も認めています。

Moving Linux Kernel to 6.1 - Page 11 - Raspberry Pi Forums

実際は今よりもずっと前のbullseyeの時代のどこかの段階で、32bit RPI OSは64bitカーネルに切り替わっていて、そのことはまともなbullseyeユーザには当たり前の話なのかもしれません。ただ、

bullseyeが嫌いでインストールをスキップしていた私
ラズパイ(32bit)のカーネルが64bitに切り替わっていたことを
全く知らなかった

ので、64bitカーネルで動く32bit bookwormを見たときは、俺は一体何を見ているのかと思いました(ちなみにbullseyeが嫌いになった理由はこちら)。なんか浦島太郎みたいですね(笑)

64bitカーネルといっても32bitアプリを動かすことはできるので、これで問題ないようです。むしろ64bitカーネルのほうがほとんどの場合利益が多いそうで、bullseyeのある時点で公式が64bitカーネルのデフォルトへの切り替えを決断したようです。

ちなみに32bitカーネルに戻したい場合は/boot/firmware/config.txtに

arm_64bit=0

を追加すれば良いようです(昔はarm_64bit=1で64bitカーネルを有効化していましたが、現在はこの指定がなくても64bitカーネルが有効になります)

旧OSからアップグレードした32bit bookwormのカーネルを64bitにアップグレードしよう

上で書きました通り、RPI 4, 5へクリーンインストールした32bit bookwormではデフォルトで64bit カーネルが走っています。アップグレードの必要はありません。

現在動いているカーネルの種類は uname -a などで確認できます。v8などの表記がある場合すでに64bitカーネルですのでアップグレードの必要はありません。

私が現在使っているRPI 4B bookworm 32bitはbusterからアップグレードしたもので、アップレード後のカーネルは32bitでした。それとは別に、クリーンインストールしたbullseyeからアップグレードした場合も、(たぶん)32bitカーネルのlinux-image-rpi-v7l のインストールしか選択できなかったはずで、そのままだと32bitカーネルが走っているのではないか思います。

運営の発言を読む限り、どうやら64bitカーネルの方の利用が推奨されているようです。そこでカーネルを64bitにアップグレードすることにしました。

まずは/etc/apt/以下のリポジトリ設定を確認

現在、bookwormをクリーンインストールした場合、次のようなリポジトリ設定になります。これを参考に、現在の設定を見直しましょう。

/etc/apt/sources.list は

deb [ arch=armhf ] http://raspbian.raspberrypi.com/raspbian/ bookworm main contrib non-free rpi
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
#deb-src http://raspbian.raspberrypi.com/raspbian/ bookworm main contrib non-free rpi

/etc/apt/sources.list.d/raspi.list は

deb http://archive.raspberrypi.com/debian/ bookworm main
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
#deb-src http://archive.raspberrypi.com/debian/ bookworm main

comの部分がorgになっていても問題ないようですが、今後のため修正してしておきましょう。

リポジトリの確認後は

sudo apt update
sudo apt dist-upgrade

で環境をアップデートしておきます。

dpkgをmultiarchに切り替える

aptで64bitカーネルを選択するにはdpkgをmultiarch対応に切り替えなければなりません。

# dpkgで、arm64を追加してmultiarch対応にする
sudo dpkg --add-architecture arm64

# multiarch設定を確認
dpkg --print-foreign-architectures

# アップデート
sudo apt update

64bitカーネルのインストール

カーネルインストールは以下のとおりです。

apt install linux-image-rpi-v8

インストール後は特に設定しなくても、リブートで64bitカーネル(v8)が優先されて起動するはずです。起動後は以下のようにカーネルを確認できます。

uname -a
# Linux xxx 6.1.0-rpi6-rpi-v8 #1 SMP PREEMPT Debian 1:6.1.58-1+rpt2 (2023-10-27) aarch64 GNU/Linux

64bitカーネルのインストールで起こった問題

64bitカーネルインストール後に気がついたのですが、CPAN経由でインストールしていたperlのモジュールのいくつかが削除されたようです。どのタイミングで削除されたのか分からないのですが、純粋にperlだけでできたモジュールではなく、os側の機能にアクセスするモジュールだけが削除されていたようので、おそらくアーキテクチャ変更の影響ではないでしょうか。

perlのモジュールを多数インストールされている方は、インストールしたモジュールのリストを事前に確保する等して、削除後の再インストールに備えたほうがよさそうです。

64bitカーネルのbookwormを体感して

64bitカーネルにして、こころなしかウインドウの切り替えがキビキビとした感じがあるのですが、たぶんこれはプラシーボでしょう(笑)。 巨大なメモリを使うアプリを利用する場合は話が別ですが、通常アプリであれば32bitカーネルでも64bitカーネルでも体感できる違いは少ないかと思います。

ではインストールした利点は何なのかと言われれば、ラズパイ側が推奨しているカーネルは64bitの方なので、そちらのほうがバグがよくチェックされそうじゃないかということです。特に出だしのRPI OSはただでさえ問題が多い、というのは最初にぼやいたとおりです。

そもそもRPI 3Bの頃からCPUは64bitなわけでして、互換でついてくる32bit ARMv7ばかりぶん回している状況は何なんだろうという話でもあります。いずれにしろ、32bit OSに64bitカーネルをインストールすれば、32bitと64bitの両方のアプリが動かせるという話でして、これだったら64bit OSより32bit OSのほうがお得といえなくもないなと思いました。

コメント

タイトルとURLをコピーしました