分区、MBR、grub、lilo、uefi 、legacy、grub rescue

  1. MBR、主分区、扩展分区、逻辑分区、活动分区、系统分区、启动分区解释
    版本1
    http://blog.51cto.com/matthewfjnd/2294325
    版本2
    https://www.cnblogs.com/wincai/p/5482301.html

  2. Linux启动过程
    https://www.ibm.com/developerworks/cn/linux/l-linuxboot/

  3. uefi bios和legacy bios mbr和gpt
    这两个都是bios,legacy是传统的bios,而uefi则是新出的bios标准
    https://blog.csdn.net/a3192048/article/details/82975745

  4. grub和lilo都可以用于linux的系统加载程序,在传统mbr模式下,它们是在执行mbr引导程序后加载到内存执行的,其作用是加载操作系统内核。现在linux用grub引导的居多。

  5. grub rescue修复
    前几天买了块SSD回来,想把之前的win10+ubuntu16.04都迁移到SSD上。做法是下载分区助手,完成了win10系统C盘和软件盘D盘的迁移,但是ubuntu则是不能用分区助手迁移的,因为分区助手就没有linux版,所以ubuntu就必须重装到ssd上。重装的时候,采用了uefi方式安装,安装好后重启系统,发现无法进入bios,只出现grub rescue界面,在网上看了一些教程,说什么拔硬盘、给bios rom放电、装ubunt到u盘上然后从u盘进入ubuntu,吓了我一跳。当时确实有点慌了,因为我的观点是装系统可以随便玩,只要不去动bios就行,而这次竟然进不了bios所以有点头疼,以为得去维修店刷bios了。其实不然,出现grub rescue命令行,只要之前安装的ubuntu还在,就修复一下grub即可。方法如下:

ls		#列出磁盘上的所有分区
ls (hd0,msdos12)		#查看msdos12是否是ext文件系统,假设是则下面都用msdos12,如果不是则继续查看(hd0,msdosXX)XX是ls中列出的数字序号
ls (hd0,msdos12)/grub	#我目前的硬盘上是hd0 12和hd0 5上有ubuntu
ls (hd0,msdos12)/boot/grub
set root=(hd0,msdos12)		#这条命令可以没有
set prefix=(hd0,msdos12)/boot/grub	#如果是第四行没有显示unknow file,如果是第三行显示unknow file则/boot/grub改成 /grub
insmod normal
normal		#就可以进入那个熟悉的grub菜单界面了
#在进入ubuntu后需要执行以下两条命令
sudo update-grub
sudo grub-install /dev/sda		#sda后不加数字

几点注意的地方:
1)ls (hd0,msdos12)/grub #ls后有一个空格,中间的逗号后边没有空格,右括号后也没有空格,如果是多加或少写了空格会出现 unknown command,即命令输错了,而不会是unknown file 和unknown file system
2)ls (hd0,msdos12)可以写成ls(hd0,12),即省略掉msdos这几个字符
3)可以先ls (hd0,12)看是否是ext文件系统,如果是再去检查/grub或者/boot/grub是否含有grub的引导文件 ,这样会比较节省时间
4) 在修复好grub后,也能正常进入bios了(有点奇怪)

猜你喜欢

转载自blog.csdn.net/qq_24406903/article/details/84924666
今日推荐