/dev/root: Can't open blockdev

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

Shushandr
Сообщения: 88
ОС: Gentoo

/dev/root: Can't open blockdev

Сообщение Shushandr »

Не загружается машина (после попытки обновления конфигурации ядра).
Скриншот я приложил в конце в файле `no_blockdev.png`

Разметка диска выглядит так:
livecd ~ # fdisk /dev/vda

Welcome to fdisk (util-linux 2.39.3).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

This disk is currently in use - repartitioning is probably a bad idea.
It's recommended to umount all file systems, and swapoff all swap
partitions on this disk.


Command (m for help): p

Disk /dev/vda: 100 GiB, 107374182400 bytes, 209715200 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: FAF168F6-2AED-40C2-91A5-D06E0A8F207D

Device Start End Sectors Size Type
/dev/vda1 2048 8390655 8388608 4G EFI System
/dev/vda2 8390656 209713151 201322496 96G Linux filesystem

Command (m for help): q
В выводе blkid видно, что /dev/vda2 размечен в файловую систему ext4:
livecd ~ # blkid
/dev/sr0: BLOCK_SIZE="2048" UUID="2024-05-05-18-47-55-00" LABEL="Gentoo amd64 20240505T170430Z" TYPE="iso9660" PTTYPE="PMBR"
/dev/loop0: BLOCK_SIZE="131072" TYPE="squashfs"
/dev/vda2: UUID="4ab0d80b-8236-40b9-b9d2-95ebdb96100b" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="Linux filesystem" PARTUUID="ff6b0957-d60b-46bb-9406-b84ab12544e7"
/dev/vda1: UUID="3040-3197" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="db9ad88c-fd3e-4b61-8b22-cc910dab5121"
Файл grub.cfg (часть его) выглядит так:
ivecd ~ # grep -C3 "linux" /boot/grub/grub.cfg
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/10_linux ###
menuentry 'Gentoo GNU/Linux' --class gentoo --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-4ab0d80b-8236-40b9-b9d2-95ebdb96100b' {
load_video
insmod gzio
insmod part_gpt
insmod fat
search --no-floppy --fs-uuid --set=root 3040-3197
echo 'Loading Linux 6.6.32-gentoo-dist ...'
linux /kernel-6.6.32-gentoo-dist root=/dev/vda2 ro
}
submenu 'Advanced options for Gentoo GNU/Linux' $menuentry_id_option 'gnulinux-advanced-4ab0d80b-8236-40b9-b9d2-95ebdb96100b' {
menuentry 'Gentoo GNU/Linux, with Linux 6.6.32-gentoo-dist' --class gentoo --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-6.6.32-gentoo-dist-advanced-4ab0d80b-8236-40b9-b9d2-95ebdb96100b' {
load_video
insmod gzio
insmod part_gpt
insmod fat
search --no-floppy --fs-uuid --set=root 3040-3197
echo 'Loading Linux 6.6.32-gentoo-dist ...'
linux /kernel-6.6.32-gentoo-dist root=/dev/vda2 ro
}
menuentry 'Gentoo GNU/Linux, with Linux 6.6.32-gentoo-dist (recovery mode)' --class gentoo --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-6.6.32-gentoo-dist-recovery-4ab0d80b-8236-40b9-b9d2-95ebdb96100b' {
load_video
insmod gzio
insmod part_gpt
insmod fat
search --no-floppy --fs-uuid --set=root 3040-3197
echo 'Loading Linux 6.6.32-gentoo-dist ...'
linux /kernel-6.6.32-gentoo-dist root=/dev/vda2 ro single
}
}

### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/20_linux_xen ###
### END /etc/grub.d/20_linux_xen ###

### BEGIN /etc/grub.d/25_bli ###
if [ "$grub_platform" = "efi" ]; then
На livecd не работает emerge (отсутствует). А после выполнения arch-chroot /mnt/gentoo не работает emerge, потому что не видна директория /var/db/repos/gentoo (на livecd нет модуля 9p, а часть директорий виртуальной машины была смонтирована с основной машины). Старое ядро я по-неаккуратности стёр (чтобы получить более "чистый" конфиг grub).
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Shushandr 29.06.2024 23:13, всего редактировалось 2 раза.
Спасибо сказали:
Shushandr
Сообщения: 88
ОС: Gentoo

Re: Сломал то-ли ядро, то-ли ещё что-то, не грузится теперь...

Сообщение Shushandr »

В частности мне непонятно, куда девается initramfs, которой должен быть сгенерирован при помощи dracut. Как отдельного файла в директории /boot его нет.
...
dracut[D]: Image: /var/tmp/portage/sys-kernel/gentoo-kernel-6.6.32/temp/dracut.vmwfK6/initramfs.img: 53M
dracut[D]: ========================================================================
dracut[D]: Version: dracut-060
dracut[D]:
dracut[D]: Arguments: -f --verbose --kernel-image '/usr/src/linux-6.6.32-gentoo-dist/arch/x86/boot/bzImage' --uefi --kver '6.6.32-gentoo-dist'
...
То, что старого ядра нет, это, в принципе, не должно быть большой проблемой, я же могу загрузиться с Gentoo AdminCD. То, что директории не монтируются это проблема, но не для сборки ядра, я могу сделать копию дерева portage и таки запустить emerge (потом надо не забыть стереть). Так что я могу собрать ядро ещё раз и могу выполнить сборку initramfs при помощи emerge --config. Только вот это не помогает.

Также, я скопировал версию конфига 6.6.28 в 6.6.32, пересобрал пакет, перезагрузился, но система не загружается. Т.е. (наверное) проблема не в том, что я что-то не так сконфигурировал в ядре?

Скомпилировать версию sys-kernel/gentoo-kernel-6.6.28 я не могу, потому что её уже удалили из дерева (т.е. надо выкапывать её из git, делать локальный репозиторий, и т.д., сложно)

Удалил все конфиги, размаскировал и собрал версию 5.10.220, установил, не грузится...
Т.е. скорее всего дело не в ядре, а в том, что я делаю что-то не так.
Спасибо сказали:
Shushandr
Сообщения: 88
ОС: Gentoo

Re: /dev/root: Can't open blockdev

Сообщение Shushandr »

https://bbs.archlinux.org/viewtopic.php?pid=2085539#p2085539
"Can't open blockdev" is a generic error, you get it whenever whatever tried to load a filesystem superblock, fails to get a READ|WRITE|EXCL handle on the block device.

The actual cause for that error is then simply passed along to be interpreted by the caller. So the "Can't open blockdev" message itself does not tell you the reason.

I.e. when you get this message then something else is going on before it, while the actual error message follows it. And that's when you check your logs.
https://gentoo.ru/node/27299#comment-202805
CONFIG_SATA_AHCI=m монолитно в ядро
ду, у меня стоит "y"

https://ru.stackoverflow.com/questions/1433334
CONFIG_VIRTIO_BLK=y
нет, у меня "=m", сейчас буду пересобирать.

Пересобрал. Теперь работает (загружается).

Но это всё равно не ответ на вопрос, где initramfs теряется в моём процессе обновления.
Спасибо сказали: