Linux系统迁移(同一台电脑),重建UEFI启动文件

2023-11-10

  • 电脑型号:hp 暗影精灵5 Air
  • 显卡:RTX 2060
  • CPU:i7-9750H
  • 硬盘:500G固态 + 1T固态
  • 启动方式:UEFI
  • 操作系统:Ubuntu16.04

之前安装Ubuntu的时候给Ubuntu系统分配的空间太小了,安装新硬盘后给ubuntu分配了更大的分区,需要将原来的系统迁移到新硬盘分区中,下面开始系统迁移。

一、系统备份

参考自Ubuntu全盘备份与恢复,亲自总结,实测可靠
Linux 中所有内容都是以文件的形式保存和管理的,即一切皆文件,所以备份系统就是将所有文件打包成一个压缩包
1、挂载存放备份文件的分区(使用mount命令或通过鼠标点击资源管理器左侧的磁盘,挂载的磁盘会出现在/media/用户名/目录下),假设要存放备份文件的目录为$back_folder,且该目录在“/media”目录下
2、按住ctrl+Alt+f1进入控制台字符终端,用root用户登录
3、进入存放备份文件的目录cd $back_folder
4、将系统打包压缩,将命令中$back_folder换成自己的目录

tar -cvpzf $back_folder/backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/mnt --exclude=/sys --exclude=/media /
  • ‘tar’是用来备份的程序
  • c - 新建备份文档
  • v - 详细模式,tar程序将在屏幕上实时输出所有信息
  • p -保存许可,并应用到所有文件,所有文件的权限信息都会保留
  • z - 采用‘gzip’压缩备份文件,以减小备份文件体积
  • f - 说明备份文件存放的路径,$back_folder/backup.tgz 是本例子中备份文件名
  • “/”是我们要备份的目录,在这里是整个文件系统
  • –exclude表示要删除的目录,“/proc”、“/lost+ found”、“/sys”、“/mnt”、“/media”都要排除在外,如果backup.tgz没有在“/media”目录下,要加上--exclude=$back_folder/backup.tgz以排除backup.tgz文件
    5、漫长的等待。。。。。。
    在备份命令结束时你可能会看到这样一个提示:’tar: Error exit delayed from previous errors’,多数情况下你可以忽略它。

二、系统恢复

1、使用原来的Ubuntu系统,打开终端。如果原来的Ubuntu系统已经崩溃,无法进入。则可以使用Ubuntu安装U盘(live USB)进入试用Ubuntu界面。
2、使用gparted将用于恢复系统的磁盘分区格式化EXT4文件系统
3、挂载用于恢复系统的磁盘分区,将backup.tgz拷贝进去
4、cd进入该磁盘分区
5、解压

sudo tar xvpfz backup.tgz
  • x - 表示解压缩
    6、重新创建那些在备份时被排除在外的目录
sudo mkdir proc lost+found mnt sys media

以上操作只是将所有文件恢复进了新的磁盘,但是没有重建启动引导,因此再次重启时还是会进入原来的系统。下面开始重建UEFI启动文件。

三、重建UEFI启动文件

写了两个方法,第一个没试过,第二个试过。

3.1 简单方法

写了一半发现个更简单的方法,奈何自己没机会试了,各位看客可以试一下,在原系统中,输入sudo update-grub,再重启,可能会在启动菜单中看到新迁移的操作系统。如果试过这个方法,希望留个评论告诉可不可用,下次遇到同类问题就知道咋办了。
如果不行,就按照下面的流程操作。

3.2 复杂一点的方法

当时安装系统时就在UEFI启动文件上费了些功夫,其中ubuntu的启动引导是在windows下用EasyUEFI指定的,其为启动分区(即第一块硬盘的第一个分区,在windows下为隐藏分区)中的文件“EFI/ubuntu/grubx64.efi”,具体可参考暗影精灵5 (i7 9750H + RTX2060) 安装win10+Ubuntu18.04双系统
以下操作在原来的Ubuntu系统中进行
1、进入新系统所在目录的根目录,注意是新系统!!!!!!
2、切换到root用户 su root
3、删除boot/efi目录,并新建boot/efi目录,该目录本应该为挂载EFI分区的目录,备份时直接将文件复制过来了,后面会将EFI分区重新挂载过来。

rm -r boot/efi 
mkdir boot/efi

4、在原系统中卸载EFI分区,然后将EFI分区挂载到新系统/boot/efi目录下

umount /boot/efi
mount /dev/nvme0n1p1 boot/efi

/dev/nvme0n1p1为EFI分区,按照自己的电脑配置进行修改
5、将原系统的“/proc、/sys”等文件夹挂载到新系统的环境中

for i in /dev /dev/pts /proc /sys; do sudo mount -B $i .$i; done

注意第二个$i前面有个.,表示当前目录,即新系统的根目录
6、加载efivars模块

modprobe efivars

7、配置grub,将root目录更改为新系统的根目录

grub-install --no-nvram --root-directory=.

8、将根目录位置切换为新系统的根目录,然后更新grub

chroot .
update-grub

9、查看./boot/efi/ubuntu/grubx64.efi文件是不是刚刚更新的,是的话,就证明更新efi文件成功了。

ll boot/efi/ubuntu/

10、打开新的终端,输入sudo reboot重启系统
此时应进入新的系统。
11、重启后,打开终端,更新grub

sudo update-grub

该命令会将电脑中所有操作系统都加入启动菜单中,再次重启会发现其他操作系统都加入了启动菜单。

四、思考

更简单一点的话,是不是两步就完成了,只是思考,没有验证过。
1、用cp命令将所有文件复制到新系统的分区中,同时保留所有权限
2、用update-grub命令更新grub,重启后查看新系统是否在启动列表里。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux系统迁移(同一台电脑),重建UEFI启动文件 的相关文章

  • 使用 posix_spawn 启动进程

    我正在使用以下代码在 Linux 中启动新进程 pid t processID char argV 192 168 1 40 char 0 int status 1 status posix spawn processID home use
  • 捕获数据包后会发生什么?

    我一直在阅读关于网卡捕获数据包后会发生什么的内容 我读得越多 我就越困惑 首先 我读过传统上 在网卡捕获数据包后 它会被复制到内核空间中的一个内存块 然后复制到用户空间 供随后处理数据包数据的任何应用程序使用 然后我读到了 DMA 其中 N
  • pprof 和 ps 之间的内存使用差异

    我一直在尝试分析用 cobra 构建的 cli 工具的堆使用情况 这pprof工具显示如下 Flat Flat Sum Cum Cum Name Inlined 1 58GB 49 98 49 98 1 58GB 49 98 os Read
  • 从 php/linux 获取 pdf 的布局模式(横向或纵向)

    给定一个 PDF 如何使用 PHP lib 或 Linux 命令行工具获取 PDF 的布局模式 或相对宽度 高度 Using http www tecnick com public code cp dpage php aiocp dp tc
  • 如何在gnuplot中将字符串转换为数字

    有没有办法将表示数字 以科学格式 的字符串转换为 gnuplot 中的数字 IE stringnumber 1 0e0 number myconvert stringnumber plot 1 1 number 我可能使用 shell 命令
  • 错误:命令“c++”失败,退出状态为 1

    所以我尝试按照以下说明安装 Pyv8https andrewwilkinson wordpress com 2012 01 23 integrating python and javascript with pyv8 https andre
  • 在 Linux 上创建线程与进程的开销

    我试图回答在 python 中创建线程与进程有多少开销的问题 我修改了类似问题的代码 该问题基本上运行一个带有两个线程的函数 然后运行带有两个进程的相同函数并报告时间 import time sys NUM RANGE 100000000
  • 如何在 Linux 中重新添加 unicode 字节顺序标记?

    我有一个相当大的 SQL 文件 它以 FFFE 的字节顺序标记开头 我使用 unicode 感知的 linux 分割工具将此文件分割成 100 000 行块 但是当将这些传递回窗口时 它确实not与第一个部分以外的任何部分一样 只是它具有
  • C++:Linux平台上的线程同步场景

    我正在为 Linux 平台实现多线程 C 程序 其中我需要类似于 WaitForMultipleObjects 的功能 在搜索解决方案时 我发现有一些文章描述了如何在 Linux 中实现 WaitForMultipleObjects 功能
  • 如何从远程 ssh 连接上运行的 tmux(复制模式)复制到本地剪贴板

    我通过 OS X 上的 VirtualBox 运行 Linux 我通过在无头状态下运行虚拟机 然后使用端口转发 sshing 到 Linux 机器来实现这一点 现在 无论复制到我的虚拟机上的剪贴板 我都可以粘贴到我的远程 ssh 会话上 但
  • ubuntu 的 CSS 更少(并且自动编译)? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我尝试过 simples 但现在 l
  • 如何在 Linux/OS X 上温和地终止 Firefox 进程

    我正在使用 Firefox 进行一些自动化操作 尽管我可以从 shell 打开 Firefox 窗口 但我无法正确终止它 如果我kill火狐进程与kill 3 or kill 2当我下次打开新的 Firefox 窗口时 命令会询问我是否要在
  • 如何反汇编、修改然后重新组装 Linux 可执行文件?

    无论如何 这可以做到吗 我使用过 objdump 但它不会产生我所知道的任何汇编器都可以接受的汇编输出 我希望能够更改可执行文件中的指令 然后对其进行测试 我认为没有任何可靠的方法可以做到这一点 机器代码格式非常复杂 比汇编文件还要复杂 实
  • 可以作为命令行参数传递多少数据?

    在 Linux 下生成进程时可以发送多少字节作为命令行参数 gahooa 推荐了一篇好文章http www in ulm de mascheck various argmax http www in ulm de mascheck vari
  • 如何在perl中使用O_ASYNC和fcntl?

    我想使用 O ASYNC 选项 当管道可以读取时 SIGIO 的处理程序将运行 但以下代码不起作用 任何人都可以帮助我吗 bin env perl use Fcntl SIG IO sub print catch SIGIO n my fl
  • 如何在文件夹中的 xml 文件中 grep 一个单词

    我知道我可以使用 grep 在这样的文件夹中的所有文件中查找单词 grep rn core 但我当前的目录有很多子目录 我只想搜索当前目录及其所有子目录中存在的所有 xml 文件 我怎样才能做到这一点 我试过这个 grep rn core
  • 如何将 elf 解释器(ld-linux.so.2/ld-2.17.so)构建为静态库?

    如果我的问题不准确 我深表歉意 因为我没有太多 Linux 相关经验 我目前正在构建一个 Linux 从头开始 主要遵循 linuxfromscratch org 版本的指南 7 3 我遇到了以下问题 当我构建可执行文件时 获取一个称为 E
  • 为什么默认情况下不启用 arp 忽略/通告 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我有一个需要经验才能回答的具体问题 为什么 arp ignore arp announce 在 Linux 安装 例如 debian 上默认不启用 有
  • Bash - 比较 2 个文件列表及其 md5 校验和

    我有 2 个列表 其中包含带有 md5sum 检查的文件 即使文件相同 列表也具有不同的路径 我想检查每个文件的 md5 和 我们正在讨论数千个文件 这就是为什么我需要脚本来仅显示差异 第一个列表是普通列表 第二个列表是文件的当前状态 我想
  • dpkg 错误:pycompile:未找到

    sudo apt get remove purge mysql server mysql client mysql common 当我尝试使用上述命令删除 mysql 时 出现以下错误 Reading package lists Done

随机推荐

  • 关于git cherry-pick

    项目开发过程中 经常遇到多分支的代码库管理 将提交的代码修改从一个分支转移到另一个分支是常见需求 这时分两种情况 一种情况 需要另一个分支的所有代码变动 那么就采用合并 git merge 另一种情况 只需要部分代码变动 某几个提交 这时可
  • Spring Cloud Alibaba,中国 Javaer 的福音,为微服务续上 18 年

    h2 Spring Cloud Alibaba 中国 Javaer 的福音 为微服务续上 18 年 nbsp h2 p 热 p p a href https my oschina net u 3820517 h4cd a nbsp 发布于
  • Vue指令 关于---v-html_指令 和 v-test_指令 详解

    要学会大大方方的表达爱意 爱不是冷冰冰 爱是炙热的 永远都是 笨蛋才会说反话 笨蛋才会把喜欢的人越推越远 一 在讲解 v test 指令 和v html 指令 前我么先回顾一些基本指令 v bind 单项绑定解析表达式 可简写为 xxx v
  • day6-列表的遍历,增删查改,比较运算,列表推导式,列表的相关函数

    列表基础学习 一 遍历列表 1 遍历列表 二 列表的增删查改操作 1 增 1 列表 append 元素 2 列表 insert 下标 元素 2 删 删除元素 1 del 列表 下标 2 列表 remove 元素 3 列表 pop 下标 列表
  • Win7、Win10系统封装后GHO文件太大?是因为虚拟内存没关、休眠文件没删!

    很多镜像文件封装好都是3 5g的 而最近我自己封装系统 封装完是8g 百度才知道是C盘有休眠文件大概5 4g 下图是我正在用的电脑删除休眠文件后的大小对比 删除休眠文件方法 1 在开始栏的 附件 里面找到 命令提示符 右击 以管理员身份运行
  • 文举论金:3.17黄金原油全面走势分析策略指导。

    市场没有绝对 涨跌没有定势 所以 对市场行情的涨跌平衡判断就是你的制胜法宝 欲望 有句意大利谚语 让金钱成为我们忠心耿耿的仆人 否则 它就会成为一个专横跋扈的主人 空头 多头都能赚钱 唯有贪心不能赚 是你掌控欲望还是欲望掌控你 古人云 不积
  • 使用eclipse创建一个图书管理系统(1)-----搭建架构

    目录 思维导图 图书管理系统的创建 第一步 搭建框架 使用者 第二步 搭建框架 被使用者 第三步 操作方法 第四步 main函数 思维导图 前言 昨天学了一下使用Java语言来写一个图书管理系统 于是今天写一篇博客作为一个小笔记巩固一下自己
  • git 打包两个版本差异

    git archive o update zip 当前版本号 git diff name only 上一版本号
  • QMainWindow和QWidget

    一 QMainWindow QmainWindow主窗口为用户提供一个应用程序框架 它有自己的布局 可以在布局中添加控件 在主窗口中可以添加控件 比如将工具栏 菜单栏 状态栏等添加到布局管理器中 窗口类型介绍 QMainWindow QWi
  • 人工智能技术发展历史

    人工智能 Artificial Intelligence 简称 AI 的历史可以追溯到上世纪50年代 以下是其中的关键点 1956年 达特茅斯会议 1956年 美国达特茅斯学院举办了一次会议 邀请了一些研究者共同探讨人工智能的概念 目标和方
  • 【NLP入门教程】三、词性标注

    词性标注 Part of Speech Tagging POS Tagging 是自然语言处理中的另一个基本任务 它涉及将文本中的每个词元 Token 标注为其对应的词性 如名词 动词 形容词等 词性标注有助于我们理解文本的语法结构 进而支
  • win10 家庭版系统安装docker desktop遇到那些坑

    最近开发中需要用到docker来打包镜像 由于我的电脑系统是win10 家庭版 而docker desktop针对win10系统只支持64 位的 Windows 10 专业版 企业版和教育版 我又不想重装系统 因为要重装一堆工具 太麻烦了
  • FILCO Majestouch Convertible 2 键盘连接电脑说明

    键盘连接新电脑频次比较低 每次都忘记了怎么操作 要去翻说明书 上网找方法 在此记录下圣手2代键盘连接新电脑或者切换电脑的连接方式
  • Python数据可视化matplotlib.pyplot的使用

    1 生成数据 安装matplotlib windows cmd中 pip install matplotlib 在Python环境下 使用import matplotlib检测是否安装成功 不报错就是安装成功 重启写py的工具就可以进行使用
  • 2020东京奥运会奖牌排行--数据可视化

    爬取数据1 1 数据来源 https 2020 cctv com medal list index shtml 数据为下面图片的表格数据 2 具体代码 2 1需要提前下载好的pip install 库名 from selenium impo
  • Windows 下 VSCode 使用 SSH 连接报 Bad owner or permissions on C:\\Users\\Administrator/.ssh/config 错误问题解决

    Windows 下 VSCode 使用 SSH 连接报 Bad owner or permissions on C Users Administrator ssh config 错误问题解决 vscode ssh 链接报错情况 解决方法 v
  • JAVA环境变量配置方法(Windows)

    编写一个JAVA程序后 如果想让自己编写的代码可以正常运行 我们便需要对它进行编译和运行 而Java环境变量的配置就显得尤为重要 本篇文章 我们来谈一谈关于Java环境变量配置的一些方法 目录 方法一 方法二 方法三 方法一 1 右击 我的
  • ARP协议

    什么是ARP 地址解析协议 即ARP Address Resolution Protocol 是根据IP地址获取物理地址的一个TCP IP协议 主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机 并接收返回消息 以此确定
  • vue 字符串、数组之间的相互转换

    1 字符串转数组 str split 以分号拆分字符串 2 数组转字符串 arr join 把数组项拼接成字符串 并以分号隔开 默认情况下是以逗号隔开
  • Linux系统迁移(同一台电脑),重建UEFI启动文件

    电脑型号 hp 暗影精灵5 Air 显卡 RTX 2060 CPU i7 9750H 硬盘 500G固态 1T固态 启动方式 UEFI 操作系统 Ubuntu16 04 之前安装Ubuntu的时候给Ubuntu系统分配的空间太小了 安装新硬