Raspberry Pi 3でFedora 28 Minimalを起動する際、画面がブラックアウトしてしまう問題の対応


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が存在しないもの)を選択した場合 :

  1. /boot 用パーティション内にある EFI/fedora/grub.cfg の linux /vmlinuz- ...(…の部分にはカーネルのバージョンが入る)が含まれる行の最後にrd.driver.blacklist=vc4を追加
  2. / 用パーティション内の etc/modprobe.d に blacklist-vc4.confを作成し、blacklist vc4を追加

ARMv7を選択した場合 :

  1. /boot 用パーティション内にある extlinux/extlinux.conf の 『append』が含まれる行の最後にrd.driver.blacklist=vc4を追加
  2. / 用パーティション内の etc/modprobe.d に blacklist-vc4.confを作成し、blacklist vc4を追加

の作業を行って終了。

後はドキュメント通り5、/用パーティションのサイズをgpartedなりで拡張してあげて完成です。arm-image-installerを使えば自動でやってくれそうですね。

作業後のmicroSDカードをRaspberry Pi 3に入れて起動すると、無事にブラックアウトすることなく起動しました。よかった。

同じような症状で悩んでいる方は試してみてください。


  1. https://pagure.io/arm-image-installer/blob/master/f/arm-image-installer#_480 ↩︎

  2. --blacklistvc4というオプションを指定すると該当部分の処理が走るのですが、これはUsageにない隠しオプションな模様。最初はなぜ? と思ったが、後述する問題のせいだったのかもしれない。 ↩︎

  3. https://bugzilla.redhat.com/show_bug.cgi?id=1387733 のバグらしい。 ↩︎

  4. これはFedora 28のドキュメントにも書いていて欲しかった。Rawhideをそのまま試してもダメだったし、Fedora 29でもこの問題は残り続けるのかもしれません。 ↩︎

  5. https://fedoraproject.org/wiki/Architectures/ARM/Raspberry_Pi#Resize_before_first_boot ↩︎