深入地講:許多人害怕Linux,因為它給出的出錯提示信息簡直像天書一樣。并且這樣的信息有很多。如果你在Linux Format(譯者注:這是一家英國銷售量最好的Linux雜志)的論壇上搜索“Error”這個詞,你將會得到超過150頁的內容。那些是許多人遇到的 許多問題。
用戶們遇到的最大的困難并非出錯提示信息的數量,而是如何從中找出有用的東西。例如,“
Kernel Oops”是什么意思,或者“PCI can't allocate”是什么意思?Linux的出錯提示相當愚鈍且很難理解,幾乎起不了什么幫助。這是一個遺憾,因為大絕大多數問題本可以很容易的解決,而 且有相當數量的涉及同樣問題的出錯提示一次又一次的出現。用商業圈里的話來說,這是最能獲得立竿見影效果的部分(譯者:不知些句如此翻譯妥當否?請指 教)。我們要解決的正是這一部分問題。
啟動你的系統不需要你成為一個Linux專家,播放視頻文件也無需成為程序員。然而大部分出錯信息都假定他們的用戶已掌握了此類專門技術。我們試圖 闡明這些常見錯誤,并提供解決方案,以幫助普通的Linux用戶規避這些問題,并使他們的系統回到正常狀態。我們挑選了一些我們認為問題最多的領域,包括 啟動、常規軟件應用、文件系統、網絡和發行版的安裝。
我們從每個領域中挑選了幾個最常見的錯誤,并解釋了相應的解決方案是如何起作用的。這樣做的目的是,即使這些問題不適合你的情況,你也能了解為什么Linux的出錯提示信息看上去如此的難以捉摸并令人生畏。希望你能從中學會找到解決自己問題所需知識的方法。
發行版的安裝
每一種Linux發行版都有不同的安裝例程,并且都會制造一些問題。Ubuntu也許在一臺電腦上工作良好而另外一臺則不行。一臺安裝了Ubuntu并運行正常的電腦也許根本無法安裝Fedora, OpenSUSE, Linux Mint, 或者Mandriva...
ERROR Can't boot from CD/DVD(無法從光盤啟動)
如何你剛開始接觸Linux,下述情況通常會是你對該操作系統的 第一體驗:你將你的新光盤放入光驅并重啟電腦,結果發現卻是進入了你先前使用的操作系統。問題在于你硬盤的啟動優先級高于光驅。許多現代的BIOS包含了 一個啟動菜單,在這里你可以動態地修改設備的啟動優先級。當屏幕上第一次出現東西的時候,試著按下Escape鍵或F12鍵,你只需在那里選擇從光驅啟 動。
老一點的電腦可 能沒有這樣的方便。你需要在開機時按F12或者Del鍵進入系統的BIOS菜單,從那兒更改啟動順序。通常你可以在“Boot”菜單下找到相關選項,你需 要保存這些更改以便能夠從光驅啟動。如果你需要從外接驅動器或U盤啟動,可以執行相同的步驟。如果你在網吧或者面對一臺公司的電腦,上述內容同樣有用。
有時你可能需要更改設備的啟動優先級以便能夠從光驅啟動一個live版的Linxu發行版。
ERROR PCI: cannot allocate(無法指派)
這樣的錯誤有許多,他們主要在啟動系統時出現。他們有一個共同的起因:錯誤的電源管理行為。罪魁禍首是一個叫做ACPI的東西,即高級配置與電源接口。盡管他是一種電源管理標準,但在十幾年的時間里他已經引起了無數問題。麻煩在于硬件驅動總是不完全執行這個協議規范。
當你打開電腦的 時候,或者將電腦從睡眠狀態喚醒的時候,你的電源管理便開始起作用,每到此時某些設備就會出問題。通過Live CD進行的安裝加劇了些問題,因為他們啟動時不提供嚴格偵測硬件匹配的額外功能,也無法包含所有設備的驅動,這就是為什么通過Live CD進行安裝后常會出現此問題。
你能做的只有一件事——關閉ACPI。有時你可以通過系統的BIOS菜單來關閉此功能,如果不能關閉的話,你需要在啟動時禁用ACPI。啟動時按下 Escape鍵,進入Grub菜單,選擇你通常用的那個項。向下翻到從內核啟動的那一行,按下E鍵編輯該行。在此行末尾加上acpi=off noapic,按回車及B鍵進行啟動。你會發現你的電腦順便啟動,如果你以后再安裝Linux,你選擇的發行版應該能夠更好的在安裝時選擇正確的驅動。
Booting problems(啟動出錯)
沒有什么比一條中止你系統啟動的信息更糟糕的了——主要是因為你現在還沒有解決主要問題的工具(譯者注:我怎么覺得這句如此翻譯有些跟前后文不照?請各位指教)。然而啟動時出錯相當常見。因為我們都喜歡安裝發行版,并且我們經常在一臺電腦上安裝不止不種發行版,還和Windows共享一塊硬盤。任何這樣的安裝都能擾亂啟動指令(譯者注:boot routine該如何翻?),將一個進行良好的系統回復原狀并不是那么容易的。
ERROR Grub...
如果你在打開電腦時看見了這條信息,說明Grub 的啟動菜單損壞了。這是你安裝的Linux的中負責啟動操作系統的部分。你唯一能做的就是從其他媒介啟動Linux,最好是Live CD。進入桌面后,打開一個命令行終端,切換到管理員賬戶,鍵入grub。以下步驟在你的Grub菜單項不再指向你的Linux分區的情況下也能起作用。
鍵入find /boot/grub/stage1,此命令的作用是搜尋初始啟動驅動器的位置,他將會返回包含(hd0,0)字樣的幾行輸出——這是Grub用來表示硬 盤驅動器位置的語法規則,返回什取決于你自己的安裝,所以不要以為他就是(hd0,0)。現在鍵入 root (hd0,0) (或者是你自己得到的返回值),以告訴Grub該從哪個分區啟動,然后鍵入setup (hd0)以在你的硬盤主引導記錄重新安裝引導程序。然后重啟電腦,他應該已經能正常啟動了。
知道如何在你的主硬盤安裝Grub啟動引導程序將會擺脫各種難纏的問題。
#p#
ERROR Out of range, ERROR Fatal server error: no screens found(超出范圍錯誤,服務器致命錯誤:無法找到屏幕)
當你的屏幕預設值跟你的顯示器不兼容時就會出現此錯誤。按下Ctrl+Alt+F1進入控制臺模式,以root身份登錄(或者用你在ubuntu中 的普通賬戶使用sudo命令)。基于Debian發行版的用戶可以鍵入命令dpkg-reconfigure xserver-xorg來重新配置你的屏幕。
其他用戶將不得不按以下步驟手動修復他們的設置。首先,鍵入cd /etc/X11,然后是cp xorg.conf xorg.lxf,以便備份你的設置文件。現在用一款你用著最順手的命令行編輯器打開此文件。如果你不確定的話就鍵入nano xorg.conf。如果你知道你顯示屏的規格,將此配置文件向下翻找到“Section Monitor”項,現在你需要手動設定水平和垂直刷新率。
如果你不知道你屏幕的分辨率,繼續向下翻直到找到Screen section項。你需要刪除此處所有的高分辨率,因為我們在尋找最小公分母(我們建議刪除任何高于1024x768的分辨率)。在你的屏幕恢復正常后你 可以重新從桌面增加其分辨率。如何這些方法都不起作用,那么最后的保護性選項就是將你的設備調整為“vesa”模式,完全避開你的顯卡驅動。
ERROR Kernel panic!
Kernel panic 或者 Kernel oops!錯誤信息是我們Linux用戶所遇到的最接近那個經常困擾Windows用戶的藍屏死機的故障了。和Windows一樣,當這種情況出現時你除 了關掉電源開關外別無他法。內核處于你的Linux系統的心臟部位,內核崩潰通常是由于硬件動作異常而導致內核強制進入系統內存的未知區域。
最好的解決辦法是升級內核,因為硬件的問題可能已經在新版本中得到修正。但是你可能需要從啟動菜單退回到一個早期版本的內核以便能夠使用Linux,然后進行升級。
另外一種選擇是確定出問題的硬件。如何你剛剛更改過你的硬件或者安裝了新的驅動器,這可能就是問題所在。否則,你可能不得不采取逐個移除硬件的方法來測試你的電腦是否能夠正常啟動。盡管內核崩潰會給出大量信息,普通用戶通常只能理解其中的極少數,因為原來的錯誤已將系統推向一種無法預知的狀態。
ERROR Incorrect username or password(用戶名或密碼錯誤)
你會吃驚于竟有如此多的用戶給我們打來電話說他們忘記了自己的密碼,或者更糟,他們從來沒有被要求輸入密碼。(譯者注:此句感覺翻譯地不太順,promise此處何解?請指教)。幸運的是,密碼并非永遠丟失了。你需要啟動你的電腦到單用戶模式或者修復模式。為達此目的,只需啟動后在電腦離開BIOS界面時按下Escape鍵,就會顯示Grub啟動菜單。
如果沒有進行單用戶模式或者修復模式的選項,那就選擇通常啟動的那一項(通過位于菜單的頂部),按E鍵編輯啟動參數。移動到以kernel字樣開關 的那一行,然后再次按E鍵編輯那一行的文本。確定指針處于行尾,增加以下參數rw init=/bin/bash。按回車,然后按B鍵啟動。我們剛剛改變了默認的啟動選項來打開一個Bash終端而非通常啟動的會話。
至于安全和修復模式,你要做的就是鍵入你要改變密碼的用戶名和新密碼。如果沒有用戶名,passwd命令將會改變root的密碼。現在重啟你的電腦就可以使用你的新密碼了。
如果你能夠跟一臺電腦有 物理接觸,那么就能通過啟動后進入修復模式的方法輕松改變任何用戶的密碼。(譯者注:據本人的經驗,如果root用戶原來就設有密碼,那么在進入 recover mode的時候,會首先要求你輸入root密碼,故上述方法只適用于root原來沒有密碼的情況。 而通過開機改啟動參數的方法則不受此限制,連root密碼也可以改掉)
文件系統
文件系統是你安裝的Linux內核的一部分,其負責對包括外部設備上的文件的讀寫。此部分通常是很健壯的,但突然斷電或行為異常煌硬件有時也會引起一些問題。關于你的文件系統的任何問題通常解決起來都比較復雜。所以,我們列出的解決方案都是用命令行。
ERROR Run fsck manually(手動運行fsck)
基本的文件系統錯誤就有數十個不同的種類。這些錯誤通常在啟動電腦是出現,并經常導致出現對根分區的“只讀”警告。這意味著如果你的電腦能夠啟動,你將不能做任何事。解決方法是從Live CD啟動,這保證了你損壞的驅動器不被啟動程序觸及以使文件系統修復工具能夠進行必要的修改來修復問題。
你需要運行的命令是fsck -f /dev/drive,但是你需要用你自己的根分區的設備替換掉命令中的“drive”。這取決于你的安裝。例如,主驅動器上的第一個分區是sda1。初始的錯誤提示中應該會包含此信息。你需要以管理員身份運行fsck,這意味著Ubuntu用戶需要用Ubuntu Live CD創建一個用戶,只需先后鍵入以下兩條命令sudo passwd root,sudo bash。
ERROR Device is busy(設備忙)
我們許多人使用外接硬盤和U盤,但有時這些設備拒絕從文件系統卸載自己。你不能只簡單地將其拔下,因為這樣你可能會丟失本地緩存中尚未寫入該設備的數據。你可以通過在命令行鍵入sync解決此問題,這將迫使任何緩存的數據立刻寫入該設備,但這仍不能解決無法載載的問題。
要解決無法載載的問題,你需要用到一個叫做lsof的命令,該命令需要單獨安裝。鍵入“lsof 掛載點”能夠列出當前正在訪問設備上文件的進程,你需要殺死這些進程之后才能卸下該驅動器。
知道這個技巧將會使無法卸載CD或者DVD的情況變得很容易處理,因為所用到的技術是一樣的(只是不涉及sync的問題,因為他們是只讀設備)。這里有一個例子:
> umount /mnt/contentumount: /mnt/content: device is busy> lsof /mnt/contentCOMMAND PID USER FD TYPE DEVICE SIZE NODE NAMEsmbd 23222 root cwd DIR 8,33 4096 2 /mnt/content> kill -9 23222> umount /mnt/content
Networking(網絡)
極少有人樂于檢測并修復網絡問題。但在我們有有線世界,這些問題是無法避免的。幸運的是,有少數幾個錯誤占據了這些問題的很大一部分比例,我們已經替你把他們解決了。
ERROR Server not found(找不到服務器)
這是經典的網絡錯誤。你打開了電腦,等系統啟動,點開了指向你最喜歡的網頁的鏈接。然而他并沒有打開,而且出現了“服務器錯誤”的信息。這個問題是無法接入互聯網,有許多可能的原因。解決此問題的最好辦法從主要連接開始查起。你的路由器連接電源了嗎?你的寬帶連接在你的路由器上工作嗎?
如果你在使用無線網,顯然你需要檢查一下你裝有Linux的機器上的無線連接。如果你在用有線的以太網,你需要檢查一下看電纜周圍的兩個LED指示燈是不是都亮了。橘黃色LED燈亮表示有連接,而綠色的LED指示燈隨著網絡動作而閃爍。
如果這些都沒有問題,那說明問題出在你的Linux系統中。如果你已經檢查過你的發行版的網絡設置面板,并且看上去一切正常,你就需要嘗試一系統命 令行工具了。ifconfig命令產生許多輸出,但這是確保你的網絡連接已被分配IP的最快捷的方法。如果是有線連接就查找eth0,如果是無線連接就查 找ath0或者wlan0,確保你的網路有正確的網絡地址。
如果上述方法不起作用,那么試試先后輸入以下命令:ifconfig eth0 down,然后是ifconfig eth0 up。也許你還想試試route命令以確定只有一個確定的網關地址。如果你找到兩個,鍵入"route del 網關地址"以刪除一個。
此類出錯提示信息上可能是由數不清的問題導致。
ERROR MSN won't connect(MSN無法連接)
這跟你用的messenger客戶端沒有關系——Pidgin, Kopete, KMess 和 AMSN 有時都會連不上服務器。此類問題通常可歸結為服務器協議的改變,這意味著每個客戶端都需要升級。但也可能是由你的本地連接引起的。MSN對防火墻和端口轉 發非常敏感。解決辦法是使用HTTP,通常這是你賬戶窗口中的一個選項。鑒于HTTP是網絡傳輸的通用協議,你不應該再在連接方面有什么困難。
如果MSN的連接選項不起作用,那么就在用戶設置頁面轉換成HTTP。
Software(軟件)
這是我們使用Linux時都感到沮喪的一個方面。OS X和Windows用戶經常會驚奇的發現Linux用戶甚至無法從因特網上下載一個軟件包,之后雙擊該包并毫無阻礙的完成應用程序的安裝。他們能只需下載 一個文件并運行之便能輕松獲得最新版的如Gimp, Inkscape a和OpenOffice.org這樣的應用程序。Linux用戶可沒有這樣的好運,且此問題又因多數發行版使用不同的軟件安裝方法而進一步惡化。
ERROR Permission denied(權限不足)
這個錯誤是由系統安全設置引起的,當從命令行執行程序或編輯某些文件時常會出現。Linux鎖定了某些文件和目錄,這樣即使帳戶被盜(譯者 注:compromise些處何解?請指教),該用戶也無法運行系統的關鍵程序。這樣的機制在Linux服務器或者那種有著數百用戶的Linux框架中顯 得更加有用。盡管他在單用戶系統中也很重要,但即使你避開這些預防措施以給自己足夠的權限進行或打開某些關鍵文件,這也沒什么錯。
你可以在桌面或命令行來達到此目的,但你需要使用系統管理員賬戶以便能夠改變所需要權限。在命令行,可以輸入sudo bash命令來進入管理員賬戶,如果是非Debian用戶,則只需輸入su 即可。你可以用"chown 用戶名 文件名"來改變文件的所有權,加上 -R 參數將會遞歸改變該文件夾下所有文件的所有權。但這幫不了你電腦上其他用戶的忙,因為他們仍將面對權限問題。
答案是改變文件的可執行權限。可以用chmod命令來改變權限。鍵入 "chmod +x 文件名" 以便給你電腦上的每個用戶增加對該文件的可執行權限。類似的,"chmod +rw 文件名"將會授予所有用戶對該文件的讀寫權限。
ERROR Downloads won't run!(不能下載)
數個月前,我們在我們發行的DVD里包含了Runes of Avalon 2(譯者注:阿瓦隆神符2,一款益智類消除游戲)試用版。他被封裝在一個tar.gz文件中。我們中的大多數人甚至不會注意到這個游戲,因為我們已經被 Linux的古怪弄得麻木了。但我們還是接到了幾個新Linux用戶(這些正是我們需要努力爭取的人)的電話,詢問為什么那個tar.gz文件無法運行。 當然,答案是.tar.gz文件是一個歸檔文件。我們解釋說它就像是一個zip文件,需要解壓到一個文件夾才能運行那個試用版游戲。
你可以在桌面上右擊該文件選擇解壓,或者在命令行鍵入“tar xvf 文件名.tar.gz”,但新手根本沒必要知道命令行的方法。然后你需要找到一個.bin或者.sh文件,雙擊該文件以運行此游戲。如果你運氣不好,你可 能需要在命令行進入剛才創建的文件夾并鍵入./install.sh進行安裝。我們代表世界各地的Linux擁護者對此不便之處表示歉意。
除非你以Linux比較熟悉,否則運行試用版軟件和下載不會像在其他操作系統中那樣順暢。
ERROR Flash movies don't move(Flash影片無法播放)
真同情那些剛接觸Linux的用戶,他們啟動了新安裝的系統,卻發現自己無法在YouTube度過當天的時間。是的,極少有Linux發行版默認支 持Flash回放功能的。更糟糕的是,你的瀏覽器不可的樂觀的宣稱只需點幾下鼠標就可以完成Flash的安裝,而這通常都是在說謊。然而,這里有一個很保 險的方法來獲得Flash回放支持。
在Google搜索“adobe flash download”,點擊第一個靠前的鏈接。在新頁面中“version to download”的下拉菜單中,選擇“tar.gz for linux”并點擊用戶協議。該文件會被保存,你需要記住瀏覽器把文件存在什么地方了。接著,打開一個命令行終端,鍵入cd+空格+你下載的文件的路徑 (通常是你主文件夾中的~/Desktop)。
進入那個文件夾之后,鍵入 tar xvf install_flash* 解壓縮下載的文件,cd 進入此新文件夾。現在你需要鍵入./flashplayer-installer來執行安裝程序,并注意屏幕上的提示符(譯者注:即閃動的光標)。稍后瀏 覽器會重啟,你已得到了一個工作正常的Adobe Flash。
即使你的發行版不包含Adobe Flash支持,安裝一個支持程序也就是兩分鐘的事。