Linux非常有趣的单用户模式分析
单用户模式 run-level如果等于1的话,就会进入单用户模式了.一般进入单用户模式不用输入密码,,如果忘记root密码的话,我们可以进入单用户模式,然后用passwd来更改. 单用户模式没有网络,那些在chkconfig之中看到的服务也没有启动,进入/etc/rc.d/rc1.d,用ls命令看看里面有些什么文件: 我们会发现里面只有两个S开头的文件,其他全部是K开头的文件.S是代表start,而K代表kill. 在Bootloader之中我们有讲到传递给内核的参数有single,会进入单用户模式,那么那种单用户模式与run-level=1的单用户模式有没有什么不同么? 另外我们好可以在bootloader传递init=/bin/bash给内核,与单用户模式又有什么不同呢. 第二个问题,还好理解,就是让内核把bash当成init来启动init所作的事情是一件也不会做的,内核加载完毕后就会将控制交给shell了.启动信息简短了很多: 这时候所加载的/应该还只是内核所加载的/,一般我们是以readonly加载的(还记得第一章的那些参数吧),在这种环境下的所有文件也是readonly的.当然如果我们想更改文件内容的话,是可以remount根目录/. 先看看这时候系统都mount了些什么: 我不太明白结果第一行的(rw)是不是read write的含义,不过这时候的/的确是readonly的. 重新mount根目录/成read write:$mount –o remount rw / 一切OK,这时候我们可以编辑我们所需要的文件了.不过记住init和shell的功能是大不相同的,这只是一个很不完整的Linux环境,很多东西都不能玩. 那么bootloader的参数single与run-level=1呢,我们假设/etc/inittab种种原因,就丢失了,重新启动后,init得到控制后找不到/etc/inittab,于是要求输入runlevel,可以无论你输入什么1-5,都会死机的,init根本不知道要做什么. 怎么办呢? 试试传递参数single给内核的方法(不会忘了吧),我们会发现虽然init找不到/etc/inittab,但是却把控制交到了shell的手上. 真的是很有趣.
|
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |