歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux服務器 >> Linux非常有趣的單用戶模式分析

Linux非常有趣的單用戶模式分析

日期:2017/3/2 16:45:40   编辑: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了些什麼:
$mount
/dev/mapper/VolGroup00 on / type ext3 (rw)
None on /proc type proc (rw)

我不太明白結果第一行的(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的手上。

真的是很有趣。

Copyright © Linux教程網 All Rights Reserved