![找不到根块设备(在 Gentoo 中)](https://linux22.com/image/104890/%E6%89%BE%E4%B8%8D%E5%88%B0%E6%A0%B9%E5%9D%97%E8%AE%BE%E5%A4%87%EF%BC%88%E5%9C%A8%20Gentoo%20%E4%B8%AD%EF%BC%89.png)
有一些琐碎的麻烦总是困扰着我。Could not find the root block device in UUID=5f7c7e13-2a46-4ae4-a8c0-f77f84e80900
当我尝试启动时,我的 Gentoo 总是抱怨“ ”并且卡住了。但是,如果我输入相同的设备名称/dev/sda2
,系统就会继续运行。我不知道为什么。我的 Gentoo 安装在一个分区中/dev/sda2
,我安装/
到/dev/sda2
.
我也在网上找到了一些帖子。大多数帖子说是内核配置引起的,并将相应的fs
内置编译到内核中,而不是模块可以解决它。有些说rootfs
应该在kernel
命令后指定grub,grub中命令后的设备名称root
应该替换为这UUID
。我做了这一切,但这些都不起作用。
这是我在 grub 中的配置。
533 menuentry 'Gentoo (on /dev/sda2)' --class gentoo --class linux-gnu --class os $menuentry_id_option 'osprober-chain-225E1F815E1F4D43' {
534 insmod part_msdos
535 insmod ext4
536 set root='hd0,msdos2'
537 if [ x$feature_platform_search_hint = xy ]; then
538 ¦ ¦ search --no-floppy --fs-uuid --set=root --hint- bios=hd1,msdos2 --hint-efi=hd1,msdos2 --hint-baremetal=ahci1,msdos2 5f7c7e13-2a46-4ae4-a8c0-f77f84e80900
539 ¦ else
540 ¦ ¦ search --no-floppy --fs-uuid --set=root 5f7c7e13-2a46-4ae4-a8c0-f77f84e80900
541 ¦ fi
542 ¦ ¦ echo 'Loading Linux x86_64-4.4.39-gentoo ...'
543 ¦ ¦ linux /boot/kernel-genkernel-x86_64-4.4.39-gentoo root=UUID=5f7c7e13-2a46-4ae4-a8c0-f77f84e80900 ro
544 ¦ echo 'Loading initial ramdisk ...'
545 ¦ ¦ initrd /boot/initramfs-genkernel-x86_64-4.4.39-gentoo
546 ¦ boot
547
548 }
Gentoo 与 Ubuntu 共存。
我的/etc/fstab
。
1 # /etc/fstab: static file system information.
2 #
3 # noatime turns off atimes for increased performance (atimes normally aren't
4 # needed); notail increases performance of ReiserFS (at the expense of storage
5 # efficiency). It's safe to drop the noatime options if you want and to
6 # switch between notail / tail freely.
7 #
8 # The root filesystem should have a pass number of either 0 or 1.
9 # All other filesystems should have a pass number of 0 or greater than 1.
10 #
11 # See the manpage fstab(5) for more information.
12 #
13
14 # <fs> <mountpoint> <type> <opts> <dump/pass>
15
16 # NOTE: If your BOOT partition is ReiserFS, add the notail option to opts.
17 UUID=5f7c7e13-2a46-4ae4-a8c0-f77f84e80900 / ext4 noatime 0 1
18 UUID=B66EAE686EAE215B /mnt/D/ ntfs errors=remount-ro
19
对应名称的UUID
/dev/sda2: UUID="5f7c7e13-2a46-4ae4-a8c0-f77f84e80900" TYPE="ext4" PARTUUID="000e21f3-02"
/dev/sda4: UUID="B66EAE686EAE215B" TYPE="ntfs" PARTUUID="000e21f3-04"
有人有一些想法吗?谢谢。
答案1
搞了几天终于明白了,是驱动问题造成的。我的 Gentoo 安装在我的外部硬盘中,通过 USB 电缆与我的笔记本电脑连接。但是,当我构建内核时,该USB Mass Storage Support
选项没有被屏蔽。因此,它总是以这种方式被阻止。如果有些与build-in
我,并且你确保你已经编译了所有引用的内容file system
,built-in
请检查以下选项是否built-in
在你的内核中。
Device Driver-->USB Support -->USB Mass Storage Support
Device Driver-->USB Support -->xHCI HCD (USB 3.0) support
Device Driver-->USB Support --> EHCI HCD (USB 2.0) support
Device Driver-->USB Support --> UHCI HCD (most Intel and VIA) support
Device Driver-->USB Support --> Support for Host-side USB
如果他们不这样做,请检查一下。
答案2
也许这是你的硬盘错误grub.cfg
bios=hd1,msdos2 --hint-efi=hd1,msdos2 --hint-baremetal=ahci1,msdos2
hd1,msdos2
等ahci1,msdos2
将指第二个磁盘。通常是第一个hd0,msdos1
安装 grub 的/dev/sda
检查这个grub-install --recheck /dev/sda
你的分区看起来像这样。 (在主设备上启动)
sudo parted -l
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sda: 107GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 103GB 103GB primary ext4 boot
2 103GB 107GB 4394MB extended
5 103GB 107GB 4394MB logical linux-swap(v1)
答案3
老实说,我认为最简单的方法就是制作一个通用内核。
我只是获取 Ubuntu 的内核配置,发出 a make oldconfig
,然后让我们genkernel --no-clean --menuconfig all
完成剩下的工作。
- 按照快速安装指南的指示显示内核。
- 获取通用内核配置:
1) 找到所需的文件。最新的内核版本基本上是:http://kernel.ubuntu.com/~kernel-ppa/configs/
2)wget -O /usr/src/linux/.config kernelconfigurl
- 跑步
make oldconfig
。如果您不知道如何回答这些问题,请按住“Enter”键。不,不会发生任何不好的事情,它将默认为默认答案,无论如何,这都是您应该在通用内核中选择的答案。 - 使用 运行 genkernel
genkernel --no-clean --menuconfig all
。在菜单中,您可以根据需要进行修改,或者直接退出。安装将开始。 - 使用以下命令生成 GRUB 配置
grub-mkconfig -o /boot/grub/grub.cfg
这个内核将包含几乎所有模块等等。所以你插入的所有东西都会起作用。一些 Unix 老手对通用内核不以为然。如果您运行 Ubuntu、Fedora 或基本上任何发行版 - 您使用的是通用内核。
你想制作一个最小的内核而不弄乱吗?
没问题。启动该内核后,只需插入您需要的所有设备即可。完成后,进入/usr/src/linux
并发出make localmodconfig
。太棒了,现在你有了一个只包含你需要的东西的内核。使用 genkernel 编译新的简约版本并以相同的方式安装。
祝你好运。
答案4
对我来说,GRUB 正在搜索LABEL=FUNTOO
,并且/dev/sda3
在提示符下输入 isolinux 提示符或暂时编辑 GRUB 引导选项(参数real_root
)以使其起作用,因此解决方案是将我的/dev/sda3
分区标记为FUNTOO
。