先说结论:如果你在 VMware 里装好了麒麟操作系统,结果把 root 密码忘了,不用重装系统,也不用找厂商要什么救援盘,只要能在虚拟机的开机引导界面做几步操作,就能把 root 密码重置掉。这个方法我在银河麒麟 V10 和中标麒麟 V7 上都实测过,思路和 CentOS 7/8 那一套非常接近,因为麒麟本来就和 RHEL 系同源,处理方式大差不差。
这篇文章我尽量讲透:为什么这么做可行、每步操作背后的原理是什么、以及哪些地方容易踩坑。尤其针对虚拟机环境有几个坑,是物理机上不太会遇到的,我会单独拎出来说。如果你是第一次在 VMware 里折腾麒麟系统,跟着下面的步骤走,十分钟左右就能把密码改回来。
1. 场景梳理与方案选型:为什么选“单用户模式重置”
1.1 你大概率遇到的三种情况
先说清楚,不同情况下你该走哪条路。很多人一上来就翻麒麟官方文档,找什么“安全模式”“修复模式”,结果在虚拟机里压根找不到入口,反而把自己绕晕了。
实际工作中,重置 root 密码基本就三种场景:
- 场景一:麒麟系统能正常开机,只是你忘了 root 密码,进不了系统。这是最常见的情况,也是这篇文章要解决的核心问题。
- 场景二:系统开机直接卡在登录界面,或者图形界面起不来,你怀疑是密码问题,但其实可能是图形服务挂了。这种情况重置密码并不能解决问题,需要先排查系统服务。
- 场景三:你有普通用户权限,想改 root 密码。这种情况最简单,一条
passwd root就搞定了,根本不需要进单用户模式。
这篇文章重点讲场景一。但我要先把一个观念说清楚:单用户模式不是“绕过系统安全机制的黑客手段”,它是 Linux 系统内置的维护入口,本来就是为了让管理员在忘记密码、系统异常时做修复用的。只不过在物理机上操作有诸多限制,而在虚拟机里操作反而更灵活。
1.2 为什么虚拟机场景特别适合用引导参数重置
在物理机上重置 root 密码,最常见的两种方式是:用系统光盘进入救援模式,或者通过 grub 引导参数进入单用户模式。但在物理机上,你可能会遇到主板开启安全启动导致引导参数无法修改、服务器在机房不方便接显示器键盘、或者 BIOS 固件加密等一堆破事。
虚拟机就不一样了。VMware 给了你几个天然优势:
第一,你可以随时通过 VMware 的控制台窗口操作,不需要物理接触服务器。第二,虚拟机快照功能非常关键——重置密码之前拍个快照,万一操作失误,一条命令就能回滚到操作前的状态。第三,VMware 的虚拟机 BIOS 默认是兼容性最好的配置,不像某些物理服务器开启了安全启动后会拦截内核启动参数,导致单用户模式进不去。
我曾经在联想开天系列的笔记本上给银河麒麟 V10 重置过密码,BIOS 开启安全启动后,普通方式修改 grub 启动参数会被拦截,必须先在 BIOS 里临时关掉 Secure Boot,操作完再开回去。但在 VMware 虚拟机里,默认就不会遇到这个障碍。
所以我给你的建议很明确:在虚拟机里重置麒麟系统 root 密码,直接用“grub 引导时修改内核启动参数,进入单用户模式”这条路,又稳又快。
1.3 麒麟系统的引导机制和 RHEL 系的关系
搞懂这套操作,你得先理解麒麟系统的引导链路。银河麒麟 V10 也好,中标麒麟 V7 也好,它们的底层都是基于 RHEL 或 CentOS 源码构建的,引导程序用的是 GRUB2,内核参数解析逻辑和 Red Hat 系列一模一样。
GRUB2 加载内核时,会读取 linux 这行后面的所有启动参数。默认情况下,参数里带 quiet 和 splash,前者表示静默启动不刷日志,后者表示显示启动画面。我们重置密码的核心思路,就是在这些参数后面追加一个特殊的参数,告诉内核“不要正常启动,直接进单用户维护模式”。
单用户模式的作用,简单说就是:系统只挂载必要的文件系统、启动最少服务、并且默认给你一个 root shell。在这个模式下,你可以直接修改密码文件,不需要输入原密码。这就是整个操作的核心逻辑。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 动手之前:准备工作与风险提示
2.1 先给虚拟机拍个快照
我见过太多人一上来就改启动参数,结果改完系统起不来了,又不知道怎么恢复,急得团团转。其实只要在动手前拍个快照,一切都能挽回。
快照这个操作太关键了,我不厌其烦地说一遍。在 VMware 里,右键虚拟机 -> 快照 -> 拍摄快照,给快照起个名字,比如“重置密码前备份”,确认即可。快照记录的是虚拟机当前磁盘状态和内存状态,万一你在 grub 里改坏了内核参数,或者单用户模式下执行了错误的命令,恢复快照后虚拟机就回到你操作前的状态。
拍完快照后还有一件事要做:确认虚拟机处于“已关闭”状态吗?不一定,实际上重置密码可以不用关机,重启时操作就行。但如果你怕自己手忙脚乱,建议先把虚拟机正常关机,再开机进行操作,这样整个流程更可控。
2.2 确认你的麒麟系统版本
麒麟系统是个大家族,打架的版本还挺多。你要先确认自己装的是哪个版本,因为不同版本 grub 菜单的名字、内核文件名可能有细微差异,但整体思路一致。
常见的版本包括:
- 银河麒麟 V10 桌面版:面向个人电脑,有图形界面,grub 菜单默认是图形化的。
- 银河麒麟 V10 服务器版:面向服务器,可能无图形界面或带精简图形界面。
- 中标麒麟 V7:面向政务和企业的老版本,基于 RHEL 7 构建,操作方式和 CentOS 7 几乎一样。
- 银河麒麟 V10 SP1/SP2:V10 的小版本迭代,SP2 是最常见的版本。
不管哪个版本,你进入 grub 菜单后,找到 linux 开头那一行(服务器版可能显示为 linuxefi),在它后面加参数就对了。如果发现自己的 grub 界面长得和网上教程不一样,不要慌,重点找 linux 或 linuxefi 开头的行,而不是看界面长什么样。
2.3 虚拟机密码重置与传统安全边界的关系
这里我要解释一个很多人误解的问题:既然随便一个人都能通过修改 grub 参数重置 root 密码,那 Linux 的安全是不是形同虚设?
答案当然不是。物理机有物理防护,比如机房门禁、BIOS 密码、grub 密码。但在虚拟机里,情况就完全不同了。只要你能打开 VMware 控制台,你实际上就相当于坐在那台服务器的“物理键盘”前面。任何能物理接触机器的人,理论上都能通过单用户模式重置管理员密码。
所以如果你是个企业管理员,虚拟机所在的主机安全、VMware 管理端的账号权限控制,反而比系统密码本身更重要。如果是个人使用虚拟机跑麒麟系统练手,那就不用担心太多,只要你别把虚拟机的 vmx 文件随便发给别人就行。
3. 核心操作详解:两条路径重置 root 密码
现在进入正题。重置密码我推荐两条路径,第一条是 rd.break 方式,更安全;第二条是 init=/bin/bash 方式,更快但有个小坑。两条路径都从重启虚拟机开始。
3.1 路径一:rd.break 方式重置密码(推荐)
这个方式的核心思路是:在 grub 启动参数里追加 rd.break,让内核在切换到真实根文件系统之前,先停在一个临时的 initramfs 环境里。在这个环境里,真实的根文件系统被挂载在 /sysroot 目录下,我们可以对根文件系统做操作,从而实现改密码。
第一步,重启虚拟机。当屏幕出现 grub 菜单时,快速按键盘上的 e 键。注意,这一步有个时间窗口,一般只有几秒钟,错过就要重启再试。
第二步,进入 grub 编辑界面后,你会看到一大堆文本,像配置文件一样。用方向键找到以 linux 开头的那一行,通常在倒数几行。这一行可能会比较长,显示不全,用方向键移动到行尾。
第三步,在这一行的最后面,先敲一个空格,然后敲入下面这段:
bash复制rd.break
如果你用的系统是 UEFI 引导方式,那行可能以 linuxefi 开头,同样操作,在后面追加 rd.break。
第四步,按 Ctrl+X 或 F10 启动系统。系统会进入到 initramfs 环境的 shell,屏幕提示符会变成类似 switch_root:/# 的样子。
第五步,现在你需要执行下面几条命令,把真实的根文件系统挂载为可读写状态:
bash复制mount -o remount,rw /sysroot
chroot /sysroot
解释一下这几条命令的含义。/sysroot 就是你的真实根目录,但默认是只读挂载的。mount -o remount,rw 的意思是重新以读写模式挂载它。chroot /sysroot 的意思是切换根目录到真实的系统根目录,这样接下来执行的命令就相当于在正常系统里执行了。
第六步,执行修改密码的命令:
bash复制passwd root
系统会提示你输入新密码两次。注意,输入密码时屏幕上不会显示任何字符,这是正常的,不是键盘坏了。
第七步,关键一步,如果你用的是 RHEL 系的新版本系统,特别是涉及 SELinux 的,一定要执行这条命令:
bash复制touch /.autorelabel
这条命令的作用是告诉系统,下次重启时自动重新标记所有文件的 SELinux 安全上下文。如果不执行这一步,有可能出现重启后系统能进,但各种服务起不来,甚至无法登录的情况。
第八步,退出 chroot 环境并重启:
bash复制exit
reboot
重启完成后,用新设置的 root 密码登录即可。
3.2 路径二:init=/bin/bash 方式重置密码
这个方式的核心思路是:直接用 /bin/bash 替代系统的 1 号进程(init),系统启动后直接给我们一个 root shell,连登录都不需要。
第一步到第三步,操作和路径一完全一样,只是在第三步时,把追加的参数换成:
bash复制init=/bin/bash
第四步,按 Ctrl+X 启动。系统会直接进入一个 bash shell,提示符类似 bash-4.2#。
第五步,执行同样的挂载命令:
bash复制mount -o remount,rw /
注意!这里和 rd.break 方式不同,因为在这种模式下,根文件系统直接就是 /,不是 /sysroot,所以不需要 chroot。
第六步,修改密码:
bash复制passwd root
第七步,这里有一个非常容易踩的坑。在这种模式下,直接 reboot 有时候会导致系统卡住或不正常关机。比较稳妥的退出方式是执行下面这个命令:
bash复制exec /sbin/init
或者:
bash复制/sbin/reboot -f
我个人的经验是,exec /sbin/init 在麒麟 V10 上比较稳定,它会重新拉起系统的 1 号进程,走正常的启动流程。如果不管用,再用 reboot -f 强制重启。
第八步,重启后同样建议执行一下 SELinux 重标记。如果你跳过了这个步骤,并且系统启用了 SELinux,可能会出现密码改成功了,但进入桌面或命令行后做什么都报权限错误的情况。
3.3 两条路径的对比与选择建议
从实用性角度说,我几乎只用 rd.break 方式。原因有三:第一,rd.break 方式不会绕过 SELinux 标记,出问题的概率小;第二,/sysroot 的挂载点是明确的,误操作的空间小;第三,init=/bin/bash 在某些系统上会导致文件系统状态不一致,有极小概率引发数据写入问题。
init=/bin/bash 方式的优势在于步骤少、命令简单,适合手速快的老手在应急时使用。但如果你是照着文章操作的,我还是建议用 rd.break,少一些莫名其妙的问题。
4. 常见问题与排查技巧实录
到这里,核心步骤已经讲完了。但我在各种环境下帮别人重置密码,还真的遇到不少奇奇怪怪的问题。这里挑几个典型的,结合排查思路,给你做个速查。
4.1 重启后密码修改成功但登录不了,提示权限或服务错误
这种情况十有八九是 SELinux 的问题。RD.break 方式如果忘了 touch /.autorelabel,系统重启后,安全上下文是错的。你输入正确密码,系统虽然能验证通过,但启动过程各种服务起不来,甚至可能卡在登录界面循环。
解决办法:重复一次重置密码的流程,进入单用户模式后,执行 touch /.autorelabel,然后重启,过程会自动重新标记 SELinux 上下文,耗时可能从几分钟到二十分钟不等,取决于磁盘大小和文件数量,耐心等待即可。
4.2 按 e 键后无法进入 grub 编辑界面
这种情况有两种可能。第一种是 grub 菜单显示时间太短,还没等你按键就启动完了。解决方法是,在虚拟机开机的一瞬间,持续快速按键盘上的 Esc 键或 Shift 键。在 RHEL 系系统上,按住 Shift 通常能强制显示 grub 菜单。
第二种可能比较隐蔽:grub 密码保护被启用了。如果系统管理员设置过 grub 密码,按 e 后系统会要求你输入 grub 用户名和密码,不知道就无法编辑启动参数。这种情况下,你只能通过其他方式恢复了,比如挂载光盘救援模式。不过对个人使用场景,遇到这种情况概率极低。
4.3 中文环境下的乱码和键盘问题
麒麟系统默认中文环境,进入单用户模式后,可能会发现提示符信息乱码,但这不影响命令执行,因为你敲的命令都是英文的。
还有一个常见问题:如果你在 grub 编辑界面追加参数时,发现键盘输入没反应。检查一下当前是否开启了大写锁定或数字锁定,在 grub 编辑界面,某些键盘布局下,小键盘输入会变成方向键。所以建议用键盘上部字母区的按键操作,不要用小键盘。
4.4 重置密码后,再拍快照,还是保持原状好
经常有朋友问:重置完密码后,之前拍的快照还要不要留着。我的建议是:如果这个问题解决了,你可以新建一个快照,命名为“系统已配置-新密码”,然后把之前“重置密码前备份”那个删掉。如果保留旧快照,万一哪天误点了恢复,密码又变回老的,你还得重新折腾一遍。
4.5 无法连接虚拟机控制台,VMware 卡死或报错
重置密码必须在 VMware 虚拟机的控制台窗口操作。如果你用的是 VMware Workstation Pro 或 VMware Player,确实偶尔会遇到 console 连接不上的情况。如果是通过 vCenter 管理的 ESXi 虚拟机,浏览器客户端偶尔也会抽风。
排查思路:先关掉虚拟机电源,确认虚拟机的 VMware Tools 有没有安装。没装 VMware Tools 虽然不影响重置密码,但可能会让控制台响应变慢。如果控制台完全打不开,试着重启 VMware Workstation 软件,或者换 Chrome 浏览器重新登录 vCenter。
4.6 如果是 UEFI 引导,参数写错位置
麒麟 V10 的 VMware 虚拟机,大部分情况下用的是 UEFI 引导。在 grub 编辑界面,你可能会看到 linuxefi 而不是 linux,这很正常。但有个细节:有的版本会同时出现两个类似开头,一个是 linuxefi /vmlinuz-xxx root=...,另一个是 linuxefi /vmlinuz-xxx recovery 之类的恢复入口。你一定要编辑默认那个带 root= 参数的正常启动项,而不是恢复项。
5. 实操心得与易错点总结
最后整理几条硬经验,都是我自己操作时踩过坑、总结出来的规律。
关于虚拟机生命周期管理,建议重置密码这种敏感操作最好安排在一台还没有接入业务网络的测试虚拟机上操作。除非你清楚知道自己在干嘛,否则别在生产虚拟机上直接练习。等流程跑通了,再在目标虚拟机上执行。
关于参数编辑,一定要保证在原有参数后面加,不要删掉原有参数,尤其是 root= 开头的那段。这段参数告诉内核你的根文件系统在哪个分区,删了的话系统根本找不到根分区,直接启动失败。我见过有人手滑把一行参数全删了,然后系统卡在 dracut 提示符,只能用快照恢复。
关于密码本身,麒麟系统默认启用密码复杂度检查,如果你设置的密码太简单,比如只有数字或长度太短,passwd 命令会报错并要求重新输入。建议设置至少 8 位,包含大小写字母和数字,避免给自己找麻烦。
关于 VMware 的硬件版本兼容性,如果你的虚拟机是从低版本 VMware 迁移到高版本的,或者跨版本打开过,有时引导行为会有细微差异。实在卡住了,把虚拟机硬件版本升级一下,或者外接一个麒麟系统的安装镜像,通过光盘引导进入 rescue 模式,也是个兜底方案。
重置 root 密码这件事本身不难,但你最好先想明白:为什么自己会忘记密码?是不是该启用密钥登录、把密码存在密码管理器里、或者设置一个更符合自己习惯的密码规则?把这次重置当成一次系统维护流程的演练,以后再有类似需求,按部就班操作就行了。
