系统启动过程(内核介绍),linux无法开机系统修复


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, /

  • 19
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值