Raspberry Pi 4에 NixOS 설치를 시도하며 겪은 실패들
“Raspberry Pi 4에 NixOS 설치하기” 튜토리얼을 만들면서 동작하지 않는 방법을 정말 많이 겪었습니다.
같은 과정을 다시 시도하느라 시간을 낭비하지 않도록 그 내용들을 여기에 모아 두었습니다.
표준 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 파일에서 다음 줄을 삭제하면 이 버그를 우회할 수 있습니다:
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 하드웨어 버전은 동작하지 않습니다
제 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글을 무작위로 읽기