Linux修改内核默认启动项

修改内核默认启动项
永久修改grub相关配置
1、/etc/default/grub
GRUB_TIMEOUT=10 (在内核选择停留的时间)
GRUB_CMDLINE_LINUX="resume=/dev/mapper/rhel-swap    rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet net.ifnames=0 biosdevname=0"
2、修改/etc/grub.d/下面的文件
3、命令行修改内核参数
grubby   --remove-args="rhgb quiet"(删除参数)  --args=console=ttyS0,115200(添加参数,或者--args="rhgb quiet")  --update-kernel(必须要接的选项)  /boot/vmlinuz-4.18.0-80.el8.x86_64
grubby   --info  /boot/vmlinuz-4.18.0-80.el8.x86_64  :  查看默认内核的信息
grubby   --info=ALL   :   查看所有内核的启动项
grubby --default-kernel  :  查看默认启动内核
grubby --default-index   :  获取默认菜单栏的index,默认为0,一位内是从1开始
grub2-set-default  1   :  设置默认的启动项为第二个,开机跳转到救援模式那一行
grubby --set-default /boot/vmlinuz-0-rescue-cb8aeb39ff2c47a2b37050a5550f9cc5  :  用grubby绑定指定版本的内核
!!!!!!注意:  1和2在修改修改文件之后需要用grub2-mkconfig -o /boot/grub2/grub.cfg重新生成grub.cfg文件,不然无法生效,而3则是立即生效
临时修改,开机之后按e可以进入到内核中,加入的rd.break或者其它的参数都是临时的

读取/etc/fstab
1.读写挂载根文件系统
/dev/mapper/rhel-root   /              xfs     defaults        0 0
defaults:挂载选项,7个选项的组合
    rw, suid, dev, exec, auto, nouser, and async
2、挂载本地其他文件系统(用uuid进行挂载,用blkid可以查看uuid)
UUID=91d8d98f-feab-436c-83a8-91e3602d764f /boot(挂载的位置)   xfs(文件系统类型)     defaults        0 0
/dev/mapper/rhel-swap   swap           swap    defaults        0 0


引导程序损坏(引导程序是一段固定的代码,可以直接通过命令进行生成即可)
模拟破坏引导程序(只需要破坏前446字节即可,切记不能破坏多,因为根是在后64字节的分区表上)
1、dd if=/dev/zero of=/dev/nvme0n1(注意接的是磁盘,并不是分区)  bs=446 count=1
2、重启并选择从光盘启动
3、选择Troubleshooting
4、进入救援模式
5、按1,继续进行操作,此时根是被挂载在/mnt/sysimage上,2(是根只读挂载,用于只想把根里面的数据cp出来的情况)
6、按enter进入光盘提供的shell中
7、chroot /mnt/sysimage切换到真正的根文件系统
8、用grub2-install /dev/nvme0n1进行修复
9、exit退出两次,重启,取消从光盘启动


总结:
1、bios检查硬件,并选择启动设备

2、bios读取启动设备上的引导程序(磁盘的前446字节),此时bios就把系统控制权交给了引导程序执行
如果引导程序损坏,那么就需要修复,进入救援模式,执行grub2-install 根磁盘

3、引导程序读取配置文件/boot/grub2/grub.cfg,选择要启动的内核
指定/boot/所在的分区,这时候引导程序(boot loader)将控制权交给内核,加载内核和initramfs,并放入内存中,内核在initramfs中找到所有硬件驱动,并初始化,initramfs中的/sbin/init以PID1启动,在RHEL8中,/sbin/init是一个指向/lib/systemd/systemd的链接,后以ro分方式加载真正临时的根文件系统,加载ramdisk文件

4、读取/etc/fstab,并以rw挂载根,并且挂载本地的其他文件系统
fstab文件里面出现错误(例如uuid手动输错了),或者文件系统损坏(很大可能是超级块坏了),导致系统无法启动,需要等待超时时间,等待完成切勿重启,因为重启只会重复错误的操作,直接输入密码进入,并进入/etc/fstab,把损坏的文件系统那一行给注释掉,然后进行修复

5、从initramfs运行的环境切换到/sysroot根文件系统下面

6、启动systemd,查看启动target,/etc/systemd/system/default.target -> /usr/lib/systemd/system/graphical.target
在此过程中,执行systemctl set-default multi-user.target,创建一个链接文件,链接到 /usr/lib/systemd/system/multi-user.target,因为图形化和命令模式的服务是有依赖关系的,当默认启动为图形,就会自动开启命令行,在/etc/systemd/system/graphical.target.wants目录下放了graphical启动所需要的服务

7、启动tty终端,用户登录

你可能感兴趣的:(Linux系统,运维,linux,运维,服务器)