Raspberry Pi 4へのNixOSインストール失敗例集
原文は Michael Lynch により に公開されました。 このブログを購読する
チュートリアル「Installing NixOS on Raspberry Pi 4」を作成する過程で、うまくいかない方法に何度もぶつかった。
同じ手順を試して時間を無駄にする人が出ないよう、ここにまとめておく。
標準のNixOS aarch64イメージは動かない
NixOSのダウンロードページを確認したところ、64ビットARM向けのイメージが提供されていた。

NixOSは64ビットARMシステム向けのブート可能なイメージを提供している
「素晴らしい!」と心の中で思った。なにしろPi 4は64ビットARM CPUを搭載しているからだ。ところが、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で適用した後、rebootやshutdownコマンドが失敗することに気づいた。
[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記事をランダムに読む
コメント
ログインしてコメントする