找不到根块设备(在 Gentoo 中)

找不到根块设备(在 Gentoo 中)

   有一些琐碎的麻烦总是困扰着我。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 systembuilt-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,msdos2ahci1,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

相关内容