GRand Unified Bootloader的缩写,更准确地讲,它是GNU项目的启动引导程序.GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统.GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数
下图中 这里有两个内核,第一个从0开始,第二个则是从1开始,默认选择的是第一个(0)
修改参数:
GRUB_TIMEOUT=30 :设置的倒计时(倒计时自动选择第一个内核启动),默认时间是5
GRUB_DEFAULT=1:设置默认从1号内核引导,默认是SAVED
GRUB_CMDLINE_LINUX=… 内核参数(修改此处为永久修改,重启后生效)
快捷查看内核参数:cat /proc/cmdline
修改内核参数,分2步:
第一步:编辑文件:vi /etc/dafault/grub 在里面定义参数即可。
第二步:执行grup2-mkconfig -o /boot/grub2/grub.cfg,作用是把/etc/default/grub中编辑的文件应用到/boot/grub2/grub.cfg中(重启后永久生效)
内核参数定义规则:
Linux内核在启动的时候,能接收某些命令行选项或启动时参数。当内核不能识别某些硬件进而不能设置硬件参数或者为了避免内核更改某些参数的值,可以通过这种方式手动将这些参数传递给内核。
如果不使用启动管理器,比如直接从BIOS或者把内核文件用“cp zImage /dev/fd0”等方法直接从设备启动,就不能给内核传递参数或选项--这也许是我们使用引导管理器比如LILO的好处之一吧。
Linux的内核参数是以空格分开的一个字符串列表,通常具有如下形式:
代码如下:
name[=value_1][,value_2]…[,value_10]
“name”是关键字,内核用它来识别应该把“关键字”后面的值传递给谁,也就是如何处理这个值,是传递给处理例程还是作为环境变量或者抛给“init”。值的个数限制为10,你可以通过再次使用该关键字使用超过10个的参数。首先,内核检查关键字是不是 root='',
nfsroot=’’,nfsaddrs='',
ro’’, rw'',
debug’‘或`init’’,然后内核在bootsetups数组里搜索于该关键字相关联的已注册的处理函数,如果找到相关的已注册的处理函数,则调用这些函数并把关键字后面的值作为参数传递给这些函数。比如你在启动时设置参数name=a,b,c,d,内核搜索bootsetups数组,如果发现“name”已注册,则调用“name”的设置函数如name_setup(),并把a,b,c,d传递给name_setup()执行。 所有型如“name=value”参数,如果没有被上面所述的设置函数接收,将被解释为系统启动后的环境变量,比如“TERM=vt100”就会被作为一个启动时参数。
所有没有被内核设置函数接收也没又被设置成环境变量的参数都将留给init进程处理,比如“single”。
【常用的设备无关启动时参数】
1、init=…
设置内核执行的初始化进程名,如果该项没有设置,内核会按顺序尝试/etc/init,
/bin/init,/sbin/init, /bin/sh,如果所有的都没