歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 在LVM上安裝Gentoo筆記

在LVM上安裝Gentoo筆記

日期:2017/2/28 16:20:33   编辑:Linux教程

我是在已有的Linux上安裝一個Gentoo,所以其實有沒有下載installation CD並不重要,只要下載了stage3的文件和portage就可以了。不過要確保系統中有chroot。我的系統中已經有LVM,所以我安裝過程都是在LVM上的分區進行。

在mke2fs -t ext3 /dev/vg/gentoo_usr的時候出現invalid block count的錯誤,不知道原因。

但是通過mke2fs -j /dev/vg/gentoo_usr解決了問題,成功把/dev/vg/gentoo_usr格式化成ext3。

自己一共編譯了兩次內核,最終仍然沒有成功的讓編譯出來的kernel成功的mount LVM上的root。

在編譯中,涉及Power management的選項在我的台式機上會出現BUG,一共出現了兩次。

a. 在啟動的時候出現ACPI 相關BIOS的錯誤,後來通過去掉Power management中的APCI相關的選項去掉了這一問題。

b. 在啟動的時候出現MP_BIOS bug: 8254 timer not connected to IO_ACPI錯誤,後來干脆把整個Power management的選項組都去掉了,因為這個在台式機上貌似沒什麼作用。然後問題解決。

在第一次kernel編譯的時候,使用的是manually compilation的方式。make menuconfig之後直接make && make modules_install。同時LVM的模塊是builtin的方式編譯進內核。啟動的時候出現invalid block device的問題不能掛載LVM上的跟分區。

然後直接使用genkernel initramfs --lvm all的方式,生成initramfs(initrd的新版本)。然後直接啟動,出現在scanning modules的時候聽在scanning sd_mod的地方然後不再動。懷疑是手動編譯的問題,因為現在位置手動編譯內核還不是太熟悉,對於有些選項應該是有些沖突的選項的。於是決定第2次重新編譯內核,這次使用genkernel的方式。

在第二次編譯內核的時候,使用genkernel --lvm --menuconfig all編譯內核。在編譯之後重新啟動,仍然出現6裡面的問題。由此懷疑是sd_mod的問題,進入原先的系統,用modinfo sd_mod查看這個模塊的信息,是SCSI DISK的驅動,所以決定在啟動的時候禁掉scsi設備的監測。

在啟動的時候,進入grub之後,編輯gentoo內核的啟動選項,增加 noscsi 參數。然後啟動,順利通過scanning modules步驟,但是在檢測Volunm group和掛載Root的時候,仍然出錯。這個時候可以通過ramfs裡面的shell來查看一些ramfs裡面的配置。

後來想清楚了之後,自己的硬盤是SATA口連接到電腦的,而一般SATA的硬盤都需要SCSI DISK的驅動,也就是sd_mod。也就是sd_mod如果不load的話,沒有辦法找出Volunm Group,所以也當然沒有辦法掛載在VG上的root分區了。

後來在ramfs裡面的shell試著手動的modprobe sd_mod,症狀和scanning的時候一樣,也是會導致kernel 不動。由此得出問題是sd_mod的問題。在網上尋找答案,沒有很確定的答案,可能是跟IDE跟新的SCSI驅動之間的編譯出現了沖突導致。

在gentoo的official forums上求解了兩天,在某人的幫助下終於解決了6中的問題。首先是嘗試了將SCSI驅動編譯成builtin的模塊,這樣在啟動的時候在scanning之前kernel會有一些debug的輸出。這樣雖然仍然是停在了sda的監測中,但是由於在kernel的編譯中選擇了verbose的kernel輸出,所以可以看到很多之前沒有的信息。由此可以確定是在監測SATA的時候出了問題。然後根據壇子某人的提示,將BIOS中的SATA controller從all enabled改成SATA-1。然後就可以順利啟動了。原來這個問題是和BIOS中的SATA adapter有關,真是玄妙。

Copyright © Linux教程網 All Rights Reserved