打包当前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 启动。

希望可以帮到大家~

相关推荐
Android洋芋2 小时前
PrintFriendly网页文章转PDF插件工具及技术分析
运维·服务器·pdf·网页转pdf
Elastic 中国社区官方博客2 小时前
使用重新设计的 AutoOps 更快地进行 Elasticsearch 问题排查
大数据·运维·前端·人工智能·elasticsearch·搜索引擎·全文检索
RoboWizard2 小时前
金士顿高速闪存盘 单双接口适配多元存储需求
大数据·运维·人工智能·智能手机·云计算
hkj88083 小时前
Ubuntu 20.04 安装 OpenJDK 17
linux·运维·ubuntu
huainingning3 小时前
防火墙重启后ssl登录提示证书过期临时解决方法
linux·服务器·ssl
sulikey3 小时前
服务器安装Docker教程。如何在云服务器安装Docker容器?
运维·服务器·ubuntu·docker·安装教程·云服务器
许彰午3 小时前
17-22-运维与高级主题
运维·网络
万联WANFLOW3 小时前
外贸独立站:服务器放海外国内后台卡,放国内海外客户打不开——这道两头难怎么破?
运维·网络·数据库·经验分享
跨境小彭3 小时前
Temu 店群自动化核价落地实践:告别人工熬夜议价,依托智能核价极速版规避操作亏损
运维·自动化·跨境电商·temu
Fu_Lin_3 小时前
Qt嵌入式从零基础到精通(01):Qt嵌入式开发全景图:从桌面Qt到ARM Linux
linux·arm开发·qt·qt5·嵌入式linux