歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Gentoo編譯內核

Gentoo編譯內核

日期:2017/2/28 16:07:37   编辑:Linux教程

啟動Gentoo發現x server無法啟動,察看了一下log,是nvidia驅動沒有安裝,記得升級的時候,已經安裝過了,不知道為什麼出現這麼個問題.

那就重新安裝nvidia-drivers

#emerge nvidia-drivers

出現錯誤,找不到.config文件,察看了一下,內核2.6.37的/usr/src/linux-2.6.37-gentoo-r4裡面已經沒有內核源碼了,察看一下gentoo最新的穩定內核是39了,就接著

#emerge gentoo-sources

先安裝內核39吧,為了省事兒,采用genkernel編譯,eselect過後,wk,無法編譯啊,出現

ERROR: Could not find source tarball: /var/cache/genkernel/src/busybox-1.7.4.tar.bz2!

於是換用手動編譯內核,編譯完成後,kernel panic, 沒有搞懂gentoo的加載內核的方式是怎麼實現的,

genkernel是需要initrd的,但是手動編譯的不需要,kernel panic的原因應該就在於此,應該是內核啟動起來過後,沒有相應的驅動(模塊)來識別硬盤導致的.

還是暫時換用genkernel吧,

#etc-update

更新配置文件,這下genkernel正常了,接著安裝nvidia的驅動,可以起來了.

這個問題有時間好好研究一下.

********************************************************************************

原來在編譯的時候,選擇了Initial RAM filesystem and RAM disk support ,在這裡(刪掉了)

這個選上了,內核在啟動過程中,會掛載這個小型的文件系統(主要成分為busybox),加載完磁盤驅動和其他驅動過後,開始掛載磁盤分區到根文件系統,系統就起來了.

而自己手動編譯的時候,沒有生成initrd,所以運行到這裡就出錯了.

有兩種解決方案:

1.不使用initrd,把磁盤等驅動編譯到內核裡,並且不要編譯Initial RAM filesystem and RAM disk support

2.使用initrd,可以手動生成initrd,也可以使用genkernl來生成initrd.

Copyright © Linux教程網 All Rights Reserved