You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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的内核启动参数里:

  1. 构建带自动登录参数的启动命令
    不用--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,同时把当前系统的启动参数,加上自动登录指定用户的参数一起传给新内核。

  2. 触发kexec启动
    执行下面的命令就会立即切换到新加载的内核:

    kexec -e
    

补充说明

  • 这个方法不管是多用户文本模式还是图形界面模式都能生效,因为systemd.autologin参数会让getty服务自动登录指定用户,图形界面下也会自动进入该用户的桌面环境。
  • 确保normal_user是系统中已经存在的合法用户,否则会登录失败。
  • 如果之后不想自动登录了,下次正常启动或者kexec的时候去掉systemd.autologin=normal_user参数就行。

备注:内容来源于stack exchange,提问作者stackbiz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 14:13:05