fix MBR
更新日期:
一直都安装windows 7 和 ubuntu双系统。最近一两周window 7的一个安装一直都不成功, 每次进入win7都需要重启三次才行,真是难以忍受了。本想跳过这次个更新,可每次关机都会再安装一次。查看安装信息是非windows loade进入系统时会导致更新安装不成功, 需要切换成windows主引导。
- 引起问题的更新: KB3033929
真是折腾的一件事。 首先要解决的是将windows7的引导安装到MBR,但手上没有现成的安装CD,也没有修复CD。 搜索一番后, 先是在windows 7的菜单下维护
文件夹的一项里记录了一张修复光盘, 但启动后的选项里只有还原系统,也没找到bootrec/bootset
之类的工具。 横下心,用一夜时间下载了Windows 7 安装ISO, 刻成CD,启动后发现有修复系统引导的工具,很顺利就重写MBR成window7。
但捉弄人一幕出现了: 当我打开windows 7 更新列表准备安装KB3033929, 却发现上次的安装已经是成功的了。 这不是玩我嘛? 重写MBR白做了,现在得改回Grub启动,引导回ubuntu。
修复ubuntu grub引导
就为这事折腾了好几天了,都是泪! 自己学艺不精。
找回了之前刻录的一张ubuntu server CD, 和使用上次安装ubuntu iso制作的启动U盘,都没能够成功引导,只能想其它办法。
最后成功的是使用Kali live CD制作的启动U盘,启动Live CD后,chroot
到硬盘里ubuntu安装分区,再grub-install
.
chroot
命令参考了Archlinux Wiki Change_root. 一定感谢下,archlinux的文档真好。
mount /dev/sda7 /mnt/d1
cd /mnt/d1
mount -t proc proc proc/
mount --rbind /sys sys/
mount --rbind /dev dev/
chroot /mnt/d1 /bin/bash
source /etc/profile
source ~/.bashrc
然后就可以安装grub了,会重写MBR:
/usr/sbin/grub-install /dev/sda
一定要注意的是,grub-install后面device一定不能带分区数字,也就是要写成/dev/sda
, 而不能是/dev/sda7
. 我错误的试了好多次,才在某个搜索结果里发现这个原因。
得到的教训是,更改之前,一定要备份。 一定要备份。另, grub的两个命令是grub-install
和update-grub
。
$ sudo fdisk -l
$ sudo dd if=/dev/sda of=./ubuntu-mbr.bin bs=512 count=1