Fedora 28 on RPi3
諸事情あって、Raspberry Pi 3上でRaspbian以外のOSを動作させる必要が出てきたのですが、調べてみると私の要件ではFedoraが一番最適そうでした。
そこで早速、最新のFedora 28をmicroSDに焼いて起動してみたのですが……ペンギンが出現してすぐにブラックアウトしてしまいます。
これでは初期設定ができません。困った。
ただ、ログやネットワーク越しの反応を見る限り、OS自体は死んでいなさそうだったので、何かあるんだろうなあとしばらくネットを徘徊。
で、Fedoraが提供しているarm-image-installerのソースコード1を眺めていると、『fix up rpi2/3』という怪しい項目が。
そこではVC4というGPUドライバを無効化しているようでした。これだ!2 3
検索してみると、Fedora 25のドキュメントに該当するものがありました。
以下、引用すると、
The Raspberry Pi 2/3 has a known issue detecting some connected monitors using the vc4 driver(BZ#1387733). To work around this issue it is recommended you blacklist it with the following steps. Edit the image and change: 1) Edit the /boot/extlinux/extlinux.conf adding ‘rd.driver.blacklist=vc4’ to the kernel arguments (line beginning with ‘append’). Then create a configuration file below:
# ensure this path is updated for your system echo blacklist vc4 > /PATH-TO-SD/etc/modprobe.d/blacklist-vc4.conf
とのこと。
「Raspberry Pi 2/3ではVC4ドライバ周りでモニタと不具合が出る場合があるから、症状が出た場合はVC4ドライバをブラックリストに追加しておくといいよ」と言っています。ビンゴですね4。
が、ここで問題が
そんなわけで、焼いたSDカードを別のLinuxマシンでマウントして、上記ドキュメントと同様に……と行きたいのですが、AArch64を選択した場合、ドキュメントにあるextlinux.confがそもそも存在しませんでした。
そのため、(本当はお行儀がよくないのでしょうが)grubの設定ファイルに直接書き加えることにします。試行錯誤してRawhideのARMv7を試したりした後、最終的には以下のような手順になりました。
自己責任で作業してください!
AArch64(もしくはextlinux.confが存在しないもの)を選択した場合 :
- /boot 用パーティション内にある EFI/fedora/grub.cfg の
linux /vmlinuz- ...
(…の部分にはカーネルのバージョンが入る)が含まれる行の最後にrd.driver.blacklist=vc4
を追加 - / 用パーティション内の etc/modprobe.d に blacklist-vc4.confを作成し、
blacklist vc4
を追加
ARMv7を選択した場合 :
- /boot 用パーティション内にある extlinux/extlinux.conf の 『append』が含まれる行の最後に
rd.driver.blacklist=vc4
を追加 - / 用パーティション内の etc/modprobe.d に blacklist-vc4.confを作成し、
blacklist vc4
を追加
の作業を行って終了。
後はドキュメント通り5、/用パーティションのサイズをgpartedなりで拡張してあげて完成です。arm-image-installerを使えば自動でやってくれそうですね。
作業後のmicroSDカードをRaspberry Pi 3に入れて起動すると、無事にブラックアウトすることなく起動しました。よかった。
同じような症状で悩んでいる方は試してみてください。
https://pagure.io/arm-image-installer/blob/master/f/arm-image-installer#_480 ↩︎
--blacklistvc4
というオプションを指定すると該当部分の処理が走るのですが、これはUsageにない隠しオプションな模様。最初はなぜ? と思ったが、後述する問題のせいだったのかもしれない。 ↩︎https://bugzilla.redhat.com/show_bug.cgi?id=1387733 のバグらしい。 ↩︎
これはFedora 28のドキュメントにも書いていて欲しかった。Rawhideをそのまま試してもダメだったし、Fedora 29でもこの問題は残り続けるのかもしれません。 ↩︎
https://fedoraproject.org/wiki/Architectures/ARM/Raspberry_Pi#Resize_before_first_boot ↩︎