NixOS安装笔记
@ wgjak47 | 星期三,十二月 26 日,2018 年 | 3 分钟阅读 | 更新于 星期三,十二月 26 日,2018 年

最近老笔记本跑不动Gentoo了,换一个NixOS玩玩

前情提要

最近逛zhihu,看到有人推荐这个系统,加上之前也有人提到过,所以就搞在闲置的笔记本上玩一下。注意,本篇不适合Linux 0基础的人使用,NixOS同样如此。

安装

下载镜像并写入U盘

下载地址, 注意这里不推荐用unetbootin,不知道为啥用这个提取ISO会引导失败。 推荐使用官方手册里面使用dd命令直接写入, 写入前用lsblk确认一下别写错了:

dd if=path-to-iso of=/dev/sdX

调整BIOS启动顺序

这个各个品牌的电脑不太一样。一般开机的时候狂点del或者F12会进入一个界面,看到选择启动设备的项目,老一点的电脑可能要进入BIOS里面设置。 然后选择U盘启动

进入LiveDVD 图形界面

U盘启动成功之后,点击第一项,然后会进入root用户操作命令行,由于LiveDVD的root没有密码,所以就自动登录了。 如果要进入图形界面,可以按照提示输入:systemctl start display-manager进入自带的kde界面,可以看到LiveDVD系统自带了离线的官方手册, gparted和Firefox(但是无线网卡驱动有问题,f××k realtek

分区

一般新电脑都使用UEFI启动,而UEFI启动就需要一个额外FAT32的EFI分区。可以按照官方文档使用parted命令进行分区,注意root分区8G对于nixos有点小,这里可以按照硬件情况把root分区调大一些:

Create a GPT partition table.
# parted /dev/sda -- mklabel gpt
Add the root partition. This will fill the disk except for the end part, where the swap will live, and the space left in front (512MiB) which will be used by the boot partition.
# parted /dev/sda -- mkpart primary 512MiB -8GiB
Next, add a swap partition. The size required will vary according to needs, here a 8GiB one is created.
# parted /dev/sda -- mkpart primary linux-swap -8GiB 100%
Finally, the boot partition. NixOS by default uses the ESP (EFI system partition) as its /boot partition. It uses the initially reserved 512MiB at the start of the disk.
# parted /dev/sda -- mkpart ESP fat32 1MiB 512MiB
# parted /dev/sda -- set 3 boot on

然后再对分区进行格式化,官方手册对root分区使用的是ext4分区格式:

mkfs.ext4 -L nixos /dev/sda1 # root分区
mkswap -L swap /dev/sda2 # swap分区
mkfs.fat -F 32 -n boot /dev/sda3 # EFI使用FAT32分区

觉得麻烦的也可以用LiveDVD提供的gparted工具

挂载分区

mount /dev/disk/by-label/nixos /mnt
mkdir -p /mnt/boot
mount /dev/disk/by-label/boot /mnt/boot
mount /dev/disk/by-label/home /mnt/home # 我对home单独分了一个区

注意如果分区的时候没有label,/dev/disk/by-label/下是找不到对于分区的,请使用/dev/sdx方式挂载

创建swapfile

fallocate -l 16G /mnt/swapfile
dd if=/dev/zero of=/mnt/swapfile bs=1024 count=16777216
mkswap /mnt/swapfile
swapon /mnt/swapfile # 启用swap,方便配置生成工具检测到swapflie

配置生成

nixos是一种配置声明式的Linux发行版,LiveDVD提供了配置生成命令,方便用户。 nixos不像gentoo/arch等需要chroot(也不能简单chroot),直接执行

nixos-generate-config --root /mnt

就可以生成/mnt/etc/nixos/configuration.nix/mnt/etc/nixos/hardware-configuration.nix 两个配置,前者是系统配置,后者是硬件配置。一般而言硬件配置不用修改,系统已经帮你检测好了,而系统配置部份需要用户取消一些注释。 我的样例文件如下:

TODO

安装nixos

直接执行一下命令:

nixos-install # network needed

安装完成后,会要求你输入root的password,否则你无法登录你的新系统,之后重启。

设置普通用户密码

重启进入装好的系统,以root身份登录,使用passwd命令给普通用户设置密码:

passwd wgjak47

然后运行

systemctl start display-manager

就可以看到登录界面了。如果希望开机直接看到sddm而不是黑乎乎的命令行,可以使用

systemctl enable display-manager

后记

nixos安装比arch/Gentoo要简单不少,但是使用起来需要更深入的了解nix这个东西的机制。后面有时间要研究一下。