三、如何进入单用户模式

三、如何进入单用户模式

---- 与紧急修复模式只能加载本机Linux上的文件系统不同,单用户模式是在本机Linux内核引导启动后进入的一个运行级别(运行级别是1),可以做内核升级、设备安装等维护工作。在系统维护时,系统管理员往往要进入单用户模式来维护系统,进入紧急修复模式是在Linux不能启动时不得已而采用的系统维护方法。  

  ---- Linux内核自行启动之后,通过启动程序init来完成自己的引导过程,所以,init进程始终是第一个进程,进程编号始终为1。Init程序有着许多重要的职责,如启动Getty、实施运行级别和调用子进程等,是Linux系统中必不可少的程序之一。   

  ---- 下面提到的进入单用户模式的方法,实质都是向init程序请求运行级别1,达到进入单用户模式的目的。   

  ---- 1.Init程序

  ---- 系统正在运行时,在命令行上用程序Init可以更改运行级别(/sbin/telinit只是程序Init的符号链接,同样可以使用),进入单用户模式用如下命令:

  ---- #init 1   

  ---- 因为是在一个正在运行的系统上,且只有Root用户才有权限执行Init命令,所以此种方式虽然在系统维护时经常用到,但对口令恢复的意义不大。   

  ---- 2. 修改默认运行级别

  ---- /etc/inittab文件是系统运行级别的配置文件,每当启动init进程时,init程序都会读取/etc/inittab文件中的相应配置并运行。   

  ---- 在Linux系统启动时,/etc/inittab文件中有如下一行指定了默认的运行级别,通常的运行级别是3或5。

  ---- id:3:initdefault:   

  ---- 要使系统启动后进入单用户模式,只要把上面一行中的3改为1就可以了。

  ---- id:1:initdefault:   

  ---- 3. 启动盘引导

  ---- 在Linux系统启动时,Init读取/etc/inittab配置进入默认运行级别,但也可以为内核指定一个启动参数,内核将依此参数设定特定设备和环境变量等,对于不能接受解释的参数将传递给内核启动后的第一个程序,即Init程序,Init程序据此参数启动进入非默认运行级别,如指定参数为1或single进入运行级别1,即单用户模式。内核启动参数的指定可通过在系统启动软盘、多重启动管理器或程序Loadlin等的执行过程中指定。   

  ---- 在系统维护或内核更新时,常用到当前Linux系统的启动盘,在系统安装时会提示用户制作一张启动盘,在系统安装完成后也可以制作,下面是一个简单示例。   

  ---- 在软驱中放入软盘,用uname命令查看系统内核版本号,然后用Mkbootdisk命令创建引导盘,输入的命令如下:

  ---- #uname Cr

  ---- 2.4.7-10

  ---- #mkbootdisk Cdevice /dev/fd0 2.4.7-10   

  ---- 以启动盘引导,在boot提示符下以“linux ”的语法形式输入如下参数之一,即可引导进入单用户模式如下:

  ---- boot: linux 1

  ---- boot: linux single   

  ---- 4. 多重启动管理器

  ---- 多重启动管理器是一个能在系统启动时用来选择加载某个操作系统的引导程序,它可以载入操作系统的内核和初始化操作系统(如Linux或FreeBSD),或者把引导权交给操作系统(如DOS或Windows)来完成引导。Intel兼容PC机上的多重启动管理器有LILO和GRUB等,Alpha PC机上使用MILO,Sparc兼容的工作站是用SILO。   

  ---- 在多重启动管理器中为Linux内核指定启动参数引导进入单用户模式。以Intel兼容PC机上的Linux为例,如果安装的是LILO,在LILO引导画面,按Ctrl+X键切换入命令行,在LILO提示符下输入与启动盘引导Boot提示符下相同的参数之一,即可引导进入单用户模式:   

  ---- 在RedHat Linux 7.2以后,多重启动管理器开始用GRUB代替LILO,它比LILO具有更多的优势,是LILO的替代品。下面是GRUB引导进入单用户模式的过程。   

  在出现GRUB引导画面时,按字母e键,进入GRUB编辑状态。

  按↑键或↓键选择相应的引导项,并再接字母e键进入命令行编辑。

  在出现的命令行上添加“1”或single,并按键,返回GRUB编辑状态。

  按字母b键,引导进入单用户模式。

  ---- 从上可以看出多重启动管理器对Linux系统启动和维护的重要性,所以建议在安装Linux时也安装好多重启动管理器,便于将来系统的维护,哪怕是主机上只安装了Linux一个操作系统。   

  ---- 5. loadlin引导

  ---- loadlin是一个能在DOS下启动Linux核心的装载程序,可从DOS引导进入Linux或安装Linux系统等。如果没有安装多重启动管理器或者配置有误不能进入Linux的话,常常会用到这个程序。   

  ---- 在loadlin的启动命令中添加single参数就可以进入单用户模式。如果主机上安装有Windows 9x系统,在系统启动时按F8进入MS-DOS,运行loadlin程序引导进入单用户模式。下面是一次启动实例,该主机上没有安装Windows 9x,也没有安装DOS。   

  以Windows 98安装光盘引导启动,在“Microsoft Windows 98 Startup Menu”上选择第2项:“start computer with CD-ROM support.”。

  进入MS-DOS后,在光驱中换入RedHat Linux安装光盘。

  在命令行上分别输入如下命令引导Linux单用户模式,假设Linux根文件系统在分区/dev/hda5上:

  A:>d:

  D:>cd dosutils

  D:DOSUTILS>loadlin autobootvmlinuz root=/dev/hda5 ro single

  ---- 在启动盘引导的boot提示符下,在LILO和GRUB等启动管理器的命令行下,以及在Loadlin程序上都可以配置很多参数引导进入系统,对系统维护很重要,可以参考BootPrompt-HowTo。   

  ---- 上面提到的方法,都需要对/etc/passwd、/etc/inittab等Linux文件进行读写,但在正常情况,只有root用户登录进去才可以读写。那么在不能正常登录进系统时,又如何能对这些文件进行读写呢?   

  ---- 除了可以在紧急修复模式、单用户模式下读写Linux文件外,采用下面的方法也不失为良策:   

  通过Linux系统软盘引导启动,就能进入Linux系统;

  通过Linux系统光盘进入,如DemoLinux;

  在DOS/Windows下读写Linux文件,几乎所有版本的DOS/Windows都不提供对Linux文件系统的支持,但借助不少软件可以实现,如FSDext2、Ext2fsnt、Ext2ifs、Ext2 tools、Ltools和Explore2fs等,还有Microsoft IFS Kit;

  通过第二硬盘。

  ---- 上面提到的种种Linux口令恢复方法,读者可以结合自己的实际情况,选择一种最简单易行的方法来恢复自己的Linux口令。从中可以看出,他人通过在本地重启系统很容易获取Linux口令,所以为了加强系统安全,有必要在启动管理器(如LILO和GRUB)及BIOS中设置口令,使他人不能轻易得逞,更重要的是加强安全管理工作。   
好东东。谢谢。