作者 主題: Kernel not found (Complie)  (閱讀 3443 次)

0 會員 與 1 訪客 正在閱讀本文。

leiw

  • 鑽研的研究生
  • *****
  • 文章數: 669
    • 檢視個人資料
Kernel not found (Complie)
« 於: 2010-08-05 01:50 »
Hi

剛剛complie完kernel, 然後reboot Centos, 再到menu選新kernel當載入就出現file not found: http://210.0.214.118/wilson/notfound.jpg

這裡是/boot內的檔案:
http://210.0.214.118/wilson/boot.jpg

menu_lst:
http://210.0.214.118/wilson/menu_lst.jpg


Thanks !

kenduest

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 3675
    • 檢視個人資料
    • http://kenduest.sayya.org
回覆: Kernel not found (Complie)
« 回覆 #1 於: 2010-08-05 02:10 »

是 /vmlinuz-2.xxx ,你多打一個 /boot 路徑了。

I am kenduest - 小州

my website: http://kenduest.sayya.org/

leiw

  • 鑽研的研究生
  • *****
  • 文章數: 669
    • 檢視個人資料
回覆: Kernel not found (Complie)
« 回覆 #2 於: 2010-08-05 13:17 »
Hi

vbird教是/boot/vmxxxxx

現在改回了, 可以載入.

但是有kernel panic: http://210.0.214.118/wilson/panic.jpg

是什麼原因呢?

Thanks !

kenduest

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 3675
    • 檢視個人資料
    • http://kenduest.sayya.org
回覆: Kernel not found (Complie)
« 回覆 #3 於: 2010-08-06 11:03 »
Hi

vbird教是/boot/vmxxxxx
現在改回了, 可以載入.

這個與 vbird 有啥關係呢? 我感覺鳥哥好可憐喔,這個都要幫你承受問題。

首先你得知道,你的 /boot 分割區是獨立的,所以你指定 root() 指向到 /boot 所在分割區所以才用 /vmlinuz 等敘述。若你沒有劃分獨立 /boot 分割區,那的確就是使用 /boot/vminuz 這樣的敘述。

引用
但是有kernel panic: http://210.0.214.118/wilson/panic.jpg
是什麼原因呢?
Thanks !

我不大清楚為何你要去編譯核心這樣,但是若你要編譯核心,一開始請你先複製一份 /boot/ 內原本可用核心提供的 config-2.xx 這類設定檔案到核心原始碼目錄內成為 .config 檔案,然後 make menuconfig 即可載入使用。使用該設定編譯出來核心大多不會有問題。

I am kenduest - 小州

my website: http://kenduest.sayya.org/

harrier

  • 榮譽博士
  • 俺是博士!
  • *****
  • 文章數: 1856
  • 性別: 男
    • 檢視個人資料
    • 國屬武裝兵
回覆: Kernel not found (Complie)
« 回覆 #4 於: 2010-08-13 18:10 »
vbird教是/boot/vmxxxxx
現在改回了, 可以載入.
但是有kernel panic: http://210.0.214.118/wilson/panic.jpg
是什麼原因呢?

記得看說明:(你的畫面上就有了,鳥哥也是看說明起家的)
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,2)
#          kernel /vmlinuz-version ro root=/dev/sda5
#          initrd /initrd-version.img

kernel panic..你確定你有一個個看完 kernel的註解嗎?有些東西有 module 選項,但不應該選成 module,有些可以 disable,但不可以 disable,
因為 Linux 的標準核心是給很多平台很多裝置共用的,你要視實際狀況調整。

各發行版應該都有 kernel 的  config 檔案,你可以找來 load 進去看看。
...90Net(90:1200/1203),GameNET(99:700/707),ALLNet(92:9200/3111),InfoNet(30:100/103)..MaximusCBCS(浮懷),AirNet,TenderNet,StormNet,FidoNet...
<<- www.nas.vg ->>

anderson1127

  • 訪客
回覆: Kernel not found (Complie)
« 回覆 #5 於: 2010-08-14 23:31 »
給挑戰Compile Kernel 新手的建議

1. 你要夠清楚,你的hardware parts的名稱及型號
這部份很多東西,包含MB chipset , IDE/SATA driver , 等等族繁不及備載
2. 新手盡量不要挑戰module compile , 能夠進入Kernel 的driver盡量進入Kernel
除非你夠熟悉Module的載入順序,這部份我自己也是摸索很久,compile kernel 不下上百次
每次錯誤都要有做Lab的精神,記錄何種錯誤以及錯在何處
3. 想辦法去瞭解,Linux Kernel開機流程
compile kernel不外乎追求系統最佳化,一旦最佳化,不僅節省Memory空間,還能夠充份利用
Memory , CPU運作也更有效率!!

以我自己來說,自己摸索,也常常撞得滿頭包,現在回想起來, 自己最初在弄Compile Linux Kernel 時
有很長的一段時間(3-4年吧? )用的方法就是一種錯誤的方法,只是剛好歪打正著,勉強可以使用!!
知道嗎?我那段時間根本不會去做initrd image file .... 就算會做initrd file ,也大約是這三/四年的事了..

以前是這方面的資料少得可憐,我剛好也都不會用搜尋引擎找資料,所以那段時間沒進步....

rainday

  • 鑽研的研究生
  • *****
  • 文章數: 738
  • 性別: 男
  • enhancing and optimizing
    • 檢視個人資料
回覆: Kernel not found (Complie)
« 回覆 #6 於: 2010-08-15 02:42 »
initrd完會重新載入有init的partition
可能原因
1. 沒有驅動到ide or sata driver,所以沒有抓到partition , 確認開機kernel及initrd在讀取時,有看到hda or sda成功驅動
2. grub指向的root=LABLE=/  , 確認lable有寫進partition , 不然也可以先指向device file試試
3. root filesystem format的driv er是否有載入(buildin在kernel or initrd檔案內) , ext4?xfs? raiserfs? btrfs? ...
4. initrd內的module,版本還是舊版本kernel compile出來的 , 不知initrd是否有做新kernel的呢?
5. grub.conf有設定載入initrd img嗎?

centos的kernel跟現行kernel的版本己差異太多了, module的架構也有蠻多調整的, bug trace的功能增強不少 , 所以要注意改變的地方
kernelnewbies 是個不錯的地方
http://kernelnewbies.org/LinuxChanges 每個版本變動的地方都會說明出來
« 上次編輯: 2010-08-15 02:56 由 rainday »
<0  =_=  Don't learn to hack , hack to learn.