原来的Win10+Ubuntu双系统是先装的Win10后装Ubuntu时选择"与Windows系统共存",如此开机后由Ubuntu启动项(紫屏)接管引导进入Ubuntu或Windows系统。

看网上的教程如果不dd拷贝磁盘分区的UUID而是在目标磁盘上生成新的各分区的UUID,就需要改动/etc/fstab文件与/boot/grub/grub.cfg文件,/etc/fstab文件中没多少UUID项,但/boot/grub/grub.cfg文件中UUID出现有多处:

感觉像是要生乱子的节奏,罢了,用dd命令将分区的UUID连带/etc/fstab与/boot/grub/grub.cfg文件一并拷贝吧,省得替换UUID。

由于要对磁盘分区进行dd拷贝,为了节省时间,先把原机械硬盘上各分区的文件精简一下,可以移动到U盘的文件先移动出去,然后压缩磁盘空间,由于不能在当前运行的系统下压缩根目录'/'所在的分区,那可能导致系统出问题,我没敢试。索性直接在LiveUSB下trying Ubutnu without installing,然后使用gparted可视化分区软件(没有的话要安装sudo apt install gparted)对原机械硬盘各分区进行压缩,压缩后各分区后的分区状况如下:

其中/dev/sdc1是EFI系统分区ESP,Linux的启动文件目录/boot/efi就是由该分区挂载的,200MiB(约214MB,1KiB=1024B,1KB=1000B,Gparted用GiB单位))文件系统格式FAT32,对应gdisk的分区类型应该是ef00 EFI System;

/dev/sdc2是Microsoft保留分区MSP,200MiB 文件系统格式Unknow,对应gdisk的分区类型应该是0c01 Microsoft reserved;

/dev/sdc3是Win10系统分区,35.43GiB 文件系统格式NTFS,对应gdisk的分区类型应该是0700 Microsoft basic data;

/dev/sdc4是Windows数据分区,97.63GiB 文件系统格式NTFS,对应gdisk的分区类型也是0700 Microsoft basic data;

分区合并之后没有重新sort分区,/dev/sdc5、/dev/sdc6已经不在分区表里了;

/dev/sdc7是Linux根'/'分区(省得哪个目录所在分区不够用,索性全放在一个分区),148.53GiB 文件系统格式ext4,对应gdisk的分区类型应该是8300 Linux filesystem;

最初设想是将机械硬盘的双系统的/dev/sdc1、/dev/sdc2、/dev/sdc3、/dev/sdc4、/dev/sdc7悉数dd到固态硬盘的对应分区,则固态硬盘分区如下,比对应机械硬盘的分区大一些:

在各个分区之间留256MiB的空闲未分配空间,以防未来由GPT分区表转MBR分区表时因为前面的分区无间隙相连导致只能转换前四个分区(详见info gdisk GPT分区转MBR分区,可能是我多虑了,但在分区之间留点空白也无妨系统运行吧);

Gparted的分区操作界面如下,单位都是严谨的MiB(1MiB=1024KiB,而1MB=1000KB)如果要得到整数的GB表示可以换算一下:

然后在liveUSB的终端进行dd拷贝对应分区了,假设固态硬盘是/dev/sda,机械硬盘是/dev/sdc:

dd if=/dev/sdc1 of=/dev/sda1
dd if=/dev/sdc2 of=/dev/sda2
dd if=/dev/sdc3 of=/dev/sda3
dd if=/dev/sdc7 of=/dev/sda5

/dev/sdc4是数据分区,买了硬盘盒直接USB3.1外挂着用了,就不dd拷盘了;记得dd拷贝/dev/sdc3时35.43GiB用时22min,等了挺久,拷贝/dev/sdc7时直接睡觉了,估计也得74分钟了,幸好在dd之前压缩了原机械硬盘各分区。

之后就是参考记一次将Ubuntu系统迁移到SSD固态操作第5步修复引导了,但这里只是修复Ubuntu的启动引导:

sudo su
mount /dev/sda5 /mnt          #(/dev/sda5:为目标磁盘的/ 分区)
mount /dev/sda1 /mnt/boot/efi #(/dev/sda1:为目标磁盘的/boot/efi分区)
mount -t proc proc /mnt/proc
mount -t sysfs sys /mnt/sys
mount -o bind /dev /mnt/dev
mount -t devpts pts /mnt/dev/pts/
chroot /mnt
grub-install /dev/sda1        #生成grub文件到/boot/efi目录所在设备下
update-grub2

至此,调整固态硬盘为BIOS启动序列的第一项,关闭liveUSB后拔掉原机械硬盘就可以启动固态硬盘上的Ubuntu了(因与固态硬盘对应分区UUID相同,在开机时必须断掉原机械硬盘否则可能被挂载到固态硬盘的文件系统。因为/etc/fstab中开机挂载块设备是按UUID寻找的,可能就找到原机械硬盘然后给挂载了,这就是偷懒用dd而不去重生成UUID和改/etc/fstab的结果。。。)

其实上面修复Ubuntu启动引导就是重新生成了/boot/grub目录中的文件,因为观察到执行grub-install后/boot/grub/grub.cfg文件的修改日期发生了改变,所以为了避免与原机械硬盘各分区的UUID冲突,可以弥补一下:

LiveUSB下只挂载固态硬盘,重生成各分区的UUID、执行grub-install修复启动引导、修改/etc/fstab中开机挂载分区的对应UUID:

转载部分:防止失效,转存一下,原链接

朋友送了一个固态硬盘给我,因此将原机械硬盘上的系统迁移到固态硬盘上。

原机械硬盘(dev/sdb)装有win10和ubuntu双系统。分区情况如下:

sda1:ESP分区

sda2:资料

sda3:资料

sda4:swap分区,被我干掉了,内存8g,基本上用不上。也可以使用swap文件代替swap分区。

sda5:ubuntu的/分区

sda6:ubunt的/home分区

【记录下删除swap分区的过程】
1.先查看swap分区
swapon -s
2.停用swap分区
#确保swap分区没有使用
free -m
#停用swap分区
sudo swapoff  /dev/sdb4   (第1步显示的名称)
#检查停用成功
free -m
3.删除swap分区文件
sudo rm -rf /dev/sdb4
这样就成功删除了swap分区。
4.在/etc/fstab中删除或注释swap行#我把swap分区删除后,空间合并到了/分区。
因为操作的是/分区,需要在u盘启动盘下执行,使用Gparted工具resize即可。

然后需要对ssd固态硬盘(dev/sda)分区,分区情况如下。记得ssd分区时要4k对齐,选择2048还是4096可以参考这篇文章:固态硬盘分区4k对齐是2048还是4096?该选哪个有区别吗?

sda1:ESP分区

sda2:用于win10系统

sda3:win10自动创建的恢复分区(以前没有的,可能是使用易升升级时自动创建的),无需手动创建。

sda4:用于ubuntu的/分区

sda5:用于ubunt的/home分区

然后,win10直接用ghost备份恢复,再进pe修复下引导就搞定了。记录手动恢复引导的命令:

# 用DG等工具先将ESP分区装载为K盘,从系统盘C:\Windows目录中复制UEFI格式的启动文件到ESP分区中,修复系统。
bcdboot  c:\windows /s k:  /l zh-cn  /f uefi

ubuntu的备份恢复花费了大量时间,主要是刷教程做准备工作。网上的方法差不多两种,一种是使用dd命令直接拷贝分区,另一种是使用tar命令压缩备份系统文件。我使用的是后者,需要在live usb环境下进行,也就是使用u盘ubuntu启动盘。主要参考了这篇教程:Ubuntu系统备份

备份前准备

1.备份前先清理系统,减小备份文件的大小(可选)

首先进行系统的清理

# 清理旧版本的软件缓存
sudo apt-get autoclean# 清理所有软件缓存
sudo apt-get clean# 删除系统不再使用的孤立软件
sudo apt-get autoremove

删除老旧的系统内核

可以参考这篇文章:如何删除 Ubuntu 上不再使用的旧内核。删除完后,记得使用sudo update-grub更新一下。

2.插入u盘启动,进入Live USB界面,点击试用ubuntu,进入桌面后,获取root权限

sudo su

备份

3.备份/分区和/home分区

cd /
#挂载/分区
sudo mkdir src-root
sudo mount /dev/sdb5 /src-root#挂载/home分区
sudo mkdir src-home
sudo mount /dev/sdb6 /src-home#挂载放/文件的分区(ssd的/分区)
sudo mkdir des-root
sudo mount dev/sda4 /des-root#挂载放/home文件的分区(ssd的/home分区)
sudo mkdir des-home
sudo mount dev/sda5 /des-home#备份/分区文件。 注意:因为是live USB环境,直接用/表示USB ubuntu的/,所以不能直接用/。由于已经cd到了要备份的ubuntu的/目录下了,所以直接用./
sudo su
cd /src-root
tar cvpzf /des-root/backup.tgz --exclude=./proc --exclude=./lost+found --exclude=./mnt --exclude=./media --exclude=./sys --exclude=./run --exclude=./tmp --exclude=./home ./#备份/home分区文件
sudo su
cd /src-home
tar cvpzf /des-home/home_backup.tgz ./

-c: 新建一个备份文档
-v: 显示详细信息
-p: 保存权限,并应用到所有文件
-z: 用gzip压缩备份文档,减小空间
-f: 指定压缩包名称(带路径),只能做最后一个参数

--exclude: 排除指定目录,不进行备份
  --exclude=/proc          一个虚拟文件系统,系统运行的每一个进程都会自动在这个目录下面创建一个进程目录。既然是系统自动创建,也就没必要备份。
  --exclude=/lost+found      系统发生错误时(比如非法关机),可以在这里找回一些丢失文件。
  --exclude=/mnt
  --exclude=/media     多媒体挂载点,如u盘、移动硬盘、windons分区等都会自动挂载到这个目录下。
  --exclude=/sys
  --exclude=/run    系统从启动以来产生的一些信息文件。
  --exclude=/tmp   临时文件目录 
  --exclude=/home

另外要注意的是:我是划分了/和/home的,所以备份/时会排除掉/home,之后单独备份/home。如果没有划分单独的/home,则不要排除/home。

还原

4.进行还原操作

# 解压/备份文件
cd /des-root
tar -xvpzf backup.tgz
# 解压/home备份文件
cd /des-home
tar -xvpzf home_backup.tgz# 创建前面备份时忽略的文件夹
cd /src-rootmkdir proc
mkdir media
mkdir mnt
mkdir tmp
mkdir sys
mkdir run

5.修复引导。我是直接重建引导。

参考EFI+GPT模式下修复GRUB2双系统引导-修订版,一种是用efibootmgr,另一种是grub-install,我用的后一种方法。

sudo su
mount /dev/sda4 /mnt             (/dev/sda4:为/ 分区)
mount /dev/sda1 /mnt/boot/efi     (/dev/sda1:为/efi分区)
mount -t proc proc /mnt/proc
mount -t sysfs sys /mnt/sys
mount -o bind /dev /mnt/dev
mount -t devpts pts /mnt/dev/pts/
chroot /mnt
grub-install /dev/sda1
update-grub2

6.重启,然后修改/etc/fstab文件,主要修改UUID。

7.最后,记得删除备份文件,减少磁盘空间占用。

记录Win10+Ubuntu18.04(引导Win10启动)双系统迁移到SSD,Ubuntu迁移成功但丢失Win10启动项相关推荐

  1. Ubuntu18.04 和 windows 10双系统 错误: `/EFI/Microsoft/Boot/bootmgfw.efi‘ not found

    问题描述: Ubuntu18.04 和 Windows 10 双系统,原本运行的都很正常,然后吧,突然有一天,选择Windows boot manager 时报错 ,错误: `/EFI/Microso ...

  2. 在ssd上win10和linux双系统,windows 10 ssd ubuntu hdd双系统

    记一次无比折腾的安装经历! 关键词 dell,nvme,raid,ahci,windows 10, ubuntu 16.04,引导,双系统,xps 8920,UEFI,GPT 硬件信息 dell xp ...

  3. 转换固态+机械硬盘分区表格式为GPT,UEFI启动,重装WIN10+Ubuntu18.04双系统

    UEFI+GPT,重装win10+ubuntu18.04双系统 一.问题描述 1.Ubuntu系统停留在循环登录界面,无法进入 2.错误删除ubuntu,引导页消失,无法进入任何系统 3.安装grub ...

  4. 安装win10+ubuntu18.04双系统(用U盘启动)

    (本文纯经验之谈,技术和原理方面欠缺) 出于研究CUDA和OpenCV,现需要在Linux环境下进行学习和研究.那么有三种选择,一,Windows下安装VMware虚拟机,在虚拟机里面安装Ubuntu ...

  5. 双硬盘(SSD固态+机械硬盘HDD)装双系统win10+Ubuntu18.04安装、配置bios 记录/教程

    因为最近在做一些项目,虚拟机崩了,云服务器性能跟不上,就想着装个双系统吧,因为第一次弄,捣鼓了很久.本博客环境是固态SSD+机械硬盘,双硬盘环境,且原先使用win10操作系统. 目录 准备Ubuntu ...

  6. Win10+Ubuntu18.04 双系统安装遇到的问题记录

    因为大三Android硬件技术/操作系统/实验室的深度学习的项目学习需要要使用Ubuntu系统,自己的电脑配置不太高,在虚拟机里面运行LInux系统会很卡,所以选择了自己装双系统.听说安装的系统可能之 ...

  7. 联想拯救者Y7000P2019双系统安装与卸载(win10+ubuntu18.04+NVIDIA GeForce RTX2060+CUDA10.0+Cudnn+pytorch)

    在网上找了不少教程,终于把笔记本装上了双系统了,记录一下! 想要在自己电脑跑python的代码,要用到显卡,win下总是各种报错,决定还是装个linux的系统.要注意一下,我这里要安装显卡驱动,所以u ...

  8. win10刚安装linux黑屏,win10 + Ubuntu18.04 双系统,UEFI+GPT,从win10切换到Ubuntu时黑屏问题...

    1.现象: ①win10主系统,从win10重启,立即黑屏,之后会进入Ubuntu(还是黑屏)(为什么会知道进入了Ubuntu:按音量键可以听到Ubuntu音量加减的系统声音,数字锁定和大小写锁定均有 ...

  9. win7+ubuntu16.04以及win10+ubuntu18.04双系统安装

    win7+ubuntu16.04以及win10+ubuntu18.04双系统安装 win7+ubuntu16.04以及win10+ubuntu18.04双系统安装 2020.8.8更新 2020.7. ...

最新文章

  1. kenrel volatile关键字
  2. TLS回调函数(1)
  3. C++实现glut绘制点、直线、多边形、圆
  4. Developer Express 中Gridcontrol获取选中行单元格的值
  5. mq集群要建传输队列吗_面试官:消息队列这些我必问!
  6. java hibernate 分页取数_java – Hibernate分页机制
  7. Android中设置显示文本,TextView控件的使用(Android设置文本显示格式)
  8. 机器人教练SWOT分析_用SWOT方法分析中国智能机器人的发展现状
  9. “红黑树”,我一脸懵逼......
  10. Ubuntu查找文件
  11. cdd图像修复matlab,图像修复CDD模型新算法①.PDF
  12. 程序猿秃顶算工伤吗?
  13. 斗地主十句口诀技巧全解
  14. NSDI'17-论文阅读[CherryPick:Adaptively Unearthing the Best Cloud Configurations for Big Data Analytics]
  15. Sim300模块AT命令
  16. Elasticsearch快速检索之倒排索引算法
  17. 数据结构 实验一 熟悉C++的编程环境
  18. python 点到直线的距离
  19. 教你批量查询苏宁快递多个已签收单号的物流情况
  20. 《应用商务统计分析》第一章 线性回归(报告)

热门文章

  1. 如何在mac端上用git上传代码到码云
  2. JavaScript - 专题 - 彻底搞懂parseInt
  3. 360官网脱壳分析-2017-04-04
  4. android 自定义关机界面,android源码探索之定制android关机界面的方法
  5. 如何核对身份证号码和姓名是否为一致?
  6. python --pygame 游戏之 飞剑骑士
  7. 怎么进入MySQL命令行
  8. 番外篇:研究生心得:研二篇(一)
  9. UML 用例图中include,extends,uses的区别
  10. 利用QQ兴趣部落日引3000精准粉丝的实操经验