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=メニューが表示されました。正しいインストールをやり直すだけです。構成。
最も簡単な方法は、LiveCDからインストールすることです。
nixos-generate-config
はハードウェア構成を再生成しますが、configuration.nix
がすでに存在する場合は、そのままにします。また、nixos-install
は、必要な回数だけ安全に実行できるように設計されています。
つまり、NixOS用にすでに作成したファイルシステム(および構成)を使用してメインインストールガイドに従い、中断したところから続行できます。
次の点に注意してください。
systemd-boot
をインストールします。そのため、既存のEFI実行可能ファイルと並んで、新しいEFI実行可能ファイルが作成されます。nixos-install
もsystemd-boot
をデフォルトのブートマネージャーとして設定しようとします。 boot.loader.efi.canTouchEfiVariables
でconfiguration.nix
をfalseに設定することで、これを無効にできると思います完全を期すためにこの回答を追加します。理論的には、上記のchroot
ingの@ 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
は安全に複数回実行できるためです。