使用nixos-anywhere在裸机上安装NixOS系统
前言
在没有任何操作系统的裸机上部署NixOS系统,传统方式需要手动完成许多步骤。nixos-anywhere工具提供了一种自动化解决方案,可以远程完成整个安装过程。本文将详细介绍如何利用nixos-anywhere在裸机上进行NixOS系统安装。
准备工作
启动NixOS安装环境
在目标机器上,首先需要通过以下方式之一启动NixOS安装环境:
- USB启动:制作NixOS安装U盘并引导系统
- 网络启动(Netboot):通过网络引导NixOS安装程序
建议使用最新版本的NixOS安装镜像(23.05或更高版本),因为这些版本包含了nixos-anywhere所需的特定标识符。
配置SSH访问
NixOS安装环境默认会启动SSH服务,但需要设置密码才能访问:
- 在NixOS安装环境的终端中执行:
passwd
为nixos用户设置密码。
- 获取安装环境的IP地址:
ip addr
在输出中查找类似inet 192.168.x.x
的IPv4地址或inet6
开头的IPv6地址。
- 测试SSH连接:
ssh -v nixos@<IP地址>
nixos-anywhere的特殊处理机制
当nixos-anywhere检测到目标系统是NixOS安装环境时(通过检查/etc/os-release
中的VARIANT_ID=installer
标识),它会自动采取特殊处理:
- 不会尝试执行
kexec
加载新内核 - 直接使用现有安装环境进行系统部署
这种机制特别适合以下场景:
- 内存不足无法执行kexec的机器
- 硬件不支持kexec功能的设备
执行系统安装
准备好Flake配置文件后,执行以下命令进行安装:
nix run nixos-anywhere -- --flake '.#myconfig' --target-host nixos@<IP地址>
参数说明:
myconfig
:Flake中定义的配置名称nixos@<IP地址>
:目标机器的SSH连接信息
注意事项
- 确保网络连接稳定,安装过程中断可能导致系统损坏
- 对于IPv6地址,建议使用带有作用域标识的格式(如
fe80::1%eth0
) - 安装完成后,建议立即修改root密码并配置SSH密钥认证
常见问题解决
Q:无法连接到SSH服务怎么办? A:检查防火墙设置,确保22端口开放;确认密码输入正确;尝试使用IPv4地址连接。
Q:安装过程卡住不动怎么办? A:检查网络连接;增加SSH连接的详细输出(添加-vvv
参数);确认目标机器资源是否充足。
通过以上步骤,您可以在没有任何操作系统的裸机上快速、自动化地部署NixOS系统。nixos-anywhere工具大大简化了安装流程,使系统部署变得更加高效和可靠。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考