我正在尝试制定一个远程安装 Ubuntu Server 的过程。我想让另一端的人插入闪存驱动器并启动,然后我将 ssh 进入并安装。
以下是我目前制定的流程,主要基于这篇博文:
- 使用 ssh 登录安装程序系统。
- 对硬盘进行分区:
- sda、sdb 和 sdc - 三个相同的硬盘,每个硬盘都带有
- 一个 500M 的 vfat 分区用于 EFI,以及
- 其余部分分区为 RAID1(md127)。
- md127-两个分区,
- /boot 格式化为 ext4,并且
- 使用 luksFormat 加密的 crypt_root
- crypt_root
- / - 格式化为 ext4 的单个逻辑卷 (LVM) (/dev/mapper/vgroot-vroot)
sda 8:0 0 1.8T 0 disk
├─sda1 8:1 0 476M 0 part
└─sda2 8:2 0 1.8T 0 part
└─md127 9:127 0 1.8T 0 raid1
├─md127p1 259:0 0 9.3G 0 part
└─md127p2 259:1 0 1.8T 0 part
└─crypt_root 252:0 0 1.8T 0 crypt
└─vgroot-vroot 252:1 0 1.8T 0 lvm
- 挂载文件系统(mnt/、mnt/boot 和 mnt/boot/efi)
- 安装基础系统:
sudo debootstrap mantic mnt http://ca.archive.ubuntu.com/ubuntu/
- 生成 fstab:
sudo su - root -s /bin/bash -c 'genfstab -U /home/installer/mnt >> /home/installer/mnt/etc/fstab'
- 设置 mnt/etc/crypttab:
crypt_root UUID=... none luks
- 设置mnt/etc/apt/sources.list:
deb http://ca.archive.ubuntu.com/ubuntu mantic main universe
deb http://ca.archive.ubuntu.com/ubuntu mantic-security main universe
deb http://ca.archive.ubuntu.com/ubuntu mantic-updates main universe
- chroot 进入新系统:
sudo arch-chroot mnt
- 安装 ubuntu-server 和一些其他软件包,启动 ssh,添加 sudo 用户,设置网络。
- 设置 EFI:
update-initramfs -u
bootctl install
cp --dereference /boot/vmlinuz /boot/initrd.img boot/efi/
- 克隆 EFI 分区:
dd if=/dev/sda1 of=/dev/sdb1 status=progress
dd if=/dev/sda1 of=/dev/sdc1 status=progress
- 使用 efibootmgr 删除安装程序系统(闪存驱动器)并添加 sdb1 和 sdc1
- 退出 chroot,关机,移除闪存驱动器,然后启动。
在启动时,我收到一个提示,要求输入加密驱动器的密码,该密码有效,然后当系统尝试加载根分区时,它会失败并显示消息“UUID=...不存在”。错误消息中的 UUID 与闪存驱动器的根分区匹配。我检查了 /etc/fstab,它有正确的 UUID。我如何将正确的配置应用于引导加载程序?
答案1
我的解决方案是更改 EFI 设置(步骤 11):
update-initramfs -u
bootctl install
然后编辑 /boot/efi/loader/entries/....conf 处的配置文件并更改启动选项中的根 UUID(可以在 /etc/fstab 中找到正确的 UUID)
我不需要复制 vmlinuz 或 initrd.img