2010年7月29日 星期四

RHCE PASSED

昨天痛苦而密集的複習了RHCE的部份,今天很幸運的通過了RHCE考試,加上檢查一次的時間約90分鐘可以好好做完題目。準備考試是痛苦的,但是成果卻是甜美的唷!

考試時間有三個半小時,但是實際上約一個小時內就可以做完,若加檢查一輪約一個半小時可完成。考試分成RHCT跟RHCE兩部份;如果第一部份有達70%分數但第二部份未達70%,則可以拿到RHCT;假設第二部份達到70%但第一部份卻未達70%,則是兩者都未通過。只有兩者都達70%以上才能拿到RHCE。

我把我的certificated number隱藏起來了。這就是RHCE的證照唷。希望有心想考RHCE的同好也能好好加油。

不過我大概不會想再考Redhat系列的認證了。因為考試的時候選擇國家,我們台灣的後面又被灌上a province of china,實在是非常落伍又泛政治化的一間公司。

2010年7月26日 星期一

Memory for crash kernel not within permissible range

這個問題會發生在所有Redhat-based Linux上,包含Scientific Linux,當然更包含了虛擬機器下的Redhat-based linux--在開機時出現:「Memory for crash kernel (0x0 to 0x0) notwithin permissible range」的訊息。


CentOS 的開機畫面。


RHEL5 的開機畫面。


ScientificLinux 的開機畫面。

這個警告寫得太像錯誤訊息,以至於雖然能夠成功開機,但是小心一點的管理員卻會擔憂這代表什麼意思。事實上,這是kdump(Kernel dump daemon)的訊息。這只是一個提示訊息(informational message),只要在init.d裡面拿掉kdump,或是安裝時選擇不安裝kdump即可。由於在開機時,系統不會知道你是否有為crash kernel保留一份記憶體位置,所以嚴格說來這是給kernel dump的服務所提供的訊息,是可以安心的忽略他的。如果你已經取消kdump開機時啟動,但仍然出現這個問題,那麼就當做沒看到吧!
雖然redhat的開發人員已經出面解釋這不是bug也可以從容的忽略他,但是許多人還是罵翻這個message,因為他讓太多網管人員花太多的時間在google這個近乎無用的訊息上。

論壇上許多網友建議的做memory test,更新或是手動編譯一個kernel都是於事無補的,請別浪費時間在這上面。

chroot初體驗

chroot是linux上一個可以讓你限制根目錄的有趣指令。在unix的世界裡,萬物的源頭就是/,就算是/的上一層目錄也還是根目錄本身。也就是說,任何使用者都無法離開/,就像是你永遠跨越不了宇宙的邊界,除非你已經不屬於該宇宙的一部分。

今天研究室學妹laptop上的opensuse遇到了一個有趣的問題。開機到stage2之後,無法掛載根目錄,其錯誤訊息是:『unknown "reiserfs" filesystem』。這在Redhat系列的linux並不意外,因為他們並不打算讓使用者不自訂kernel的情況下去使用reiserfs以及reiser4。反之,opensuse則是預設以reiserfs為檔案系統。很顯然是kernel不認識這個filesystem,但是是什麼原因使得kernel不認識filesystem呢?

我只是合理的猜測--更新kernel的過程中,或是在執行SuSEConfig之前更新的process被中斷。後來學妹也說因為太久沒更新,結果更新的清單一大疊,很可能是因為要回家前更新還沒有完成,所以就中斷這個process。跟Debian不同:Debian的更新是把所有的套件都抓下來之後再逐個安裝,Redhat/SuSE系列則是下載一個安裝一個,或許恰好是在安裝新的kernel時被終止,留下了一個沒有設定完成的kernel。

由於根檔案系統無法被掛載,我只剩下最基本的ls/mount等指令可用,連關機都不行@_@||| ...在Debian的liveCD裡,我無法利用rpm或是yast替opensuse安裝一個新的kernel上去;於是,我想到chroot。

mkdir /Virtual
mount /dev/sda1 /Virtual
mount --bind /proc /Virtual/proc
mount --bind /sys /Virtual/sys
mount --bind /dev /Virtual/dev
chroot /Virtual
這個時候,我就擁有了opensuse的環境,雖然此時此刻所使用的kernel是debian的。由於我急著希望有一個可以正常開機的kernel,因此就先更新kernel吧!
zypper update kernel-default
Debian重開機之後,原本的硬碟載入grub,到了stage2就可以成功掛載root檔案系統了!第一次使用chroot就有不錯的經驗,chroot真是好物!

延伸閱讀:
Tetralet大哥的好文:使用 debootstrap 來建立 CHROOT 環境