LINUX.ORG.RU

Отсутствие /dev/sd* устройств в initrd

 , ,


0

0

Не грузится Archlinux, при загрузке выводится сообщение

ERROR: device 'sda1' not found. Skipping fsck.
ERROR: Unable to find root divice 'sda1'
И переходит в рекавери шел.

ls -l /dev/sd* говорит что ничего не найдено

Пробовал chroot'иться, обновлять систему и пересоздавать initrd.

Хуки в mkinitcpio.conf

HOOKS="base udev autodetect modconf block filesystems keyboard fsck"
Пересоздание initrd проходит успешно.
ArchLinux / :( $ mkinitcpio -p linux
==> Building image from preset: /etc/mkinitcpio.d/linux.preset: 'default'
  -> -k /boot/vmlinuz-linux -c /etc/mkinitcpio.conf -g /boot/initramfs-linux.img
==> Starting build: 3.17.2-1-ARCH
  -> Running build hook: [base]
  -> Running build hook: [udev]
  -> Running build hook: [autodetect]
  -> Running build hook: [modconf]
  -> Running build hook: [block]
  -> Running build hook: [filesystems]
  -> Running build hook: [keyboard]
  -> Running build hook: [fsck]
==> Generating module dependencies
==> Creating xz-compressed initcpio image: /boot/initramfs-linux.img
==> Image generation successful
==> Building image from preset: /etc/mkinitcpio.d/linux.preset: 'fallback'
  -> -k /boot/vmlinuz-linux -c /etc/mkinitcpio.conf -g /boot/initramfs-linux-fallback.img -S autodetect
==> Starting build: 3.17.2-1-ARCH
  -> Running build hook: [base]
  -> Running build hook: [udev]
  -> Running build hook: [modconf]
  -> Running build hook: [block]
==> WARNING: Possibly missing firmware for module: aic94xx
==> WARNING: Possibly missing firmware for module: smsmdtv
  -> Running build hook: [filesystems]
  -> Running build hook: [keyboard]
  -> Running build hook: [fsck]
==> Generating module dependencies
==> Creating xz-compressed initcpio image: /boot/initramfs-linux-fallback.img
==> Image generation successful

В какую сторону мне начать копать?

★★★★★

Последнее исправление: cetjs2 (всего исправлений: 1)

В сторону драйверов контроллера SATA. Видимо они в ядреном модуле, который в initrd не попал почему-то. Либо если RAID => смотри в сторону mdadm, возможна та же фигня.

Kiborg ★★★
()
Ответ на: комментарий от Kiborg

Либо если RAID

Ни каких извращений, просто mbr, первый раздел на диске.

драйверов контроллера SATA

Нет под рукой ни какой хаутушки?

Для справки: пробовал запускать на 2х различных системах, сейчас мучаю в qemu. Запускаю так qemu-system-x86_64 -hda /dev/sdd.

Behem0th ★★★★★
() автор топика
Ответ на: комментарий от Behem0th

Проблему можно решить заменой рачекактуса на нормальный дистрибутив.

pedobear
()

А загружаешься ты как? Без initramfs работает или вообще никак не работает?

Попробуй хуки «sata» и «scsi». Ещё попробуй убрать «autodetect» или (что то же самое) грузиться с помощью fallback-образа (который /boot/initramfs-linux-fallback.img).

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от Behem0th

Не, это исключительно собственный опыт сборки initrd, причем не на арче а в opensuse, но потом от этой идеи удалось отказаться.

В целом для того, чтобы примонтировать раздел, как я себе это представляю, нужно: 1. драйвер контроллера дисков, 2. драйвер дисковой подсистемы (ide/sata/scsi/usb) 3. драйвер дискового устройства (он в ядро обычно вшит, наверное, а может я вообще гоню насчет этого, но ядро ведь как-то должно узнавать параметры диска типа размера блока и т. п.) 4. драйвер разметки диска (mbr/gpt/etc, хз, сделано ли это отдельным драйвером), 5. драйвер файловой системы.

В данном случае до пункта 3 не доходим, т. к. /dev/sda отсутствует. А из загруженной системы lspci -vvv если посмотреть, какой модуль отвечает за sata контроллер? Точно ли AHCI? А то ведь еще бывает, что в биосе режим SATA = IDE compatible, и тут надо вообще другие драйвера грузить...

Kiborg ★★★
()

Всем спасибо за советы. Проблему решил скинув initramfs образы из рабочей системы. После этого удалось загрузиться с этого диска и уже оттуда сделать mkinitcpio -p linux. Почему это не работало с chroot'а остается загадкой.

PS. Также выяснилось что я не умею пользоваться qemu. Так как qemu-system-x86_64 -hda /dev/sdd так и не грузится система.

Behem0th ★★★★★
() автор топика
Ответ на: комментарий от intelfx

Попробуй хуки «sata» и «scsi»

mkinitcpio -L говорит что они deprecated in favor of 'block'

убрать «autodetect»

А вот это стоило попробовать.

Behem0th ★★★★★
() автор топика
Ответ на: комментарий от lampslave

Да, монтировал вот так.

mount /dev/sdd1 store
mount --bind /dev store/dev
mount --bind /dev/pts store/dev/pts
mount --bind /proc store/proc
mount --bind /sys store/sys

Behem0th ★★★★★
() автор топика
Ответ на: комментарий от intelfx

Да с новым.

Выбери fallback-вариант при загрузке.

В fallback режиме загрузилось. Судя по всему проблема как раз в autodetect. Пересобрал initcpio на этом ноуте и обычный режим заработал.

Спасибо за советы.

Behem0th ★★★★★
() автор топика
Ответ на: комментарий от Behem0th

Тогда это не проблема. «autodetect» значит «собрать initcpio под текущее железо (текущий набор модулей)».

Соответственно, если на исходной машинке что-то экзотическое (а не AHCI), то её initcpio ни к чему другому не подойдёт, равно как и наоборот.

intelfx ★★★★★
()
Ответ на: комментарий от intelfx

это не проблема

Согласен. fallback при смене железа. Виной всему мое незнание того факта что fallback отличается отсутствием autodetect в хуках и соответственно наличием всех модулей.

Behem0th ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.