Boot loader: Grub进阶(转)

Boot loader: Grub进阶

本文记录grub的一些进阶配置html

 

关於核心功能当中的 vga 配置

事实上,你的 tty1~tty6 除了 80x24 的解析度外,还可以有其余解析度的支持喔!但前提之下是你的核心必须支持 FRAMEBUFFER_CONSOLE 这个核心功能选项才行。如何肯定有没有支持呢?你能够查阅 /boot/config-2.6.18-92.el5 这个文件,而后这样搜寻:shell

[root@www ~]# grep 'FRAMEBUFFER_CONSOLE' /boot/config-2.6.18-92.el5
CONFIG_FRAMEBUFFER_CONSOLE=y
# 这个项目若是出现 y 那就是有支持啦!若是被注解或是 n ,那就是没支持啦!
彩度\解析度 640x480 800x600 1024x768 1280x1024 bit
256 769 771 773 775 8 bit
32768 784 787 790 793 15 bit
65536 785 788 791 794 16 bit
16.8M 786 789 792 795 32 bit

那么如何调整 tty1 ~ tty6 终端机的解析度呢?先参考底下的表格再说 (此为十进位数值):vim

假设你想要将你的终端机萤幕解析度调整到 1024x768 ,且色彩深度为 15bit 色的时候,就得要指定 vga=790 那个数字! 举例来讲,鸟哥的 tty1 就想要这样的解析度时,你能够这样作:测试

复制代码
[root@www ~]# vim /boot/grub/menu.lst
....(前面省略)....
title CentOS (2.6.18-92.el5)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-92.el5 ro root=LABEL=/1 rhgb quiet vga=790
        initrd /initrd-2.6.18-92.el5.img
....(后面省略)....
复制代码

从新启动并选择此菜单进入 Linux,你跑到 tty1 去看看,嘿嘿!就已是 1024x768 的解析度罗! 只是字会变的很小,可是画面的范围会加大就是了。不过,某些版本支持的是 16 进位制,因此还须要修改一下格式呢! 通常使用上表当中的值应该就能够了。不过,由於不一样的操做系统与硬件可能会有不同的状况,所以, 上面的值不见得必定能够在您的机器上面测试成功,建议您能够分别配置看看哩~以找出可使用的值! ^_^ui

 

BIOS 没法读取大硬盘的问题

现今的硬盘容量愈来愈大,若是你使用旧的主板来安插大容量硬盘时,可能由於系统 BIOS 或者是其余问题, 致使 BIOS 没法判断该硬盘的容量,此时你的系统读取可能会有问题。为何呢?编码

咱们在本章一开始的启动流程讲过,当进入 Linux 核心功能后,他会主动的再去侦测一下整个系统, 所以 BIOS 捉不到的硬件在 Linux 核心反而可能会能够捉到而正常使用。举例来讲,过去不少朋友经常会发现, 『个人系统使用 DVD 启动安装时,能够顺利的安装好 Linux ,可是第一次启动时, 萤幕只出现黑压压的一片,且出现 grub> 的字样,而没法进入 Linux 系统中』,这又是怎么一回事?加密

  • 在安装的过程当中,由於是使用 DVD 或 CD 启动,所以加载 Linux 核心不成问题,而核心会去侦测系统硬件,所以能够捉到 BIOS 捉不到的硬盘,此时你确实能够安装 Linux 在大容量的硬盘上,且不会出现任何问题。

  • 可是在进入硬盘启动时,由於 kernel 与 initrd 文件都是透过 BIOS 的 INT 13 通道读取的, 所以你的 kernel 与 initrd 若是放置在 BIOS 没法判断的磁区中,固然就没法被系统加载,而仅会出现 grub shell (grub>) 等待你的处理而已。

更多 grub 错误的代码查询能够到底下的连结查阅:spa

如今你知道问题所在啦!那就是 BIOS 没法读取大容量磁碟内的 kernel 与 initrd 文件。 那如何解决呢?很简单啦!就让 kernel 与 initrd 文件放置在大硬盘的最前头,由於 BIOS 至少能够读到大磁碟的 1024 磁柱内的数据,所以就可以读取核心与虚拟文件系统的文件罗。那如何让 kernel 与 initrd 放置到整颗硬盘的最前面呢?简单的要命吧!就建立 /boot 独立分割槽,并将 /boot 放置到最前面便可!操作系统

万一你已经安装了 Linux 且发生了上述的问题,那该怎办?你能够这样做的:code

  • 最简单的作法,就是直接重灌,而且制做出 /boot 挂载的 partition ,同时确认该 partition 是在 1024 cylinder 以前才行。

  • 若是实在不想重灌,没有关系,利用咱们刚刚上头提到的 grub 功能,额外建立一个可启动软盘, 或者是直接以光驱启动,而后以 grub 的编写能力进入 Linux 。

  • 另外的办法实际上是骗过 BIOS ,直接将硬盘的 cylinder, head, sector 等等资讯直接写到 BIOS 当中去,如此一来你的 BIOS 可能就能够读获得与支持的到你的大硬盘了。

不过,鸟哥仍是建议您能够从新安装,而且制做出 /boot 这个 partition 啦! ^_^!这也是为啥此次更版中, 鸟哥特别强调要分割出 /boot 这个分割槽的缘由啊!

 

为个别菜单加上口令

想像一个环境,若是你管理的是一间计算机教室,这间计算机教室由于可对外开放,可是你又担忧某些 partition 被学生不当心的弄乱,所以你可能会想要将某些启动菜单做个保护。这个时候,为每一个菜单做个加密的口令就是个可行的方案啦! 那如何在启动的过程里面提供口令保护呢?首先,你必需要建立口令,并且还须要是加密事后的喔! 不然人家跑到 /boot/grub/menu.lst 不就能够探查到你的启动口令了?那如何建立加密的口令呢? 咱们能够透过 grub 提供的 md5 编码来处理的,以下所示:

[root@www ~]# grub-md5-crypt
Password: <==输入口令
Retype password: <==再输入一次
$1$kvlI0/$byrbNgkt/.REKPQdfg287. <==这就是产生的 md5 口令!

上表的案例中,咱们两个菜单进入的口令并不相同,能够进行同窗的分类啦!不过这样也形成一个问题, 那就是必定要输入口令才可以进入启动流程,若是你在远程使用 reboot 从新启动,而且主机前面并无任何人的话.... 你的主机并不会主动进入启动程序喔! ^_^上面产生的最后一行,由 $ 开始到 . 结束的那行,就是你的口令通过 md5 编码事后的咚咚! 将这个口令复制下来吧!假设咱们要将第一个选项加入这个口令,而第四个选项加入另外的口令, 那你应该要这样作:

复制代码
[root@www ~]# vim /boot/grub/menu.lst
....(前面省略)....
title CentOS (2.6.18-92.el5)
        password --md5 $1$kvlI0/$byrbNgkt/.REKPQdfg287.
        root (hd0,0)
        kernel /vmlinuz-2.6.18-92.el5 ro root=LABEL=/1 rhgb quiet vga=790
        initrd /initrd-2.6.18-92.el5.img
....(中间省略)....
title single user mode
        password --md5 $1$GFnI0/$UuiZc/7snugLtVN4J/WyM/
        root (hd0,0)
        kernel /vmlinuz-2.6.18-92.el5 ro root=LABEL=/1 rhgb quiet single
        initrd /initrd-2.6.18-92.el5.img
复制代码

你必需要注意的是:password 这个项目必定要在 title 底下的第一行。 不过,此项功能仍是可能被破解的,由于使用者能够透过编辑模式 (e) 进入菜单,并删除口令栏位并按下 b 就可以进行启动流程了!真糟糕!那怎办?只好透过总体的 password (放在全部的 title 以前) , 而后在 title 底下的第一行配置 lock ,那使用者想要编辑时,也得要输入口令才行啊!配置有点像这样:

复制代码
[root@www ~]# vim /boot/grub/menu.lst
default=0
timeout=30
password --md5 $1$kvlI0/$byrbNgkt/.REKPQdfg287.  <==放在总体配置处
splashimage=(hd0,0)/grub/splash.xpm.gz
#hiddenmenu
title CentOS (2.6.18-92.el5)
        lock  <==多了锁死的功能
        root (hd0,0)
        kernel /vmlinuz-2.6.18-92.el5 ro root=LABEL=/1 rhgb quiet vga=790
        initrd /initrd-2.6.18-92.el5.img
复制代码

那么从新启动后,画面会像这样:

你能够看到最下方仅出现 p 的功能,由於 2, 3, 4 菜单并无使用 lock ,所以这三个菜单使用者仍是能够运行启动程序, 可是第一个菜单由於有 lock 项目,所以除非你输入正确的口令,不然第一个菜单是没法被加载运行的。 另外,这个项目也可以避免你的 menu.lst 在启动的过程当中被乱改,是具备保密 menu.lst 的功能啦! 与刚刚的菜单口令功能不一样。

 

转自  

相关文章
相关标签/搜索