View previous topic :: View next topic |
Author |
Message |
qspec n00b
Joined: 07 Jun 2016 Posts: 8
|
Posted: Thu Nov 24, 2016 3:37 am Post subject: "Could not find the root block device in ." in ESP |
|
|
Kind of a weird problem that will certainly show my ignorance on all of this:
I have an ESP from my Windows partition on "/dev/sda2".
I wanted to keep parity with the Windows boot, so I moved my kernel and initramfs.img to Code: | /boot/efi/EFI/gentoo/ | .
In so doing, when I boot up (using rEFInd on a USB... I don't have a boot manager yet) I get the following:
Code: |
!! Could not find the root block device in .
!! Please specify another value or:
!! - press Enter for the same
!! - type "shell" for a shell
!! - type "q" to skip...
root block device() ::
|
I could type "/dev/sdb2" (which is where my root partition is), and everything would boot up fine and seemed to work without a hitch.
So out of frustration, I moved my kernel and initramfs back to "/boot" and voila! everything works as expected. Does anyone know why? I am not married to keeping my kernel in the ESP, but now I'm determined to know why in the hell it won't work.
Related, I would get a kernel panic when I first booted because I skipped the initramfs step. The install guide kind of made it sound optional and only necessary in specific situations. Is that no longer the case? Or am I unwittingly in one of those specific situations? |
|
Back to top |
|
|
NeddySeagoon Administrator
Joined: 05 Jul 2003 Posts: 54237 Location: 56N 3W
|
Posted: Thu Nov 24, 2016 11:18 am Post subject: |
|
|
qspec,
Code: | !! Could not find the root block device in . | Tells that the kernel loaded could not reach any block devices.
As it works when you move the kernel back, I guess the block device drivers are made as modules.
You need to move the kernel and initrd around together.
The initrd is just a small temporary root filesystem. Its intended to support mounting the real root filesystem.
However, if your kernel can mount the root filesystem with out any outside help, the intramd is not required.
Clearly, your kernel is not made that way at the moment. _________________ Regards,
NeddySeagoon
Computer users fall into two groups:-
those that do backups
those that have never had a hard drive fail. |
|
Back to top |
|
|
qspec n00b
Joined: 07 Jun 2016 Posts: 8
|
Posted: Thu Dec 01, 2016 5:15 am Post subject: |
|
|
NeddySeagoon wrote: | qspec,
Code: | !! Could not find the root block device in . | Tells that the kernel loaded could not reach any block devices.
As it works when you move the kernel back, I guess the block device drivers are made as modules.
You need to move the kernel and initrd around together.
The initrd is just a small temporary root filesystem. Its intended to support mounting the real root filesystem.
However, if your kernel can mount the root filesystem with out any outside help, the intramd is not required.
Clearly, your kernel is not made that way at the moment. |
Neddy, I appreciate the response.
What section in the kernel compile set-up would I find block devices? I don't recall adding anything as a module (I tried to keep it as simple as possible for my first time). I'll see about going through menuconfig again to see if I missed something (which it would seem that I obviously did). |
|
Back to top |
|
|
NeddySeagoon Administrator
Joined: 05 Jul 2003 Posts: 54237 Location: 56N 3W
|
Posted: Thu Dec 01, 2016 12:18 pm Post subject: |
|
|
qspec,
Unfortunately, its not that simple.
When you run lspci, it will list your hardware, including your block device driver hardware.
Kernel options need to be selected to match that.
I have Code: | 00:11.0 SATA controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 SATA Controller [AHCI mode]
00:14.1 IDE interface: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 IDE Controller | You may have several of both.
Unless you know where the hard drive containing your root filesystem is attached, you need them all.
However, it used to work before the move, so the kernel and initrd are OK together as as pair.
Is the initrd actually being loaded from its new location? _________________ Regards,
NeddySeagoon
Computer users fall into two groups:-
those that do backups
those that have never had a hard drive fail. |
|
Back to top |
|
|
DONAHUE Watchman
Joined: 09 Dec 2006 Posts: 7651 Location: Goose Creek SC
|
Posted: Thu Dec 01, 2016 3:00 pm Post subject: |
|
|
when you select the kernel in refind and hit enter you should get a black screen with two or three white lines of info that should define the chosen kernel, the kernel cmdline options, and initrd=/path/filename. You only get a second to read it. It may be worthwhile to capture this output with a camera and see if it makes sense.
BTW I find the lowest maintenance solution to be keeping the kernel at /boot; using make && make modules_install && make install to create a manually configured efi stub kernel, and allowing rEFInd to expand the list of available kernels as I make new ones. As whim dictates, deleting surplus kernels from /boot, the world file, and from /usr/src. _________________ Defund the FCC. |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|