Failed Attempts to Install NixOS on the Raspberry Pi 4

Michael Lynch

Raspberry Pi 4에 NixOS 설치를 시도하며 겪은 실패들

원문은 Michael Lynch님이 에 게재했습니다. 이 블로그 구독하기

튜토리얼 “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는 이를 지원하지 않는다.

최신 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 파일에서 다음 줄을 삭제하면 이 버그를 우회할 수 있다:

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

이 글은 muse-spark-1.2-contributor 모델을 사용해 번역했습니다.

댓글