很多人购买品牌台式机、大部分的笔记本出厂自带的系统,厂家都制作了还原出厂,系统出问题想要回到最初状态的时候还是很有用的。这些多数都被制作在硬盘的隐藏分区里。
如下图,后面三到四个分区都是厂家制作系统备份和工具的分区。
OS(C)后面三个分区即是系统还原出厂的功能区。
一些人觉得硬盘太小,需要升级硬盘但是又想保留这些出厂分区的时候,如笔者更换512g的时候就想保留下原始的隐藏分区,在简单使用几款常用工具后,开机用recovery工具均出现卡死在启动界面的情况。
去电售后得到的答复这个隐藏分区使用只有厂家出厂制作。本着生命在于折腾的原则。对比两块硬盘的分区参数唯一发现了分区id有所不同。如下:
大概原因是还原程序需要读到相应的id才会进入此分区。
下面介绍一种保险但是比较复杂的操作。linux下硬盘克隆。
因为linux系统对分区的id很严谨,用自带命令dd对两个硬盘做对拷就可以。
(简单说下dd命令,linux命令下格式
dd if=/a of=/b
if后输入拷贝源,可以是硬盘名称可以是分区可以是某个文件,总之输入源
of后输入目的位置,可以是硬盘名称可以是分区也可以是文件形式。
简单吧 ,盘---盘就是克隆硬盘,分区----分区就是分区克隆,盘----文件就是做备份为文件,文件----磁盘就是还原。dd命令很多功能这里就不赘述了。)
下面要做的是就是进入linux环境,最简单的就是live版, ubuntu 18 19都可。
镜像做个启动U盘就可以
重启电脑,U盘启动后进去环境,我用虚拟机做演示
找到终端打开
命令 sudo fdisk -l
sudo临时获取权限,其他版本用su登录root后再执行fdisk -l
此命令用作查看本机硬盘分区列表
一定要根据磁盘大小和分区样式分辨出源盘和目标盘,错了可就全反了。切记。
不要弄错!
如图原盘为/dev/sda 目标盘为/dev/sdb
用命令
sudo dd if=/dev/sda of=/dev sdb
执行即可,
dd命令比较老,默认的传输块比较小,大约只是几百kb,不难理解平时拷贝大文件速度快遇到小文件速度特别慢。因此加上bs参数,也就是每个传输块大小设置一下bs=32M(32mb为一个传输单元,这个自己决定,本人两块ssd对拷,硬盘速度500,参数bs超过20mb后基本dd速度在300多mb/s,已经跑到了这个dd命令速度的上限)
新命令为:
sudo dd if=/dev/sda of=/dev sdb bs=32M
这个dd在后台运行,想要实时看进度的话需要另开一个终端后输入下命令:
sudo watch -n 10 killall -USR1 dd
(其中的10为10s显示一次进度,可自行设置,新终端里会每10s显示一下速度和完成数)
因为是全盘扇区对拷所以时间=容量/速度。
500g硬盘如果按照300m/s计算
500x1024mb/300=1700s=28分钟
也可以of改为一个文件,做备份文件,文件大小和硬盘一样=500g,
想要压缩文件的命令改为:
dd if=/dev/sda1 bs=32M | gzip > sda1.dd.gz (大于号后面:备份文件位置和文件名)
gzip对系统盘的压缩率特别高,500g盘压缩后为30G左右,相当小,利于存储,只是反向还原时候没有1比1文件还原的速度快。大家有兴趣保留硬盘文件可以试试。
完成后关机换回新硬盘即可使用。
但是,因为新盘多数容量很大(比如256g升级为512g容量),那么dd做好的新盘,前面几个分区和老盘一样,后面会出现256g未格式化的容量,现在就用到分区移动工具把后面三到四个隐藏分区移动到硬盘尾端,应用。
此步骤目的是把未分配的容量一步一步挪到C盘旁边,有几个隐藏分区就移动几次,直到未使用容量紧挨着数据盘之后。
然后用自带的磁盘管理扩展数据盘,把新盘的大容量扩展给了数据盘。
这样之后的结果新盘分布和旧盘一样,数据盘容量升级。
还没结束。
磁盘管理里面对隐藏分区的描述,原本的oem等字样,会随上面移动分区那一步改变,继续做下一步。
利用自带的diskpart工具把新位置的隐藏分区的属性再改为原始值就大功告成了。
管理员权限运行cmd
diskpart
list disk(显示硬盘列表)
select disk N(选择第N个硬盘,N为硬盘编号,我的硬盘2是系统硬盘,含有隐藏分区,也就是这次要操作的硬盘2)
list part(查看选定硬盘所有分区)
detail part (显示所选分区详情)
关注属性那一栏数值
新硬盘这个数值会和原始盘不同,原因是移动分区那一步造成oem分区变成了普通分区。
参考旧盘的数值把新盘这几个移动后的分区改回去:
在select part x 选定需要操作的分区后
执行(gpt分区硬盘)
gpt attributes = 数值
这串数值要根据你原盘对应数值来。
mbr硬盘
set id = xx