系统启动过程(内核介绍),linux无法开机系统修复,35岁程序员的人生感悟

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注运维)
img

正文

【常用的设备无关启动时参数】

1、init=…

设置内核执行的初始化进程名,如果该项没有设置,内核会按顺序尝试/etc/init,

/bin/init,/sbin/init, /bin/sh,如果所有的都没找到,内核会抛出 kernel panic:的错误。

2、nfsaddrs=…

设置从网络启动时NFS的启动地址,已字符串的形式给出。

3、nfsroot=…

设置网络启动时的NFS根名字,如果该字符串不是以 “/”、“,”、"."开始,默认指向“/tftp-boot”。

以上2、3在无盘站中很有用处。

4、no387

该选项仅当定义了CONFIG_BUGi386时才能用,某些i387协处理器芯片使用32位的保护模式时会有BUG,比如一些浮点运算,使用这个参数可以让内核忽略387协处理器。

5、no-hlt

该选项仅当定义了CONFIG_BUGi386时才能用,一些早期的i486DX-100芯片在处理“hlt”指令时会有问题,执行该指令后不能可靠的返回操作系统,使用该选项,可以让Linux系统在CPU空闲的时候不要挂起CPU。

6、root=…

该参数告诉内核启动时使用哪个设备作为根文件系统。比如可以指定根文件为hda8:root=/dev/hda8。

7、ro和rw

ro参数告诉内核以只读方式加载根文件系统,以便进行文件系统完整性检查,比如运行fsck;rw参数告诉内核以读写方式加载根文件系统,这是默认值。

8、reserve=…

保留端口号。格式:reserve=iobase,extent[,iobase,extent]…,用来保护一定区域的I/O端口不被设备驱动程序自动探测。在某些机器上,自动探测会失败,或者设备探测错误或者不想让内核初始化设备时会用到该参数;比如: reserve=0x300,32device=0x300,除device=0x300外所有设备驱动不探测 0x300-0x31f范围的I/O端口。

9、mem=…

限制内核使用的内存数量。早期BIOS设计为只能识别64M以下的内存,如果你的内存数量大于64M,你可以指明,如果你指明的数量超过了实际安装的内存数量,系统崩溃是迟早的事情。如:mem=0x1000000意味着有16M内存,如果是mem=0x6000000,就是96M内存了。注意:很多机型把部分内存作为BIOS的映射,所以你在指定内存大小的时候一定要预留空间。你也可以在 pentium或者更新的CPU上使用mem=nopentium关闭4M的页表,这要在内核配置时申明。

10、panic=N

默认情况,内核崩溃--kernel panic 后会宕机而不会重启,你可以设置宕机多少秒之后重启机器;也可以在/proc/sys/kernel/panic文件里设置。

11、reboot=[warm|cold][,[bios|hard]]

该选项仅当定义了CONFIG_BUGi386时才能用。2.0.22的内核重启默认为cool reboot,warm reboot 更快,使用"reboot=bios"可以继承bios的设置。

12、nosmp 和 maxcpus=N

仅当定义了 SMP,该选项才可用。可以用来禁用多CPU或者指明最多支持的CPU个数。

临时修改内核参数

临时修改内核参数方法,启动系统选择内核时按字母 c 即可:

在这里插入图片描述

按 c 选择指定内核 然后 再 按 e 即可进入编辑界面 ,在当前界面,上下左右 箭头可切换光标 编辑完成之后ctrl+x 保存 后即可 以定义的参数开机(仅限本次有效,重启后变不再生效了)。

在这里插入图片描述

一般在维护或者修复系统的时候,我们才会在这里修改内核的参数。

系统的几种模式:

救援模式rescue

假设系统正常启动需要20个必须服务,如果某个必须服务出了问题就会导致系统没法启动,假设救援模式只有个必须服务,我们进入到救援模式的时候,出问题的服务不再救援模式的必须服务之内,此时系统就可以启动起来。

但是 需要root密码

类似于windows下的“安全模式”

进入该模式的方法:就是临时编辑内核参数的方法,启动界面c(选择内核)——e进入编辑界面,找到内核列 在最后写上参数保存即可;

在这里插入图片描述

这里写s,single,1都可以,按ctrl+x

在这里插入图片描述

在该模式下可以查看启动日志,查找系统无法正常启动的原因。

emergency模式:

假设系统正常启动需要20个必须服务,如果某个必须服务出问题了就会导致系统无法启动,假设emergency模式只有6个必须服务,我们进入到emergency模式的时候,出问题的服务不再emergency模式的必须服务内,此时系统可以启动起来。

但是 需要root密码

也类似于windows下的“安全模式”

进入该模式的方法:就是临时编辑内核参数的方法,启动界面c(选择内核)——e进入编辑界面,找到内核列 在最后写上参数保存即可;

在这里插入图片描述

ctrl+x后:

在这里插入图片描述

重置root密码


如果你使用的是RHEL7.0的话,记住要删除rhgb quiet这两个参数。7.1及以上就不需要删除

进入该模式的方法:就是临时编辑内核参数的方法,启动界面c(选择内核)——e进入编辑界面,找到内核列 在最后写上参数保存即可;

在这里插入图片描述

ctrl+x后就会直接进入到无密码界面:

在这里插入图片描述

需要注意的时,以这种方式进入的系统是 只读的,不能直接修改密码,所以需要先把系统文件以读写的方式重新挂载再修改密码即可:

在这里插入图片描述

密码修改完成以后,需要重置selinux标签:touch /.autorelabel ,然后重启:exec /sbin/init

在这里插入图片描述

如果使用的是vmware做实验的话,这当中会重启2次(等待即可),kvm没这个问题。

启动完毕后直接使用更改的密码登陆即可:

在这里插入图片描述

进入安全模式(grbu)加密:


如果在没做什么操作的情况下 谁都能修改root密码 ,显然这是不安全的,所以,我们可以编辑文件,让别人无法直接通过上述进入安全模式的方法修改root密码:

编辑文件:vi /etc/grub2.d/00_header

在这里插入图片描述

在文件最下面新建以下格式,指定超级用户,并保存,保存以后需要执行:grub2-mkconfig -o /boot/grub2/grub.cfg :

在这里插入图片描述

上诉方法是密码以明文的方式呈现,下面说一下密码不以明文方式呈现,首先要先 生成秘钥(秘钥是pbkdf2格式):执行grub2-mkpasswd-pbkdf2-输入该用户的密码,如上图中的密码是:ccx123 :

在这里插入图片描述

秘钥生成以后,再次编辑文件:vi /etc/grub2.d/00_header ,在文件最下面新建以下格式,指定超级用户,并保存,保存以后需要执行:grub2-mkconfig -o /boot/grub2/grub.cfg :

在这里插入图片描述

更新数据以后reboot重启:

在这里插入图片描述

进入编辑模式以后,现在要提示输入用户名和密码:这个用户名就是之前文件定义的超级用户和密码:

在这里插入图片描述

用户密码输入错误会直接回到开机启动界面,又得重新按e进入该界面:

在这里插入图片描述

密码输入正确以后 才会进入到编辑界面,在该界面定义好内核文件后,ctrl+x即可正常启动:

在这里插入图片描述

强制进入安全模式:


该方法用于:1、grub被加密了,且不知道密码是什么 2、root密码也忘记了(就无法更改(grub)指定用户的密码了) ,这时候就需要用到另外一种救援模式:

这里以vmware为例,首先必须先挂载系统镜像,注:系统镜像版本必须和当前系统版本一致:

在这里插入图片描述

挂载好以后重启系统,并在刚开机时的界面按esc键(速度要快)调出启动菜单(可能版本不同有些系统并不是esc调出启动菜单,如果esc不行自行百度查看快捷键):

在这里插入图片描述

调出启动菜单后选择第三个cd启动:

在这里插入图片描述

然后选择第三项回车:

在这里插入图片描述

然后选择第二项回车,进入到救援模式(和前面的救援模式有区别,该处是光盘救援模式):

在这里插入图片描述

Continue回车:

在这里插入图片描述

回车以后继续回车,注:这儿提示了进系统后需要执行该命令才能从光盘根目录切换到 系统根目录:

在这里插入图片描述

再次按回车键:

在这里插入图片描述

现在就进入到了系统光盘中的救援模式:

在这里插入图片描述

输入进入时界面提示的命令切换到我们系统的根目录:chroot /mnt/sysimage/ ,进入到系统根目录以后就可以做任何操作了:

在这里插入图片描述

输入2次exit即可保存操作并重启系统:

在这里插入图片描述

系统修复

===================================================================

系统缺失启动文件无法开机-修复


当grup丢失的时候如何修复系统

因为grup是存储在第一个盘的前446b中,所以现在先把grup文件覆盖(损坏):

dd if=/dev/zero of=/dev/vda bs=1 count=446 (在 /dev/zero 中提取446大小的空文件写入到dev/vda磁盘中)

在这里插入图片描述

此时重启就会发现如下情况:

在这里插入图片描述

操作步骤:

参考前面强制进入安全模式的步骤:挂镜像-在刚开机时的界面按esc键(速度要快)调出启动菜单… 输入命令进入系统根目录:

在这里插入图片描述

到这一步以后重新把grub2重新安装到系统磁盘(lsblk查看)即可:grub2-install /dev/vda,安装完毕后重启即可:

在这里插入图片描述

重启后正常读取内核,成功:

在这里插入图片描述

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注运维)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
G4ubmV0L2N1aWNob25neGlu,size_16,color_FFFFFF,t_70)

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注运维)
[外链图片转存中…(img-ILdAiob5-1713263490337)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值