Chinaunix首页 | 论坛 | 博客
  • 博客访问: 54078
  • 博文数量: 6
  • 博客积分: 121
  • 博客等级: 入伍新兵
  • 技术积分: 104
  • 用 户 组: 普通用户
  • 注册时间: 2011-12-23 13:24
文章分类
文章存档

2012年(6)

分类: LINUX

2012-02-06 00:47:06

Gentoo Linux 下忘记了 root 密码。Gentoo 版本 12.0。

在网上搜了一下“gentoo 忘记 root 密码”,至少今天搜下来的结果在第一页的结果不是很全,所以再啰嗦一下:

采用 Live CD 或者 install CD,这个就不多说了,只要会装 Gentoo Linux 的,基本都应该会这个方法了。我们说说不采用 CD 的方法:


首先看是否采用了 initrd,或者说,真正的 root 分区是否需要 initramfs?
initramfs 为 initrd 的一种,目前 genkernel 弄出来的都是 initramfs 格式的。有兴趣的可以看看 Linux kernel 里面的 Documentation/early-userspace/README 文档。


不需要 initramfs:
    那么直接在 grub 的启动界面中,到了 Gentoo Linux 的那个菜单项,按 e 编辑,然后在 kernel 的那一行后面添加 init=/bin/bash 即可。网上搜到的也提到了这个方法,管用!添加 single 不管用了。

需要 initramfs:
    那么添加 init=/bin/bash 就不行了。我后来查看了一下 initramfs 里面的 linuxrc,里面实际采用的为 real_init,但是我添加了 real_init=/bin/bash,还是报告错误,然后 kernel panic 了。
    具体原因为现在的 kernel,对于initramfs 格式的 initrd,那么执行 initramfs 里面的 init(genkernel 的就是 linuxrc)以后就不管了,不会再去尝试调用 /sbin/init 了,调用 /sbin/init 的操作,由 initrc 来进行了。所以添加 init=/bin/bash 就不行了。但是为什么添加 real_init=/bin/bash 不行就没有搞清楚了,以后有空再考虑看看。

    那么剩下来的一个土办法:修改 real_root = xxx,将其改为一个不存在的设备,这样 initrd 启动的时候 mount real root 失败,就会提示你可以输入“shell”,这样你就可以得到一个 shell 了!然后自己手工 mount 正确的分区,然后 chroot 进去以后采用 passwd 命令改密码。

 

阅读(5322) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~