Jump to content

NixOS安裝指南

From NixOS Wiki
This page is a translated version of the page NixOS Installation Guide and the translation is 95% complete.

這份指南是對官方手冊的一份參考指南. 它講述了把NixOS作為完整作業系統的安裝過程. 為了在一個已存在的作業系統內安裝Nix, 請見Nix安裝指南.

除了講述官方手冊上的步驟, 它還提供了用於常見使用場景的已知良好指導. 當官方手冊和這份指南之間出現矛盾時, 以官方手冊中描述的情況為準.

把這份指南當作逐步操作指南使用. 出現不同選擇時, 只使用選定的部分, 並在這部分的結尾按照它的指示前進.

安裝目標

NixOS可以安裝在越來越多種類的硬件上:

  • 常規(Intel或AMD)台式機, 筆記本電腦, 或是物理可訪問的伺服器, 該頁面包含了它們
  • 單板計算機(如樹莓派)和其他ARM開發板, 見 NixOS on ARM
  • 雲伺服器和遠程伺服器, 見 NixOS friendly hosters

安裝方式

NixOS, 如同絕大部分基於Linux的作業系統一樣, 可以通過多種方式進行安裝.

  1. 傳統方式, 通過安裝媒介啟動.(會在下面講述.)
  2. 通過已存在的Linux安裝啟動媒介

製作安裝媒介

從NixOS 14.11開始, 安裝程序ISO(鏡像文件)是混合型的. 這意味着它通過CD和USB驅動器都可以啟動. 它也可以在EFI系統上啟動, 如大多數現代主板和蘋果系統. 接下來的指導將假設使用複製鏡像文件到USB驅動器的標準方式. 當使用CD或者DVD時, 刻錄到光盤的通常方式應當也適用於該iso文件.

"刻錄"到USB驅動器

首先, 下載一個NixOS ISO鏡像 或者 創建一個自定義ISO文件. 接着插入一個空間大到足夠容納鏡像的USB. 然後遵循平台的指令:

在Linux上

  1. 通過 lsblkfdisk -l 找到正確的設備. 在接下來的步驟中, 把/dev/sdX 替換為正確的設備.
  2. 複製到設備: cp nixos-xxx.iso /dev/sdX
Note: 不要使用 /dev/sdX1 或硬盤的分區, 請使用整塊硬盤 /dev/sdX

也可通過 dd if=nixos.iso of=/dev/sdX bs=4M status=progress conv=fdatasync 寫入硬盤鏡像

在macOS上

  1. 使用diskutil list找到正確的設備, 比如說diskX.
  2. 使用diskutil unmountDisk diskX取消掛載.
  3. 使用sudo dd if=path_to_nixos.iso of=/dev/diskX進行刻錄

在Windows上

  1. 下載USBwriter.
  2. 啟動USBwriter.
  3. 選擇下載的ISO文件作為'Source'
  4. 選擇USB驅動器作為'Target'
  5. 點擊'Write'
  6. 當USBWriter完成寫入操作後, 安全拔出USB驅動器

可選的安裝媒介指導

之前的方式是製作USB安裝媒介的受支持方式.

這些方式也同樣有記錄, 它們可以使用USB驅動器啟動多個發行版. 這種方式不被支持, 結果可能因人而異.

啟動(Boot)安裝媒介

因為安裝媒介是混合型的, 它通過legacy bios模式和UEFI模式都可以啟動.

無論使用哪種方式啟動安裝媒介, 你可能需要修改主板或者電腦的配置, 以允許從光盤驅動器(對於CD/DVD)或者從一個外部的USB驅動器啟動.

Legacy bios啟動

這是在沒有EFI/UEFI的機器上唯一的啟動方式.

UEFI啟動

安裝媒介的EFI引導加載程序未經過簽名, 也沒有使用經過簽名的shim來啟動. 這意味着只有禁用了Secure Boot(安全啟動)才能啟動.

連接到網絡

安裝過程幾乎肯定需要有效的網絡連接. 無網絡的安裝是可行的, 但是可用的軟件包集合是受限的.

有線網絡

對於內核提供的網絡接口, DHCP(動態主機配置協議)解析應當在shell可用之前就已經完成.

系留式(網絡共享)

如果你無法通過網線或者wifi連接到網絡, 你可以使用智能手機的網絡共享能力. 依賴於你的手機的能力, 只需要內核自帶的驅動就可以提供有效的網絡連接.

無線網絡

Network Manager安裝在圖形界面ISO文件中, 這意味着可以在命令行中使用nmtui來連接到網絡.

使用左上方的"Applications(應用)"標籤頁或者在底部的啟動欄, 打開一個終端應用, 在那裏啟動 nmtui. 這可以讓你'activate(激活)'一個(無線)連接 - 你應該可以在列表裏看到你那裏的SSID(無線網絡名稱), 除此之外你還可以添加一個新的連接. 當無線連接處於活動狀態, 並且你已經測試過了時, 一開始就啟動的安裝程序很可能還沒有檢測到新的連接. 關掉安裝程序, 再重新從屏幕底部的啟動欄打開它. 這時它應該會檢測到新的網絡連接而繼續.

在最小化安裝的ISO文件上(或者你更熟悉 wpa_supplicant ), 你也可以運行 wpa_passphrase ESSID | sudo tee /etc/wpa_supplicant.conf, 然後輸入你的密碼, 再運行systemctl restart wpa_supplicant.

Partitioning(分區操作)

為了給連續存儲進行分區, 運行 sudo fdisk /dev/diskX , 然後跟着針對DOS或(U)EFI的指示來做. 這裏有一個非常簡單的示例設置.

DOS

  • o (dos硬盤標籤)
  • n new
  • p primary (4 primary in total)
  • 1 (分區編號[1/4])
  • 2048 first sector (alignment for performance)
  • +500M last sector (引導扇區的大小)
  • rm signature (Y), if ex. => warning of overwriting existing system, could use wipefs
  • n
  • p
  • 2
  • default (填滿分區)
  • default (填滿分區)
  • w (寫入)

UEFI

  • g (gpt硬盤標籤)
  • n
  • 1 (分區編號[1/128])
  • 2048 first sector
  • +500M last sector (引導扇區的大小)
  • t
  • 1 (EFI系統)
  • n
  • 2
  • default (填滿分區)
  • default (填滿分區)
  • w (寫入)

Label partitions(給分區貼標籤)

這對於有多個分區設置的情況很有用, 使分區更容易處理

$ lsblk
$ sudo mkfs.fat -F 32 /dev/sdX1
$ sudo fatlabel /dev/sdX1 NIXBOOT
$ sudo mkfs.ext4 /dev/sdX2 -L NIXROOT
$ sudo mount /dev/disk/by-label/NIXROOT /mnt
$ sudo mkdir -p /mnt/boot
$ sudo mount /dev/disk/by-label/NIXBOOT /mnt/boot

Swap文件

$ sudo dd if=/dev/zero of=/mnt/.swapfile bs=1024 count=2097152 (2GB size)
$ sudo chmod 600 /mnt/.swapfile
$ sudo mkswap /mnt/.swapfile
$ sudo swapon /mnt/.swapfile

NixOS配置

$ sudo nixos-generate-config --root /mnt
$ cd /mnt/etc/nixos/
$ sudo vim configuration.nix

最重要的修改:

  • keyboard layout(鍵盤佈局), 也就是services.xserver.xkb.layout
  • users.users.user 和附加條目 initialPassword = "pw123";
  • networking (wifi), 如果出現問題, 請見下方的修複方法
  • boot.loader.grub.device = "/dev/sda"; #或者只用于efi的 "nodev"
  • 安裝編輯器來編輯配置文件
  • 修改硬件配置以使用標籤

具有自我說明性的NixOS選項可以在NixOS選項搜索上搜索到.

NixOS安裝

$ cd /mnt
$ sudo nixos-install

安裝完成後: 運行 passwd 來修改用戶的密碼. 如果網絡出現問題, 請嘗試下面的一種方法:

$ nixos-rebuild switch --option substitute false # 无下载
$ nixos-rebuild switch --option binary-caches "" # 无下载
  • 設置wpa_supplicant標誌來連接到wifi.

有關特定硬件的附加說明

這些是有關特定硬件問題的收集到的說明或連結.

  • Blog post how to install NixOS on a Dell 9560
  • Brand servers may require extra kernel modules be included into initrd (boot.initrd.extraKernelModules in configuration.nix) For example HP Proliant needs "hpsa" module to see the disk drive.