LFS 系統無法啟動或 GRUB 無法在啟動時訪問 /boot/grub
我能找到的最接近的問題是這個問題,但它與我需要的仍然有很大不同:GRUB 無法安裝
我的具體設置和我製作這個的步驟
我正在嘗試使用書籍版本 7.2 建構 Linux From Scratch 項目。我一直在跟踪每一步,並執行了我可以做的每一項測試,以確保在建構後一切正常執行。我必須做的最大改變是分區,我有 /dev/sda1(作為 /)、/dev/sda2(作為 /home)、/dev/sda3(作為交換)和 /dev/sdb1(作為 /source用於編譯)。
我正在使用 LiveCD 作為主機作業系統在 VirtualBox 內的空白硬碟驅動器上執行安裝。所以,直到最後,我遇到的問題很少。對於編譯核心,我需要選擇哪些選項並不是很具體,所以我選擇了預設選項並進行了一次更改,我確保“設備驅動程序—>通用驅動程序選項—>維護一個devtmpfs 文件系統掛載在 /dev" 被選中。
按照有關設置 GRUB 的其餘說明進行操作後,重新啟動後,啟動過程將凍結,並顯示以下輸出:
ata3: SATA link up 3.0 Gbps (SStatus 123 SControl 300) ata3.00: ATA-6: VBOX HARDDISK, 1.0, max UDMA/133 ata3.00: 33554432 sectors, multi 128: LBA48 NCQ (depth 31/32) ata3.00: configured for UDMA/133 scsi 2:0:0:0: Direct-Access ATA VBOX HARDDISK 1.0 PQ: 0 ANSI: 5 scsi 4:0:0:0: CD-ROM VBOX CD-ROM 1.0 PQ: 0 ANSI: 5 List of all partitions: No filesystem could mount root, tried: Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0) Pid: 1, comm: swapper/0 Not tainted 3.5.2 #1 Call Trace: ? panic ? mount_block_root ? xen_write_msr_safe ? mount_root ? prepare_namespace ? kernel_init ? start_kernel ? kernel_thread_helper atkbd serio0: Spurious ACK on isa0060/serio0. Some program might be trying to access hardware directly.
所以,當我第一次收到的時候,我想也許這與核心有關,也許我沒有選擇我必須選擇的東西,經過一番Google搜尋後,我發現我應該確保“ SATA_SIL”已啟用。我還找到了一個網站,詳細說明了需要為在 VirtualBox 中執行的核心啟用的核心選項(http://en.gentoo-wiki.com/wiki/Virtualbox_Guest)。然後,在編譯核心並使用該網站上指定的選項以及 SATA_SIL 重新編譯之前,我將機器恢復到保存狀態。
但是,經過長時間的核心編譯後,我隨書而去,發出了命令
grub-install /dev/sda
。但是,這一次,GRUB 沒有安裝,而是返回了以下錯誤:Path to `/boot/grub' is not readable by GRUB on boot. Installation is impossible. Aborting.
我的第一個想法是它與文件權限有關(因為“不可讀”真的聽起來像文件權限)。所以,只是為了看看,我將 /boot 文件夾(遞歸)設置為 777。仍然沒有成功。之後,我做了一些Google搜尋,但實際上沒有返回任何有意義的結果。
因此,隨之而來的是,我將機器恢復到 GRUB 工作但無法啟動的版本,使用相同的配置並在那裡重新編譯核心(我必須添加一個新的硬碟驅動器 /dev/sdc ,因為 /dev/sdb1 中沒有足夠的空間來使用新選項編譯核心)。再次經過長時間的編譯後,我安裝了核心,重新啟動,然後……和以前一樣的錯誤轉儲。
主要問題
所以,現在我到了我認為我可能需要一些幫助的地步,如果有人知道我如何克服這個引導錯誤和/或 GRUB 安裝路徑錯誤,那就太好了!
額外的資訊
我所有的軟體都是 LFS 版本 7.2 的確切版本,完整列表可以在這裡找到:http: //pastebin.com/TiJBhbce
以下是電腦中所有驅動器的結構和設置的完整列表: root:~# fdisk -l
Disk /dev/sda: 4294 MB, 4294967296 bytes 255 heads, 63 sectors/track, 522 cylinders, total 8388608 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0xeeeb9d91 Device Boot Start End Blocks Id System /dev/sda1 2048 6293503 3145728 83 Linux /dev/sda2 6293504 6817791 262144 83 Linux /dev/sda3 6817792 8388607 785408 83 Linux Disk /dev/sdc: 17.2 GB, 17179869184 bytes 171 heads, 2 sectors/track, 98112 cylinders, total 33554432 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x4c41c1df Device Boot Start End Blocks Id System /dev/sdc1 2048 33554431 16776192 83 Linux Disk /dev/sdb: 4294 MB, 4294967296 bytes 43 heads, 32 sectors/track, 6096 cylinders, total 8388608 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0xd3de256f Device Boot Start End Blocks Id System /dev/sdb1 2048 8388607 4193280 83 Linux
重新啟動時應該以 / 啟動的驅動器,這裡是 /dev/sda1 的內容:
drwxr-xr-x 24 root root 4096 Feb 17 20:46 . drwxr-xr-x 3 root root 60 Feb 17 22:46 .. drwxr-xr-x 2 root root 4096 Feb 17 13:11 bin drwxr-xr-x 3 root root 4096 Feb 17 16:00 boot drwxr-xr-x 2 root root 4096 Feb 17 20:46 build drwxr-xr-x 2 root root 4096 Feb 16 20:06 dev drwxr-xr-x 12 root root 4096 Feb 17 15:52 etc drwxr-xr-x 2 root root 4096 Feb 16 13:11 home drwxr-xr-x 7 root root 4096 Feb 17 22:11 lib drwx------ 2 root root 16384 Feb 16 13:09 lost+found drwxr-xr-x 4 root root 4096 Feb 16 20:24 media drwxr-xr-x 2 root root 4096 Feb 16 20:24 mnt drwxr-xr-x 2 root root 4096 Feb 16 20:24 opt drwxr-xr-x 2 root root 4096 Feb 16 20:06 proc drwxr-x--- 3 root root 4096 Feb 17 22:14 root drwxr-xr-x 3 root root 4096 Feb 17 09:38 run drwxr-xr-x 2 root root 4096 Feb 17 14:36 sbin drwxr-xr-x 2 root root 4096 Feb 16 13:11 sources drwxr-xr-x 2 root root 4096 Feb 16 20:24 srv drwxr-xr-x 2 root root 4096 Feb 16 20:06 sys drwxrwxrwt 3 root root 20480 Feb 17 22:12 tmp drwxr-xr-x 13 root root 4096 Feb 16 18:51 tools drwxr-xr-x 9 root root 4096 Feb 16 20:24 usr drwxr-xr-x 11 root root 4096 Feb 16 23:26 var
我已經能夠完成 LFS,我相信 GRUB 給出指定錯誤的原因是因為我沒有正確安裝所有東西。此腳本應根據需要安裝所有內容:
export LFS=/mnt/lfs mkdir -p $LFS mount -v -t ext4 /dev/sda1 $LFS mount -v -t ext4 /dev/sda2 $LFS/home mount -v -t ext4 /dev/sdb1 $LFS/sources /sbin/swapon -v /dev/sda3 mount -v -t tmpfs -o size=20m tmpfs /tmp mount -v --bind /dev $LFS/dev mount -vt devpts devpts $LFS/dev/pts mount -vt proc proc $LFS/proc mount -vt sysfs sysfs $LFS/sys chroot "$LFS" /tools/bin/env -i \ HOME=/root \ TERM="$TERM" \ PS1='\u:\w\$ ' \ PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \ /tools/bin/bash --login +h
至於無法啟動的錯誤,那是核心編譯造成的。我使用 ext4 作為我的硬碟驅動器,我必須將它編譯到核心中才能工作。這是我必須使用的核心設置:
Device Drivers ---> Generic Driver Options --> [*] Maintain a devtmpfs filesystem to mount at /dev File systems ---> <*> The Extended 4 (ext4) filesystem [*] Use ext4 for ext2/ext3 file systems [*] Ext4 extended attributes [*] Ext4 POSIX Access Control Lists [*] Ext4 Security Labels