Failed Attempts to Install NixOS on the Raspberry Pi 4

Michael Lynch

Raspberry Pi 4へのNixOSインストール失敗例集

原文は Michael Lynch により に公開されました。 このブログを購読する

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

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

標準の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用hardwareバージョンは動かない

私の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

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

コメント