打包当前Ubuntu镜像 制作Ubuntu togo系统

我的系统的基本情况说明:

我原来的系统的具体型号如下:

bash 复制代码
uname -r
复制代码
Linux Engine 5.15.0-134-generic #145~20.04.1-Ubuntu SMP 
Mon Feb 17 13:27:16 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux

我原来的硬盘以及分区策略如下:

可以看到我的分区策略大致就是有两张固态,然后EFI/home单独挂载在了一块盘里,/swap挂载在了另外一块盘里

bash 复制代码
df -h
复制代码
Filesystem      Size  Used Avail Use% Mounted on
udev             31G     0   31G   0% /dev
tmpfs           6.2G  2.9M  6.2G   1% /run
/dev/nvme1n1p3  1.8T  922G  812G  54% /
tmpfs            31G  119M   31G   1% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs            31G     0   31G   0% /sys/fs/cgroup
/dev/loop0      128K  128K     0 100% /snap/bare/5
/dev/loop2      347M  347M     0 100% /snap/gnome-3-38-2004/119
···
/dev/nvme0n1p2  1.9T  642G  1.2T  37% /home
/dev/nvme0n1p1   96M  6.1M   90M   7% /boot/efi
tmpfs           6.2G  176K  6.2G   1% /run/user/1000

我现在希望的是可以把系统中的所有内容(除了数据集这种占用资源特别多的)都备份到一个单独的外接硬盘盒中,制作一个Ubuntu To Go的系统,在任何的电脑上都可以通过更改启动方式的方法启动我的系统。

以下是制作 Ubuntu To Go 系统的分步指南:


步骤 1:准备工作

  1. 备份数据

    操作前请备份重要数据,避免意外丢失。

  2. 准备外置硬盘

    • 我使用的是SSK10Gbps硬盘盒致钛1TB Ti600 Gen4 7000MB/s的固态硬盘
    • 硬盘盒的速度换算一下是1250MB/s,其实是达不到硬盘的上限的
    • 但是我的拯救者笔记本具有的接口是USB3.1的A口(5Gbps)和USB3.2的C口(10Gbps),所以我之前觉得短板可能也不在硬盘盒这里就没有买新的
    • 确保外置硬盘已插入电脑并识别(如 /dev/sdX,请替换为自己的设备路径)。
  3. 安装必要工具

    bash 复制代码
    sudo apt update && sudo apt install rsync grub2-efi parted

    这里这个grub2-efi我显示unable to locate,不过没事,不影响接下来的操作


步骤 2:分区与格式化外置硬盘

  1. 使用 parted 分区

    bash 复制代码
    sudo parted /dev/sdX
    • 输入 mklabel gpt 创建 GPT 分区表。

    • 创建 EFI 分区:

      plaintext 复制代码
      mkpart ESP fat32 1MiB 512MiB
      set 1 esp on
    • 创建根分区:

      bash 复制代码
      mkpart primary ext4 512MiB 100%
    • 退出:quit

    • 这里要注意没有swap分区,这个在我下一次优化的时候会补充,但是暂时是不影响使用的。

  2. 格式化分区

    bash 复制代码
    sudo mkfs.fat -F32 /dev/sdX1  # 格式化 EFI 分区
    sudo mkfs.ext4 /dev/sdX2      # 格式化根分区

步骤 3:复制系统文件

  1. 挂载分区

    bash 复制代码
    sudo mkdir /mnt/usb
    sudo mount /dev/sdX2 /mnt/usb        # 挂载根分区
    sudo mkdir -p /mnt/usb/boot/efi
    sudo mount /dev/sdX1 /mnt/usb/boot/efi  # 挂载 EFI 分区
  2. 使用 rsync 克隆系统

    bash 复制代码
    sudo rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / /mnt/usb/

这里因为我的数据量比较大,所以clone同步的时间也很长,我clone了800G+的数据过去估计花了5-6个小时,这里我们可以同时看一下复制的进度watch -n 1 df -h,我们可以看到挂载的/dev/sdX1中使用的内容资源在逐渐增多,等到大致和挂载点\下的体积大体上相同就可以了。


步骤 4:配置启动引导(GRUB)

  1. Chroot 到外置硬盘系统

    bash 复制代码
    sudo mount --bind /dev /mnt/usb/dev
    sudo mount --bind /proc /mnt/usb/proc
    sudo mount --bind /sys /mnt/usb/sys
    sudo chroot /mnt/usb
  2. 更新文件系统 UUID

    • 查看外置硬盘根分区的 UUID:

      bash 复制代码
      blkid /dev/sdX2
    • 编辑 /etc/fstab

      bash 复制代码
      nano /etc/fstab

      替换原有根分区和 EFI 分区的 UUID 为外置硬盘的实际 UUID。

  3. 安装 GRUB 到外置硬盘

    bash 复制代码
    grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu --recheck
    update-grub
  4. 退出 Chroot

    bash 复制代码
    exit
    sudo umount /mnt/usb/{dev,proc,sys,boot/efi}
    sudo umount /mnt/usb

步骤 6:测试启动

  1. 在其他电脑上启动
    • 插入外置硬盘,开机时按 F12/Esc/Del 等键选择从外置硬盘启动。
    • 如果启动失败,检查 GRUB 安装步骤和 fstab UUID 是否正确。
    • Tips: 一般启动的选项里有两个,一个是进BIOS(F2),一个是弱化版的启动项选择(F12),一般来说用第二个就可以,对于拯救者电脑,第二个的界面是这样的,这里选择SSK固态硬盘启动

我这里的最终效果,在新的U盘启动的机器上,暂时验证效果如下:

  • 所有的gnome插件启动正常
  • 显卡驱动&cuda启动正常
  • App cache正常
  • 一些速度的测试要见我的下一篇文章进行具体的测试~

常见问题解决

  • 无法挂载根分区:检查外置硬盘分区是否损坏,重新格式化。
  • 黑屏/卡在启动界面 :尝试在 GRUB 启动时按 e 编辑启动参数,添加 nomodeset
  • 无法识别外置硬盘:确保 BIOS/UEFI 中已启用从 USB 启动。

希望可以帮到大家~

相关推荐
杰哥技术分享9 分钟前
在 CentOS 上安装 Docker 和 Docker Compose 并配置使用国内镜像源
linux·docker·centos
知更鸟呆呆13 分钟前
【Linux操作系统】基础开发工具(yum、vim、gcc/g++)
linux·运维·vim
xiangyong5814 分钟前
ubuntu系统文件误删(/lib/x86_64-linux-gnu/libc.so.6)修复方案 [成功解决]
linux·ubuntu·gnu
Gold Steps.1 小时前
Docker容器部署elasticsearch8.*与Kibana8.*版本使用filebeat采集日志
运维·docker·云原生·es
m0_637146931 小时前
C语言基础面试问答
运维·服务器
t198751281 小时前
Linux 上的 Tomcat 端口占用排查
linux·tomcat·firefox
小狗爱吃黄桃罐头2 小时前
正点原子[第三期]Arm(iMX6U)Linux移植学习笔记-12.1 Linux内核启动流程简介
linux·arm开发·学习
ricky_fan2 小时前
window下配置ssh免密登录服务器
运维·服务器·ssh
地衣君2 小时前
Ubuntu 配置使用 zsh + 插件配置 + oh-my-zsh 美化过程
linux·运维·ubuntu
2401_858286112 小时前
OS11.【Linux】vim文本编辑器
linux·运维·服务器·编辑器·vim