Grub2 引导 Acronis True Image 2013 Rescue media

起因

Win7 昨天突然无法启动了,准确地说是可以启动,但是启动后动弹不得,运行cmd 运行不了,d , e 等分区也打不开。。。
进入安全模式查看了下系统事件记录,貌似是有几个核心驱动无法加载。。。
算了,还是恢复吧,还好前不久做了一次备份。
用Acronis True Image 2013 Recovery Manager成功恢复系统,正常启动。
虽然只是备份了C盘,但是由于我的用户家目录和程序目录都是设置在D盘的,因此,一些在备份之后安装的软件,恢复之后,除开有些注册表信息不存在外,基本上是可以使用的。这一点特别是对于那种限时免费的软件特别重要~~

恢复之后,archlinux进不去了。
用easyBCD 2.2 增加linux启动项,它直接“停止响应”。
只好给加了个neogrub ,easyBCD带的这个neogrub貌似是个grub4dos.
我编译了它的menu.lst 文件,加上archlinux引导 :

1
2
3
4
title  Arch Linux HuangYe
root   (hd0,4)
kernel /vmlinuz-2.6.39.2-ARCH-HuangYe-revision1 root=/dev/disk/by-uuid/d95683c2-582f-404f-8aa4-b0856858d4e0 ro 5 vga=773
initrd /kernel-2.6.39.2-ARCH-HuangYe-revision1.img

这段配置信息是我从为知笔记里copy出来的,因为很久以前重装win7后也导致了linux无法启动,那时就记录下来了这些东西。

感觉bootmgr还是不太靠谱。
于是想通过neogrub进入archlinux后,直接把grub2安装到MBR.但是这样一来又有新的问题了,Acronis True Image 2013 Recovery Manager是默认安装到MBR的,直接把grub2安装到MBR会把Recovery Manager的引导给废除掉。
【先前我的引导是: Recovery Manager(MBR) --》 bootmgr (win7的引导程序) --》 grub2 (Archlinux的引导程序)】
因此得想个办法让Recovery Manager通过grub2来引导。
于是,有了此文。
注:Acronis家的 Recovery Manager 和 Rescue media 其实是同一个东西。只不过后者是生成的一个ISO文件。

折腾

备份MBR

1
dd if=/dev/sdX of=/path/to/backup/mbr_backup bs=512 count=1

仅备份引导代码(除去最后 64字节的分区表):

1
# dd if=/dev/sdX of=/path/to/backup/bootcode_backup bs=446 count=1

Install to 440-byte MBR boot code region
把GRUB2安装到MBR 前440字节:

1
2
3
4
# modprobe dm-mod
# grub-install --target=i386-pc --recheck --debug /dev/sda
# mkdir -p /boot/grub/locale
# cp /usr/share/locale/en\@quot/LC_MESSAGES/grub.mo /boot/grub/locale/en.mo

按照archlinux官方wiki: Booting an ISO Directly From GRUB2 的方法,在custom.cfg中添加自定义启动项。

挂载AcronisMedia.iso查看下其启动文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
sudo mount -tiso9660 AcronisMedia.iso /home/admin/tmp_mnt/

┌─[admin@HuangYe] - [~/tmp_mnt/Recovery Manager] - [Mon Jan 14, 10:20]
└─[$] <> ls
bootmenu_logo.png  f11-efi.xml       icu38.so      libgcc_s.so    resource.so
bootwiz.bin        f11-grub.cfg      icudt38.so    mouse.com      splash.run
bootwiz.efi        fox.so            kernel64.dat  osfiles.so     threads.so
cpp.so             gen_bootmenu.bin  kernel.dat    ramdisk64.dat  ti_boot.so
f11.cfg            graphapi.so       libc.so       ramdisk.dat


┌─[admin@HuangYe] - [~/tmp_mnt/Recovery Manager] - [Mon Jan 14, 10:20]
└─[$] <> cat f11-grub.cfg
[start]
echo Starting Acronis Backup & Recovery 11...
initrd ramdisk.dat /s
kernel kernel.dat quiet media_for_linux
quiet on
mbrcrcs on
vga vesa


[continue]
sysboot /mbr


[bootmgr]
echo Press F11 for Acronis Bootmenu...
default start
delay 30
bootmenu 389

根据上面的grub指令,我写出了下面的grub2配置项(自定义的配置项写在/boot/grub/custom.cfg ):
ps: 这里我的AcronisMedia.iso文件是放在D盘(第1硬盘的第2主分区)下的iso目录下面。写grub2配置项时要注意分区和路径。

1
2
3
4
5
6
7
8
┌─[admin@HuangYe] - [/boot/grub] - [Mon Jan 14, 10:21]
└─[$] <> cat custom.cfg
menuentry "AcronisMedia" {
   set isofile="/iso/AcronisMedia.iso"
   loopback loop (hd0,2)$isofile
   linux (loop)/Recovery\ Manager/kernel.dat quiet vga=788
   initrd (loop)/Recovery\ Manager/ramdisk.dat
}

其实我的custom.cfg还把archlinux 的安装镜像也加进来了,以备救急:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
┌─[admin@HuangYe] - [/boot/grub] - [Mon Jan 14, 10:26]
└─[$] <> cat custom.cfg
menuentry "AcronisMedia" {
   set isofile="/iso/AcronisMedia.iso"
   loopback loop (hd0,2)$isofile
   linux (loop)/Recovery\ Manager/kernel.dat quiet vga=788
   initrd (loop)/Recovery\ Manager/ramdisk.dat
}

menuentry "archlinux-2013.01.04-dual.iso x86_64" {
   set isofile="/iso/archlinux-2013.01.04-dual.iso"
   loopback loop (hd0,2)$isofile
   linux (loop)/arch/boot/x86_64/vmlinuz archisolabel=ARCH_201301 img_dev=/dev/sda2 img_loop=$isofile
   initrd (loop)/arch/boot/x86_64/archiso.img
}

menuentry "archlinux-2013.01.04-dual.iso x86" {
   set isofile="/iso/archlinux-2013.01.04-dual.iso"
   loopback loop (hd0,2)$isofile
   linux (loop)/arch/boot/i686/vmlinuz archisolabel=ARCH_201301 img_dev=/dev/sda2 img_loop=$isofile
   initrd (loop)/arch/boot/i686/archiso.img
}

Generate GRUB2 BIOS Config file

1
# grub-mkconfig -o /boot/grub/grub.cfg

重启,测试OK。

Acronis-Rescue-Media-grub-boot.png

Acronis-Rescue-Media-grub-boot-recovery-disk.png

更多
4 Responses Post a comment
  1. Gnimnek168

    請問:

    上述作法是透過 Legacy BIOS 啟動的。

    而如果是透過 UEFI 啟動,那麼參數該如何設定呢?

    (我試過導入 bootwiz.efi ,卻無法成功。

  2. wmtimes

    现在讲的这些内容越来越看不懂了。再讲这些就没人来了。

Leave a Reply

Note: You may use basic HTML in your comments. Your email address will not be published.

Subscribe to this comment feed via RSS