我能找到的最接近的问题是这个,但是它与我需要的仍然有很大不同:GRUB安装失败
我的具体设置以及生成此内容所遵循的步骤
我正在尝试使用书籍版本 7.2 构建 Linux From Scratch 项目。我遵循了整个过程中的每一步,并执行了我能做的每一项测试,以确保构建后一切正常运行。我必须做的最大的改变是分区,我有/dev/sda1(作为/)、/dev/sda2(作为/home)、/dev/sda3(作为swap)和/dev/sdb1(作为/source)用于编译)。
我正在使用 LiveCD 作为主机操作系统在 VirtualBox 内的空白硬盘上执行安装。所以,直到最后我遇到的问题很少。对于编译内核,我需要选择哪些选项并不是很具体,所以我一改就选择了默认选项,我确保了“Device Drivers ---> Generic Driver Options ---> Maintenance a”中的选项已检查要挂载在 /dev 的 devtmpfs 文件系统”。
按照有关设置 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.
所以,当我第一次收到这个消息时,我想这可能与内核有关,也许我没有选择我必须选择的内容,经过一番谷歌搜索后,我发现我应该确保“ 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。仍然没有成功。之后,我进行了一些谷歌搜索,但确实没有返回任何有意义的结果。
因此,接下来,我将机器恢复到 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
答案1
我已经能够完成 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