1、内核启动参数——如何修改启动命令?
1、修改/etc/default/grub
这个文件是生成grub.cfg文件时候的基础参考文件,我们需要修改的内核启动参数就定义在GRUB_CMDLINE_LINUX。
# Set by curtin fast-path installer.
GRUB_TIMEOUT=5
GRUB_DEFAULT=0
GRUB_HIDDEN_TIMEOUT=0
GRUB_TERMINAL_OUTPUT="console"
GRUB_DISABLE_RECOVERY="true"
GRUB_DISTRIBUTOR="CentOS Linux release 7.6 (Final)"
GRUB_CMDLINE_LINUX="console=ttyS0,115200 console=tty0 biosdevname=0 fsck.mode=force net.ifnames=0 fsck.repair=yes rhgb intel_iommu=on iommu=pt intel_pstate=disable debug earlyprintk pcie_acs_override=multifunction"
修改该文件后,需要重新生成grub.cfg文件。
grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
1)新生成的grub文件里,所有的内核启动命令行都会使用更新后的参数。
2)后续安装新的内核版本时,新内核的启动命令行也会根据/etc/default/grub生成,使用更新后的参数。
2、grubby命令
grubby是专门配置“bootloader menu”的命令,支持多个平台和多种bootloader(grub.cfg文件会有不同路径,详见"man grubby")。
指定某个内核/ 所有内核添加“systemd.unified_cgroup_hierarchy=1”参数:
grubby --update-kernel=/boot/vmlinuz-5.10.0-3.0.0.3 --args="systemd.unified_cgroup_hierarchy=1"grubby --update-kernel=ALL --args="systemd.unified_cgroup_hierarchy=1"
不过这种方式,后续新安装的内核应该还是不带这个参数的。
grubby命令还是支持很多功能的,比如显示/设置 默认启动内核。详见man手册。
/home/ # grubby --default-kernel
/boot/vmlinuz-5.10.0-3.0.0.3
2、rescue模式
一般应用在内核无法正常启动的情况,此时无法等内核启动完成后去查看系统出现了哪些异常。
1)grub启动菜单界面时,输入e,进入grub菜单编辑模式,可以临时修改本次启动命令行。
添加systemd.unit=rescue.target
(确保打开console,否则进入救援模式也无法交互,console=tty0 console=ttyS0,115200)
2)修改完成后,会提示输入某个按键,可以“使用修改后的命令行参数继续启动”。系统继续启动并进入救援模式。
3)救援模式的交互就是shell的命令行接口,大部分shell命令可用。
曾经使用rescue方式解决某机器概率性无法启动的问题,打开console后发现最后的打印提示:
systemd-readahead[557]: Failed to open pack file: No space left on device
基本确认是空间不够了。
进入救援模式后,看到跟分区确实满了,然后把/var/crash下面的内核crash文件删除掉释放出了一半的空间。并将crash目录改到/home/coresave/kernel下。