[閒聊] 我那忘東又忘西的 kernel 升級

放輕鬆,這個版純聊天不談技術,歡迎大家進來坐坐。

[閒聊] 我那忘東又忘西的 kernel 升級

文章Drake » 週二 5月 27, 2003 11:16 pm

去年秋天,提出了一台硬體清單,其中最重要的是一張 Adaptec RAID S2110 和三顆 SCSI Seagate HDD。一開始 Server 被拿來當作強力的 W2k 平台用,不過似乎沒有人缺電腦。後來決定開始寫寫 server-client 的程式,順道把 CVS server 也架出來,於是裝起了 Debian。

放入 Woody CD,「找不到硬碟」。

在安裝過程遇上的第一個問題就是這。

於是重新用 Woody CD 開機,試著看看它有些什麼提示可以幫助解決。發覺有所謂的 compact & bf24,於是由 compact 著手,看看是否使用這個 kernel ,能運氣很好地,有支援這 RAID card,不過失敗了。於是接著試試 bf24,也同樣失敗了。

至此,決定上網找別人 make 好的 driver。

過程略…最後裝起了 Debian…

前一陣子,來到了 moto forum,看了些文章。想說,那來把 kernel 升個級好了。抓下了 kernel-image-2.4.20-i686 的樣子。(bf24 是用 2.4.18)

apt-get install kernel-image-2.4.20-i686
....
Setting up kernel-image...

在這犯了一個錯誤,忘了執行一下 lilo 來重建 map。(當時會沒有執行,一來是完全不了解 lilo 到底在幹麻的,二來是看了「無痛起步」後,好像有提到說新版的 kernel 不用在自己執行 lilo 了?!)

重開機後…糗了,無法開機了。

最後,決定做張 bootable floppy 或是由 install cd 來開機進入 system 後,再 mount 原來的 partition 來看看倒底是怎麼了。

在這犯下了第二個錯誤,應該直接在 prompt 處按個 Ctrl or Alt or Del or Caps Lock 來由舊 kernel 開機的。(老樣子,還是不知道 lilo 是在幹麻的。雖然說修過了 Operation System 和 Operation System Design,但是似乎沒在這個節骨眼上有幫助…)

接著犯了第三個錯誤,忘了當初是怎麼讓 Woody CD 能認得 RAID card 的…

p.s. 剛剛想起來,會決定要升級一下,好像是因為發現原有的 kernel 不支援 RAM 超過 1G ,然後那時覺得好像升級了會比較安全??!! :crying:

最後想起來了,手邊應該有張 floppy image 上有 driver 可以用,經過多次試驗,最後我發現,手上的 driver 要配合 bf24 才可以順利地把 i2o 這個 module load 進去。(那時也已經忘了 i2o 了,好死不死,floppy上有3x~4x個module,都是不知道用途為何的:!:)

讓 install cd 順道找到硬碟的第一件事,是進入 shell。進 shell 之前,在安裝手續中,把之前的 partition mount 回來。

發現到幾件事。第一是只有一個叫 tiny-nano 的 editor;第二是用的 shell 好像功能很陽春:?: :!:要不就是不太熟習;最後是想補執行之前安裝 kernel-image 後忘了的 lilo,但卻無法執行。

於是作了個假設:可能是有兩個 lilo,一個是 install cd 開機後, shell 裏的;一個是放在舊有 partition 裏的。接著以指定路徑的方式執行任一,發覺都不行。問題的核心在於 static libs 似乎用錯了。

這時想清楚了,發覺一定要能執行原有 partition 上的 lilo 才有用。經過在 moto forum 上和高原兄的一問一答,加上其它人的熱心回應,多認識了一個指令: chroot 。它幫我解決掉了此問題。

chroot /target/ooxx/
lilo
(事後知道,lilo 有個 -r 參數可以指定 root directory,-C 可以指定 lilo.conf…那時為什麼會沒想到要看一下 lilo 如何使用呢:?:因為在那個 shell 下,沒有 man 可以執行 :shock:

執行成功了 :D

重開機…還是無法開機,又失敗了 :crying:

最後,下了個正確的決定:來研究一下 lilo.conf 是怎麼個一回事。

於是發覺到,要手動更動一下 lilo.conf ,且情況可能會依每個人在升級 kernel 的過程中而大大不同:!:

而也做了個假設,大概就算改好 lilo.conf 還是會無法開機的吧。因為關鍵在於新的 kernel 得讓它懂得去把 dpt_i2o.o 給 load 起來才有用吧。

最後,我偷懶地退回原路,把新裝的 kernel-image 給 purge 掉,將 lilo.conf 指到舊有的 kernel 去了。

下一步,我打算抓 kernel-source 下來自己 make,順道把 dtp_i2o.o 鑲崁進去。 :-)
Drake
活潑的高中生
活潑的高中生
 
文章: 314
註冊時間: 週三 3月 26, 2003 11:00 am

文章moto » 週三 5月 28, 2003 8:55 am

呵呵... :mrgreen: .. 真是有趣的過程 ... 說有趣是因為 Drake 兄的描述啦... :ooops: .. 事實上 install kernel-image 的過程中,的確會幫我們下 lilo 這個指令讓 lilo.conf 生效,但是前提是系統必須還能夠解讀 lilo.conf 如果他發現解讀不了,還是得乖乖手動去修改然後下 lilo 生效,一般來說 lilo.conf 沒有自己修改過應該都沒問題啦,除非是太複雜的 case 才需要動手的囉....不過我相信 Drake 兄有這次難得的經驗,以後遇到的困難必定不算什麼..;-)
歡迎你來到MOTO學園一起討論Debian相關問題。
在post問題前可先別忘記了以下的步驟:
1:翻一下/usr/share/doc/中是否已經有解答了?
2:閱讀一下無痛起步是否已經提到了?
3:找一下google予以解答?
4:善用學園中的"搜尋"功能,往往答案就在裡面窩。
頭像
moto
摩托學園站長
摩托學園站長
 
文章: 2808
註冊時間: 週二 9月 03, 2002 3:37 am
來自: 台北

文章高原之狼 » 週三 5月 28, 2003 11:01 am

真是驚險動人的故事啊。

lilo 實際上真的很複雜,有很多好用的命令。比如前幾天看到的(寫在 lilo.conf 里):
prompt 可以一開機就進入選擇界面,不用按 Ctrl 或 Alt 了。
timeout 可以決定在選擇界面一定時間後就自動以默認選項啓動。
Ming Hua
高原之狼
懵懂的國中生
懵懂的國中生
 
文章: 185
註冊時間: 週一 10月 28, 2002 5:54 am

文章阿信 » 週三 5月 28, 2003 12:23 pm

已經很久沒有用lilo了,都是用grub而已呢,因為不會遇到找不到kernel的問題... :-)
頭像
阿信
版面大總管
版面大總管
 
文章: 4756
註冊時間: 週二 9月 03, 2002 11:58 pm
來自: 台灣 - 嘉義

文章Drake » 週三 5月 28, 2003 7:30 pm

我現在是偷懶中
能用的情況下就將就使用

雖然還是對 lilo 知道很少
至少現在可以正常運作 :D
Drake
活潑的高中生
活潑的高中生
 
文章: 314
註冊時間: 週三 3月 26, 2003 11:00 am

文章Drake » 週三 5月 28, 2003 7:40 pm

moto 寫:呵呵... :mrgreen: .. 真是有趣的過程 ... 說有趣是因為 Drake 兄的描述啦... :ooops: .. 事實上 install kernel-image 的過程中,的確會幫我們下 lilo 這個指令讓 lilo.conf 生效,但是前提是系統必須還能夠解讀 lilo.conf 如果他發現解讀不了,還是得乖乖手動去修改然後下 lilo 生效,一般來說 lilo.conf 沒有自己修改過應該都沒問題啦,除非是太複雜的 case 才需要動手的囉....不過我相信 Drake 兄有這次難得的經驗,以後遇到的困難必定不算什麼..;-)

如果可以選擇的話,是不希望有「這麼有趣的過程」的啦。因為事關重大,重要的 CVS server 在上頭,且每天都會使用到的人就分散成三四堆了,加上主要實驗室的 IP 因為資源不足而使用 IP sharing,雖然可以用 ftp 代替,但不大方便。不得以下,由晚上研究到隔天中午才先讓它恢復開機,在身心上的挑戰實在不小 :-?

p.s. 剛剛發現, emoticon 的 alt 好像有些改成了中文了 :)

等哪天又手癢起來,再試著 make kernel 一次~
Drake
活潑的高中生
活潑的高中生
 
文章: 314
註冊時間: 週三 3月 26, 2003 11:00 am

文章Drake » 週三 5月 28, 2003 7:44 pm

高原之狼 寫:真是驚險動人的故事啊。

lilo 實際上真的很複雜,有很多好用的命令。比如前幾天看到的(寫在 lilo.conf 里):
prompt 可以一開機就進入選擇界面,不用按 Ctrl 或 Alt 了。
timeout 可以決定在選擇界面一定時間後就自動以默認選項啓動。

對呀對呀
有分 prompt 和 menu 兩種方式
menu 可以自己設 title, scheme... 等

還可以設個 password 來防止被人跑到 server 前惡意 reboot ~ (不過不曉得擋得了單機模式嗎?)
Drake
活潑的高中生
活潑的高中生
 
文章: 314
註冊時間: 週三 3月 26, 2003 11:00 am

文章高原之狼 » 週四 5月 29, 2003 6:59 am

Drake 寫:還可以設個 password 來防止被人跑到 server 前惡意 reboot ~ (不過不曉得擋得了單機模式嗎?)

Debian 的默認設置就是禁止 single 啓動來得到 root acess 的,因爲 /etc/inittab 中是這樣寫的:
代碼: 選擇全部
# What to do in single-user mode.
~~:S:wait:/sbin/sulogin

所以你還是要輸入 root password 的(前幾天剛對付完一台忘記 root password 的機器,被這個弄得一點脾氣都沒有)。

不過如果有 boot prompt 的話,對於 init=/bin/bash 這樣的攻擊大概還是沒有辦法的。前幾天翻了翻 Secure Debian Manual,裏面講了很多相關的問題,真的很受啓發。
高原之狼
懵懂的國中生
懵懂的國中生
 
文章: 185
註冊時間: 週一 10月 28, 2002 5:54 am

文章Drake » 週四 5月 29, 2003 1:55 pm

剛剛 man 了一下 sulogin
的確還是需要輸入 root password 的
代碼: 選擇全部
sulogin checks the root password using the standard methods first.  If the -e  option  was specified, sulogin examines the next files to find the root password. If they are damaged, or non-existant, it will use fallback methods that even go so far as to provide you with a shell prompt without asking for the root password if they are irrepairably damaged.

也許這暗示了,如果有辦法以 non-root 的身份對 passwd file 攻擊,之後再以 sulogin 的話,就能拿到 root account ?! (just guess)

高原兄說的 init=/bin/bash
是指當 lilo.conf 被竄改的話所造成的是嗎?
Drake
活潑的高中生
活潑的高中生
 
文章: 314
註冊時間: 週三 3月 26, 2003 11:00 am

文章高原之狼 » 週四 5月 29, 2003 2:30 pm

Drake 寫:高原兄說的 init=/bin/bash
是指當 lilo.conf 被竄改的話所造成的是嗎?

不是的,是指和 Single User Mode 類似,在 boot: 提示符下打
boot: linux init=/bin/bash
就會什麽 init 步驟都不執行,直接給你一個 root bash shell。

只不過從這下面 compromise root password,還需要點本領才行就是了。(提示:只掛載了一個 root partition,而且是 read only 的。)
高原之狼
懵懂的國中生
懵懂的國中生
 
文章: 185
註冊時間: 週一 10月 28, 2002 5:54 am

文章Drake » 週五 5月 30, 2003 1:25 pm

想不出來中 :-D
Drake
活潑的高中生
活潑的高中生
 
文章: 314
註冊時間: 週三 3月 26, 2003 11:00 am


回到 talk

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客