RaspberryPi4のカーネルを64bitから32bitに戻す方法

RaspberryPi4(32bit)に面白半分で64bitカーネルを入れたら、地デジチューナーのドライバが全く動かなくなり、初期化からの再構築という最悪のパターンまで想像してたところで見つけた、まさかのロールバック方法です。

同じ恐怖を覚えてる人を助けられればと思い、記事にします。

バックアップしとけば良いって話です。はい。

本記事の対象は、以下の事をしてしまってどうやって戻すねーんの人向けです。

arm_64bit=1

・/boot/config.txtの中に

arm_64bit=1

を書き込んでしまって、動かしたいソフトやドライバが動かなくなって、元に戻りたくても戻れない人向けです。

どこかのQiitaの記事では元に戻す方法は無いと書かれていて、絶望しましたが、戻す方法はありました。

初期化する前に試す価値はあります。

その前に、絶対にやってはいけない事を書きます。

/boot/config.txt内のarm_64bit=1を消して再起動は絶対にしないでください。RaspberryPiが起動しなくなります。

最終的にはarm_64bit=1を削除して再起動するのですが、この段階では実施しては駄目です。

駄目絶対を守ったところで、早速始めましょう。

手順は以下の通りです。

1)古いカーネルを指定してカーネルのダウングレードを実施する
2)一度再起動する
3)古いカーネルにダウングレードしている事を確認した後、/boot/config.txt内のarm_64bit=1を消して保存する
4)再起動せず、別のカーネルで上書きをする

簡単に書いてしまうと以上です。結構力技感がありますが、これで実際に戻れました。

具体的には以下のように実施していきます。

1)古いカーネルを指定してカーネルのダウングレード

まず古いカーネルを探します。

githubにありますが、以下のリンク先から参照すると楽です。

https://github.com/Hexxeh/rpi-firmware/commit/e1050e94821a70b2e4c72b318d6c6c968552e9a2

飛んだ先のcommitと書かれているところの数字の羅列を使います。

上のリンク先の場合は、e1050e94821a70b2e4c72b318d6c6c968552e9a2です。

sudo rpi-update e1050e94821a70b2e4c72b318d6c6c968552e9a2

上記のコマンドを打つと、4.19系のカーネルにダウングレードさせる事が出来ます。

2)一度再起動する

ダウングレードが完了して、再起動してねというメッセージが出たら、ここで一度再起動します

3)古いカーネルにダウングレードしている事を確認した後、/boot/config.txt内のarm_64bit=1を消して保存する

最も大事なフェーズです。

sshでアクセスすると、ログイン直後の一番上に5.4.58-v7l+のような記載があると思います。

この記載でカーネルが今どのバージョンなのかが分かりますので、目的のダウングレードしたカーネルになっているかを確認してください。

ダウングレードされている事が確認出来たら、例の/boot/config.txt内にあるarm_64bit=1を削除して保存してください。

4)再起動せず、別のカーネルで上書きをする

/boot/config.txt内にあるarm_64bit=1を削除して保存されている事を改めて確認し、4.19系のカーネルから5.4.x系のカーネルに上書きします。

私が実際に上書きしたカーネルはこちらです。

sudo rpi-update 23141000a5eae7ddbe11d4ac283198afd3031263

カーネルのアップデートが完了したら、再起動しましょう。

無事に64bitから32bit環境へロールバックされているかと思います。

お疲れ様でした。