随身携带一个自己定制的Ubuntu Live优盘已经是我的常态
有时帮别人维护电脑,还总要再带个WinPE+GHOST系统盘 装Win7 很是尴尬
最近几经试验,终于完美解决了在 Ubuntu 中直接克隆安装 Windows 这个问题
第一步准备好一个安装有Win7/10的分区,并进行系统封装。
也可以将网上已经封装的 Win7/10 释放到一个分区中。
需要特别注意的是,不要boot单独分区。
第二步
对源Windows分区的BCD进行修改!(可以在PE中进行)
命令格式例如 bcdedit /store C:\Boot\BCD /set {bootmgr} device boot
一共要修改下面我加粗的3项
Windows Boot Manager
--------------------
identifier {bootmgr}
device boot
description Windows Boot Manager
locale en-US
inherit {globalsettings}
default {current}
resumeobject {d89b8296-137c-11e8-9d1d-bc8e9c3fc4c2}
displayorder {current}
toolsdisplayorder {memdiag}
timeout 30
Windows Boot Loader
-------------------
identifier {current}
device boot
path \Windows\system32\winload.exe
description Windows 10
locale en-US
inherit {bootloadersettings}
allowedinmemorysettings 0x15000075
osdevice boot
systemroot \Windows
resumeobject {d89b8296-137c-11e8-9d1d-bc8e9c3fc4c2}
nx OptIn
bootmenupolicy Standard
C:\Windows\system32>
这样用[boot]这个变量来代指引导分区,就可以解决恢复到其他计算机分区时 PARTUUID 变化导致 BCD 引导出错!
第三步 在Ubuntu Live中使用 gparted 分区工具缩小这个Windows分区,让其只有1个GB的剩余空间以下即可!
因为接下来的备份过程不是按文件进行备份,而是按块进行备份,剩余空间也会读取进行备份。所以不要留太大剩余空间。以免造成备份文件过大。
第四步 使用 dd 读取 Windows 分区,将流送给 xz 压缩!
dd if=/dev/sda1 bs=32MiB | xz -z -9 -T 0 -v > win7_raw.xz
需要注意的是 xz 5.2.2 版本以上才支持 -T 0 参数,后面数字表示用几个CPU核心进行压缩,0表示自动判断CPU有几个核心并全部使用。
完成后就可以得到一个xz格式的高压缩镜像了。
源先我的GHOST高压缩系统备份有9GiB,释放后重新这样用dd捕获xz压缩,总共才6GiB。
可见 xz 压缩的威力~!
下面谈下系统恢复,很简单!
第一步 释放分区到 sda1 ,目标分区必须要大于源备份时的分区大小!
xz -d -c -v win7_raw.xz | dd of=/dev/sda1 bs=32MiB
此时,由于恢复的文件系统比目标分区小,分区后面的空间还没有被利用上
接下来
第二步 查看分区大小 ( Current device size 值)
sudo ntfsresize -i -f /dev/sda1
第三步 将恢复的 ntfs 文件系统展开到分区大小
sudo ntfsresize -s [上一步获得的值] -f -v /dev/sda1
需要注意的是 ntfsresize 工具会设置 NTFS 的 dirty ,所以重启进 Windows 的时候会触发 Windows 的磁盘扫描!
如果不喜欢,在 Ubuntu 中用 ntfsfix 工具的 -d 参数清除 NTFS 的 dirty 位就可以了!
不过 Windows 扫描下磁盘不是坏事,就让他扫好了!
重启后 Windows 就可顺利进行引导了!
亲测好使!
对于新硬盘的机器,我用parted进行分区,激活分区,parted 连 mbr 引导都自动写好了!还是比较方便的!
如有不当之处或更好的建议,欢迎跟帖!
[原创]在Ubuntu中实现Win分区的备份和还原(取代PE和Ghost)
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
-
- 帖子: 304
- 注册时间: 2011-01-02 12:31
-
- 帖子: 413
- 注册时间: 2011-08-04 4:19
- 系统: Ubuntu 12.10
Re: [原创]在Ubuntu中实现Win分区的备份和还原(取代PE和Ghost)
还以为可以打包ntfs了,原来是dd