什么是 GRUB?GRUB 全名Grand Unified Boot Loader,它是一个引导装入器 -- 它负责装入内核并引导 Linux 系统。GRUB 还可以引导其余操做系统,如 FreeBSD、NetBSD、OpenBSD、GNU HURD 、DOS以及 Windows。虽然引导操做系统看上去是件平庸且琐碎的任务,但它实际上很是重要。linux
假设引导装入器不能很是好地完毕工做或者不具备弹性。
那么就可能锁住系统。而没法引导计算机。另外,好的引导装入器可以给您灵活性。让您可以在计算机上安装多个
操做系统,而没必要处理没必要要的麻烦。
ubuntu
废话很少说,看着也没多大意思,赶忙进入正文,想看介绍的可以去《GRUB新手教程》学习。
vim
如今。较新电脑上装的都是grub2。而grub2 使用的配置文件是 /boot/grub/grub.cfg。打开后咱们可以找到这样一句:windows
set default="0" 这一选项是用来选择默认系统的。0 即第一个,假设你有5个选项,他们分别相应 /boot/grub/grub.cfg 文件里的:安全
menuentry 'Debian GNU/Linux, with Linux 3.2.51-trace' --class debian --class gnu-linux --class gnu --class os { --- 0
...
}
menuentry 'Debian GNU/Linux, with Linux 3.2.51-trace (recovery mode)' --class debian --class gnu-linux --class gnu --class os { --- 1
...
}
menuentry 'Debian GNU/Linux, with Linux 3.2.0-4-amd64' --class debian --class gnu-linux --class gnu --class os { --- 2
...
}
menuentry 'Debian GNU/Linux, with Linux 3.2.0-4-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os { --- 3
...
}
menuentry "Windows 7 (loader) (on /dev/sda1)" --class windows --class os { --- 4
...
}bash
因此,你仅仅需要依据本身选择第几个内核就可以! 比方我想要个人win 7 做为默认系统,我可以将menuentry "Windows 7 ... 这一段 移到menuentry 'Debian GNU/Linux, with Linux 3.2.5 ... 以前,也可以直接将set default="0" 中的0 改成4!学习
set timeout=5 这一选项用来设置grub 选项等待时间,假设是5 就是5秒内不选择,就载入光标所在选项!ui
一台电脑装的系统多了或者变异的内核多了。可能你的GRUB 选项会变成这样:spa
选择一个你想进入的内核都得上下翻页翻半天。那么怎么处理这个问题?有效的管理这些个选项呢?关于这个,Ubuntu上的grub 或者可以给咱们一个很是好的提示,对,假设你使用过 Ubuntu ,在你编译内核之后,一个系统上的内核会被折叠。比方说个人还有一台笔记本上的grub 会是这样:操作系统
* Ubuntu, with Linux 3.2.0-61-generic-pae
* Ubuntu, with Linux 3.2.0-61-generic-pae
* Previous Linux versions
* Windows 8 (loader)
光标移动到“Previous Linux versions” 选项上,进入后,grub才会展现出其它一些内核选项:
* Ubuntu, with Linux 3.12.13-rt4
* Ubuntu, with Linux 3.12.13-rt4 (recovery mode)
* Ubuntu, with Linux 3.12.13-ftrace
* Ubuntu, with Linux 3.12.13-ftrace (recovery mode)
* Ubuntu, with Linux 3.4.24-test
* Ubuntu, with Linux 3.4.24-test (recovery mode)
* Ubuntu, with Linux 3.2.0-51-generic-pae
* Ubuntu, with Linux 3.2.0-51-generic-pae (recovery mode)
那么咱们怎么本身完毕这个动做,打开ubuntu 的/boot/grub/grub.cfg 后我明确了,原来这仅仅是grub的一个二级菜单功能 “ submenu "Previous Linux versions" { ... } ”,因此个人笔记本可以这么玩:
$ sudo vim /boot/grub/grub.cfg
menuentry 'Debian GNU/Linux, with Linux 3.12.9-gcov-rt13' --class debian --class gnu-linux --class gnu --class os
submenu "Previous Debian versions" {
menuentry 'Debian GNU/Linux, with Linux 3.12.9-gcov-rt13 (recovery mode)' --class debian --class gnu-linux --class gnu --class os
menuentry 'Debian GNU/Linux, with Linux 3.12.9-testing-rt13' --class debian --class gnu-linux --class gnu --class os
menuentry 'Debian GNU/Linux, with Linux 3.12.9-testing-rt13 (recovery mode)' --class debian --class gnu-linux --class gnu --class os
menuentry 'Debian GNU/Linux, with Linux 3.10.17-trace-rt12' --class debian --class gnu-linux --class gnu --class os
menuentry 'Debian GNU/Linux, with Linux 3.10.17-trace-rt12 (recovery mode)' --class debian --class gnu-linux --class gnu --class os
menuentry 'Debian GNU/Linux, with Linux 3.9.11-trace' --class debian --class gnu-linux --class gnu --class os
...
}
menuentry "Windows 7 (loader) (on /dev/sda1)" --class windows --class os
menuentry "elementary OS, with Linux 3.2.0-51-generic (on /dev/sda10)" --class gnu-linux --class gnu --class os
submenu "Previous elementary OS versions" {
menuentry "elementary OS, with Linux 3.2.0-51-generic (recovery mode) (on /dev/sda10)" --class gnu-linux --class gnu --class os
}
menuentry "Ubuntu (on /dev/sda8)" --class gnu-linux --class gnu --class os
submenu "Previous Ubuntu versions" {
menuentry "Ubuntu。Linux 3.11.0-18-generic (on /dev/sda8)" --class gnu-linux --class gnu --class os
menuentry "Ubuntu,Linux 3.11.0-18-generic (恢复模式) (on /dev/sda8)" --class gnu-linux --class gnu --class os
menuentry "Ubuntu,Linux 3.11.0-13-generic (on /dev/sda8)" --class gnu-linux --class gnu --class os
menuentry "Ubuntu。Linux 3.11.0-13-generic (恢复模式) (on /dev/sda8)" --class gnu-linux --class gnu --class os
...
}
因而忽,个人机器现在启动是这种:
是否是清新不少?
你认为你使用 Linux 系统安全么? 你有了password就安全了么?来试试GRUB 的强大吧!
。!
(1). 系统启动。进入grub 选择界面!如上面的图片所看到的
(2). 在一个选项之上按 e 键进入grub 编辑界面!(没事,大胆尝试,不会永久保存的。就算保存了不对的东西,不是还有recovery mode 嘛!。!)
(3). 比方我当前的编辑界面显示的内容是这种:
recordfail
gfxmode $linux_gfx_mode
insmod gzio
insmod part_msdos
insmod ext2
set root='(hd0,msdos8)'
search --no-floppy --fs-uuid --set=root c81eebc3-ed49-4661-be49-eadeb0de4696
linux /boot/vmlinuz-3.2.0-61-generic-pae root=UUID=c81eebc3-ed49-4661-be49-eadeb0de4696 ro quiet splash $vt_handoff
initrd /boot/initrd.img-3.2.0-61-generic-pae
咱们需要改动的是上面我使用颜色标记的行,咱们将 ro 改成rw 。后面的内容全删除!加入上 init=/bin/bash
也就是说,改完以后是这种:
linux /boot/vmlinuz-3.2.0-61-generic-pae root=UUID=c81eebc3-ed49-4661-be49-eadeb0de4696 rw init=/bin/bash
这时候,咱们按Ctrx+X 或者F10 保存并进入。咱们会发现通过一段时间载入后,咱们没有不论什么password确得到了root 权限!!
!
那么这时候系统还安全么???咱们可以载入不论什么分区,而后获取不论什么你想保密的内容!啦啦啦~~~
但是。我在这介绍这方法不是让你去整人的!
!
!它可以用在很是实用的方面: 丢失password可以用此方法改动password。系统崩溃可以使用此方法将关键文件拷贝走!
等等~~
有时候。咱们会安装多个系统。比方上面照片中。个人一个笔记本上安装了4个系统。当中会将一个系统下的grub 做为电脑的载入程序!
比方说个人电脑上Debian 的GRUB 被我用作电脑的默认载入程序了!
但是某天我在 Ubuntu 上编译了一个内核,并使用 update-grub2 更新了grub, 但是系统启动,你会发现你的 update 并无生效,你还需要到 Debian 下再使用 update-grub2 后。这个在 Ubuntu 下编译的内核才会在系统启动菜单中出现!
还有种状况。比方个人电脑上仅仅有Debian 和 win8 两个系统,但是某一天个人 win 8 崩溃了因而我重装了系统,启动后发现。我仅仅能进入windows 了,再也引导不了Debian 了。因为Windows 的引导程序还不能引导 Linux!
遇到这两种状况怎么办? 使用 grub-install !方法可以參见《那些年解决的 Ubuntu 系统故障》