web-dev-qa-db-ja.com

ライブCDからNixOSインストールの構成を再構築する方法は?

NixOSマニュアルの「 2.4。別のLinuxディストリビューションからのインストール 」セクションに従って、UbuntuからNixOS 18.03を別のパーティションにインストールしました。すべてがうまくいきましたが、私はいくつかの馬鹿げたことをしました [?] 、すなわち:

  • nixos-installの前に、Ubuntuインストール用の追加のGRUBブートローダーエントリを追加するのを忘れていました。インストール後に後付けとして追加し、再起動しました(もちろん、Ubuntuエントリはありません)。

  • configuration.nixでネットワークを有効にしなかったため、再起動後にwifiに接続するためのネットワーク設定コマンドが表示されなくなりました。キャッチ22は、nixos-rebuild switchはネットワーク接続を必要とするため、変更を確定できませんでした。

だから私の考えでは、NixOS Live CD(17.03)から起動し、wifiに接続して、インストールの構成をなんとか再構築できると思いました。

重要なものが欠けていたり、上記の仮定が間違っていたりする可能性は十分にあります。 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      

Ubuntuブートパーティションを台無しにしたくなかったので、別のパーティション(/dev/sda3)を作成しました。私の計画は、UbuntuのGRUB=)にメニューエントリを後で含めることでしたが、今のところGRUB console(set root=...linux ...initrd ...boot

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

再起動後、NixOSブートパーティションに何も表示されませんでした。 --no-bootloaderなしでインストールされたUbunutに戻って、Ubuntuのエントリを追加して再起動することを忘れないでください。 (systemd-bootとGRUBは2つの完全に異なるものであることに気付いたのは、この後のことです...)


更新:BIOSで代替ブートデバイスとしてUbuntuブートパーティションを選択することでUbuntuに戻ることができ、通常のGRUB=メニューが表示されました。正しいインストールをやり直すだけです。構成。

4
toraritte

最も簡単な方法は、LiveCDからインストールすることです。

nixos-generate-configはハードウェア構成を再生成しますが、configuration.nixがすでに存在する場合は、そのままにします。また、nixos-installは、必要な回数だけ安全に実行できるように設計されています。

つまり、NixOS用にすでに作成したファイルシステム(および構成)を使用してメインインストールガイドに従い、中断したところから続行できます。

次の点に注意してください。

  • NixOSはEFIシステムにデフォルトでsystemd-bootをインストールします。そのため、既存のEFI実行可能ファイルと並んで、新しいEFI実行可能ファイルが作成されます。
  • nixos-installsystemd-bootをデフォルトのブートマネージャーとして設定しようとします。 boot.loader.efi.canTouchEfiVariablesconfiguration.nixをfalseに設定することで、これを無効にできると思います
  • 基本的な設定でNixOSをインストールすることをお勧めします。たとえば、ネットワーク、ユーザーをセットアップし、テキストエディターをインストールしますが、それ以外はあまりありません。その理由は、LiveCDがRAMに保持されているNixストアを使用するためです。システムは、最初にこのRAM付きのNixストアにインストールされ、次にディスクにコピーされます。インストールして起動可能にしたら、残りの設定を安全に進めることができます。
3
Emmanuel Rosa

完全を期すためにこの回答を追加します。理論的には、上記のchrootingの@ Mioriin の提案が正しい回答となり、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

最後に、@ Emmanuel Rosa の答えは正解です。特に(彼が指摘しているように)nixos-installは安全に複数回実行できるためです。

1
toraritte