Raspberry Pi 4 で以前利用していた Raspberry Pi 2 の環境をそのまま使う

Raspberry Pi 2 Model B で、MicroSD カードのみ /boot パーティションとして設定、他パーティションは USB-HDD で運用していた環境を、ほぼそのまま、ちょこっと修正して Raspberry Pi 4 Model B で運用した際の備忘録です。
なお、OS は Debian GNU/Linux 10 buster です。

事前に最新の Raspbian を MicroSD にインストールし、一度 Raspberry Pi 4 Model B で起動して初期設定を完了しておきます。

以下、Raspberry Pi 2 Model B 上での作業です。

  1. /boot パーティションのファイルを、別マシンなどにバックアップしておきます。(最悪これさえあれば Raspberry Pi 2 Model B で起動することが出来るので)
  2. Kernel building – Raspberry Pi Documentation」の手順に従って、Raspberry Pi 4 Model B 用のカーネルをビルドし、インストールを実行します。
  3. Raspberry Pi 2 Model B をシャットダウンします。

以下、任意の作業マシン上で行います。

  1. Raspberry Pi 2 Model B で利用していた MicroSD カードの /boot/cmdline.txt を編集します。
    最新の Raspbian の Raspberry Pi 4 Model B 用の /boot/cmdline.txt を参考に以下のように設定しました。

    console=serial0,115200 console=tty1 root=PARTUUID=xxxxxxxx-xx rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles apparmor=1 security=apparmor

    ※カーネル再構築して、AppArmor を有効にしているのでその設定も行っています。
    なお、PARTUUID は、Raspberry Pi 2 Model B の電源を落とす前に blkid で調べることが出来ます。(今回は USB-HDD の /dev/sda1 に相当する PARTUUID を指定しました)

  2. 初期設定の完了した、最新の Raspbian の MicroSD カードから /boot の以下の全てのファイル・ディレクトリについて、cmdline.txt と kernel7l.img 以外を Raspberry Pi 2 Model B で利用していた MicroSD カードの /boot にコピーします。

あとは、Raspberry Pi 4 Model B に MicroSD カードを挿入、USB-HDD も接続して電源をオンすると、Raspberry Pi 4 Model B で今までの環境で起動が出来ました。

この方法、「Raspbian って、/boot にあるカーネル以外は共通のコードなので、/boot パーティションの内容を入れ替えて、カーネルバージョンとカーネルモジュールの整合性さえとれば起動できるのでは」と思いついたのですが、予想どおり上手くいきました。

余談ですが、使っている USB3.0 の HDD ケースと Raspberry Pi 4 との相性が悪いのか、上手く起動しないときがあります。そのような場合は、全ての電源を切って、USB-HDD だけを USB 接続して電源を入れると、上手く起動してくれるようです。
USB デバイスを抜き差したり、指すポートを変えてみたりすると起動するようです。

追記
Linux Kernel 4.19.97 を Raspberry Pi 2 Model B と、4 Model B でビルドしてみたところ、

Pi 2 Model B: 205m19.397s
Pi 4 Model B: 90m37.475s

と、圧倒的に Pi 4 Model B は早いです。

Raspberry Pi 4: eeprom アップデータと wifi ファームウェアをインストールする」に続きます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です