IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

用CloneZilla制作紧急恢复分区

idv2 2010-07-19 22:50:48 累计浏览 3,618 次
本机暂存

关于一键恢复,网上有很多讨论,也有很多成品,不过大多数都是基于Ghost实现的,而Ghost是个商业软件,喜欢用开源的人可能比较难于接受吧。此外,这种一键恢复虽然很容易使用,但可定制性也比较差。所以我考虑使用CloneZilla 来制作一个紧急恢复分区,用来备份/还原系统。

为什么用CloneZilla呢?理由如下:

  • 它是开源软件。
  • 备份形式灵活,可以选择备份分区或整个硬盘,可以选择备份到本地硬盘,也可以备份到网络。
  • 自带的Linux系统可以用作系统维护。

CloneZilla的使用方法就不多说了,自带的中文文档中有极其详尽的截图说明。另外,制作紧急恢复分区,只有CloneZilla是不够的,还得要grub4dos的帮助。

我的操作系统是Windows XP,硬盘分区默认都是NTFS。下面开始动手吧。

准备分区

我的C盘容量是40G,常驻的文件大约有10~20G左右,长时间使用之后可能会增长到30G。考虑到备份后的镜像能被压缩到50%左右,所以一次备份大约需要5~10G的硬盘。所以我留出30G的空间用作备份。

首先整理磁盘碎片,然后用Partition Magic等工具在硬盘末尾划分出一个30G的空间。最好是用主分区(原因是,Linux和grub对主分区的编号方式要比逻辑盘简单些),然后将其格式化成FAT32,并分配一个驱动器符号(假设为J:)。这就是以后的紧急恢复分区。

安装CloneZilla

在 J: 盘下建立以下几个目录:

  • clonezilla:CloneZilla主目录
  • grub4dos:grub4dos主目录
  • iso:其他系统维护盘镜像的目录
  • images:C盘镜像备份的目录

然后把CloneZilla Live光盘中的 live 目录下的内容完全复制到 J:\clonezilla 下。

安装grub4dos

grub4dos支持NTLDR启动,所以其实只需要两个文件:grldr和menu.lst。但为了以后作业方便,我还是把整个grub4dos文件都放到了 J:\grub4dos 下。

然后设置NTLDR启动:复制 J:\grub4dos 下的 grldr 和 menu.lst 两个文件到 C: 盘根目录。然后编辑 C:\boot.ini ,加入以下内容:

C:\GRLDR="Start GRUB"

重新启动计算机,按F8出现Windows XP的启动菜单,然后选择“Start GRUB”,能出现GRUB的启动菜单就OK。

设置grub4dos启动CloneZilla

回到Windows下编辑menu.lst。默认的menu.lst中有许多没用的菜单项,我只保留了最初加载NTLDR和CMLDR的两项。然后加入启动CloneZilla的菜单项:

以下是代码片段:
title Clonezilla live on harddrive
root (hd0,2)
kernel /clonezilla/vmlinuz1 boot=live union=aufs vga=788 ip=frommedia live-media-path=/clonezilla bootfrom=/dev/hda3 toram=filesystem.squashfs
initrd /clonezilla/initrd1.img
boot
我的恢复分区(J:)是系统的第三个主分区,所以第二行盘符为(hd0,2),第三行的bootfrom为/dev/hda3。这两个参数根据具体情况调整即可。另外,kernel和initrd指令中用到的 /clonezilla 路径,就是我们建立的 J:\clonezilla 路径。

设置好之后,重新启动,进入Grub选择“Clonezilla live on harddrive”菜单项,看看能否顺利启动clonezilla。

安装Win98启动软盘

这一步的目的是让电脑能启动到纯DOS模式下,以便执行一些维护命令,比如稍后要说的bootlace.com程序就必须在纯DOS模式下执行。

首先上网找一张Windows 98启动软盘的镜像,放在iso目录下,假设路径为 /iso/win98.img。然后在menu.lst中加入以下菜单项:

title Win98 Floppy
find --set-root --ignore-floppies /iso/win98.img
map --mem /iso/win98.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)

这里关键是map --mem这条命令,它将镜像文件完全加载到内存中,并把它映射到设备(fd0)上,这样就相当于虚拟了一个软驱。

然后重新启动计算机,进入Grub选择“Win98 Floppy”即可进入纯DOS模式。

安装grub4dos的引导扇区

现在grub4dos是通过NTLDR引导的,万一NTLDR也挂掉了,这个紧急恢复分区就失效了。为了防止这一点,需要把grub4dos安装到MBR中。

grub4dos提供了一个名为bootlace.com的程序可以写MBR。它的原理是,首先把原有的MBR(位于0扇区)备份到1扇区,然后在0扇区写入自己的启动程序。根据硬盘启动区的规格定义,硬盘的0磁道中,除了0扇区是MBR之外,其他扇区都是保留,所以备份到1扇区不会有任何影响。

由于bootlace.com必须在纯DOS下使用,而Win98启动盘提供的DOS没有命令行历史功能,偏偏bootlace.com的选项又长又多,因此手动敲命令可不是个好办法。应该建立一个名为INSTALL.BAT的文件,把bootlace.com的命令行写进去。

下面是INSTALL.BAT的例子。注意实际书写时不要换行,都写在同一行上。而且要注意命令行长度不要超过127个字符,这是DOS对命令行长度的限制。

bootlace --boot-prevmbr-first --time-out=1 
         --hot-key=0x4300 --force-backup-mbr 
         --preferred-drive=0 --preferred-partition=2 0x80

各个选项的具体说明可以参见README_GRUB4DOS.TXT,这里只简单说明一下。

  • --boot-prevmbr-first指明优先启动原来的MBR(进Windows),只有按下热键时才进入特定分区启动。
  • --time-out指定启动时的等待时间。
  • --hot-key指定进入特定分区启动的热键,0x4300为F9。
  • --force-backup-mbr让bootlace.com将旧MBR备份到1扇区。
  • --preferred-drive和--preferred-partition指定按下热键时,从第0磁盘的第2号扇区(第3个扇区)启动。这跟grub菜单中的(hd0, 2)是一样的意思。
  • 最后的0x80表示要把bootlace.com装到第一块硬盘上。

然后重启计算机,进入DOS环境后执行bootlace.com即可。再次启动时就会出现一行小字,等待1秒钟即可进入原有Windows,而按下F9键就会启动位于(hd0,2)的grub引导程序。

同分类推荐文章

  1. 从零重建 macOS 开发机:可复现的环境初始化流程 (2026-06-14 20:36:00)
  2. 百度物理网络监控工具开源第二弹:毫秒级监控工具 baize,让你的网络问题无处遁形 (2026-06-11 08:10:28)
  3. How to Set Up Homebrew Tap for Private CLI Tools: A Complete Guide (2026-05-27 02:13:03)

查看更多 DevOps 文章 →

建议继续学习

  1. Linux如何统计进程的CPU利用率 (累计阅读 16,307)
  2. 我的 RHCA 之路 (累计阅读 14,013)
  3. Linux内存点滴 用户进程内存空间 (累计阅读 13,229)
  4. 给程序员新手的一些建议 (累计阅读 13,089)
  5. Linux 性能监控、测试、优化工具 (累计阅读 13,011)
  6. 关于linux内存free的一些事情 (累计阅读 12,867)
  7. ps - 按进程消耗内存多少排序 (累计阅读 12,687)
  8. Google怎么用linux (累计阅读 12,581)
  9. Linux Used内存到底哪里去了? (累计阅读 11,867)
  10. find命令的一点注意事项 (累计阅读 11,865)