Jump to content

NixOS Installation Guide/zh: Difference between revisions

From NixOS Wiki
Mayer (talk | contribs)
No edit summary
Mayer (talk | contribs)
Created page with "* 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 (写入)"
Tags: Mobile edit Mobile web edit
 
(29 intermediate revisions by the same user not shown)
Line 25: Line 25:
== 制作安装媒介 ==
== 制作安装媒介 ==


从NixOS 14.11开始, 安装程序ISO(镜像文件)是混合型的. 这意味着它通过CD和USB驱动器都可以启动. 它也可以在EFI系统上启动, 如大多数现代主板和苹果系统. 接下来的指导将假设复制镜像文件到USB驱动器的标准方式. 当使用CD或者DVD时, 刻录到光盘的通常方式应当也适用于该iso文件.
从NixOS 14.11开始, 安装程序ISO(镜像文件)是混合型的. 这意味着它通过CD和USB驱动器都可以启动. 它也可以在EFI系统上启动, 如大多数现代主板和苹果系统. 接下来的指导将假设使用复制镜像文件到USB驱动器的标准方式. 当使用CD或者DVD时, 刻录到光盘的通常方式应当也适用于该iso文件.


<span id="&quot;Burning&quot;_to_USB_drive"></span>
<span id="&quot;Burning&quot;_to_USB_drive"></span>
Line 38: Line 38:
# 复制到设备: <code>cp nixos-xxx.iso <em>/dev/sdX</em></code>
# 复制到设备: <code>cp nixos-xxx.iso <em>/dev/sdX</em></code>


{{note|不要使用 /dev/sdX1 或硬盘的分区, 使用整块硬盘 /dev/sdX}}
{{note|不要使用 /dev/sdX1 或硬盘的分区, 使用整块硬盘 /dev/sdX}}


也可通过 <code>dd if=nixos.iso of=/dev/sdX bs=4M status=progress conv=fdatasync</code> 写入硬盘镜像
也可通过 <code>dd if=nixos.iso of=/dev/sdX bs=4M status=progress conv=fdatasync</code> 写入硬盘镜像
Line 45: Line 45:
==== 在macOS上 ====
==== 在macOS上 ====


<div lang="en" dir="ltr" class="mw-content-ltr">
# 使用<code>diskutil list</code>找到正确的设备, 比如说<code><i>diskX</i></code>.
# Find the right device with <code>diskutil list</code>, let's say <code><i>diskX</i></code>.
# 使用<code>diskutil unmountDisk <i>diskX</i></code>取消挂载.
# Unmount with <code>diskutil unmountDisk <i>diskX</i></code>.
# 使用<code>sudo dd if=<b>path_to_nixos.iso</b> of=/dev/<i>diskX</i></code>进行刻录
# Burn with: <code>sudo dd if=<b>path_to_nixos.iso</b> of=/dev/<i>diskX</i></code>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
{{tip|使用<code>rdiskX</code>而不是<code>diskX</code>可以大幅改变速度. 你可以在另一个终端里使用<code>iostat 2</code>检查写入速度.}}
{{tip|Using <code>rdiskX</code> instead of <code>diskX</code> can makes a large speed difference. You can check the write speed with <code>iostat 2</code> in another terminal.}}
</div>


<span id="From_Windows"></span>
<span id="From_Windows"></span>
==== 在Windows上====
==== 在Windows上====


<div lang="en" dir="ltr" class="mw-content-ltr">
# 下载USBwriter.
# Download [http://sourceforge.net/projects/usbwriter/ USBwriter].
# 启动USBwriter.
# Start USBwriter.
# 选择下载的ISO文件作为'Source'
# Choose the downloaded ISO as 'Source'
# 选择USB驱动器作为'Target'
# Choose the USB drive as 'Target'
# 点击'Write'
# Click 'Write'
# 当USBWriter完成写入操作后, 安全拔出USB驱动器
# When USBwriter has finished writing, safely unplug the USB drive.
</div>


<span id="Alternative_installation_media_instructions"></span>
<span id="Alternative_installation_media_instructions"></span>
Line 85: Line 79:
因为安装媒介是混合型的, 它通过legacy bios模式和UEFI模式都可以启动.
因为安装媒介是混合型的, 它通过legacy bios模式和UEFI模式都可以启动.


无论使用哪种方式启动安装媒介, 你可能需要修改主板或者电脑的配置, 以允许从光盘驱动器(对于CD/DVD)或者一个外部的USB驱动器启动.
无论使用哪种方式启动安装媒介, 你可能需要修改主板或者电脑的配置, 以允许从光盘驱动器(对于CD/DVD)或者一个外部的USB驱动器启动.


<span id="Legacy_bios_boot"></span>
<span id="Legacy_bios_boot"></span>
Line 115: Line 109:
=== 无线网络 ===
=== 无线网络 ===


Network Manager安装在图形界面ISO文件中, 意味着可以在命令行中使用<code>nmtui</code>来连接到网络.
Network Manager安装在图形界面ISO文件中, 意味着可以在命令行中使用<code>nmtui</code>来连接到网络.


<div lang="en" dir="ltr" class="mw-content-ltr">
使用左上方的"Applications(应用)"标签页或者在底部的启动栏, 打开一个终端应用, 在那里启动 <code>nmtui</code>. 这可以让你'activate(激活)'一个(无线)连接 - 你应该可以在列表里看到你那里的SSID(无线网络名称), 除此之外你还可以添加一个新的连接. 当无线连接处于活动状态, 并且你已经测试过了时, 一开始就启动的安装程序很可能还没有检测到新的连接. 关掉安装程序, 再重新从屏幕底部的启动栏打开它. 这时它应该会检测到新的网络连接而继续.
Using the "Applications" tab at top
left or the launcher bar at bottom, choose a terminal application and from there launch <code>nmtui</code>. This will allow you to 'activate' a (wireless) connection - your local SSIDs should be visible in the list, else you can add a new connection. When the wireless connection is active and you have tested it, it is likely the install app which launched on startup has not detected the new connection. Close down the install app, and reopen it from the launcher bar at the bottom of the screen. This should then find the new connection and proceed.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
在最小化安装的ISO文件上(或者你更熟悉 <code>wpa_supplicant</code> ), 你也可以运行 <code>wpa_passphrase ESSID | sudo tee /etc/wpa_supplicant.conf</code>, 然后输入你的密码, 再运行<code>systemctl restart wpa_supplicant</code>.
On the minimal ISO, or if you are more familiar with <code>wpa_supplicant</code> then you can also run <code>wpa_passphrase ESSID | sudo tee /etc/wpa_supplicant.conf</code>, then enter your password and <code>systemctl restart wpa_supplicant</code>.
</div>


<span id="Partitioning"></span>
<span id="Partitioning"></span>
== Partitioning(分区) ==
== Partitioning(分区操作) ==


为了给连续存储进行分区, 运行 <code>sudo fdisk /dev/diskX</code> , 然后跟着针对DOS或(U)EFI的指示来做.
为了给连续存储进行分区, 运行 <code>sudo fdisk /dev/diskX</code> , 然后跟着针对DOS或(U)EFI的指示来做.
Line 134: Line 123:
=== DOS ===
=== DOS ===


<div lang="en" dir="ltr" class="mw-content-ltr">
* o (dos硬盘标签)
* o (dos disk label)
* n new
* n new
* p primary (4 primary in total)
* p primary (4 primary in total)
* 1 (partition number [1/4])
* 1 (分区编号[1/4])
* 2048 first sector (alignment for performance)
* 2048 first sector (alignment for performance)
* +500M last sector (boot sector size)
* +500M last sector (引导扇区的大小)
* rm signature (Y), if ex. => warning of overwriting existing system, could use wipefs
* rm signature (Y), if ex. => warning of overwriting existing system, could use wipefs
* n
* n
* p
* p
* 2
* 2
* default (fill up partition)
* default (填满分区)
* default (fill up partition)
* default (填满分区)
* w (write)
* w (写入)
</div>


=== UEFI ===
=== UEFI ===
Line 168: Line 155:
== Label partitions(给分区贴标签) ==
== Label partitions(给分区贴标签) ==


<div lang="en" dir="ltr" class="mw-content-ltr">
这对于有多个分区设置的情况很有用, 使分区更容易处理<syntaxhighlight lang="console">
This is useful for having multiple setups and makes partitions easier to handle<syntaxhighlight lang="console">
$ lsblk
$ lsblk
$ sudo mkfs.fat -F 32 /dev/sdX1
$ sudo mkfs.fat -F 32 /dev/sdX1
Line 178: Line 164:
$ sudo mount /dev/disk/by-label/NIXBOOT /mnt/boot
$ sudo mount /dev/disk/by-label/NIXBOOT /mnt/boot
</syntaxhighlight>
</syntaxhighlight>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
== Swap文件 ==
== Swap file ==
<syntaxhighlight lang="console">
<syntaxhighlight lang="console">
$ sudo dd if=/dev/zero of=/mnt/.swapfile bs=1024 count=2097152 (2GB size)
$ sudo dd if=/dev/zero of=/mnt/.swapfile bs=1024 count=2097152 (2GB size)
Line 188: Line 172:
$ sudo swapon /mnt/.swapfile
$ sudo swapon /mnt/.swapfile
</syntaxhighlight>
</syntaxhighlight>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
== NixOS配置 ==
== NixOS config ==
<syntaxhighlight lang="console">
<syntaxhighlight lang="console">
$ sudo nixos-generate-config --root /mnt
$ sudo nixos-generate-config --root /mnt
$ cd /mnt/etc/nixos/
$ cd /mnt/etc/nixos/
$ sudo vim configuration.nix
$ sudo vim configuration.nix
</syntaxhighlight>Most essential changes:
</syntaxhighlight>最重要的修改:
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
* keyboard layout(键盘布局), 也就是<code>[[Keyboard Layout Customization|services.xserver.xkb.layout]]</code>  
* keyboard layout, ie <code>[[Keyboard Layout Customization|services.xserver.xkb.layout]]</code>
* <code>users.users.user</code> 和附加条目 <code>initialPassword = "pw123";</code>
* <code>users.users.user</code> with adding entry <code>initialPassword = "pw123";</code>
* [[networking]] (wifi), 如果出现问题, 请见下方的修复方法
* [[networking]] (wifi), see below for fix if it breaks
* <code>boot.loader.grub.device = "/dev/sda"; #或者只用于efi的 "nodev" </code>
* <code>boot.loader.grub.device = "/dev/sda"; #or "nodev" for efi only</code>
* 安装编辑器来编辑配置文件
* install editor to edit the configuration
* 修改硬件配置以使用标签
* change hardware config to use labels
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
具有自我说明性的NixOS选项可以在[https://search.nixos.org/options NixOS选项搜索]上搜索到.
The self-documenting NixOS options can be searched with [https://search.nixos.org/options NixOS options search].
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
== NixOS安装 ==
== NixOS installation ==
<syntaxhighlight lang="console">
<syntaxhighlight lang="console">
$ cd /mnt
$ cd /mnt
$ sudo nixos-install
$ sudo nixos-install
</syntaxhighlight>after installation: Run <code>passwd</code> to change user password.
</syntaxhighlight>安装完成后: 运行 <code>passwd</code> 来修改用户的密码.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
如果网络出现问题, 请尝试下面的一种方法:<syntaxhighlight lang="console">
if internet broke/breaks, try one of the following:<syntaxhighlight lang="console">
$ nixos-rebuild switch --option substitute false # 无下载
$ nixos-rebuild switch --option substitute false # no downloads
$ nixos-rebuild switch --option binary-caches "" # 无下载
$ nixos-rebuild switch --option binary-caches "" # no downloads
</syntaxhighlight>
</syntaxhighlight>
* wpa_supplicant flags to connect to wifi
* 设置wpa_supplicant标志来连接到wifi.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<hr />
<hr />
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Additional_notes_for_specific_hardware"></span>
== Additional notes for specific hardware ==
== 有关特定硬件的附加说明 ==
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
这些是有关特定硬件问题的收集到的说明或链接.
These are collected notes or links for specific hardware issues.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<div lang="en" dir="ltr" class="mw-content-ltr">

Latest revision as of 11:05, 25 February 2025

这份指南是对官方手册的一份参考指南. 它讲述了把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.