Contents

复制硬盘中的Ubuntu/Deepin到移动硬盘_实现移动硬盘Deepin+Ubunntu双系统

序言

  自己想要实现题中的需要,主要是Ubuntu原来是安装在笔记本的HHD中的,那个Ubuntu18.04花了我接近实打实的好几个星期的时间去美化,所以一直不舍得删除,现在想移植到移动SSD固态硬盘实现移动的linux,平时也能高速访问的效果,固折腾了2天,固有此文

方案选择

  操作之前首先到谷歌百度上调研了一下各种实现方式,有很多种实现方式,什么dd命令行操作,什么再生龙Clonzilla软件操作,什么live CD等等,具体看这篇文章,如何将整个Ubuntu系统移动(复制)到另一个硬盘? - Ubuntu问答.   感觉再生龙Clonzilla操作我完全不熟悉,而且感觉好像不太可控,于是放弃这种方案,对于dd操作,挂载来挂载去的,命令行也不是很直观,感觉对我这种菜鸡也不太好,所以最终选择了使用Live CD的gparted来操作,图像化操作,还可以支持操作前撤销啥的,文章中又推荐,而且自己以前也用过Ubuntu Live CD干过事情,所以决定的就是你了,妙蛙种子,上啊

材料需求

  • 一个移动固态或移动硬盘或者一个你想把系统移植到的其他硬盘(后面简称dst盘)
  • 原来的Ubuntu系统的硬盘(后面简称src盘)
  • 一个内存大于8G的U盘–>用于制作Live CD系统(当然你有除了src,dst盘以外的盘装有linux系统也可以)
  • 其他: 可能USB口少的电脑需要一个USB-Hub啥的

制作Live CD

  这个应该教程很多,就是下载Ubuntu官网的iso镜像包,当然如果觉得官网速度慢也可以找其他的镜像文件网站去下载 , 比如网易的开源镜像网站上的iso文件 ,然后去UltraISO官网下载UItraISO,最后用一个大于8G的U盘备份好数据后用UItraISO制作成为Live CD就完事了,具体制作教程可以参考一些安装Ubuntu系统的文章,比如使用UltraISO在Windows 10下刻录Ubuntu 18.04.2 U盘的方法

复制硬盘数据

分好空间,进入Live CD

  首先我们将dst盘的空间分配出一块大于src盘Ubuntu系统大小的内存,使之成为未分配空间,然后关闭安全启动,进入Live CD系统,设置U盘启动,不会可以参考这篇文章图文并茂的文章教你如何分配出未分配空间并进入Live CD,然后得到如下Live CD的grub界面 https://cdn.jsdelivr.net/gh/wolfdan666/BlogPic/SSD/%E7%A7%BB%E6%A4%8DUbuntu/grub%E7%95%8C%E9%9D%A2.jpg

第一步失败的可能问题以及解决

  可能会进入失败-> 比如这样 https://cdn.jsdelivr.net/gh/wolfdan666/BlogPic/SSD/%E7%A7%BB%E6%A4%8DUbuntu/%E8%BF%9B%E5%85%A5grub%E5%A4%B1%E8%B4%A5.jpg 进入失败的话重进一次,否则重新制作Live CD

进入磁盘管理,复制分区

右键屏幕打开终端(也可以Ctrl+Alt+T),然后输入 gparted 进入磁盘管理 稍等片刻(磁盘扫描需要时间)得到如下画面,然后找到并选中src盘中的第一块盘,右键呼出菜单,点击复制 得到如下画面 https://cdn.jsdelivr.net/gh/wolfdan666/BlogPic/SSD/%E7%A7%BB%E6%A4%8DUbuntu/%E8%BF%9B%E5%85%A5gparted%EF%BC%8C%E5%A4%8D%E5%88%B6%E5%88%86%E5%8C%BA.jpg

找到dst盘,然后找到未分配分区的地方,右键粘贴,然后会弹出下面的界面,你可以顺便对你的src的Ubuntu系统各个分区的大小进行大小调整,我不需要调整,所以我直接选择了Paste就行 https://cdn.jsdelivr.net/gh/wolfdan666/BlogPic/SSD/%E7%A7%BB%E6%A4%8DUbuntu/Paste%E7%95%8C%E9%9D%A2.jpg

paste完的界面如下,也就是说这个paste操作是还没有执行的,你还可以到时候执行 https://cdn.jsdelivr.net/gh/wolfdan666/BlogPic/SSD/%E7%A7%BB%E6%A4%8DUbuntu/Paste%E5%AE%8C%E7%9A%84%E7%95%8C%E9%9D%A2.jpg

之后我们依次复制src盘中的其他分区到dst,然后得到如下界面,我们应用磁盘操作,一直选是是是就行 https://cdn.jsdelivr.net/gh/wolfdan666/BlogPic/SSD/%E7%A7%BB%E6%A4%8DUbuntu/%E5%BA%94%E7%94%A8%E7%A3%81%E7%9B%98%E6%93%8D%E4%BD%9C.jpg

(必)设置启动标签

操作完之后我们需要右键原先复制过来的EFI分区的那个地方,右键呼出菜单,设置标签,选择启动分区

由于这一步之前没有操作,然后磁盘之前有Deepin,所以导致移动到dst盘的Ubuntu一直找不到引导!!!

这里没图是因为相信你们已经能熟练操作gparted了其实是我后面忘了拍照

生成新的UUID,然后修改fstab文件

本步骤的预先提示

当然如果你拔掉老硬盘,然后一直装上新硬盘可以不用操作此步骤,因为此步骤的目标就在于让你的系统在src,dst盘同时存在的时候能让你 既可以进入src盘的Ubuntu,也可以进入dst盘的Ubuntu,而不至于冲突,或者只能进入一个盘

当然如果你时间够,想折腾,拔掉老硬盘也是可以进行下面操作玩一玩的

一些专有名词

UUID(通用唯一识别码) –> 是操作系统加载是用这个来码来寻找硬盘分区的,每个分区都对应着一个UUID

开始操作吧

先使用gparted把刚刚所有的新分区都选中右键生成新的UUID(又忘了拍照,不过操作应该很简单很简单) 然后使用命令行 sudo blkid -s UUID 查看一下是否修改成功 然后参考原来src盘的fstab中的磁盘和UUID对应表文件表sudo gedit /etc/fstab,(还可以通过disk和gparted来确认性参考) 来修改dst盘的fstabsudo gedit /etc/fstab Ctrl + S保存修改

整体操作如下图所示 https://cdn.jsdelivr.net/gh/wolfdan666/BlogPic/SSD/%E7%A7%BB%E6%A4%8DUbuntu/fstab%E4%BF%AE%E6%94%B9.jpg

其中swap被我注释了,是应为我的电脑有16G物理内存,不太需要swap分区,所以我就没有没有赋值src盘中的swap分区,然后这里也把最后一行对于swap的UUID的选择给注释了

核心

下面两个问题卡了我8小时…(下面有详细叙述)

  • 编写分区类型为boot就行,然后去disk修改为efi类型!
  • 如果发现复制后的efi分区中的各个*.cfg文件中的uuid不是新的uuid,必须手动改一下!

注意添加启动标记

2019年11月24日10:32:50 更新(来源昨天移植deepin到另一个SSD(有80年丰富移植linux系统经验的老司机带你翻车))

注意一定要给你得dst盘的新来的efi分区 右键-> 设置标签 -> boot,然后去Ubuntu的disk应用查看这个efi分区是否标识的是efi分区!

https://cdn.jsdelivr.net/gh/wolfdan666/BlogPic/SSD/%E7%A7%BB%E6%A4%8DDeepin/efi.jpg

在disk中选中你刚刚的分区,然后点击那个齿轮按键,编辑分区类型,搞成efi(我选的是那个非gpt的-然后成功了,不知道另一个可以不)

https://cdn.jsdelivr.net/gh/wolfdan666/BlogPic/SSD/%E7%A7%BB%E6%A4%8DDeepin/efi2.jpg

注意修改efi文件中的UUID

2019年11月24日10:32:50 更新(来源昨天移植deepin到另一个SSD(有80年丰富移植linux系统经验的老司机带你翻车))

2019年12月28日15:30:39 昨天又帮助同学移植了一波系统,发现这一步是必须要做的事情!

我之前搞Ubuntu移植的时候没有这么多事,但是deepin不知道为什么这么多事(有一说一,虽然deepin平时确实好用)—可能之前侥幸处理好了下面的操作

直接挂载efi分区,然后去修改/***(UUID码)/EFI/boot/grub.cfg(种类一),也可能多一层grub文件夹(种类二) 在每次grub自动加载的时候,它都是读取上面文件里面的UUID!!! 这就很要命!!!最要命的看下面

文件中有个地方的UUID值不会随着deepin,Ubuntu的终端命令 sudo update-grub来更改的,看下图 https://cdn.jsdelivr.net/gh/wolfdan666/BlogPic/linux/MoveOS/grub_no_change_uuid.jpg

导致的grub引导界面的后果是—引导进入错误的设备(进入原来的设备 https://cdn.jsdelivr.net/gh/wolfdan666/BlogPic/linux/MoveOS/bad_grub_id.jpg

所以可能必须手动修改成新的/分区的UUID为启动root(操作如下图)

种类一

修改成为你的新UUID https://cdn.jsdelivr.net/gh/wolfdan666/BlogPic/SSD/%E7%A7%BB%E6%A4%8DDeepin/boot.jpg

种类二

把椭圆中的内容修改成为方框中的内容,注意不要在等号前面加空格,别问我是怎么知道的(问就是曾经踩过坑) https://cdn.jsdelivr.net/gh/wolfdan666/BlogPic/linux/MoveOS/grub_no_change_uuid.jpg

重启享受

重启,然后选择dst盘的Ubuntu进入,完美

当然你可能在这一步卡住,所以下面给出一个潜在的原因与解决方案,以及一些可能出现的状况与解决方案

引导相关

如果你的原来的Ubuntu是安装在磁盘上,并且不想删除原有的Ubuntu,可以像我一样使用原有盘的Ubuntu的grub来引导所有系统,就是直接进入原来的Ubuntu,在命令行中直接sudo update-grub就行了

潜在的原因与解决方案

fstab修改错误

再进入Live CD进行修改fstab

待大佬贡献或者提问添加

可能出现的状况与解决方案

有多个efi分区,不知道复制哪一个

2019年11月16日14:20:04 更新 可以通过查看src盘系统中/etc/fstab文件中efi的UUID来确定到底使用哪一个efi文件

进了src盘的Ubuntu
  • 再进入Live CD进行修改fstab
  • 给EFI分区设置启动标签(只要设置成boot,然后还是无法启动的话,看上文中的核心两点,2019年11月24日10:57:39新加的内容)

一般来说是独立显卡的问题,然后如果之前src系统能进的话,加上是完全复制的话一般不会出现这个问题,但还是给一下解决方案

在进入grub安装界面的时候,在Install Ubuntu选项,按e,进入命令行模式,然后在quiet slash – 后面(也可能没有 – ),添加以下内容,然后按F10重新引导 acpi_osi=linux nomodeset 进入之后安装显卡驱动,啊,推荐看大佬的文章吧解决Linux双系统安装卡在启动Logo

戴尔BIOS找不到U盘启动项

2019年12月28日16:17:49 更 按F12进入选择界面

戴尔BIOS找不到固态硬盘启动项

2019年12月28日16:18:15 更(wyh) 尝试6小时,失败,最终重装Ubuntu系统才能找到启动项(大雾

突然感觉神舟还是留了很多的自由给发烧友进行魔改支持的,爱了

回归正题 : 希望知道怎么解决的朋友评论一发,感谢,感恩

待大佬贡献或者提问添加

后续

我在我的酷比魔方knote x上面直接F7直接进入SSD的引导一直失败,Live CD也无法sudo update-grub,于是便在knote x上面安装了Ubuntu+windows双系统,在那个Ubuntu下使用sudo update-grub来引导我的SSD中的Ubuntu,惊喜发现还能引导我的Deepin!

为什么是惊喜呢?

因为我之前Deepin 的安装盘也F7 直接选择硬盘进入进入不了,还以为运行不了Deepin,然后发现连SSD中的Ubuntu也引导不了!但网上说knote x是可以安装Ubuntu的,于是就认为是直接进入硬盘不太行,所以必须grub引导一下,所以有了上面操作,然后收获了也能引导Deepin的惊喜

由于这周末在秦皇岛打2019CCPC秦皇岛,所以9月20就开始写了,但现在(2019年9月22日22:16:40)才写完这篇文章

二次移植Deepin的教训已经加入上文

感谢各位朋友的观看,2019年11月24日10:59:00 已经加入了我移动deepin的8小时惨痛教训的经验了,所以此文将成为一篇LTS文章(长期支持维护文章)—-好像是小编懒得写第二篇文章?才不是!我是要做好所有维护(虽然之前有个同学看我的这个没有加入二次移植经验的文章翻车了)