NixOS安裝指南
本指南是官方手冊 [1] 的配套指南。它描述了如何將 NixOS 安裝為完整的作業系統。有關在現有作業系統中安裝 Nix 的說明,請參閱 Nix 安裝指南。
除了涵蓋官方手冊中的步驟外,它還提供了針對常見用例的已知有效操作。當官方手冊與本指南之間存在差異時,支持用例以手冊中描述的為準。
安裝目標
NixOS可以安裝在越來越多種類的硬件上:
- 常規(Intel或AMD)台式機, 筆記本電腦, 或是物理可訪問的伺服器, 該頁面包含了它們
- 單板計算機(如樹莓派)和其他ARM開發板, 見 NixOS on ARM
- 雲伺服器和遠程伺服器, 見 NixOS friendly hosters
安裝方式
NixOS, 如同絕大部分基於Linux的作業系統一樣, 可以通過多種方式進行安裝.
- 傳統方式, 通過安裝媒介啟動.(會在下面講述.)
- 通過已存在的Linux安裝啟動媒介
製作安裝媒介
從NixOS 14.11開始, 安裝程序ISO(鏡像文件)是混合型的. 這意味着它通過CD和USB驅動器都可以啟動. 它也可以在EFI系統上啟動, 如大多數現代主板和蘋果系統. 接下來的指導將假設使用複製鏡像文件到USB驅動器的標準方式. 當使用CD或者DVD時, 刻錄到光盤的通常方式應當也適用於該iso文件.
"刻錄"到USB驅動器
首先, 下載一個NixOS ISO鏡像 或者 創建一個自定義ISO文件. 接着插入一個空間大到足夠容納鏡像的USB. 然後遵循平台的指令:
在Linux上
- 通過
lsblk
或fdisk -l
找到正確的設備. 在接下來的步驟中, 把/dev/sdX
替換為正確的設備. - 複製到設備:
cp nixos-xxx.iso /dev/sdX
也可通過 dd if=nixos.iso of=/dev/sdX bs=4M status=progress conv=fdatasync
寫入硬盤鏡像
在macOS上
- 使用
diskutil list
找到正確的設備, 比如說diskX
. - 使用
diskutil unmountDisk diskX
取消掛載. - 使用
sudo dd if=path_to_nixos.iso of=/dev/diskX
進行刻錄
rdiskX
而不是diskX
可以大幅改變速度. 你可以在另一個終端里使用iostat 2
檢查寫入速度.
在Windows上
- 下載USBwriter.
- 啟動USBwriter.
- 選擇下載的ISO文件作為'Source'
- 選擇USB驅動器作為'Target'
- 點擊'Write'
- 當USBWriter完成寫入操作後, 安全拔出USB驅動器
可選的安裝媒介指導
之前的方式是製作USB安裝媒介的受支持方式.
這些方式也同樣有記錄, 它們可以使用USB驅動器啟動多個發行版. 這種方式不被支持, 結果可能因人而異.
啟動(Boot)安裝媒介
由於安裝鏡像為混合鏡像,因此可在傳統 BIOS 模式或 UEFI 模式下啟動。
無論使用哪種方式啟動安裝媒介, 你可能需要修改主板或者電腦的配置, 以允許從光盤驅動器(對於CD/DVD)或者從一個外部的USB驅動器啟動.
Legacy bios啟動
這是在沒有EFI/UEFI的機器上唯一的啟動方式.
UEFI啟動
安裝媒介的EFI引導加載程序未經過簽名, 也沒有使用經過簽名的shim來啟動. 這意味着只有禁用了Secure Boot(安全啟動)才能啟動.
連接到網絡
安裝過程幾乎肯定需要有效的網絡連接. 無網絡的安裝是可行的, 但是可用的軟件包集合是受限的.
有線網絡
對於內核提供的網絡接口, DHCP(動態主機配置協議)解析應當在shell可用之前就已經完成.
有線連接(網絡共享)
如果你無法通過網線或者wifi連接到網絡, 你可以使用智能手機的網絡共享能力. 依賴於你的手機的能力, 只需要內核自帶的驅動就可以提供有效的網絡連接.
無線網絡
NetworkManager 安裝在圖形化 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
並按照 MBR 或 (U)EFI 的說明進行操作。要確定您使用的啟動模式,請運行:
$ [ -d /sys/firmware/efi/efivars ] && echo "UEFI" || echo "Legacy"
這裏給出了一個非常簡單的示例設置。
傳統啟動(Legacy Boot, MBR)
- 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 (寫入)
格式化分區
以下示例使用 ext4 文件系統格式。如果您希望使用其他文件系統格式,例如 Btrfs 或 ZFS:
這對於有多個分區設置的情況很有用, 使分區更容易處理
$ lsblk # lists current system block devices
# mkfs.fat -F 32 -n boot /dev/sdX1
# mkfs.ext4 /dev/sdX2 -L nixos
# mount /dev/disk/by-label/nixos /mnt
# mkdir -p /mnt/boot
# mount /dev/disk/by-label/boot /mnt/boot
NixOS 配置
NixOS 通過 聲明式配置 文件進行配置。要生成默認配置文件,請運行 Special:MyLanguage/nixos-generate-config:
# nixos-generate-config --root /mnt
# nano /mnt/etc/nixos/configuration.nix
有關使用系統配置的信息,請參閱 NixOS 系統配置。有關特定於桌面的配置,請參閱 桌面設備上的 NixOS。
最重要的變化:
- 鍵盤布局(keyboard layout), 也就是
services.xserver.xkb.layout
- 網絡 (wifi), 若出現問題, 請參閱下方的修複方法
- 安裝 編輯器 來編輯配置
具有自我說明性的NixOS選項可以在NixOS選項搜索上搜索到.
交換文件
有關配置交換空間的更多方法,請參閱 Swap。以下示例演示了如何創建和啟用一個 交換文件:
swapDevices = [{
device = "/var/lib/swapfile";
size = 16*1024; # 16 GB
}];
引導加載程序
NixOS 支持多種 引導加載程序,例如 GNU GRUB 和 Systemd/boot。
Systemd-boot 是推薦的引導加載程序。以下示例演示了如何在配置中啟用 systemd-boot:
boot.loader.systemd-boot.enable = true;
您可能還希望配置 安全啟動。
用戶
有關創建和管理用戶的信息,請參閱 用戶管理 和 NixOS Manual: Chapter - Package Management。請參閱以下示例:
users.users.alice = {
isNormalUser = true;
initialPassword = "pw123";
};
安裝 NixOS
# cd /mnt
# nixos-install
安裝後:運行passwd
更改用戶密碼。
如果網絡出現問題, 請嘗試下面的一種方法:
# nixos-rebuild switch --option substitute false # no downloads
# nixos-rebuild switch --option binary-caches "" # no downloads
- 設置 wpa_supplicant 標誌來連接到 wifi
有關特定硬件的附加說明
這些是有關特定硬件問題的收集到的說明或連結.
- 博客文章:如何在 Dell 9560 上安裝 NixOS
- 品牌伺服器可能需要在 initrd 中包含額外的內核模塊(在 configuration.nix 中配置
boot.initrd.extraKernelModules
)。例如,HP Proliant 需要「hpsa」模塊才能訪問磁盤驅動器。