linux使用--9.grub各种引导的恢复

来源:互联网 发布:知乎每周精选232期 编辑:程序博客网 时间:2024/06/07 12:54
一.装XP之后修复ubuntu的引导
1. 用ubuntu-14.04-desktop-amd64.iso做一个引导u盘
2. u盘启动系统进入LiveCD模式
3. grub-install解决问题
  1. cong@msi:~$ sudo -i          --> 切换到root
  2. root@msi:~# fdisk -l         --> 查看ubuntu装在哪个分区下,我这儿是/dev/sda7 
  3. Disk /dev/sda: 1000.5 GB, 1000456224768 bytes
  4. 255 heads, 63 sectors/track, 121631 cylinders, total 1954016064 sectors
  5. Units = sectors of 1 * 512 = 512 bytes
  6. Sector size (logical/physical): 512 bytes / 4096 bytes
  7. I/O size (minimum/optimal): 4096 bytes / 4096 bytes
  8. Disk identifier: 0x000c4529

  9.    Device Boot Start End Blocks Id System
  10. /dev/sda1 * 2048 41945087 20971520 7 HPFS/NTFS/exFAT
  11. /dev/sda2 41947134 1954016063 956034465 f W95 Ext'(LBA)
  12. Partition 2 does not start on physical sector boundary.
  13. /dev/sda5 41947136 83890175 20971520 7 HPFS/NTFS/exFAT
  14. /dev/sda6 1912075072 1954016063 20970496 82 Linux swap / Solaris
  15. /dev/sda7 83892224 251657848 83882812+ 83 Linux
  16. /dev/sda8 251660288 1912072191 830205952 83 Linux

  17. Partition table entries are not in disk order
  18. root@msi:~# mount /dev/sda7 /mnt/        -->挂载ubuntu的根文件系统到/mnt
  19. root@msi:~# grub-install --root-directory=/mnt /dev/sda  -->把grub的引导写到mbr
二. grub rescue: no such partition
ubuntu下删除了某个分区,导致系统启动时出现grub rescue: no such partition
1.在grub rescue下进入到正常模式
 a. 查看ubuntu的/boot在哪个分区中
  1. grub rescue>ls                --->ls 查看当前有多少个分区
  2.        (hd0),(hd0,msdos1),(hd0,msdos8),(hd0,msdos9)(hd0,msdos6)
  3.                             ---->ls查看每个分区的内容,看boot文件位于哪个分区
  4. grub rescue>ls (hd0,msdos1)/
  5.         unknown partition..
  6. grub rescue>ls (hd0,msdos8)/
  7.                ---> 如果会出现 boot 等目录,说明/boot就是在这个分区
b.从rescue模式到normal模式
  1. grub rescue>set root=(hd0,msdox8)

  2. grub rescue>prefix=(hd0,msdos8)/boot/grub

  3. grub rescue>insmod normal          -->注意这儿是normal,没有后缀

  4. grub rescue>normal                 -->这儿会出现启动菜单,按c进入命令行模式
2. grub normal模式下引导系统启动
  1. grub>set root=(hd0,msdos8)

  2. grub>set prefix=(hd0,msdos8)/boot/grub

  3. grub>linux /boot/vmlinuz-xxx-xxx root=/dev/sda8    -->注意这儿的root=后面的参数就是根文件系统的设备结点
  4.                                                    -->不加这个参数,系统会进入initramfs中
  5. grub>initrd /boot/initrd.img-xxx-xxx

  6. grub>boot                          -->这儿就会引导系统启动
3. 进入系统
  1. cong@msi:~$ sudo update-grub2            -->更新grub2的配置
  2. 重装grub2到mbr,若不重装启动时还是会进入grub rescue模式,提示normal.mod文件找不到
  3. cong@msi:~$ sudo grub-install --target=i386-pc --recheck --debug /dev/sda  
参考文章
https://wiki.archlinux.org/index.php/GRUB_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)

三. xp+ubuntu双系统中mbr的修复
1.系统出问题了,在进入grub界面之前直接重启,难道这就是传说中的硬盘逻辑锁吗?

问题判断: 这应该是mbr被修改了,修复一下。但问题是我这是双系统,修复之后两个系统都要正常引导才可以,最好的解决方法是有一张ubuntu的安装光盘,但是我只有一张xp的ghost盘,没办法,只好迂回一下了。

1. 用xp的ghost盘修复mbr,这样可以进入xp,但是grub没有恢复。

2. 安装grub4dos,用ubuntu的安装镜像从硬盘启动ubuntu

3.进入磁盘镜像中的ubuntu后,修复grub

下面就分别说一下。

第1步:没有什么技术含量,光盘启动ghost的xp,进入diskgen,点菜单中的修复mbr就可以了。这样会把以前坏的mbr覆盖,当然双系统的grub也没有了,所以启动时只能时入xp。

第 2步:说明一下ubuntu的两种镜像:desktop和alternate, 这两种镜像在硬盘安装时有区别,desktop硬盘安装时直接解压出iso中的vmlinuz和initrd.gz文件就可以引导,alternate硬 盘安装时需要另行下载vmlinz和initrd.gz文件。

  1. 不管是解压出来的还是网上下载的vmlinz initrd.gz 还有ubuntu的镜像一律放在C盘根目录中。
  2.     2.1 安装grub4dos, 网上下载grub4dos0.4.4(不要下太老的版本),解压出grldr放到C盘根目录,然后boot.ini文件最后添加一行 c:\grldr="Ubuntu 10.10"
  3.     2.2 解压出ubuntu-10.10-desktop-i386.iso中的casper中的vmlinuz和initrd.lz,放在C盘根目录,最后把ubuntu-10.10-desktop-i386.iso也放在C盘根目录
  4.     2.3 在C盘根目录,建立menu.lst,内容如下。
  5.     title Install Ubuntu 10.10(10.10)
  6.     root (hd0,0)
  7.     kernel /vmlinuz boot=casper iso-scan/filename=/ubuntu-10.10-desktop-i386.iso ro quiet splash locale=zh_CN.UTF-8
  8.     initrd /initrd.lz
  9.     boot
  10.     这样在重启时就可以进入ubuntu的光盘镜像了。
第3步:挂载ubuntu的各种分区,即重建原先在磁盘上的文件系统目录结构,建好之后,chroot过去,并用update-grub和grub-install将grub安装到mbr,使之可以多重引导。


    3.1 从LiveCD的Desktop进入ubuntu,打开一个terminal

  1. root@ubuntu:/# sudo su
  2. root@ubuntu:/# mkdir –pv /mnt/test
  3. root@ubuntu:/# mount /dev/sda5 /mnt/test/
  4. root@ubuntu:/# mount --bind /sys/ /mnt/test/sys/
  5. root@ubuntu:/# mount --bind /dev/ /mnt/test/dev/
  6. root@ubuntu:/# mount --bind /proc/ /mnt/test/proc/
  7. root@ubuntu:/# chroot /mnt/test/
  8. root@ubuntu:/# update-grub
  9.     Generating grub.cfg ...
  10.     Found linux image: /boot/vmlinuz-2.6.35-22-generic
  11.     Found initrd image: /boot/initrd.img-2.6.35-22-generic
  12.     Found memtest86+ image: /boot/memtest86+.bin
  13.     done
  14. root@ubuntu:/# grub-install /dev/sda
  15.     Installation finished. No error reported.
  16.     如果出现下面的错误,说明目录结构没有挂载正确,要重新挂载:
  17.     "no /boot/grub/grub.cfg or it’s not correct, create one usingupdate-grub"
  3.2 这下grub修复之后,windows又没有了,进入ubuntu
  1. root@ubuntu:~# update-grub
  2. Generating grub.cfg ...
  3. Found linux image: /boot/vmlinuz-2.6.35-22-generic
  4. Found initrd image: /boot/initrd.img-2.6.35-22-generic
  5. Found memtest86+ image: /boot/memtest86+.bin
  6. Found Microsoft Windows XP Professional on /dev/sda1
  7. done
这下两个都有了
0 0
原创粉丝点击