grub2 ошибка диск ‘hd0,msdos1’ не найден, ls не показывает диск

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

Я много гуглил по этой проблеме. Я нашел это, но это не решило мою проблему. Другие решения предлагают мне переустановить grub (выполнить grub-install), что также не сработало.

Вот что я делаю: (моя версия grub 2.02)

  1. Я использую grub2-mkrescue, чтобы создать свой X.iso
  2. Я загружаю виртуальную машину VMWareWorkstation, на которой диск SATA 1.0GB, с X.iso
  3. Я устанавливаю X.iso на диск, детали:

3.1. Стираю /dev/sda, если на нем есть старые разделы: dd if=/dev/zero of=/dev/sda bs=1M count=1

3.2. Создаю 3 первичных раздела на /dev/sda в виде dev/sda1, sda2, sda3 (размер 100M, 30M и 70M), и переключаю sda1 в загрузочный

Disk /dev/sda: 1024 MB, 1073741824 bytes, 2097152 sectors
130 cylinders, 255 heads, 63 sectors/track
Units: sectors of 1 * 512 = 512 bytes

Device  Boot StartCHS    EndCHS        StartLBA     EndLBA    Sectors  Size Id Type
/dev/sda1 *  0,1,1       12,191,50           63     204862     204800  100M 83 Linux
/dev/sda2    12,191,51   16,147,2        204863     266302      61440 30.0M 83 Linux
/dev/sda3    16,147,3    25,127,37       266303     409662     143360 70.0M 83 Linux

3.3. Форматирую 3 раздела в ext2 и монтирую /dev/sda1

mkfs.ext2 /dev/sda1
mkfs.ext2 /dev/sda2
mkfs.ext2 /dev/sda3
ROOTFS_PATH=/var/.rootfs
mkdir $ROOTFS_PATH
mount /dev/sda1 $ROOTFS_PATH

3.4 Копирую файлы…

for i in bzImage initrd.img vmlinuz-*; do
    cp -rf /boot/$i $ROOTFS_PATH/boot
done
cp -f /boot/grub/device.map $ROOTFS_PATH/boot/grub/device.map
for i in init linuxrc; do
    cp -rf /$i $ROOTFS_PATH
done
for i in bin etc lib sbin share usr; do
    cp -a /$i $ROOTFS_PATH
done
for i in dev var proc sys tmp data log; do
    mkdir -p $ROOTFS_PATH/$i
done

3.5 Устанавливаю grub и создаю конфигурационный файл grub

chroot $ROOTFS_PATH <<EOF
mount -a
mdev -s
grub-install $tdisk
grub-install --recheck $tdisk
grub-mkconfig -o /boot/grub/grub.cfg
exit
EOF
  1. перезагрузите

Пишет:

.
error: disk 'hd0,msdos1' not found
Entering rescue mode...
grub rescue>

И самое странное, что команда ls ничего не показывает в командной строке grub-rescue —- как кто-то говорит, это должно показывать список дисков.

ошибка после перезагрузки

cp -f /boot/grub/device.map $ROOTFS_PATH/boot/grub/device.map

Итак, вы скопировали файл GRUB device.map из ISO-образа GRUB rescue на ваш диск? Это могло заставить grub-install ассоциировать идентификатор устройства GRUB hd0 с другим дисковым устройством, отличным от /dev/sda.

Перед выполнением grub-install убедитесь, что файл device.map действительно связывает hd0 с диском, на который вы устанавливаете GRUB (т.е. /dev/sda в вашем случае).

Также, зачем вы делаете все это? Похоже, вы пытаетесь создать образ VM с помощью grub2-mkrescue, который может быть использован для восстановления другой виртуальной машины, потерявшей загрузчик – это то, что вы планируете сделать? Если да, то простая загрузка проблемной виртуальной машины с помощью ISO-образа любой Live CD/DVD Linux дистрибуции даст вам более обширный набор инструментов и более удобную среду для решения вашей первоначальной проблемы, будь то отсутствующий загрузчик или что-то еще.

Если вам конкретно нужен grub2-mkrescue, вы уже имеете свой X.iso – зачем вы пытаетесь преобразовать его в установку на основе виртуального диска?

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

Чтобы решить проблему с ошибкой GRUB2 "диск ‘hd0,msdos1’ не найден" и отсутствием отображаемых дисков в GRUB Rescue, нужно учесть несколько ключевых аспектов процесса установки и диагностики. Давайте рассмотрим возможные причины и решения данной проблемы, а также комментарии по вашему описанию.

Проблема

Во время загрузки виртуальной машины с ISO-файла, созданного при помощи grub2-mkrescue, возникла ошибка:

error: disk 'hd0,msdos1' not found
Entering rescue mode...
grub rescue>

Вы также заметили, что команда ls в режиме GRUB Rescue не показывает ни один доступный диск.

Потенциальные причины

  1. Неверная конфигурация device.map: Вы упомянули, что скопировали device.map из ISO-файла в ROOTFS_PATH/boot/grub/device.map. Это может привести к тому, что GRUB ассоциирует hd0 с неправильным физическим устройством. Необходимо проверить, корректно ли настроен device.map, и убедиться, что он соответствует установленному диску (в вашем случае, /dev/sda).

  2. Ошибки в установке GRUB: Возможно, было допущено несколько ошибок во время выполнения команд grub-install. Убедитесь, что вы последовательно выполняете команды и используете нужное устройство.

  3. Проблемы с созданием ISO: Если X.iso не был корректно создан изначально, то возникнут проблемы при его использовании для установки GRUB. Убедитесь, что файлы, которые вы копируете в ISO, корректны.

  4. Структура загрузочного сектора: Возможно, что проблемный диск не имеется в конкретном формате или GRUB не правильно его инициализировал из-за неправильной структуры разделов.

Решения

  1. Проверка файла device.map: Откройте ROOTFS_PATH/boot/grub/device.map и убедитесь, что записи соответствуют:

    (hd0) /dev/sda

    Если там указаны другие устройства, отредактируйте файл или удалите, чтобы GRUB мог правильно идентифицировать ваш диск.

  2. Использование правильных команд для установки GRUB: В вашем скрипте следует удостовериться, что команды grub-install запускаются с правильными параметрами. Ваши команды могут выглядеть так:

    grub-install --root-directory=$ROOTFS_PATH /dev/sda

    Это гарантирует, что GRUB установлен правильно на ваше устройство.

  3. Проверка разметки и типу файловystems: Убедитесь, что все ваши разделы созданы и отформатированы корректно. Проверьте наличие и целостность файлов в каждом разделе.

  4. Отладка GRUB:

    • Попробуйте использовать другой загрузочный способ или другой образ ISO, чтобы убедиться, что ошибка не связана с самим образом.
    • Если возможно, воспользуйтесь живым дистрибутивом Linux для доступа к инструментам восстановления.

Дополнительные комментарии

На ваш вопрос о том, зачем вы выполняете все эти действия: возможно, имеет смысл использовать готовые живые образы (Live CD/DVD), чтобы иметь лучший набор инструментов для устранения проблем, связанных с загрузчиком. Это может значительно упростить процесс диагностики и восстановления системы.

Заключение

Каждая проблема с GRUB может быть уникальной и требовать индивидуального подхода, но следуя предложенным шагам, вы сможете устранить большинство распространенных причин возникновения ошибок. Если проблема продолжает существовать, возможно, стоит обратиться к документации или сообществам, связанным с GRUB или конкретным дистрибутивом Linux, чтобы получить дополнительную помощь.

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

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