閱讀777 返回首頁    go 阿裏雲 go 技術社區[雲棲]


Linux 係統的單用戶模式、修複模式、跨控製台登錄在係統修複中的運用

摘要:本文主要講述在係統修複時,登錄係統的幾種方法;比如當我們把root密碼忘記,或者係統正常啟動遇到困難時,我們可以通過單用戶模式,修複模式linux rescue及跨越控製台登錄等方法完成對文件係統的加載,登錄,進而進行相應的修複;

當係統被破壞,或者登錄遇到困難時,我們如何才能進入係統?比如我們把root密碼忘記,或者係統不能正常進行啟動時,我們首先想到的是如何登錄係統,或如何備份文件係統中重要的數據;下麵有以下幾種方法供大家參考


目錄索引

一、單用戶模式;
1、以grub 係統引導管理器,單用戶登錄方法;
2、lilo 引導管理器單用戶模式;

二、linux rescue 修複模式;

三、跨越控製台登錄;

    * 1、通過grub和lilo 引導,跨越控製台登錄;
    * 1)如果您用的是grub進行係統引導;
    * 2)如果您用lilo 進行係統引導;
    * 2、linux rescue ;
    * 3、借linux的livecd光盤 或第三方linux係統;
    * 1)mount 掛載文件係統;
    * 2)chroot 到已經掛載的文件係統;

四、後記;
五、關於本文;
六、致謝;
七、參考文檔;
八、相關文檔;


++++++++++++++++++++++++++++++++++++++++++++++++++++++++
正文
++++++++++++++++++++++++++++++++++++++++++++++++++++++++


一、單用戶模式;

單用戶模式要求我們輸入root用戶的密碼,否則您無法登錄單用戶模式;如果您丟失了root用戶的密碼,並不能用單用戶模式來重設您的root密碼;

另外單用戶模式還有一個前提是您的grub 或者lilo 是能正常工作的;並且您知道您的係統問題發生在哪裏,當以單用戶模式登錄時,您能打開文件係統的寫操作,然後進行您想要進行的係統修複;

可能有的弟兄會說“我真的不知道係統哪塊出了問題”,嗬,如果真的不知道,那我也無能為力了,因為本文檔主要講述登錄模式,並不是講述如何修複係統的;


1、以grub 係統引導管理器,單用戶登錄方法;

在grub 啟動後,移動鍵盤到Linux的啟動項;按e鍵;然後再移動鍵盤到類似下麵的一行,也就是kernel的那行:
kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/1 rhgb quiet

把光標移動這行後,再按一下e鍵,進入編輯這行;在行尾條一個空格 ,然後輸入 linux single,也就是類似如下的:
kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/1 rhgb quiet   linux single

結束編輯,按回車返回;

接著我們要啟動係統,按一下b鍵啟動;

當進入單用戶模式運行後,係統提示我們輸入root密碼;輸入正確後會進入係統;您可以用df -h 來查看文件係統掛載位置等,也可以用fdisk -l 來查看分區等;但對文件係統的寫操作,可能還要看下麵的;

單用戶進入係統後,可能係統是隻讀的;要運行下麵的命令;

#mount -o remount,rw /


2、lilo 引導管理器單用戶模式;

在boot:處輸入

linux single

當進入單用戶模式運行後,係統提示我們輸入root密碼;輸入正確後會進入係統;您可以用df -h 來查看文件係統掛載位置等,也可以用fdisk -l 來查看分區等;但對文件係統的寫操作,可能還要看下麵的;

單用戶進入係統後,可能係統是隻讀的;要運行下麵的命令;

#mount -o remount,rw /


二、linux rescue 修複模式;

Linux的修複模式就是 linux rescue;修複模式並不需要係統密碼,當進入修複模式後,係統會提示我們要掛載哪個分區上的文件係統,我們根據自己的係統情況來選擇就就是了。登錄完成後,係統也會提示所在分區的文件係統會被掛載到哪個目錄;如果您不知道掛載在哪裏,請通過 df -h 來查看;

修複模式需要安裝盤的第一張或獨立的修複盤;比如 Fedora 就有專門的修複盤;其實修複盤在一定意義上來說類似livecd,是不需要安裝到硬盤也能運行係統;然後通過mount 來掛載文件係統;其實當我們執行linux rescue 時,象Fedora 這類的係統,會有一些提示,比如他提示他要mount 哪個分區,我們選擇一下就行了;

執行修複模式時,需要以下幾個步驟;

其一:在BIOS中,設置首個啟動驅動器為CDROM;
其二;找出係統安裝盤的第一張;放入CDROM ;當光盤運行時,會提示安裝的界麵;

在boot:後麵輸入 linux rescue ,然後按回車;

boot:linux rescue

進入修複模式,我們能做些什麼呢??什麼都可以做,比如掛載usb盤進行數據備份;修改係統中的配置文件... ... 重新設置root密碼、掛載文件係統 ... ... 隻要能想到,大多都可以完成;


三、跨越控製台登錄;

真正的跨越控製台登錄是不需要輸入root密碼的,如果您把root密碼丟失,就要想到跨越控製台登錄;我們前麵所說的linux rescue 從本質上來說,就是跨越控製台登錄,因為無需要密碼驗證就能登錄係統;

跨越控製台登錄主要包括:借grub和lilo 跨越控製台登錄; linux rescue 模式;第三方livecd 係統和第三方Linux係統;

1、通過grub和lilo 引導,跨越控製台登錄;


1)如果您用的是grub進行係統引導;

在grub 啟動後,移動鍵盤到Linux的啟動項;按e鍵;然後再移動鍵盤到類似下麵的一行,也就是kernel的那行:
kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/1 rhgb quiet

把光標移動這行後,再按一下e鍵,進入編輯這行;在行尾條一個空格 ,然後輸入 linux single,也就是類似如下的:
kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/1 rhgb quiet   linux init=/bin/bash

結束編輯,按回車返回;

接著我們要啟動係統,按一下b鍵啟動;

可能係統是隻讀的;要運行下麵的命令;

#mount -o remount,rw /

然後我們可以通過 df -h 來查看文件係統的加載情況;既然都把文件係統掛載了,有什麼活幹不了的呢?重設root密碼,備份文件... ...

比如重設root密碼;

#passwd


2)如果您用lilo 進行係統引導;

在boot:處輸入

boot:linux init=/bin/bash

當進入係統後,您可以用df -h 來查看文件係統掛載位置等,也可以用fdisk -l 來查看分區等;但對文件係統的寫操作,可能還要看下麵的;

可能係統是隻讀的;要運行下麵的命令;

#mount -o remount,rw /


2、linux rescue ;

請參考前麵第二點所說的修複模式;


3、借linux的livecd光盤 或第三方linux係統;

linux的livecd版本是無需安裝的linux 係統,在光盤上就可以運行的linux 係統; livecd 大多是用來修複之用,livecd 集成了常用的係統操作工具;

第三方Linux係統是指你的機器上安裝一個以上的Linux係統,如果其中一個發生問題,我們就可以用另一個來修複;

livecd 和第三方linux係統來修複已經被破壞的Linux ,常用的工具有mount 和chroot等等 ;如果您隻是簡單的更改存在問題的係統文件,用mount 就足夠了。chroot 工具可以改變/,進而進入另一個係統,這個工具的確有用。

我們還是舉個例子來說明如何通過用mount和chroot;

至於機器中第三方Linux和Livecd的使用比較簡單,這裏就不多說了;

livecd就是在光盤上運行的linux ,您可以找一個livecd的發行版本刻錄一下就能用了,使用簡單方便;

下載地址:

https://www.frozentech.com/content/livecd.php

常用的有 SLAX,Knoppix,Damn Small Linux,Ubuntu ... ...

大體都差不多,下載一個小的備用也行,就看您怎麼用了;

通過livecd linux 或其它linux 來修複已經破壞的Linux步驟如下:

1)mount 掛載文件係統;

注:執行mount 及chroot時,要以root權限運行,以下同;

比如存在問題的係統位於 /dev/hda5 ,如果您不知道哪個分區是linux的,您可以通過fdsik -l 來查看;
[root@localhost ~]# fdisk -l 注:查看分區情況;
[root@localhost ~]# pwd   注:確定當前工作目錄;
/root                     注:當前工作目錄為/root
[root@localhost ~]# mkdir systmp 注:在當前工作目錄下創建一個臨時目錄;
[root@localhost ~]# mount /dev/hda5 systmp/ 注:掛載hda5到tmpsys目錄中;
[root@localhost ~]# df -h   注:查看是否已經掛載;
Filesystem            容量  已用 可用 已用% 掛載點
/dev/hda8              11G  9.8G  581M  95% /
/dev/shm              236M     0  236M   0% /dev/shm
/dev/hda5             7.9G  5.9G  2.0G  76% /root/systmp  注:看好了,是掛載到了/root/systmp目錄中;

既然把/dev/hda5分區的文件係統已經掛載了,我們就能對已經掛載的文件係統進行寫操作;如果是簡單的備份和文件修改,是完全能行的;

注意:在寫操作的過程中,要倍加不心,在操作某個文件的時候,要先備份;當出現不能mount的情況,可能是您的當前所用的內核不支持相應的文件係統;如果係統要求指定文件係統的時候,請看如下的例子;

mount -t 文件係統類型 磁盤分區 掛載目的目錄

對於linux的文件係統類型主要有:reiserfs,ext3,ext2;具體用什麼文件係統類型,你最明白;如果您還是不知道,就一個一個的嚐試;比如我的hda5是reiserfs的,可以用下麵的命令來掛載;
[root@localhost ~]# mount -t reiserfs   /dev/hda5 systmp/


2)chroot 到已經掛載的文件係統;

chroot這個工具很有用,很多Linux都支持chroot切換到另一個文件係統中,然後進行一係列係統包的安裝和係統配置;這並不是說任何文件係統都能chroot切入 ,首先這個文件係統中得具備係統運行的一定的工具和環境,比如/bin和/sbin 目錄是擁有等....

用中文表達不清楚,還是舉例來說明;

比如我的機器中有兩個Linux係統,一個運行正常,另一個有點問題(比如是root密碼忘記了),我想通過正常的係統來修複另一個;首先我們進行的是mount ,也就是前麵所說的,然後下一步就是chroot ;通過chroot 切換到要修複的文件係統中;

比如存在問題的係統位於 /dev/hda5

[root@localhost ~]# fdisk -l
[root@localhost ~]# pwd 
/root                   
[root@localhost ~]# mkdir systmp
[root@localhost ~]# mount /dev/hda5 systmp/
[root@localhost ~]# df -h  
Filesystem            容量  已用 可用 已用% 掛載點
/dev/hda8              11G  9.8G  581M  95% /
/dev/shm              236M     0  236M   0% /dev/shm
/dev/hda5             7.9G  5.9G  2.0G  76% /root/systmp 

[root@localhost ~]# chroot systmp   注:chroot到hda5分區的係統中;
bash-3.00#     注:已經登錄;
bash-3.00# df -lh   注:查看文件係統掛載情況;
Filesystem            容量  已用 可用 已用% 掛載點
/dev/hda5             7.9G  5.9G  2.0G  76% /
proc                  7.9G  5.9G  2.0G  76% /proc
sysfs                 7.9G  5.9G  2.0G  76% /sys

上麵我們就通過chroot 命令完成了通過一個係統到另一個係統的跨控製台登錄;Livecd 如果要完成此任務,也是通過這樣過程完成的。

我們既然已經登錄到有問題的係統了,可以進行相應的修複工作,比如對root密碼的恢複,軟件包的安裝,相應文件的修改... ... 我想您應該知道怎麼做,對不對???

有些發行版的安裝盤類似livecd ,比如slackware 的安裝盤的第一張,當他啟動到讓你輸入用戶名和密碼進行安裝時,我們不必輸入什麼,或者直接輸入root ,就能進入cdrom 虛擬環境了;這時我們就用前麵所說mount加載文件係統,然後chroot掛載的文件係統;

最後更新:2017-04-02 04:26:00

  上一篇:go linux中出錯處理
  下一篇:go magento -- 添加中國省份列表