Ubuntu 22.04下kexec实操问题:获取当前运行内核与initrd路径、实现指定普通用户登录
Ubuntu 22.04下kexec实操问题:获取当前运行内核与initrd路径、实现指定普通用户登录
嗨,我来帮你搞定这两个kexec的实操问题,都是Ubuntu 22.04里的实用技巧,咱们一步步来:
一、快速获取当前运行的内核与initrd路径
Ubuntu 22.04的内核和initrd文件都默认放在/boot目录下,对应你当前正在运行的版本,用下面的方法就能快速定位:
- 获取当前内核版本:
先执行这条命令拿到你现在用的内核版本号:uname -r - 内核文件路径:
对应版本的内核文件路径就是/boot/vmlinuz-$(uname -r),你可以用ls命令验证文件是否存在:ls /boot/vmlinuz-$(uname -r) - initrd文件路径:
同理,initrd的路径是/boot/initrd.img-$(uname -r),同样可以验证:ls /boot/initrd.img-$(uname -r)
要是你想更直观确认,也可以打开/boot/grub/grub.cfg文件,搜索当前内核的启动条目,里面也会明确列出这两个文件的路径,不过用命令行的方式显然更快捷。
二、实现kexec启动后自动登录指定普通用户
首先得说清楚:kexec本身并没有--login-as-user这个内置选项,你示例里的是期望用法,咱们得通过修改内核启动参数的方式来实现自动登录指定用户,具体步骤如下:
Ubuntu 22.04用systemd管理系统,我们可以利用systemd的自动登录参数,把它添加到kexec的内核启动参数里:
构建带自动登录参数的启动命令
不用--reuse-cmdline直接复用原有参数,而是手动拼接参数,加上systemd.autologin=normal_user(把normal_user换成你实际的用户名),完整命令如下:kexec -l /boot/vmlinuz-$(uname -r) --initrd=/boot/initrd.img-$(uname -r) --append="$(cat /proc/cmdline) systemd.autologin=normal_user"这条命令的意思是:加载指定的内核和initrd,同时把当前系统的启动参数,加上自动登录指定用户的参数一起传给新内核。
触发kexec启动
执行下面的命令就会立即切换到新加载的内核:kexec -e
补充说明
- 这个方法不管是多用户文本模式还是图形界面模式都能生效,因为
systemd.autologin参数会让getty服务自动登录指定用户,图形界面下也会自动进入该用户的桌面环境。 - 确保
normal_user是系统中已经存在的合法用户,否则会登录失败。 - 如果之后不想自动登录了,下次正常启动或者kexec的时候去掉
systemd.autologin=normal_user参数就行。
备注:内容来源于stack exchange,提问作者stackbiz
相关产品推荐
相关产品推荐

