Ubuntu 22.04 Desktop LTS无人值守安装及OEM安装镜像打包恢复USB问题咨询
Ubuntu 22.04 Desktop LTS无人值守安装及OEM安装镜像打包恢复USB问题咨询
一、Ubuntu 22.04 Desktop无人值守安装(无需预设用户配置)
其实Ubuntu Desktop的无人值守安装可以基于Server的autoinstall机制改造,同时实现跳过用户配置步骤,具体操作如下:
创建自定义autoinstall配置文件
你需要编写一个user-data文件,核心是通过autoinstall字段定义安装逻辑,再用late-commands处理桌面环境安装和用户配置跳过:#cloud-config autoinstall: version: 1 locale: en_US.UTF-8 keyboard: layout: us timezone: America/New_York packages: - ubuntu-desktop - gnome-shell late-commands: # 卸载首次启动的用户设置向导,让系统直接进入桌面 - curtin in-target -- apt remove -y gnome-initial-setup # 若后续需要自动创建用户,可添加以下命令(按需启用) # - curtin in-target -- useradd -m -s /bin/bash yourusername # - curtin in-target -- echo "yourusername:yourpassword" | chpasswd # - curtin in-target -- usermod -aG sudo yourusername注意:完全不需要预设用户的话,直接移除
identity字段即可,卸载gnome-initial-setup后,系统首次启动会让用户自行创建账户。制作带autoinstall配置的启动镜像
- 下载Ubuntu 22.04 Desktop官方ISO镜像
- 挂载ISO到本地目录:
sudo mount ubuntu-22.04-desktop-amd64.iso /mnt - 创建临时目录复制ISO内容:
mkdir -p ~/custom-iso && cp -r /mnt/* ~/custom-iso/ - 卸载原ISO:
sudo umount /mnt - 在
~/custom-iso/nocloud/目录下放入user-data和空的meta-data文件 - 修改
~/custom-iso/boot/grub/grub.cfg,找到默认启动项,在内核参数末尾添加autoinstall ds=nocloud;s=/cdrom/nocloud/,示例片段:menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-xxxxxx' { recordfail load_video gfxmode $linux_gfx_mode insmod gzio if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi insmod part_msdos insmod ext2 set root='hd0,msdos1' search --no-floppy --fs-uuid --set=root xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx linux /casper/vmlinuz quiet splash autoinstall ds=nocloud;s=/cdrom/nocloud/ --- initrd /casper/initrd } - 重新生成自定义ISO:
sudo genisoimage -o custom-ubuntu-22.04-autoinstall.iso -r -J -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table ~/custom-iso/
二、将OEM安装后的系统打包成恢复启动USB
OEM安装完成后,你可以通过以下两种方式制作可恢复的启动USB:
方式一:全盘克隆(简单直接)
- 准备目标USB
- 确保USB容量大于已安装系统的占用空间,提前备份USB内所有数据
- 用
lsblk命令确认USB设备名(比如/dev/sdb),务必不要选错设备!
- 克隆系统到USB
- 卸载系统分区(若已挂载):
sudo umount /dev/sda1(假设系统安装在/dev/sda) - 执行克隆命令:
sudo dd if=/dev/sda of=/dev/sdb bs=4M status=progress - 克隆完成后执行
sudo sync,确保所有数据写入USB
- 卸载系统分区(若已挂载):
- 修复启动引导
- 挂载USB的EFI分区(UEFI启动模式下):
sudo mount /dev/sdb2 /mnt - 重新安装GRUB引导:
sudo grub-install --target=x86_64-efi --efi-directory=/mnt --bootloader-id=ubuntu --recheck - 更新GRUB配置:
sudo update-grub - 卸载分区:
sudo umount /mnt
- 挂载USB的EFI分区(UEFI启动模式下):
方式二:分区备份(节省空间)
如果你觉得全盘克隆太占空间,可以用fsarchiver工具只备份系统分区:
- 安装
fsarchiver:sudo apt install fsarchiver - 备份系统分区:
sudo fsarchiver savefs /path/to/system-backup.fsa /dev/sda1 - 制作一个带
fsarchiver的启动USB(比如用Ubuntu Live ISO) - 恢复时,从USB启动,挂载目标磁盘分区后执行:
sudo fsarchiver restfs /path/to/system-backup.fsa id=0,dest=/dev/sda1
备注:内容来源于stack exchange,提问作者Ivan
相关产品推荐
相关产品推荐

