遇到虚拟机密码遗忘的情况,相信不少运维人员都头疼过。最近我就碰到了一个典型案例:某政府单位的麒麟V10系统qcow2镜像因为管理员离职,交接文档不全,导致新团队无法登录系统。这种场景下,最直接的解决方案就是通过GRUB引导修改密码。
先说说qcow2镜像的特点。这种格式是QEMU虚拟机的常用磁盘格式,相比raw格式更节省空间。但密码恢复流程和物理机基本一致,主要区别在于虚拟机需要通过VNC或控制台操作GRUB菜单。
实际操作中,我发现麒麟系统的GRUB界面有几个关键点需要注意:
curity=参数位置rw init=/bin/bash参数才能获得写权限具体操作时,建议先准备好系统用户名信息。麒麟桌面版默认禁用root账户,所以必须修改普通用户密码。我遇到过有同事折腾半天改root密码,结果发现根本用不了的尴尬情况。
开机时看到inspurlogo出现就要立即狂按F10(不是ESC也不是F12),这个时间窗口大概只有2-3秒。成功的话会进入蓝底白字的GRUB菜单界面。
找到以linux开头的那行参数,在curity=后面插入rw init=/bin/bash。这里有个坑:不同版本参数位置可能不同,有的在行末,有的在中间。我建议用键盘方向键仔细检查,确保插入位置正确。
修改后按Ctrl+X启动,如果系统直接黑屏卡死,说明参数格式有误。这种情况需要强制关机重试,好在虚拟机强制重启不会损坏系统。
进入bash环境后,直接运行passwd 用户名命令。这里要特别注意:
password updated successfully提示实测遇到过密码明明修改成功,但登录时仍提示错误的情况。后来发现是因为触发了PAM模块的密码历史检查。解决方法是在passwd命令后追加--skip-password-check参数。
执行exit命令后系统卡死是qcow2镜像的典型问题。这是因为虚拟机缺少ACPI支持导致的。我测试过三种解决方案:
建议优先采用方案1,虽然粗暴但最有效。不用担心数据丢失,qcow2镜像有写时复制机制保证一致性。
遇到过几次密码修改后仍然无法登录的情况,经过分析发现几种可能:
最稳妥的做法是在修改密码后立即执行sync命令,确保写入磁盘。另外建议准备一个LiveCD镜像作为备用方案。
麒麟系统基于Ubuntu,但直接使用Ubuntu源可能遇到兼容性问题。经过多次测试,我总结出几个可靠的源:
重点提醒:必须确认系统架构!amd64和arm64的包不能混用。可以通过uname -m命令查看,x86_64对应amd64,aarch64对应arm64。
以安装sysstat工具为例,完整步骤应该是:
dpkg -I检查依赖关系典型错误是直接dpkg -i主包,然后发现缺少依赖。我建议先准备好这些常用依赖包:
麒麟对systemd做了定制修改,导致部分服务管理命令与标准Ubuntu不同。例如:
建议的服务管理流程:
bash复制sudo -i # 先切换root
systemctl list-unit-files | grep 服务名
journalctl -u 服务名 -f # 查看实时日志
曾经遇到离线安装时报错"breaks existing package"的情况。这是因为系统预装了定制化软件。解决方法分三步:
dpkg -l | grep 包名找出冲突包apt-get download下载替代版本dpkg -i --force-overwrite记住一定要先备份/etc目录,这种操作有可能导致配置丢失。我在某次升级中就因为没备份,不得不重做了整个定制配置。
经过多次实战,我总结出几个提高效率的方法:
特别提醒:麒麟系统的审计模块会记录所有敏感操作。建议在操作前后检查/var/log/auth.log,避免触发安全告警。如果是在生产环境操作,最好先协调安全团队白名单。