用Grub Rescue手动引导来启动内核

标签: grub rescue 引导 | 发表时间:2015-10-02 08:00 | 作者:
出处:http://harttle.com

Wikipedia: GNU Grub是一个来自GNU项目的启动引导程序。GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。 GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。

几乎所有人的Linux都是一个双系统,所以Grub也是几乎所有Linux用户熟知的东西。 但很多原因都可以导致Linux无法启动,比如安装了不合适的驱动程序、由于安装Windows重写了MBR、安装内核时参数搞错了等。

这时我们通常会用一个启动盘来重置MBR,并重新配置硬盘上的Grub。但很多情况下我们并不需要这样一个启动盘,Grub无法启动内核时会提供Grub Rescue终端。 在这里可以手动引导来启动内核,然后重新安装和配置Grub。本文便来记录这一过程。

Grub的手册在这里: https://www.gnu.org/software/grub/manual/

Grub Rescue 引导内核

Grub无法启动内核时,便会进入Grub Rescue模式,应该是像这样的:

@2x

确定内核位置

ls命令可以列出Grub能搜索到的所有设备,其中 (hdX, Y)指硬盘驱动器 X中的分区 Y。 然后继续 ls来确认要启动的Linux内核所在的路径。

   # 查看可选驱动器
ls 
# 试试哪个里面是 Linux
ls (hdX,Y)/boot/grub 

环境设置

set命令是用来设置Grub环境变量的。比如设置 prefix之后我们便不需要写完整路径了,只需要给出以根路径开始的绝对路径即可(见下文)。 insmod用来载入一些Grub的动态模块,比如 linux.mod

   set prefix=(hdX,Y)/boot/grub
insmod (hdX,Y)/boot/grub/linux.mod # 可选,为了方便接下来的命令
set root=(hdX,Y)

启动内核

linux命令用来从文件载入一个内核,载入之后用 initrd命令载入初始化内核的内存(还可以在内存中设置一些参数)。 最后用 boot命令启动它!

   # 也可以选用别的内核,如/boot/vmlinuz.0.62.XXX
linux /vmlinuz root=/dev/sda5       
initrd /initrd.img
boot

配置文件

系统启动之后我们便可以解决问题了,重新配置内核或者重新配置Grub。 Grub配置文件路径:

   grub1:/boot/grub/grub.cfg
grub2:/etc/default/grub

一般只需要更新Grub配置文件中的内核列表,根据你的系统环境不同,执行下面三者之一即可:

   update-grub                             #ubuntu grub
update-grub2                            #ubuntu grub2
grub-mkconfig -o /boot/grub/grub.cfg    #archlinux

在Grub配置文件中,可以设置开机时启动列表的顺序,这个可能比较有用:

   # 如果是saved, 旧版grub需设 GRUB_SAVEDEFAULT=true() #需要更新内核列表
GRUB_DEFAULT=0,1,2...saved    

写入MBR

上文通过Grub Rescue来手动引导内核的前提是Grub可以正常启动,只是Grub找不到内核了。但对于安装Windows导致的MBR被重写,Grub也是无法启动的。 这时需要用一个Linux启动盘来进入系统,然后将Grub启动记录写入MBR:

   # Linux系统所在分区
mount /dev/sda7 /mnt/linuxsys           
# 如果/boot 单独分区
mount /dev/sda6 / mnt/linuxsys/boot     
# grub1.99与以后(grub2)
grub-install --boot-directory=/mnt/linuxsys/boot /dev/sda     
# grub1.98与以前(grub1)
grub-install --root-directory=/mnt/linuxsys /dev/sda          

相关 [grub rescue 引导] 推荐:

用Grub Rescue手动引导来启动内核

- - Harttle Land
GNU Grub是一个来自GNU项目的启动引导程序. GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统. GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数. 几乎所有人的Linux都是一个双系统,所以Grub也是几乎所有Linux用户熟知的东西.

grub命令行启动系统

- - CSDN博客系统运维推荐文章
今天倒腾服务器,修改grub.conf文件后导致系统起不来了. 后来就学习了一下如何从grub命令启动. grub引导其实挺简单的,只要简单地几步就可以了. 一、指定/boot所在的分区. #指定第一块硬盘的第一个分区. 这个root (hd[0,n],y)是可以省略的,如果省略了,我们要在kerenl 命令中指定.

双系统如何正确的删除ubuntu ----清除GRUB在MBR的残留信息

- - CSDN博客推荐文章
估计大部分Linux初学者会遇到把Grub安装到MBR上去了,现在不想用Linux,直接用分区工具把Linux分区给删除了,结果导致系统无法启动,具体恢复方法有很多,但是有的时候也很顽固:. 1、如果能用光盘启动,那么使用光盘启动到dos,使用fdisk /mbr就搞定了. 2、如果不能用用光盘启动,那么用U盘启动(注意启动后C是否是U盘,如果是U盘,那就麻烦了),使用fdisk /mbr没有办法修改实际硬盘的MBR信息,导致无法正常覆盖.

“与时俱进”的引导

- beralee - It Talks-魏武挥的blog
麦田(唔,就是我上一次blog力挺的那个麦田,也是网络圈子里我很佩服的一个人. 事实上,我和他只是曾在某年冬天在清华的某个大楼外头一起抽过根烟才算面对面聊了一次天. 还真是一支烟的功夫)曾经提出过一个很有意思的“兴邦模式”. 有鉴于他的这条微博在新浪里已经由于他的“自杀”而找不到,我大致转述如下:.

恢复Ubuntu引导菜单

- - CSDN博客系统运维推荐文章
        使用双系统的时候,我们经常重装Windows. 那么有没有一种办法:只重装Windows而不重装Ubuntu呢.         在使用Win XP/Ubuntu双系统时,这个问题很好解决. 但是在使用Win7(包含Vista)以上系统的时候,就比较难了.         因为微软更改了OS启动机制.

慎用用户引导

- - 曉生
当你安装一个新的应用,用户引导(泛指首次使用时出现的欢迎页和功能介绍)会不会让你不耐烦. 当你不受限制,潇洒地设计几张美观的引导图,自以为为产品增色不少时,得到的反馈确实很少用户会认真看,甚至让人厌烦. 当设计新功能,总会有疑问,新功能就应该告诉用户,万一用户不知道怎么办. 用户引导成了补救之策,迫不及待告诉用户,你应该点击这里,不要忽略这个新功能.

浅谈用户引导设计

- Xingye - 所有文章 - UCD大社区
作为163免费邮wap版的交互设计师,每天会收到很多用户反馈,其中一些用户反映:不知如何修改邮箱密码;在写邮件页面找不到“发送”按钮;甚至不知道登录邮箱要填写的用户名是指什么……一些看似简单的操作,对于用户来讲都有可能造成困扰,产生“挫败感”. 而对于一个新产品/新功能而言,用户将要花费比上述情况更多的学习成本去了解熟悉产品.

游戏新手引导设计(中)

- kown - 所有文章 - UCD大社区
上一篇游戏新手引导设计(上)我们介绍了如何通过分析产品特点和目标用户的能力来对新手引导的内容进行“瘦身”,这次我们就来探讨一下如何将瘦身过的内容准确的传递给用户,并且在引导过程中激发用户的参与热情,即:从引导时机、提示样式、分级开放和创造需求,四个方面分享一下如何设计新手引导的形式. 一、 引导时机—在有需求时引导.

如何设计新手用户引导

- Lee - Taobao UED Team
引言:这篇文章是小柒、墨轩、淡月、和我4个人一起工作的成果,在今年9月的STS设计分享会上演讲过一次. 我们的设计分享会一共有4个演讲主题,另外几个话题稍后会陆续在这里和大家见面~. 一个新的网络产品,或者一个全新的功能要想吸引用户的使用兴趣,就需要让用户在刚一接触到的时候能够快速地了解它是什么,能做些什么,并且能马上开始一些简单的操作.