Live CD에서 NixOS 설치 구성을 어떻게 다시 빌드합니까?

Live CD에서 NixOS 설치 구성을 어떻게 다시 빌드합니까?

NixOS 매뉴얼에 따라 다른 파티션에 Ubuntu에서 NixOS 18.03을 설치했습니다.2.4. 다른 Linux 배포판에서 설치"Part. 모든 일이 순조롭게 진행되고 있었는데 내가 어리석은 짓을 저질렀어요.[? ],지금 바로:

  • Ubuntu 설치를 위해 추가 GRUB 부트로더 항목을 추가하는 것을 잊었습니다 nixos-install. 설치 및 재부팅 후 나중에 고려하여 추가했습니다(물론 Ubuntu 항목은 없음).

  • 활성화된 네트워크가 없으며 configuration.nix재부팅 후 Wi-Fi에 연결하기 위한 네트워크 구성 명령도 없습니다. 22호는 nixos-rebuild switch네트워크 연결이 필요하므로 변경할 수 없습니다.

따라서 내 생각은 NixOS Live CD(17.03)에서 부팅하고 Wi-Fi에 연결한 후 어떻게든 설치된 구성을 다시 빌드할 수 있다는 것입니다.

중요한 것을 놓치고 있거나 위의 가정이 올바르지 않은 등 nix와 NixOS에 상당히 새로운 것이 있을 가능성이 매우 높습니다.


편집: 파티션 설정 방법과 NixOS를 성공적으로 설치하기 전에 시도한 작업을 포함하는 것을 잊었습니다.

파티션(Ubuntu의 마운트 지점):

sda
├─sda1         ntfs     Recovery              # some Win7 artifact
├─sda2         vfat               /boot/efi
├─sda3         vfat     NIXBOOT               # boot partition (esp, boot)
├─sda4         ext4     onyx                  # NixOS data
├─sda5         swap                           # Ubuntu swap
│ └─cryptswap1 swap               [SWAP]
├─sda6         ext4                           # (Arch install)
├─sda7         ext4               /           # Ubuntu install
├─sda8         swap     nixswap   
└─sda9         ext4     home      

우분투 부팅 파티션을 엉망으로 만들고 싶지 않아서 다른 파티션( /dev/sda3)을 만들었습니다. 내 계획은 나중에 Ubuntu의 NixOS용 GRUB에 메뉴 항목을 포함하는 것이지만 지금은 GRUB 콘솔( set root=..., linux ..., initrd ..., boot) 에서 NixOS를 설치, 재부팅 및 테스트 부팅합니다.

sudo PATH="$PATH" NIX_PATH="$NIX_PATH" `which nixos-install` --root /mnt --no-bootloader

재부팅한 후 NixOS 부팅 파티션에 아무것도 표시되지 않습니다. Ubuntu로 돌아가면 설치 중에 설치되지 않았습니다 --no-bootloader. Ubuntu 항목을 추가하고 다시 시작해야 합니다. (그 후 나는 GRUB systemd-boot과 GRUB이 완전히 다른 두 가지라는 것을 발견했습니다...)


업데이트: BIOS에서 Ubuntu 부팅 파티션을 대체 부팅 장치로 선택하여 Ubuntu로 돌아갈 수 있으며 일반적인 GRUB 메뉴가 나타납니다. 올바른 구성으로 다시 설치할 수도 있습니다.

답변1

가장 쉬운 방법은 LiveCD에서 설치하는 것입니다.

nixos-generate-config하드웨어 구성이 다시 생성되지만 configuration.nix이미 존재하는 것으로 확인되면 유지됩니다. nixos-install필요한 횟수만큼 안전하게 수행할 수 있도록 설계되었습니다 .

이는 NixOS용으로 이미 생성한 파일 시스템(및 구성)을 사용하여 기본 설치 가이드를 따른 다음 중단한 부분부터 계속할 수 있음을 의미합니다.

참고할 사항:

  • NixOS는 systemd-bootEFI 시스템에 기본적으로 설치됩니다. 따라서 기존 EFI 실행 파일 외에 새로운 EFI 실행 파일이 생성됩니다.
  • nixos-installsystemd-boot또한 기본 부팅 관리자로 설정하려고 합니다 . boot.loader.efi.canTouchEfiVariablesfalse로 설정하면 비활성화 할 수 있다고 생각합니다.configuration.nix
  • 예를 들어 네트워크 설정, 사용자 설정, 텍스트 편집기 설치 등의 기본 구성으로 NixOS를 설치하는 것이 좋습니다. 그 이유는 LiveCD가 RAM에 있는 Nix 저장소를 사용하기 때문입니다. 시스템은 먼저 이 RAM 지원 Nix 스토리지에 설치된 다음 디스크에 복사됩니다. 설치하고 부팅할 수 있게 되면 나머지 구성을 안전하게 진행할 수 있습니다.

답변2

완전성을 위해 이 답변을 추가합니다. 이론적으로는 @사나오위안위의 ing의 제안 chroot은 정답이며 command 를 통해 얻을 수 있습니다 nixos-enter.

Ubuntu에서 다음 위치에 NixOS 파티션이 설치되었습니다 /mnt.

$ sudo $(which nixos-enter)
...
[root@nixos:/]# nixos-rebuild switch

실제로 이것은 네트워크가 작동하지 않기 때문에 작동하지 않으며(아마 configuration.nix처음에 올바른 설정이 부족했기 때문일 것입니다) 많은 오류 메시지가 나타납니다.

warning: Nix search path entry '/nix/var/nix/profiles/per-user/root/channels/nixos/nixpkgs' does not exist, ignoring
warning: Nix search path entry '/nix/var/nix/profiles/per-user/root/channels' does not exist, ignoring
error: file 'nixpkgs/nixos' was not found in the Nix search path (add it using $NIX_PATH or -I), at (string):1:13
System has not been booted with systemd as init system (PID 1). Can't operate.
building Nix...
warning: Nix search path entry '/nix/var/nix/profiles/per-user/root/channels/nixos/nixpkgs' does not exist, ignoring
warning: Nix search path entry '/nix/var/nix/profiles/per-user/root/channels' does not exist, ignoring
error: file 'nixpkgs/nixos' was not found in the Nix search path (add it using $NIX_PATH or -I)
warning: Nix search path entry '/nix/var/nix/profiles/per-user/root/channels/nixos/nixpkgs' does not exist, ignoring
warning: Nix search path entry '/nix/var/nix/profiles/per-user/root/channels' does not exist, ignoring
error: file 'nixpkgs' was not found in the Nix search path (add it using $NIX_PATH or -I)
warning: unable to download 'https://cache.nixos.org/nix-cache-info': Couldn't resolve host name (6); retrying in 293 ms
^Cwarning: download of 'https://cache.nixos.org/nix-cache-info' was interrupted
don't know how to build these paths:
  /nix/store/z6avpvg24f6d1br2sr6qlphsq3h4d91v-nix-2.0.2
error: interrupted by the user
warning: don't know how to get latest Nix

결국 @엠마누엘 로사의 대답은 정확합니다. 특히 (그가 지적했듯이) nixos-install여러 번 안전하게 수행할 수 있기 때문입니다.

관련 정보