简介

Pojiemima1.png

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

GNU GRUB的前身为Grand Unified Bootloader。它主要用于类Unix系统;同大多Linux发行版一样,GNU系统也采用GNU GRUB作为它的启动器。Solaris从10 1/06版开始在x86系统上也采用GNU GRUB作为启动器。

注意:目前 GRUB 分成 GRUB legacy 和 GRUB 2。版本号是 0.9x 以及之前的版本都称为 GRUB Legacy ,从 1.x 开始的就称为 GRUB 2。

  • 目前 GRUB Legacy 已经停止开发了,只是出于一个修复漏洞的状态,不再增加新的功能了,所有的开发都转移到 GURB 2 之上了。
  • GRUB 2 是源自于一个名为 PUPA 的项目,目的是建立下一代的 boot loader。GRUB 2 几乎是从零开始开始开发的,它和 GRUB Legacy 不同的地方有很多,例如支持 scripts、国际化语言、动态加载模块、带有 resuce 模式等等,这些都是 GRUB Legacy 所没有的。

选项与文档

启动选项

如果您安装了深度操作系统和Windows7系统组成双系统.那么您的Grub启动选项应该为如下:

Deepin GNU/Linux 
Advabced options for Deepin GNU/Linux
memtest86 ##此项可能不存在
Windows 7 (loader) (on /dev/sd**) ## /dev/sd**对应你Windows系统所在的分区

简单解读:

  • Deepin GNU/Linux:深度操作系统的启动项
  • Advabced options for Deepin GNU/Linux:深度操作系统的高级选项,进入此处可以选择启动的内核版本.
  • memtest86:内存测试,可以进入此模式运行行一些很耗系统资源的程序,测试系统在高负载的情况下主机是否运行稳定.
  • Windows 7 (loader) (on /dev/sd**):windows7系统的启动项.

相关文档

配置Grub

文件配置

在早期的Ubuntu版本中,使用grub1作为默认的启动引导程序,如果想要修改系统启动菜单,直接编辑/boot/grub/menu.lst即可。

从9.10开始,Ubuntu使用grub2作为默认启动引导程序,相对于grub的第一个版本,grub2改动很大。 grub2的新特性主要有:支持图形化界面,支持主题,模块化加载,跨平台兼容等,总而言之,功能的加强也使得grub2的配置变得更加复杂了。

grub2主要有三部分组成:

 /boot/grub/grub.cfg    #系统引导时读取的文件之一,由其他文件生成的,一般不在这里修改
 /etc/default/grub      #grub的默认配置文件,可以修改一些常见的参数
 /etc/grub.d            #这个文件夹下面是一些生成grub.cfg文件的可执行脚本,可以修改


打开gru.cfg文件终端执行:

 sudo gedit /etc/default/grub

*显示为以下信息,已加上中文注释

# If you change this file, run 'update-grub' afterwards to update(如果你修改了这个文件,运行“update-grub”更新grub)

# /boot/grub/grub.cfg. (文件路径而已)

# For full documentation of the options in this file, see:(在此文件中的选项的完整文档,请参阅:
#info -f grub -n 'Simple configuration' (GRUB的简单的配置)


GRUB_DEFAULT=0 (设置默认启动项,按menuentry顺序如果要默认从第四个菜单项启动,数字改为3,若改为 saved,则默认为上次启动项。)

GRUB_HIDDEN_TIMEOUT=0 (前面有#注释将会显示引导菜单,没有#注释将会不显示引导菜单)

GRUB_HIDDEN_TIMEOUT_QUIET=true (黑屏,并且不显示GRUB_HIDDEN_TIMEOUT过程中的倒计时)

GRUB_TIMEOUT="10" (设置进入默认启动项的等候时间,默认值10秒,按自己需要修改,单位为秒改改为零和负值为无限等待操作)

GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` (获得发行版名称(比如Ubuntu, Debian)

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" (选择启动的环境,“quiet splash”为图像界面,“text”为文本界面。)

GRUB_CMDLINE_LINUX="noresume" (手动添加内核启动参数,比如 acpi=off noapic 等可在这里添加。)
# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef" (目前未知)

# Uncomment to disable graphical terminal (grub-pc only)

#GRUB_TERMINAL=console (设置是否使用图形介面。前面有#注释(使用图形界面),前面没有#注释(仅使用控制台终端,不使用图形介面) )

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480 (设定图形介面分辨率,如不使用默认。把前面#去掉,把分辨率改为800x600或1024x768)

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true (取消注释以阻止GRUB将传递参数 "root=UUID=xxx" 传递给 Linux内核)

# Uncomment to disable generation of recovery mode menu entrys
#GRUB_DISABLE_LINUX_RECOVERY="true" (设定是否创建修复模式菜单项,前面有#注释(建立修复模式).前面没有#注释(不建立修复模式))

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1" (当GRUB菜单出现时发出鸣音提醒,户无法看到屏幕特别有用,默认关闭,在此处不能设置开启)

修改后grub配置后需要更新才可以生效,终端执行:

 sudo update-grub

图形配置

  • Super Boot Manager:是一个可以用来管理Burg、Grub2、Plymouth的一站式工具。

常见问题

此处为常见问题,方便查询.

修改等待时间

终端输入:

 sudo gedit /etc/default/grub

修改文件中的:GRUB_TIMEOUT=10 (默认是为10秒的)

修改为:GRUB_TIMEOUT=X (X表示你要设置的秒数,设置为负数为一直等待操作) 修改后保存。终端输入:

sudo grub-mkconfig -o /boot/grub/grub.cfg |(新版已失效)sudo update-grub

重启生效。

修改默认启动系统

终端输入:

 sudo gedit /etc/default/grub

修改文件中的GRUB_DEFAULT=0

GRUB_DEFAULT=0 (0默认启动第1项,如果你的win是第5项,把这个0改为4) 保存文件后终端输入:

 sudo grub-mkconfig -o /boot/grub/grub.cfg |(新版已失效)sudo update-grub

重启生效。

修改默认分辨率

终端输入:

 sudo gedit /etc/default/grub

修改文件中的 #GRUB_GFXMODE=640x480

把前面#去掉,把分辨率改为800x600或1024x768(或者修改为你屏幕的分辨率,但前提是分辨率为常见分辨率) 保存文件后终端输入:

 sudo update-grub

重启生效

补充:深度操作系统2014下还需要同时修改 /var/cache/deepin/grub2.json 文件中的分辨率值,如 "Resolution":"1024x768"

修复损坏的grub引导

  • 方法一

建议事先备份sda 的grub:

 dd if=/dev/sda of=./mbr.bak bs=512 count=1 

这样子是把你现有的分区跟引导信息保存下来了。找个linux的live进入linux,然后把刚才的mbr.bak还原回去。

 dd if=./mbr.bak of=/dev/sda  bs=446 count=1
  • 方法二

点此查看:重装Grub

GRUB2降级到Grub legacy

备份

备份主要的 Grub2 目录及文件。

sudo cp /etc/default/grub /etc/default/grub.old
sudo cp -R /etc/grub.d /etc/grub.d.old
sudo cp -R /boot/grub /boot/grub.old

移除 Grub2

 sudo apt-get purge grub2 grub-pc

此时,系统在另一启动装载程序前将无法启动。 当这些软件包被移除后,许多文件还会残留在“/boot/grub”目录下。

安装 Grub Legacy

 sudo apt-get install grub

Grub 安装后,用户仍需通过运行以下命令来创建 menu.lst 和 stage1/stage2 文件:

 sudo update-grub

这一步可以生成 menu.lst 文件。

 sudo grub-install /dev/sdX

选择正确的设备(sda、sdb、sdc),通常为你的深度操作系统所在的磁盘。在 /boot/grub 目录下创建 stage1 和 stage2 文件并写入 MBR。运行这一命令来阻止其自动升级:

 echo "grub hold" | sudo dpkg --set-selections

重新启动。

相关链接

微信

欢迎关注 "深度操作系统" 公众号,使用微信扫描下方二维码即可关注。

deepin weixin

IRC

IRC为linux世界中最为常见的交流方式之一,它提供了一个类似于匿名聊天室的环境,欢迎您进入deepin IRC频道与大家进行交流。

服务器: irc.freenode.net
服务器: #deepin

邮件列表

邮件列表是linux世界中最为常见的交流方式之一,只要您加入了deepin邮件列表,就可以使用邮件的方式与大家进行交流。

·deepin users:用于deepin用户的一般讨论。
·deepin developers:专用于deepin开发者讨论。