<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>NixOS on Luca's Blog</title><link>https://wlj.me/tags/nixos/</link><description>Recent content in NixOS on Luca's Blog</description><generator>Hugo</generator><language>zh</language><managingEditor>Luca Wu</managingEditor><webMaster>Luca Wu</webMaster><lastBuildDate>Tue, 25 Aug 2026 17:18:44 +0800</lastBuildDate><atom:link href="https://wlj.me/tags/nixos/index.xml" rel="self" type="application/rss+xml"/><item><title>nixos-anywhere：一条命令把远程 Linux 装成 NixOS</title><link>https://wlj.me/posts/nixos-anywhere/</link><pubDate>Tue, 25 Aug 2026 17:18:44 +0800</pubDate><author>Luca Wu</author><guid>https://wlj.me/posts/nixos-anywhere/</guid><description>&lt;p>装 NixOS 通常要做安装 U 盘，进安装环境，手动分区，手动装。云主机更麻烦，很多厂商没有 NixOS 镜像，只给 Debian、Ubuntu。&lt;/p>
&lt;p>nixos-anywhere 解决的就是这件事。只要一台机器能 SSH 登录，它就能远程把机器上的 Linux 换成 NixOS。不用 U 盘，不用控制台，不用厂商支持。&lt;/p>
&lt;h2 id="它怎么做到的">它怎么做到的&lt;/h2>
&lt;p>靠的是 Linux 的 kexec。kexec 能跳过硬件重启，直接把内存里正在跑的内核换成另一个。nixos-anywhere 用它做四步：&lt;/p>
&lt;ol>
&lt;li>SSH 登进目标机器，下载一个很小的 NixOS 安装环境，用 kexec 切换过去。原来的系统被踢出内存，机器现在跑在一个纯内存的 NixOS 安装盘里。&lt;/li>
&lt;li>按你写的分区文件给硬盘分区、格式化、挂载。这一步交给 disko 做，disko 是一个用配置文件描述磁盘布局的工具。&lt;/li>
&lt;li>把你定义好的 NixOS 系统传到机器上，装进硬盘。&lt;/li>
&lt;li>重启。机器起来就是 NixOS。&lt;/li>
&lt;/ol>
&lt;h2 id="要准备什么">要准备什么&lt;/h2>
&lt;p>本机：&lt;/p>
&lt;ul>
&lt;li>装了 Nix，开了 flakes&lt;/li>
&lt;li>一个 flake，里面定义了目标机器的 NixOS 配置&lt;/li>
&lt;li>一个 disko 分区文件&lt;/li>
&lt;/ul>
&lt;p>目标机器：&lt;/p>
&lt;ul>
&lt;li>跑着任意 Linux，x86_64 或 aarch64&lt;/li>
&lt;li>能用 root 或免密 sudo 的用户 SSH 登录&lt;/li>
&lt;li>内存 1GB 以上，安装环境要在内存里跑&lt;/li>
&lt;li>支持 kexec。多数虚拟机和物理机都支持，OpenVZ、LXC 这类容器不支持&lt;/li>
&lt;/ul>
&lt;h2 id="一个完整的例子">一个完整的例子&lt;/h2>
&lt;p>flake.nix：&lt;/p></description></item></channel></rss>