Android with root Git for version control Lircd with Raspberry Pi for IR receiver and sender Tips for Windows Depolying your own password management tool -- KeeWeb Depoly your flask app into Heroku Fix shit IE code manually ISBN to Book Category by Scraping DangDang A Generic Makefile for C/C++ Program Configure Raspberry pi Remove watermark with PyPDF2 tips for docker Anaconda+TensorFlow+CUDA Snippets Configure Remote Mathematica Kernel Build your own ngrok server Access Array SSL VPN 使用Rstudio制作html5幻灯片 tips for Mac OS X system Tips for ipython notebook 配置Ubuntu server + Openbox (Obuntu) tips for Vimperator tips for Vim 安装CUDA My First Jekyll Blog rsync常见选项 在Linux中读取Ipod touch的文件 tip for texmacs 在VPS上建站的一些tip Gnuplot绘图札记 Samba系统和autofs自动挂载 Linux中alsamixer声卡无法录音 搭建自己的RSS订阅器——Tiny Tiny RSS Grub2引导安装Ubuntu awk tips 将Ubuntu系统装入U盘 The Great Rtorrent 编译GCC 再这样剁手!!!该死的libgd 使用ulimit进行资源限制 使用SSH代理上IPV6 使用RCurl抓取网页数据 修复Ubuntu Grub记 openbox中的文件关联 在Ubuntu 12.04下编译qtiplot 处理BCM4312网卡驱动纪实 配置我的Ubuntu Server记 Cygwin杂记 Linux 使普通用户具有以超级权限执行脚本 让firefox自定义地处理文件类型 WordPress优秀主题及插件 在phpcloud上搭建wordpress UBUNTU下用pptpd做VPN server ubuntu升级内核过后的一些问题 安装telnet服务 kubuntu札记 64位kubuntu札记 统计软件R Virtualbox stardict星际译王 Ubuntu重装windows系统后的grub引导修复 SSH服务及花生壳域名解析 采用cbp2make工具由code::blocks工程创建makefile文件 UBUNTU 札记

修复Ubuntu Grub记

2013年08月23日

师兄的电脑重装了Windows把Ubuntu 11.10的Grub破坏了,虽然知道这个可以找回来,但还是费了一点小周折。

网上介绍的修复Grub的方法貌似都是针对比较老的版本,记下来我这里的修复过程,以方便以后再遇到类似问题。

我手上刚好有一个刚做好的Ubuntu 13.04的USB启动盘,就拿它来修复吧。

  1. 第一个问题,比较新的Ubuntu镜像好像都没有修复模式,必须要先进入Live系统利用里面的终端才行。

  2. 然后,坑爹的是貌似镜像里没有自带grub程序,需要先apt-get安装一个grub。装好后敲sudo grub进入grub模式。

  3. 然后是找到原来的root分区在哪儿,我这里图方便直接打开Live系统的文件管理器挨个点击挂载各个分区看了一下。在终端中敲mount 可以列出当前已经挂载的分区,然后找到root分区的路径,形如/media/abcd......神马的,最好到磁盘管理器里面去看一下这个分区的名字是什么(形如/dev/sda8)。

  4. 将原来root分区内的grub重新安装到整个磁盘(/dev/sda)的MBR记录中:

    grub-install –root-directory=/media/abcd…. /dev/sda

  5. 照理来讲reboot后就应该进入原来的Ubuntu,但是我却还是停在了Grub>这里。查了一下,先用命令find /boot/grub/stage1看一下/boot在哪个分区, 然后根据返回的结果(如(hd0,7))设置一下根目录

    root(hd0,7) setup(hd0)

我不是很确定这个步骤是否需要,姑且敲一下吧。
  1. 然后就是手动载入内核,根据前面得到的root分区的名字/dev/sda8,敲入一下命令载入内核并启动:

    kernel /vmlinuz-[version] root=/dev/sda8 initrd /initrd-[version].img boot

那个版本神马的敲tab键就行了。
  1. 进入系统后记得更新一下grub以找到新装的Windows

    sudo update-grub

步骤貌似比其他人的长一些,没办法,我也没想着去再试一下哪些步骤可以有可以没有。

PS.

  1. 如果开机后进入的是Grub rescue模式,那么不会有root命令,照如下方式手动引导系统

    ls set root=(hd0,8)/boot insmod linux
    linux (hd0,8)/boot/vmlinuz-xxx-generic
    initrd (hd0,8)/boot/initrd.img-xxx-generic
    boot

  2. 如果安装Grub时出现错误warn: Sector 32 is already in use by FlexNet; avoiding it. This software may cause boot or other problems in future. Please ask its authors not to store data in the boot track. Installation finished.可以考虑重写zero设备的头部

1.备份MBR

    sudo dd if=/dev/sda of=~/first_63_sectors bs=512 count=63

2.清空sector number 32

    sudo dd if=/dev/zero of=/dev/sda bs=512 count=1 seek=32

3.重装grub

    sudo mount /dev/sda* /media/sda*
    sudo mount --bind /dev /media/sda*/dev
    sudo mount --bind /proc /media/sda*/proc
    sudo mount --bind /sys /media/sda*/sys
    sudo chroot /media/sda*
    sudo update-grub