码迷,mamicode.com
首页 > 其他好文 > 详细

grub

时间:2018-02-14 00:43:36      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:direct   必须   删除   就会   ase   gac   级别   单用户   password   

grub

    从系统流程中可以得知,在BISO读取相关信息后,接下来就是去第一个可以启动的设备当中的MBR中读取Boot Loader信息。
    Boot Loader提供具体菜单功能、直接加载内核信息,以及相关的控制权转交功能。
    系统启动必须有Boot Loader,然后才能加载内核。
    Boot Loader存在于MBR中,MBR只有512btyes,其中446btyes存储Boot Loader。
    实际上,linux将Boot Loader的程序运行与配置项加载分成三个阶段(stage)来运行:
        stage 1:运行Boot Loader主程序,这个程序必须安装在启动区(MBR)中。因MBR空间有限,因此在MBR当中仅安装Boot Loader的最小程序,并没有安装Boot Loader的相关配置文件。
        stage 1_5:在MBR随后的扇区中存放,主要用于与stage 2所在分区的文件系统进行交互。
        stage 2:通过Boot Loader加载所有配置文件及其相关的环境参数信息,这些配置文件及其相关的环境参数都存放于磁盘分区上的/boot/grub目录下。
    
    在/boot/grub目录中:
        device.map: 定义了grub安装在哪里     
        grub.conf:  grub的配置文件
        menu.lst -> ./grub.conf:    grub 的配置文件
        splash.xpm.gz:  启动时在grub底下的背景图片
        stage1: stage 1的相关说明
        stage2: stage 2的相关说明
        iso9660_stage1_5:   光驱文件系统的定义
    {ffs_stage1_5、fat_stage1_5、jfs_stage1_5、reiserfs_stage1_5、reiserfs_stage1_5、xfs_stage1_5、e2fs_stage1_5、ufs2_stage1_5、minix_stage1_5vstafs_stage1_5}:文件系统的定义
    当Boot Loader读取了/boot/grub目录下的文件系统所定义的数据后,就能够识别文件系统并读取在该文件系统上的内核文件了。
    grub是目前使用最广泛的linux启动管理程序。
    grub最重要的一部分当属识别磁盘信息,grub对硬盘的识别是通过以下方法:
        (hd0,0)
        注意:
            1.硬盘代号以小括号()括起来;
            2.硬盘以hd表示,后面会接一组数字,数字间以逗号隔开;
            3.是以搜寻到的顺序来作为磁盘的编号,而非根据磁盘的排线编号;
                (多硬盘情况,搜寻的次序是根据bios中设置的启动顺序而非插槽编号)
            4.第一个搜寻到的磁盘编号为0,第二个为1.以此类推。
            5.每块磁盘上的第一个分区编号为0,第二个分区为1,以此类推。
        因此(hd0,0)就表示第一块磁盘上的第一个分区
    grub: GRand Unified Bootloader
        grub 0.97: grub legacy
        grub 2.x: grub2
        grub legacy:
        stage1: mbr
        stage1_5: mbr之后的扇区,
            让stage1中的bootloader能识别stage2 所在的分区上的文件系统
        stage2 :磁盘分区(/boot/grub/)
    安装grub(用于修复1-1.5-2阶段的故障): 
        grub-install
            安装grub stage1,1.5,2 到/dev/DISK 磁盘上,并复制GRUB到相关文件到 DIR/boot 目录下
            grub-install --root-directory=DIR /dev/DISK
            同步sync
        grub交互接口
            grub> root (hd#,#)
            grub> setup (hd#)
            grub> quit
    配置文件:
        grub.conf -> /boot/grub/grub.conf
        由anaconda安装向导生成
            
    stage2及内核等通常放置于一个基本磁盘分区
        功用:
            提供启动菜单、并提供交互式接口
                a:内核参数
                e:编辑模式,用于编辑菜单
                c:命令模式,交互式接口
            加载用户选择的内核或操作系统
                允许传递参数给内核
                可隐藏启动菜单
            为菜单提供了保护机制
                为编辑启动菜单进行认证
                为启用内核或操作系统进行认证
    grub 的命令行接口:
        在GRUB界面可按照提示输入e、b、c等命令进行相应的编辑,在对应的title中输入c可以进入命令行模式,在命令行中可以输入一些信息:
            help:  获取帮助列表
            help KEYWORD:  详细帮助信息
            find (hd#,#)  /PATH/TO/SOMEFILE:
            root (hd#,#):
            kernel /PATH/TO/KERNEL_FILE: 
                设定本次启动时用到的内核文件;
                额外还可添加许多内核支持使用cmdline 参数
                例如:max_loop=100 selinux=0 init=/path/to/init
            initrd /PATH/TO/INITRAMFS_FILE: 设定为选定的内核提供额外文件的 的ramdisk
            boot: 引导启动选定的内核
    
    grub也有自己的保护机制,只有通过认证才能修改grub.conf信息。
    可以通过以下方式来对grub.conf进行保护:
        1.在第一个title上添加passwd --md5  ***************(这个也可以使明码)主要用于保护编辑功能;
        2.在某个title内添加passwd --md5 ***************主要用于保护内核;
            生成密码的命令:grub-md5-crypt
    cat /proc/cmdline 内核参数
    内核参数文档:
        /usr/share/doc/kernel-doc-2.6.32/Documentation/kernel-parameters.txt
    识别硬盘设备
        (hd#,#)
        hd#:  磁盘编号,用数字表示;从0 开始编号
        #:  分区编号,用数字表示;  从0 开始编号
        (hd0,0)  第一块硬盘,第一个分区
    手动在grub 命令行接口启动系统
        grub> root (hd#,#)
        grub> kernel /vmlinuz-VERSION-RELEASE ro root=/dev/DEVICE
        grub> initrd /initramfs-VERSION-RELEASE.img
        grub> boot
    配置文件:
        /boot/grub/grub.conf
        default=#: 
            设定默认启动的菜单项;落单项(title) 编号从0开始
            表示默认启动条目,若同时装有多个内核或操作系统,0表示第一个title系统,1表示第二个title系统,以此类推。
        timeout=# :
            指定菜单项等待选项选择的时长
            表示可供选择的等待时间,如果超过这个时间,则使用默认的启动条目default定义的。
            超时时长,单位是秒。
        splashimage=(hd#,#)/PATH/XPM_FILE:
            grub菜单背景图片文件路径
            定义启动是的背景图片信息
        hiddenmenu :
            隐藏选择菜单
            启动时是否显示菜单,默认是不显示,若想要显示可将该配置注释掉。
        password [--md5] STRING: 
            启动菜单编辑认证
        title TITLE :
            定义菜单项“标题”,可出现多次
            定义各个操作系统的名称或系统内核
        root (hd#,#) :
            查找stage2及kernel文件所在设备分区。
            为grub的根表明内核文件存放的位置,这里是指分区位置,而非根目录。
            指明引导当前操作系统或内核文件所在的分区
        kernel /PATH/TO/VMLINUZ_FILE  [PARAMETERS]:
            启动的内核,
            内核文件路径、根文件系统所在设备(hd0,0),以及传递给内核的参数
            内核的名称以及以下启动的核心参数。
            由于启动过程中需要挂载根目录。
            因此就需要指定根目录所在分区。
            rhgb表示图形显示不显示启动过程,quiet表示静默模式加载内核。
            rhgb删除后,会直接显示启动过程。
        initrd /PATH/TO/INITRAMFS_FILE:  
            内核匹配的ramfs 文件
            指明用于辅助内核完成系统启动的ramdisk文件路径再次在内存缓存
            就是前面提到initrd,虚拟文件系统
        password [--md5|--encrypted ] STRING: 
            启动选定的内核或进操作系统时进行认证

grub 加密

    在/boot/grub/grub.conf文件中
        password [--md5|--encrypted ] STRING
    生成grub 口令
        grub-md5-crypt
        grub-crypt
    破解root 口令:
        1》启动系统时,设置其运行级别1。
            启动时,按任意键进入菜单项,并按e进入编辑模式
            选择kernel那一行,按e进行编辑,
            在行最后添加1,按回车保存退出
            按b进行启动,就会进入单用户模式。
            然后可以使用passwd命令修改密码
        2》光盘启动,直接把/mnt/sysimage/etc/shadow中的口令清空。
            root的代表密码的字符串删除
            变成如下格式
                wang::17417:0:99999:7:::
    进入单用户模式 :
        编辑grub菜单( 选定要编辑的title ,而后使用e 命令)
        在选定的kernel后附加
                1, s, S 或single 都可以
        在kernel 所在行,键入“b” 命令

grub

标签:direct   必须   删除   就会   ase   gac   级别   单用户   password   

原文地址:https://www.cnblogs.com/shenxm/p/8447749.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!