情景是这样的:我有一台老式的台式机电脑,新添了一个固态硬盘,我想把装在原来的机械硬盘上的操作系统转移到新的固态硬盘上。原来的操作系统是Debian 8 (Jessie),机械硬盘容量是250G;新的固态硬盘是120G的。

我想要达成的目的是:

  1. 操作系统和应用软件装在固态硬盘中(固态硬盘寿命到了,文件找不回来也没有太大损失);
  2. 主目录分区/home 还用原来机械硬盘中的主目录分区;
  3. swap分区也是原来机械键盘上旧系统的swap分区(减少固态硬盘的写入操作)。

经过调研(就是狂搜)和失败的尝试,我在这里总结一个可行的流程。往新盘上转移操作系统,其实可以简单的分成三步:新硬盘分区,复制文件,设置引导程序和文件系统。至于固态硬盘的优化,或者4K对齐等等问题,网上的教程已经足够详细了,不是重点,所以我不打算写这方面的内容。

完成以下步骤所需要的主要工具是:grub, gparted, rsync.

新硬盘分区

在我的系统上,固态硬盘对应设备/dev/sdb。首先,用普通用户身份启动 gparted, 命令是

$ gksu gparted

输入超级用户密码,即可使用gparted的图形界面。选择设备/dev/sdb, 然后执行菜单 Device | Create Partition Table 命令,在分区表类型中选择 msdos。这种分区表类型就是使用传统的MBR空隙记录引导程序的文件信息。为什么不选用更新的GPT?如果是很老的台式机,BIOS可能不不支持EFI设备,也就不支持从GPT分区启动了。

在创建了分区表后,为简单起见,我只分了一个区,文件系统的类型设置为对SSD支持还算好的ext4。至此新硬盘分区这一步骤完成。

复制文件

复制文件最关键的是保持文件的属主、权限和属性等。网传的dd方式有一些限制,例如要求源盘比目标盘小,否则就要指定写入数据的量。也有人提出要tar命令,我没有验证。更直接的方式是使用rsync命令。

首先把新盘挂载在/mnt目录。执行下面的命令都需要超级用户。

# mount -t ext4 -o defaults,noatime,discard /dev/sdb1 /mnt

暂不解释文件系统挂载选项。接下来执行rsync命令:

# rsync -aAXv --exclude='/dev/*' --exclude='/proc/*' --exclude='/sys/*' --exclude='/tmp/*' --exclude='/run/*' --exclude='/mnt/*' --exclude='/media/*' --exclude='/lost+found/*' --exclude='/home/*' / /mnt

这里的选项 A 表示在复制过程中保留文件的ACLs信息, X表示保留文件的扩展信息, a 是常用选项的组合,相当于 rlptgoD, 而v表示在复制过程中显示当前正在复制的文件名。被排除在外的目录中,/dev, /proc, /sys, /run是在启动过程中生成的;/tmp中的文件不重要;/lost+found目录只适用特定的分区,复制到其他分区是无用的;/home目录不要复制,它将挂载在新系统中。注意,一定要用单引号,禁止shell把符号*作展开。

取决了固态硬盘的写入速度和系统文件的大小,这个过程可能需要几分钟的时间。

设置引导程序和文件系统

接下来修改 /mnt/etc/fstab文件,修改新系统的文件系统挂载选项。这默认是一个只读文件,所做的修改需要强行写入才能保持。现在最可靠的办法是使用UUID标识分区。获取各分区的UUID的一个简便方法是使用命令blkid, 不带参数即可在屏幕显示所有分区的UUID。

设置引导程序的方法,自动化程度最高的一种是chroot到新系统所在的目录,用grub的工具自动完成。这需要绑定挂载一些目录:

# mount --bind /proc /mnt/proc
# mount --bind /sys  /mnt/sys
# mount --bind /dev  /mnt/dev
# mount --bind /run  /mnt/run

然后执行chroot命令

# chroot /mnt

把引导程序安装到新硬盘上

# grub-install /dev/sdb

最后自动配置grub引导程序

# update-grub

至此,所有的步骤都已完成,接下来就是重启系统,在BIOS中修改启动媒介的顺序,从新硬盘优先启动。

上述内容是我在参考以下两个网页,并实际操作后写总结的。

  • [用rsync制作完整系统备份] (https://wiki.archlinux.org/index.php/Full_system_backup_with_rsync)
  • [复制Linux到另一台电脑] (http://positon.org/clone-a-linux-system-install-to-another-computer)

转载于:https://my.oschina.net/u/3209878/blog/820745

转移整个系统到新硬盘上不重装相关推荐

  1. 使用ghost备份系统到新硬盘上使用

    使用电脑可能会遇到更换硬件的时候,但如果跟换了硬盘,原来旧硬盘上备份的ghost系统移动到新的硬盘上无法使用,怎么办呢?这个原因住要是旧的系统注册表记录了当前硬盘的信息与新硬盘的不相符,所以导致无法启 ...

  2. 重装w11新硬盘,找不到硬盘

    如果买来新硬盘,并且新硬盘要做系统盘,记得把旧硬盘先拆下来,新硬盘装好后再把旧硬盘挂载上去 这样是单系统硬盘 如果旧硬盘,新硬盘都接上去,再装新系统,就成为双系统电脑,安装过程,系统会问你装哪个硬盘上 ...

  3. 怎么把游戏(魔兽世界)转移到另一个电脑上

    如何将硬盘上的<魔兽世界>移动到另一块硬盘? 「我不久前买了一块大容量的硬盘,然后想将<魔兽世界>搬到新硬盘上,问题是怎么才能最快.最高效的传输应用?我希望所有的设置.插件和其 ...

  4. 将系统从机械硬盘迁移至固态硬盘上

    1.使用DiskGenius软件.分区助手或者傲梅分区助手进行系统迁移 如果无法使用程序自带的迁移功能完成系统迁移,可以使用DiskGenius的克隆分区功能,将ESP分区.MSR分区以及系统分区复制 ...

  5. Windows 11系统映像恢复到新硬盘的3种方式

    备份对于保护您的系统和数据非常重要 Windows 11在国外正式发布后,许多用户可能想要将Windows 10升级到Windows 11 体验它的新功能.如果您喜欢新的操作系统并希望将来可以更安全的 ...

  6. 电脑装Windows+Ubuntu双系统,及后续调整硬盘和系统重装之后相关的引导问题

    目录 双系统(针对legacy启动模式搭配MBR分区格式,如果是UEFI启动模式搭配GPT分区格式需要在BIOS中将boot mode修改为UEFI only) 系统重装以及硬盘调整导致的引导项不可用 ...

  7. ecs硬盘数据迁移_如何将数据从旧硬盘完美迁移到新硬盘

    1. 创建PE启动盘 准备已安装PE的U盘或移动硬盘. 您可以在Internet上下载PE工具盘的ISO文件,然后使用UltraISO打开ISO文件→单击启动菜单,然后选择写入硬盘映像→写入方法USB ...

  8. 计算机管理找不到新安装的系统,我的电脑开机显示找不到启动设备,请在硬盘上安装操作系统怎么办?开...

    我的电脑开机显示找不到启动设备,请在硬盘上安装操作系统怎么办?开以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 惠普笔记 ...

  9. 苹果MAC系统更换新硬盘 联网重装 地球一直转 速度过慢 apple.com/support -2002F问题解决办法

    本文为原创作品,未经作者允许请勿转载,转载请注明出处. -2002F问题是DNS无法解析问题,即连入的互联网无法连接到apple.com/support 下的相关服务. 有人可能会说了,我同网络下的其 ...

  10. linux服务器插上硬盘不能开机,Linux服务器添加新硬盘无法识别解决方法(无需重启)...

    Linux服务器添加新硬盘无法识别解决方法(无需重启) 发布时间:2018-08-24 19:45, 浏览次数:711 , 标签: Linux 前言 一般来说,当我们在服务上插入新的磁盘时,服务器是会 ...

最新文章

  1. 源码阅读心得11-13
  2. search has not been saved
  3. 使用CSS实现无滚动条滚动
  4. 计算机不能显示可移动磁盘咋办,U盘插上电脑不显示“可移动磁盘”该怎么办...
  5. 算法导论6:排序小结和最值取法 2016.1.6
  6. UVA10194 Football (aka Soccer)【排序】
  7. R6300V2 从 DD-WRT 回刷恢复 官方原厂固件   DD-WRT to R6300V2
  8. 【手写数字识别】基于matlab GUI BP神经网络手写数字识别(手写+带面板)【含Matlab源码 1196期】
  9. 移动硬盘安装win10操作系统
  10. on the fly
  11. TMS320F280049C 学习笔记10 控制率加速器 Control Law Accelerator (CLA) 入门
  12. 电子商务购物网站的设计与实现(论文+源码)_kaic
  13. “AI+停车”数百亿的市场等你来加入
  14. ES6 数组some()和every()使用
  15. 中国金融出版社出版的2016版《公司信贷》
  16. java poker_Java超级高手成长之路!一个Java编写的斗地主游戏
  17. 数值分析:最小二乘与岭回归(Pytorch实现)
  18. 快速微课制作方法和技巧
  19. manjaro-xfce的安装
  20. 思科计算机第七章答案,CCNA第七章 访问控制列表 练习

热门文章

  1. 开源且强大的网络嗅探分析工具——Wireshark
  2. python多进程共享Array
  3. 使用微信公众号搭建免费查券返利机器人详细教程
  4. KubeSphere 社区双周报 | OpenFunction 支持 Dapr 状态管理 | 2023.03.31-04.13
  5. 在自己身上找寻阿Q的元素-《读书修身》课程报告
  6. 【机器学习项目】使用 PyTorch 预测汽车价格(详细报告+代码详解)
  7. 小程序的“场景”,是否会掀起线下的战争?
  8. 采集数据:京东空调类
  9. python 小游戏 捕鱼达人
  10. xpath抓取去掉\r\n\t