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

server/2025/3/16 10:05:54/

我的系统的基本情况说明:
我原来的系统的具体型号如下:

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挂载在了另外一块盘里

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. 安装必要工具

    sudo apt update && sudo apt install rsync grub2-efi parted
    

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


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

  1. 使用 parted 分区

    sudo parted /dev/sdX
    
    • 输入 mklabel gpt 创建 GPT 分区表。
    • 创建 EFI 分区:
      mkpart ESP fat32 1MiB 512MiB
      set 1 esp on
      
    • 创建根分区:
      mkpart primary ext4 512MiB 100%
      
    • 退出:quit
    • 这里要注意没有swap分区,这个在我下一次优化的时候会补充,但是暂时是不影响使用的。
  2. 格式化分区

    sudo mkfs.fat -F32 /dev/sdX1  # 格式化 EFI 分区
    sudo mkfs.ext4 /dev/sdX2      # 格式化根分区
    

步骤 3:复制系统文件

  1. 挂载分区

    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 克隆系统

    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 到外置硬盘系统

    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:
      blkid /dev/sdX2
      
    • 编辑 /etc/fstab
      nano /etc/fstab
      
      替换原有根分区和 EFI 分区的 UUID 为外置硬盘的实际 UUID。
  3. 安装 GRUB 到外置硬盘

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

    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 启动。

希望可以帮到大家~


http://www.ppmy.cn/server/175394.html

相关文章

Scala语言的数据库编程

Scala语言的数据库编程 Scala是一种现代的多用途编程语言,它融合了面向对象和函数式编程的特性。近年来,Scala逐渐在大数据处理、分布式计算和Web开发等领域获得了广泛的关注。在这些应用中,数据库编程是不可或缺的一部分。本文将探讨Scala语…

【蓝桥杯】省赛:连连看(暴力 非AC)

对角线 遍历每个元素的左下、右下对角线,检查是否值相等 n,m map(int,input().split()) A [] for i in range(n):ls list(map(int,input().split()))A.append(ls)cnt 0 for i in range(n):for j in range(m):# zuoxiafor p in range(1, min(n-1-i 1,j1)):if A…

数统院复试来啦,西电数学与统计学院—考研录取情况

4西安电子科技大学—数学与统计学院—考研录取统计 01、数学与统计学院各个方向 02、24数学与统计学院近三年复试分数线对比 数统院24年院线相对于23年院线增加高达30分,确实增长浮动比较高,接近30分的水平,因此大家更需要好好去努力&#xf…

校平机:金属板材的“隐形整形师”

在金属加工车间里,激光切割后的板材常带着波浪般的起伏,这些看似细微的变形却能让焊接、喷涂等后续工序功亏一篑。而一台看似笨重的设备——校平机,总能在关键时刻化腐朽为神奇,用辊轮与压力的精密配合,让倔强的金属板…

思维训练让你更高、更强 |【逻辑思维能力】「刷题训练笔记」假设法模式逻辑训练题(6-16)

每日一刷 思维训练让你更高、更强! 题目6 一句问路的话 一个人站在岔道口,分别通向A国和B国,这两个国家的人非常奇怪,A国的人总是说实话,B国的人总是说谎话。路口站着一个A国人和一个B国人:甲和乙&#xf…

OpenHarmony子系统开发 - ArkCompiler开发指导

OpenHarmony子系统开发 - ArkCompiler开发指导 概述 ArkCompiler是一种统一编程平台,包含编译器、工具链、运行时等关键部件,支持高级语言在多种芯片的编译与运行,并支撑应用和服务运行在手机、个人电脑、平板、电视、汽车和智能穿戴等多种…

2024年12月CCF-GESP编程能力等级认证C++编程四级真题解析

四级真题的难度: 一、总体难度评价 CCF-GESP编程能力等级认证C++四级真题的难度通常被认为相对较高。它不仅要求考生具备扎实的C++编程基础,还需要考生掌握一定的算法和数据结构知识,以及良好的问题解决能力。 二、具体难度分析 ‌理论知识考察‌: 单选题和判断题中,会涉…

【鸿蒙】封装日志工具类 ohos.hilog打印日志

封装一个ohos.hilog打印日志 首先要了解hilog四大日志类型: info、debug、warm、error 方法中四个参数的作用 domain: number tag: string format: string ...args: any[ ] 实例: //普通的info日志,使用info方法来打印 //第一个参数 : 0x0…