Failed Attempts to Install NixOS on the Raspberry Pi 4

Michael Lynch

Raspberry Pi 4へのNixOSインストール失敗記録

チュートリアル「Raspberry Pi 4にNixOSをインストールする」を作成する過程で、うまくいかない方法に何度もぶつかりました。

同じ手順を試して時間を無駄にする方が出ないよう、ここにまとめておきます。

標準のNixOS aarch64イメージは動作しない

NixOSのダウンロードページを見ると、64ビットARM向けのイメージが提供されていました。

NixOSダウンロードページにおける64ビットARM向けダウンロードリンクのスクリーンショット

NixOSは64ビットARMシステム向けのブータブルイメージを提供しています

「素晴らしい!」と思いました。Pi 4は64ビットARM CPUを搭載していますから。しかし、Piはそのイメージをまったく起動できませんでした

『Progress: Trying boot mode USB-MSD』と表示されたPiの起動画面

Pi 4では標準のNixOS ARMイメージの起動に失敗します

後で知ったのですが、NixOSの主要なビルド済み64ビットARMイメージはUEFI対応のシステムを前提としており、Raspberry Pi 4はUEFIをサポートしていません。

最新のNixOS(23.05)のmicroSDイメージはRaspberry Pi 4で動作しない

NixOSはRaspberry Piのようなシングルボードコンピュータ向けにmicroSDイメージを引き続き公開しています。nixos-sd-image-23.05.1123.aaef163eac7-aarch64-linux.imgをmicroSDに書き込んでみましたが、configuration.nixを適用しようとしたところ、次のエラーが発生しました。

Applying overlay rpi4-vc4-fkms-v3d-overlay to bcm2711-rpi-cm4-io.dtb...
Failed to apply '/nix/store/22l342jmwsaazvnz1zd5qq5m3b3ppsbd-rpi4-vc4-fkms-v3d-overlay-dtbo': FDT_ERR_NOTFOUND
error: builder for '/nix/store/cgv9mmkhwy6gc4y48pfmxnjam46404kr-device-tree-overlays.drv' failed with exit code 1
error: 1 dependencies of derivation '/nix/store/w77gh3p4wzbildmmr2dh1c254qlm3nv4-nixos-system-pinix-23.05.1123.aaef163eac7.drv' failed to build

このエラーからnixos-hardwareリポジトリのバグにたどり着きましたが、執筆時点では修正は提供されていません。

このバグは、configuration.nixファイルから次の1行を削除することで回避できます。

hardware.raspberry-pi."4".fkms-3d.enable = true;

しかし、その後インストールは別の箇所で失敗します。

installing the boot loader...
removing user ‘nixos’
setting up /etc...
removing obsolete symlink ‘/etc/hostid’...
removing obsolete symlink ‘/etc/systemd/pstore.conf’...
removing obsolete symlink ‘/etc/zfs/zpool.d’...
...
umount: ???: umount failed: No such file or directory.

この状態でPiの電源を入れ直すと、新しいNixOSのインストール自体は正常に起動しますが、デスクトップGUIは表示されず、ターミナルだけが表示されます。

NixOS 22.11のmicroSDイメージはRaspberry Pi 4で起動に失敗します。

追記(2023-08-18): この問題は現在修正されています

NixOS 22.05と22.11はPi 4で起動できない

バージョン23.05のNixOS microSDイメージの設定に失敗した後、nixos-sd-image-22.11.4604.fc95eb4fc3c-aarch64-linux.imgでも試してみましたが、起動に失敗しました。何度か試しましたが、毎回映像信号が途切れるか、緑色の画面が表示されるだけでした。

NixOS 22.11のmicroSDイメージはRaspberry Pi 4で起動に失敗します。

nixos-sd-image-22.05.4694.380be19fbd2-aarch64-linux.imgでも試しましたが、結果は同じでした。

rebootコマンドが動作しない

初期のconfiguration.nixファイルをsudo nixos-rebuild bootで適用した後、rebootshutdownコマンドが失敗することに気づきました。

[nixos@nixos:~]$ reboot
Failed to set wall message, ignoring: Transport endpoint is not connected
Failed to reboot system via logind: Transport endpoint is not connected
Failed to talk to init daemon.

[nixos@nixos:~]$ shutdown -h now
Failed to set wall message, ignoring: Transport endpoint is not connected
Failed to power off system via logind: Transport endpoint is not connected
Failed to talk to init daemon.

sudo poweroff --rebootを実行することで回避できました。

最新のPiハードウェアバージョンでは動作しない

私のconfiguration.nixファイルNixOS/nixos-hardwareリポジトリに依存しているものの、最新バージョンではないことにお気づきかもしれません。

nixosHardwareVersion = "ad1114ee372a52aa0b4934f72835bd14a212a642";
...
imports = ["${fetchTarball "https://github.com/NixOS/nixos-hardware/archive/${nixosHardwareVersion}.tar.gz" }/raspberry-pi/4"];

私はこのバグを報告しましたが、NixOSドキュメントチームのAlex Groleau氏から、現在のバージョンのNixOSではnixos-hardwareリポジトリ自体がまったく不要であることを教えてもらいました。NixOS 21.11がそれなしでインストールできるかどうかはまだ検証していないため、ひとまずそのままにしています。

新しいNixOSバージョンへのアップデートができない

23.05のNixOSディスクイメージからのインストールは失敗しましたが、NixOSを21.11から23.05へインプレースでアップグレードすれば回避できるのではないかと考えました。しかし、これも失敗しました。

上記の手順で21.11をインストールした後、次のコマンドで23.05向けにリビルドしてみました。

TARGET_RELEASE="23.05"

sudo nix-channel \
  --add "https://nixos.org/channels/nixos-${TARGET_RELEASE}" nixos && \
  sudo nix-channel --update && \
  sudo nixos-rebuild --upgrade boot && \
  sudo reboot

この手順も、23.05のディスクイメージからのインストール時と同じエラーで最終的に失敗しました。

Failed to apply '/nix/store/22l342jmwsaazvnz1zd5qq5m3b3ppsbd-rpi4-vc4-fkms-v3d-overlay-dtbo': FDT_ERR_NOTFOUND
building '/nix/store/w052x98nzkbvmxcmb8wdgmfgqrf8vzv4-smb-dummy.conf.drv'...
error: builder for '/nix/store/cgv9mmkhwy6gc4y48pfmxnjam46404kr-device-tree-overlays.drv' failed with exit code 1
error: 1 dependencies of derivation '/nix/store/5hbkqaz7ldjf5565zakjqxx4xrk5dvn9-nixos-system-pinix-23.05.1156.ad157fe26e7.drv' failed to build

原文は Michael Lynch により に公開されました。

この記事は「muse-spark-1.2-contributor」を使用して翻訳されました。