終於可以在vmware中使用新編譯的內核調試驅動了,雖然也比較經常在vmware裡使用 linux ,但是還從沒有在裡面編譯過內核,所以不知道居然還有這麼多的道道。編譯內核的過程就不說了,除了通用的編譯過程,各個發行版可能還會有自己特有的編譯命令,比如我使用的debian。下面只列出我在編譯過程中嘗試過的步驟。
1、從kernel.org上下了2.6.18的sourcecode,編譯安裝後使用新的內核啟動,看到下面讓人討厭的錯誤:
VFS:Cannot open root device "sda" or unknow-block(0,0)
Please append a correct "root=" boot option
kernel panic:VFS:Unable to mount root fs on unknown-block(0,0)
這樣的錯誤到也不是第一次親密接觸了,比如很久以前使用dd將系統copy到另一塊硬盤上,並使用新的硬盤啟動時也遇到過這樣的錯誤,那是因為沒有將硬盤接到與原來硬盤對應的IDE接口上,不過這絕對不是讓它追隨我在這裡出現的原因,當然久經風浪臉皮已經跟brass一樣厚的我是覺得不會在這裡倒下的,於是沒有多想(慚愧),隨即使用大家都最常使用的重啟大法,寄望於它剛才是一時的疏忽。但是在幾十秒之後,它又赧然出現在我的眼前,無它,只好google了。
2、從google的結果來看,同道(一同著道)中人還真不少,五花八門的過程揭露了大致無二的解決方法。主要是內核的配置選項了,並且主要集中在
Device Drivers——>SCSI device support——>SCSI low-level drivers——>BusLogic SCSI support
主要是因為使用scsi時,vmware需要它,還有文件系統,我用的是ext3,因為看到有人說沒有將它們直接編譯進內核導致啟動仍然不成功,給自己個懶的理由,也就不多嘗試了,直接將它們built-in了,然後執行
make-kpkg –revision=1.0 kernel-image
編譯,且使用dpkg安裝後重啟,讓人沮喪的是,前面那幾行可愛的錯誤又出現了。
3、再回頭檢查內核的配置選項,覺得相關的都已經選上了,按理說不應該會再找不到root文件系統了啊,要不試試initrd?雖說已經將上面的幾個模塊編進了內核,是不是還需要創建initrd那?權且試試吧,於是重新編譯內核
make-kpkg –revision=1.0 kernel-image –initrd
再安裝重啟,居然甩開了那個粘人的panic,不過仍然還有點雲裡霧裡的,呵呵, linux 上的這些事兒好像多是這樣子,抽空深入研究下initrd去。