[Решено] Не видит SSD при загрузке

Купил новый ноут с SSD-диском. Ставлю Arch. В качестве загрузчика использую стандартный bootctl install

Конфиг:
title Arch Linux
linux /vmlinuz-linux
initrd /intel-ucode.img
initrd /initramfs-linux.img
options root=/dev/nvme0n1p2 rw

Разметка:
/dev/nvme0n1p1 - efi fat
/dev/nvme0n1p2 - root ext4
/dev/nvme0n1p3 - data home ext4

При загрузке он не видит жёсткого диска:

Waiting 10 seconds for device /dev/nvme0n1p2...
[2.139152] sd 2:0:0:0 [sda] No Caching mode page found
[2.139212] sd 2:0:0:0 [sda] Assuming drive cache: write through
ERROR device /dev/nvme0n1p2 not found. Skipping fsck
:: mounting /dev/nvme0n1p2 on real root
mount: /new_root: no filesystem type specified.
You are now being dropped into an emergency shell.
sh: can't access tty: job control turned off
[rootfs]# _

На прошлом ноуте эта схема работала. Но там был обычный HDD, поэтому не /dev/nvme, а /dev/sda. Какие-то особенности есть? Вики по NVMe читал, но ничего полезного не нашёл.
Где-то уже обсуждали надо или пересобрать initramfs с нужными модулями или перевести контролер nvme в achi. С большой долей вероятности вам это поможет.
Ошибки в тексте-неповторимый стиль автора©
YuraRimskiy
Разметка:
/dev/nvme0n1p1 - efi fat
/dev/nvme0n1p2 - root ext4
/dev/nvme0n1p3 - data home ext4
Где /boot ?
Для примера у меня в /boot:
/boot/EFI
/boot/loader
/boot/System Volume Information
/boot/initramfs-linux.img
/boot/initramfs-linux-fallback.img
/boot/intel-ucode.img
/boot/vmlinuz-linux 
И разметка:
beisic ~ $   lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda           8:0    0  29,5G  0 disk
└─sda1        8:1    0  29,5G  0 part
sdb           8:16   0 111,8G  0 disk
└─sdb1        8:17   0 111,8G  0 part
nvme0n1     259:0    0 232,9G  0 disk
├─nvme0n1p1 259:1    0   256M  0 part /boot
├─nvme0n1p2 259:2    0   231G  0 part /
└─nvme0n1p3 259:3    0   1,5G  0 part [SWAP] 
Всё прекрасно грузится с systemd-boot, в том числе есть выбор что загружать: archlinux или Microsoft.
YuraRimskiy
Конфиг:
Это файл в /boot/loader/entries/arch.conf
и файл /boot/loader/loader.conf:
timeout 5
default arch 
должен быть.
indeviral
Где-то уже обсуждали надо или пересобрать initramfs с нужными модулями или перевести контролер nvme в achi. С большой долей вероятности вам это поможет.
Нашёл две темы: Отвал namespace NVMe диска после обновления ядра и Не видит загрузчик (nvme) . Проблемы схожие, но решений там нет.

Гуглил про initramfs и модули, там всё для убунты в основном.

Сделал по аналогии в режиме arch-chroot:
в /etc/mkinitcpio.conf вписал MODULES=(nvme)
выполнил mkinitcpio -P

Ситуацию это не спасло. Тоже самое. Какие ещё модули или хуки можно вписать?
beisic
Где /boot ?

Бут - это /dev/nvme0n1p1

Содержимое /boot/
EFI
loader
initramfs-linux-fallback.img
initramfs-linux.img
intel-ucode.img
vmlinuz-linux

loader.conf:

default system
timeout 0
editor 1

system.conf:
title Arch Linux
linux /vmlinuz-linux
initrd /intel-ucode.img
initrd /initramfs-linux.img
options root=/dev/nvme0n1p2 rw

Схема прекрасно работает на старом ноуте, а на новом с SSD не хочет.
. Check whether the NVME drive is configured for RAID mode in your UEFI/BIOS and switch that to AHCI.

If you don't want to do that for e.g. Windows compat reasons or because the UEFI doesn't allow to change this, add MODULES=( vmd ) in your /etc/mkinitcpio.conf from the chroot and regenerate your kernel images with mkinitcpio -P
indeviral
Где-то уже обсуждали надо или пересобрать initramfs с нужными модулями или перевести контролер nvme в achi. С большой долей вероятности вам это поможет.
Попробовал AHCI. Перевёл в биосе Intel VMD Controller на disabled. Помогло. Всё грузится и работает.

Но это костыли какие-то. Мне не нравится. Просто режим совместимости включил. Полноценной поддержки SSD в Linux ещё нет? Они, вроде, не вчера появились.
YuraRimskiy
Мне не нравится.
То добавляйте модуль vmd тогда в инитрамс
vs220
То добавляйте модуль vmd тогда в инитрамс
То, что нужно. Сработало.
Благодарю.
 
Зарегистрироваться или войдите чтобы оставить сообщение.