Grub не может загрузиться с GPT RAID (перестал ждать корневое устройство)

Вопрос или проблема

У меня проблемы с загрузкой системы Debian 8, на которую я мигрировал корневой раздел с одного жесткого диска на RAID1 (mdraid).

При каждой загрузке появляется следующая ошибка grub:

Сдаюсь, ожидая корневое устройство. Общие проблемы:
 - Аргументы загрузки (cat /proc/cmdline)
   - Проверьте rootdelay= (ждала ли система достаточно долго?)
   - Проверьте root= (ждала ли система нужное устройство?)
 - Отсутствующие модули (cat /proc/modules; ls /dev)
ALERT! /dev/disk/by-uuid/2ab18cb4-a23d-4e5c-b37d-cbd3077b878c не существует.
Переход в оболочку!
modprobe: модуль ehci-orion не найден в modules.dep

(initramfs)

/dev/md0 не запущен, поэтому он не может найти корневой раздел:

(initramfs) ls /dev/md*
ls: /dev/md*: Нет такого файла или каталога
(initramfs)

Однако я могу вручную запустить raid без проблем:

(initramfs) mdadm --assemble --scan
mdadm: /dev/md0 был запущен с 2 дисками.
(initramfs) ls /dev/md*
/dev/md0

Система будет загружаться только если я вручную создам каталог /dev/disk/by-uuid и создам ссылку md0:

(initramfs) mkdir /dev/disk/by-uuid
(initramfs) ln -s /dev/md0 /dev/disk/by-uuid/2ab18cb4-a23d-4e5c-b37d-cbd3077b878c

Я надеюсь, кто-то сможет помочь мне разобраться, почему grub не запускает устройство md самостоятельно. Я искал в интернете и пробовал все, что мог найти, но не повезло. Я действительно запутался прямо сейчас.

Я хочу загрузиться через BIOS-legacy, а не через UEFI.

Единственные два подключенных жестких диска (SSD!) отформатированы с таблицей разделов GPT и имеют следующие разделы (точно такие же):

1      1049kB  2097kB  1049kB                     bios_grub
2      2150MB  12,9GB  10,7GB  ext4               raid

(grub-pc требует, чтобы первый раздел был загружен с дисков GPT)

Raid1 (метаданные v0.90) отформатирован непосредственно как ext4.

С помощью live-системы chroot я установил grub-pc на /dev/sda и /dev/sdb, изменил свой fstab, запустил update-grub и update-initramfs -u -k all.

blkid:

/dev/sda2: UUID="b59d3baf-346b-568d-03a2-8b26060640c5" TYPE="linux_raid_member" PARTUUID="0609ba5b-9065-41f8-80ed-6832e3236ec9"
/dev/sdb2: UUID="b59d3baf-346b-568d-03a2-8b26060640c5" TYPE="linux_raid_member" PARTUUID="24ee1040-02dd-4867-b4da-5be11d59bdcd"
/dev/md0: UUID="2ab18cb4-a23d-4e5c-b37d-cbd3077b878c" TYPE="ext4"
/dev/sda1: PARTUUID="df5161cf-b5b3-422c-9ed2-90a7750ac265"
/dev/sdb1: PARTUUID="7d20b55b-ba50-4187-b05e-ae1f18b21de3"

mdadm.conf содержит (только!) содержимое из mdadm --detail --scan:

ARRAY /dev/md0 metadata=0.90 UUID=b59d3baf:346b568d:03a28b26:060640c5

Вот выдержка из моего /boot/grub/grub.cfg:

load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod part_gpt
insmod diskfilter
insmod mdraid09
insmod ext2
set root="mduuid/b59d3baf346b568d03a28b26060640c5"
if [ x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint="mduuid/b59d3baf346b568d03a28b26060640c5"  2ab18cb4-a23d-4e5c-b37d-cbd3077b878c
else
  search --no-floppy --fs-uuid --set=root 2ab18cb4-a23d-4e5c-b37d-cbd3077b878c
fi
echo        'Загрузка Linux 3.16.0-4-amd64 …'
linux       /boot/vmlinuz-3.16.0-4-amd64 root=UUID=2ab18cb4-a23d-4e5c-b37d-cbd3077b878c ro  rootdelay=20
echo        'Загрузка начинающего Ramdisk …'
initrd      /boot/initrd.img-3.16.0-4-amd64

На самом деле это не grub делает, а initramfs. В Debian стандартная реализация initramfs находится в initramfs-tools пакете. То, что делает ваш initramfs, чтобы смонтировать корневую файловую систему, может зависеть от многих факторов, включая такие вещи, как установленные пакеты (пакеты могут добавлять сценарии-затворы для расширения функциональности initramfs) на момент последнего вызова update-initramfs и как они были настроены.

Поскольку проблема, похоже, в том, что ваши устройства mdraid не восстанавливаются, я подозреваю, что ваш пакет mdadm не был правильно настроен. Попробуйте сначала исправить это:

sudo dpkg-reconfigure mdadm

После этого initramfs должен обновиться автоматически.

Если это не исправит проблему, и как часть вашей миграции на программный RAID вы создали новую файловую систему, возможно, что ваш fstab содержит UUID старой файловой системы, который теперь больше не совпадает с новой файловой системой. Проверьте это:

grep $(blkid /dev/md0) /etc/fstab

Если это не произвело никаких результатов, отредактируйте /etc/fstab, чтобы заменить указанный там UUID для корневого устройства выводом blkid /dev/md0, и снова запустите update-initramfs.

Ответ или решение

Решение проблемы с загрузкой Debian 8 на GPT RAID

Ваша проблема с загрузкой системы Debian 8 после миграции корневого раздела на RAID1 (mdraid) может быть связана с несколькими факторами. Ошибка "Gave up waiting for root device" указывает на то, что ваша система не может найти корневое устройство во время загрузки. Ниже представлены возможные причины и шаги для их устранения.

1. Проверка конфигурации GRUB и Initramfs

Первое, что нужно сделать, это убедиться, что ваша конфигурация GRUB и initramfs верно настроена для работы с RAID.

Переустановка и конфигурация mdadm

Проблема может заключаться в том, что пакет mdadm не настроен должным образом. Попробуйте выполнить следующую команду:

sudo dpkg-reconfigure mdadm

Эта команда поможет переустановить и правильно сконфигурировать mdadm, после чего инициализируется обновление initramfs. Запустите:

sudo update-initramfs -u
Проверка UUID в fstab

Поскольку вы переместили корневую файловую систему на новый RAID-устройство, необходимо убедиться, что в файле /etc/fstab установлен правильный UUID. Выполните следующую команду для проверки:

blkid /dev/md0

Если команду не выводит UUID, который есть в fstab, вам нужно обновить fstab:

sudo nano /etc/fstab

И замените старый UUID новым, затем сохраните файл.

2. Настройка GRUB для Raid

В вашей конфигурации GRUB необходимо удостовериться, что вы используете правильные модули. Ваш файл grub.cfg выглядит нормально, поскольку он содержит модули mdraid09 и part_gpt. Однако, рекомендуем также вручную проверить и обновить конфигурацию GRUB с учетом установленных модулей:

sudo grub-install /dev/sda
sudo grub-install /dev/sdb
sudo update-grub

3. Настройки Initramfs

Initramfs — это та часть, которая загружается до основного ядра и отвечает за обнаружение и подключение различных файловых систем, в том числе RAID-массивов. Убедитесь, что в вашем файле конфигурации /etc/initramfs-tools/mdadm.conf содержатся правильные массивы:

ARRAY /dev/md0 metadata=0.90 UUID=b59d3baf:346b568d:03a28b26:060640c5

Если у вас другие RAID массивы, их также следует указать. После редактирования этого файла запустите:

sudo update-initramfs -u

4. Проблема с загрузкой

Убедитесь, что в вашем BIOS установлена правильная опция загрузки. Попробуйте сбросить настройки BIOS на заводские и заново установить приоритет загрузки на SSD диски.

Заключение

После выполнения вышеуказанных действий попробуйте перезагрузить систему. Эти шаги должны помочь устранить проблемы с загрузкой, которые связаны с вашим RAID1. Если проблемы продолжаются, возможно, потребуется детально изучить журналы загрузки или рассмотреть возможность восстановления системы с использованием live-CD для дальнейшего анализа проблемы.

Оцените материал
Добавить комментарий

Капча загружается...