• grub


    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” 命令
    
  • 相关阅读:
    挂载在snap的/dev/loop占用100%问题
    机器学习3- 一元线性回归+Python实现
    机器学习-2 模拟评估与选择
    机器学习-1 绪论
    Java面试系列第4篇-HashMap相关面试题
    Java面试系列第3篇-类的加载及Java对象的创建
    Java面试系列第2篇-Object类中的方法
    Java面试系列第1篇-基本类型与引用类型
    第3篇-如何编写一个面试时能拿的出手的开源项目?
    第2篇-如何编写一个面试时能拿的出手的开源项目?
  • 原文地址:https://www.cnblogs.com/shenxm/p/8447749.html
Copyright © 2020-2023  润新知