克隆树莓派系统后,如何拆分两台设备的系统身份
背景 一套已经配置好的树莓派系统被完整复制到另一张存储卡上,随后分别在两台树莓派设备上启动。这样做可以节省大量重复配置时间,尤其适合系统中已经预先配置好远程访问、网络脚本、代理服务、Web 服务和若干常驻服务的情况。 不过,完整克隆系统也会带来一个明显问题:两台设备虽然硬件不同,但系统内部身份可能完全相同。 如果不处理,后续可能出现: 因此,在两台设备正式长期运行前,需要先把系统身份拆分开。 克隆系统后需要处理哪些身份信息 克隆系统后,至少需要检查和处理以下内容: 其中,最基础的三项是: 这三项分别对应: 只改主机名是不够的。如果 machine-id 和 SSH Host Key 仍然相同,两台设备在系统层面和安全身份层面仍然带有克隆痕迹。 第一次只改主机名为什么失败 一开始使用了常规方式修改主机名: 并同步修改: 当时看起来已经成功,但重启后主机名又恢复成旧值。 这说明问题并不在 hostnamectl 本身,而是系统启动过程中还有其他组件在覆盖主机名。 进一步检查发现,这套系统启用了 cloud-init。在该类系统中,主机名可能不是只由 /etc/hostname 决定,而是还会受到启动分区中的 cloud-init 配置影响。 关键位置包括: 如果启动分区的 user-data 中仍然写着旧主机名,同时 cloud-init 没有设置为保留当前主机名,那么重启后系统可能再次把主机名改回旧值。 因此,正确做法不是只改 /etc/hostname,而是要同时处理 cloud-init 的源头配置。 正确修改第一台设备主机名 假设第一台设备的新主机名为: 在 root 用户下,可以一次性执行: 重启后确认: 目标状态是: 这样,主机名才算真正持久修改成功。 重新生成 machine-id …