顯示具有 linux kernel development 標籤的文章。 顯示所有文章
顯示具有 linux kernel development 標籤的文章。 顯示所有文章

2008年12月24日 星期三

一個奇怪的bug:linux沒法login

最近改了2.6的skbuff.c,由於我code寫錯了,造成skb會永遠要不到,且會產生memory leakage
而bug的結果就是,沒法login(就是輸入對的密碼後,linux會一直跟你說密碼錯誤,看起來就像密碼被改掉一樣),即使是使用console

這個結果跟bug不太好關聯,你很難從沒法login察覺到是由"要不到skb"會是"memory leakage"造成的

一開始我還覺得奇怪,為什麼其他的kernel都可以login,就是我改過的這個kernel沒法login………

我把這個bug紀綠下來,以茲紀念

.

2008年7月15日 星期二

kernel panic時自動reboot

我是linux使用上很新的新手,雖然我正在寫linux的driver,不過寫程式本來就和os的使用熟練與否不需要正相關

還好我有一個對linux很熟的學弟,可以隨叫隨問

最近在寫網卡的driver,因為driver是在kernel space,所以只要任何一個地方寫錯就會造成kernel panic,於是開發平臺就要開開關關………

而每一次開機就要好久,除了因為linux本身開機就久之外,還因為我不是正常關機………

學弟教了我一個方法讓linux在kernel panic時自動重開

可以去設定/proc/sys/kernel/panic的值,預設是0,也就是不自動重開,若將其值設成3,如
echo 3 /proc/sys/kernel/panic
則機器會在kernel panic 3 秒後自動重開

但是學弟說此方法每次重開機都要重寫一次,於是又教了我一個永久設定該值的方法
去修改/etc/sysctl.conf,在最下面新增一行kernel.panic = 3
於是每次重開機後/proc/sys/kernel/panic的值都是3

從此以後,kernel panic後重開機的速度快了不少

另外,由於linux tty放久了會自動logout,即使用console login也是一樣,此時沒法判斷是kernel panic後自動重開,還是放久了自動logout,學弟又教了一招
uptime
會顯示開機後運行多久時間,格式是 時:分,也就是說,若顯示01:09,表示開機後到現在已經經過了1小時又9分鍾,這樣就可以判斷中間是否有發生過kernel panic了