Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[solved] initramfs on lvm fails, no output
View unanswered posts
View posts from last 24 hours

Goto page Previous  1, 2  
Reply to topic    Gentoo Forums Forum Index Gentoo on AMD64
View previous topic :: View next topic  
Author Message
Desulate
n00b
n00b


Joined: 22 May 2019
Posts: 24
Location: Canada

PostPosted: Mon Oct 28, 2019 5:42 pm    Post subject: Reply with quote

Hello again Neddy :D

NeddySeagoon wrote:

You have a choice of four controllers for your root filesystem.
Code:
Non-Volatile memory controller [0108]: Samsung electronics co Ltd NVMe SSD Controller SM961/PM961 [144d:a804]
SATA controller [0106]: Advanced Micro Devices, inc. [AMD] x370 Series Chipset SATA Controller [1022:43b5] (rev 02)
SATA controller [0106]: ASMedia Technology Inc. ASM1062 Serial ATA controller [1b21:0612 (rev 02)
SATA controller [0106]: Advanced Micro Devices, inc. [AMD] FCH SATA Controller [AHIC mode] [1022:7901] (Rev 51)

From your other posts, it looks like its on NVME.


Yeah I have my root logical volume on my 960 EVO 1TB M.2 NVMe SSD. I have my swap logical volume on the HDD and the home logical volume spanning the rest of the remaining space on the two block devices minus the space it would take to set up a cache on the nvme or a snap on the HDD should I choose to later.

I also have two SSDs - sda and sdb - which are not being used yet, they are spare drives to install a backup distro later once I've completed the gentoo install. I have a optical drive installed in my system as well.

here is my lsblk:
Code:

NAME                         MAJ:MIN       RM     SIZE  RO   TYPE   MOUNTPOINT
loop0                         7:0          0    331.7M  1    loop     
sda                           8:0          0    111.8G  0    disk
sdb                           8:16         0    111.8G  0    disk
sdc                           8:32         0      3.7T  0    disk
`-sdc1                        8:33         0      3.7T  0    Part
     |-lvm-lv--swap         252:0          0       20G  0     lvm   [SWAP]
     `-lvm-lv--home         252:2          0      4.3T  0     lvm   /home
sdd                            8:48        1     14.3G  0    disk
|-sdd1                         8:49        1      350M  0    part
`-sdd2                         8:50        1      6.3M  0    part
sr0                           11:0         1     1024M  0     rom
nvme0n1                      259:0         0    931.5G  0    disk
|-nvme0n1p1                  259:1         0        2M  0    part
|-nvme0n1p2                  259:2         0      601M  0    part   /boot
`-nvme0n1p3                  259:3         0    930.9G  0    part
    |-lvm--root              252:1         0      100G  0     lvm   /
    `-lvm--home              252:1         0      4.3T  0     lvm   /home




NeddySeagoon wrote:

post....
Do you have one of those boards?

No I use the ASrock x370 and its not mentioned. ASrock boards are known to be similar to ASUS boards though since ASrock
was once a child company under ASUS before they split.



When using the grep string you posted to check the kernel this is the output I received:

Code:
cd /usr/src/linux
grep -A16 -B4 "== 0x144d" drivers/nvme/host/pci.c

Code:

static unsigned long check_vendor_combination_bug(struck pci_dev *pdev)
{
          if (pdev->vendor == 0x144d && pdev->device == 0xa802) {
                   /*
                    * Several Samsung devices seem to drop off the PCIe bus
                    * randomly when APST is on and uses the deepest sleep state.
                    * This has been obvserved on samsung "SM951 NVMe SAMSUNG
                    * 256GB", a "PM951 NVMe SAMSUNG 512GB", and a "Samsung SSD
                    * 950 PRO 256GB", but it seems restricted to Dell laptops.
                   /*
                   if (dmi_match(DMI_SYS_VENDOR, "Dell Inc.") &&
                        (dmi_match(DMI_PRODUCT_NAME, "XPS 15 9550") ||             
                          (dmi_match(DMI_PRODUCT_NAME, "Precision 5510")))
                              return NVME_QURK_NO_DEEPEST_PS;
            } else if (pdev->vendor == 0x144d && pdev->device == 0xa804) {
                   /*
                    * Samsung SSD 960 EVO drops off the PCIe bus after system
                    * suspend on a Ryzen board, ASUS PRIME B350-A, as well as
                    * within a few minutes after bootup on a Coffee Lake board -
                    *  ASUS PRIME Z370-A
                   /*
                   if (dmi_match(DMI_BOARD_VENDOR, "ASUSTeK COMPUTER INC.") &&
                        (dmi_match(DMI_BOARD_NAME, "PRIME B350-A") ||             
                          (dmi_match(DMI_BOARD_NAME, "PRIME Z370-A")))
                              return NVME_QURK_NO_APST;
            }
           
            return 0;
}


Do you think its APST issue??
Back to top
View user's profile Send private message
NeddySeagoon
Administrator
Administrator


Joined: 05 Jul 2003
Posts: 54096
Location: 56N 3W

PostPosted: Mon Oct 28, 2019 7:38 pm    Post subject: Reply with quote

Desulate,

As you have other block devices installed but the kernel cannot see any of them don't think its a NVME_QURK_NO_APST issue.
That can only apply to your NVMe. Your SATA drives are just that and they are not seen either.

To read a block device at all, you need all the layers of the SCSI cake. Looking at your kernel again.

Code:
CONFIG_BLOCK=y

CONFIG_MSDOS_PARTITION=y
CONFIG_EFI_PARTITION=y

CONFIG_NVME_CORE=y
CONFIG_BLK_DEV_NVME=y

# CONFIG_IDE is not set
CONFIG_SCSI=y
CONFIG_BLK_DEV_SD=y
CONFIG_BLK_DEV_SR=y
ONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=y
is all good stuff.

CONFIG_SCSI_LOWLEVEL=y is not required for any devices it your lspci. Its just kernel bloat but is otherwise harmless.

Code:
CONFIG_ATA=y
CONFIG_SATA_AHCI=y
with the above, that should make your SATA devices work.

Turn off
Code:
CONFIG_ATA_VERBOSE_ERROR=y
as it generates lots of logspam that is only useful to kernel developers.

Try turning off
Code:
CONFIG_SATA_AHCI_PLATFORM=y
I have two systems with identical AMD chipsets.
One only works if that is on the other if its off. I have no idea why.

Right now, its an improvement it we can get

Code:
!!Block device /dev/mapper/lvm-lv--root is not a valid root device...
!!could not find the root block device in
<list_of_block_devices>.


When you post back, please pastebin your newest kernel .config.
_________________
Regards,

NeddySeagoon

Computer users fall into two groups:-
those that do backups
those that have never had a hard drive fail.
Back to top
View user's profile Send private message
Desulate
n00b
n00b


Joined: 22 May 2019
Posts: 24
Location: Canada

PostPosted: Mon Oct 28, 2019 8:33 pm    Post subject: Reply with quote

here is the new kernel config I'll try booting with the changes right now.
Back to top
View user's profile Send private message
Desulate
n00b
n00b


Joined: 22 May 2019
Posts: 24
Location: Canada

PostPosted: Mon Oct 28, 2019 8:46 pm    Post subject: Reply with quote

I'm still getting the:

Code:

root block device() :: !! Could not find the root block device in .
!! Please specify another value or:
!! - Press Enter key for the same
!! - type "shell" for shell
!! - type "q" to skip


neither pressing the "enter" key or "q" key do anything but continue with the same prompt.
The "shell" drops me into a shell that is unaware of any commands.


I scrolled up to look at the logs before the prompt and there are logs indicating sda, sdb, sdc, sdd and the CDrom drive but theres nothing at all relating to the nvme - aka: nvme0n1, ect, ect. There is also no mention of any lvm related terminology.
Back to top
View user's profile Send private message
NeddySeagoon
Administrator
Administrator


Joined: 05 Jul 2003
Posts: 54096
Location: 56N 3W

PostPosted: Mon Oct 28, 2019 11:18 pm    Post subject: Reply with quote

Desulate,

lvm is a layer on top of some other block device. In your case, NVMe. If the underlying block device does not appear, then you wont see any mention of LVM.

I'm surprised that the log mentions sda, sdb, sdc, sdd and the CDrom but the kernel says
Code:
root block device() :: !! Could not find the root block device in .
Thats an empty list still.

The shell is busybox. The initrd shell is normally called by something like
Code:
rescue_shell() {
    echo "$@"
    echo "Something went wrong. Dropping you to a shell."
# have time to read the message
    /bin/sleep 20
    /bin/busybox --install -s
    exec /bin/sh
}


Code:
/bin/busybox --install -s

writes all the symlinks that point to busybox to give you your commands.
In a normal install, this is a bad thing. You don't want the full tar command being overwritten by a symlink to busybox, etc.

You can either run
Code:
/bin/busybox --install -s
as your first command or prefix every command with busybox.
e.g.
Code:
busybox ls /dev

You may need the full path if your PATH environment variable is not yet set.
Code:
/bin/busybox ls /dev


If you give the busybox command alone, it will tell you what commands it knows.

Its will be interesting to see what sd* entries you have in /dev and if there are any nvme entries there.
I don't have NVMe yet so I'm at the end of my knowledge.
_________________
Regards,

NeddySeagoon

Computer users fall into two groups:-
those that do backups
those that have never had a hard drive fail.
Back to top
View user's profile Send private message
Desulate
n00b
n00b


Joined: 22 May 2019
Posts: 24
Location: Canada

PostPosted: Mon Oct 28, 2019 11:34 pm    Post subject: Reply with quote

from the shell
Code:
busybox ls /dev

returns
Code:

bsg
bus
console
cpu
cpu_dma_latency
cuse
disk
efi_capsule_loader
efi_test
fb0
full
fuse
hwring
input
kmsg
mapper
mdev.seq
mem
memory_bandwidth
network_latency
network_throughput
null
nvme-fabrics
nvme0
nvme0n1
nvme0n1p1
nvme0n1p2
nvme0n1p3
port
pps0
ptmx
ptp0
pts
random
rfkill
sda
sda1
sda2
sdb
sdc
sdd
sdd1
sg0
sg1
sg2
sg3
sg4
snd
sr0
uhid
uinput
uleds
urandom
usbmon0
usbmon1
usbmon2
usbmon3
usbmon4
vcs
vcs1
vcsa
vcsa1
vcsu
vcsu1
vga_arbiter
vhci
zero

- many ptya* and ttye* -


so apparently it is seeing them but something is going wrong.
Back to top
View user's profile Send private message
NeddySeagoon
Administrator
Administrator


Joined: 05 Jul 2003
Posts: 54096
Location: 56N 3W

PostPosted: Mon Oct 28, 2019 11:55 pm    Post subject: Reply with quote

Desulate,

Check that list carefully. Are all the nvme* and sd* entries you expect to see there?

Maybe /dev isn't yet populated when the kernel goes to mount root.
As a test, at the grub menu, select the entry you want to boot the press 'e' for edit.
Append rootdelay=10 to the kernel command line. Then boot.

When the kernel goes to mount root, it will pause for 10 seconds before proceeding.
Other things will continue as normal.

In the rescue shell ...
If boot fails, what do you have in /dev/mapper ?
Your volume groups should be listed there.

You should have the file /init or /sbin/init. That's the startup script. Read it.
Can you execute its version of
Code:
/sbin/vgchange -ay vg
where vg is the name of the volume group you want to start?
You may need
Code:
/sbin/lvm vgchange -ay vg
if you are missing the
vgchange -> lvm symlink.

Does vgdisplay list the volume groups you expect?

This is my last post tonight, Its almost midnight where I am.
_________________
Regards,

NeddySeagoon

Computer users fall into two groups:-
those that do backups
those that have never had a hard drive fail.
Back to top
View user's profile Send private message
Desulate
n00b
n00b


Joined: 22 May 2019
Posts: 24
Location: Canada

PostPosted: Thu Nov 14, 2019 9:18 pm    Post subject: Reply with quote

Hey I'm back just needed a break lol.

I could see all the logical volumes in /dev so that wasn't the issue.

The root delay didn't help. Eventually I re-installed just to make sure it wasn't some sort of weird conflict with the lvm naming conventions I chose, it wasn't so that was a waste of time.

I've tried using the vgchange -ay vg which didn't help, after I even tried a custom initramfs script with that command in it but it didn't work.

Eventually I managed to find someone with the exact same output and issues who said I should:

Quote:
Disable udev dependency by including a minimal /etc/lvm/lvm.conf in the initramfs


As seen here, the fourth option for lvm in the custom initramfs section

Code:
/usr/src/initramfs/etc/lvm/lvm.conf Disable udev in lvm.conf

Code:
devices {
    # Disable scanning udev for md/multipath components.
    # This is required with recent versions of lvm2, even if you use another solution for
    # your LV device nodes; without it lvm commands will stall for minutes waiting for udev.
    multipath_component_detection = 0
    md_component_detection = 0
}
activation {
    # Set to 0 to disable udev synchronisation (if compiled into the binaries).
    udev_sync = 0
    # Set to 0 to disable the udev rules installed by LVM2
    udev_rules = 0
}
Back to top
View user's profile Send private message
NeddySeagoon
Administrator
Administrator


Joined: 05 Jul 2003
Posts: 54096
Location: 56N 3W

PostPosted: Thu Nov 14, 2019 9:31 pm    Post subject: Reply with quote

Desulate,

I don't have udev in my initrd, so it can't get in the way.
_________________
Regards,

NeddySeagoon

Computer users fall into two groups:-
those that do backups
those that have never had a hard drive fail.
Back to top
View user's profile Send private message
Whissi
Retired Dev
Retired Dev


Joined: 12 Jan 2011
Posts: 222

PostPosted: Sun Nov 24, 2019 10:44 pm    Post subject: Reply with quote

Please try genkernel-4! When you build with ssh support, i.e. run genkernel with "--ssh" parameter and start system with "dosshd gk.sshd.wait=10" you can ssh into initramfs and view log in /tmp/init.log.
_________________
Regards,
Whissi
Back to top
View user's profile Send private message
Desulate
n00b
n00b


Joined: 22 May 2019
Posts: 24
Location: Canada

PostPosted: Tue Dec 10, 2019 7:33 pm    Post subject: Reply with quote

No idea how but I eventually managed to get it working..... well I haven't tested it with amdgpu enabled again yet, but I can boot to a working system otherwise at the moment.

The things I was modifying right before I eventually got it to work today were:

1) Manually editing the /etc/genkernel.conf by hand.

2) Pre-loading the lvm module as well as using 'dolvm' in grub2.
Back to top
View user's profile Send private message
Whissi
Retired Dev
Retired Dev


Joined: 12 Jan 2011
Posts: 222

PostPosted: Wed Dec 11, 2019 3:22 pm    Post subject: Reply with quote

Glad that you sorted your problem.

FYI: When generating the genkernel initramfs with "--lvm", passing "dolvm" on boot as kernel command-line parameter is enough and will take care of loading required modules.
_________________
Regards,
Whissi
Back to top
View user's profile Send private message
Desulate
n00b
n00b


Joined: 22 May 2019
Posts: 24
Location: Canada

PostPosted: Wed Dec 11, 2019 11:22 pm    Post subject: Reply with quote

Whissi wrote:
Glad that you sorted your problem.


I just wanted to leave a final post thanking you for dropping into the forum Whissi, Its very much appreciated.

I'd also like to thank Neddy and everyone else who took the time tried to help me track down the issue.
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Gentoo on AMD64 All times are GMT
Goto page Previous  1, 2
Page 2 of 2

 
Jump to:  
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