查看單個文章
舊 2006-07-10, 11:26 AM   #2 (permalink)
psac
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設

Linux 系統的單用戶模式、修復模式、跨控制台登入在系統修復中的運用



一、單用戶模式;


單用戶模式要求我們輸入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

結束編輯,按Enter鍵返回;




接著我們要啟動系統,按一下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 ,然後按Enter鍵;






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

結束編輯,按Enter鍵返回;




接著我們要啟動系統,按一下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的發行版本燒錄一下就能用了,使用簡單方便;



下載地址:

http://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掛載的文件系統;
__________________
http://bbsimg.qianlong.com/upload/01/08/29/68/1082968_1136014649812.gif
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次