Linux

LFS 系統無法啟動或 GRUB 無法在啟動時訪問 /boot/grub

  • March 16, 2022

我能找到的最接近的問題是這個問題,但它與我需要的仍然有很大不同: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

引用自:https://unix.stackexchange.com/questions/65145