Вопрос или проблема
Я много гуглил по этой проблеме. Я нашел это, но это не решило мою проблему. Другие решения предлагают мне переустановить grub (выполнить grub-install), что также не сработало.
Вот что я делаю: (моя версия grub 2.02)
- Я использую grub2-mkrescue, чтобы создать свой X.iso
- Я загружаю виртуальную машину VMWareWorkstation, на которой диск SATA 1.0GB, с X.iso
- Я устанавливаю 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
- перезагрузите
Пишет:
.
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 не показывает ни один доступный диск.
Потенциальные причины
-
Неверная конфигурация device.map: Вы упомянули, что скопировали
device.map
из ISO-файла вROOTFS_PATH/boot/grub/device.map
. Это может привести к тому, что GRUB ассоциируетhd0
с неправильным физическим устройством. Необходимо проверить, корректно ли настроенdevice.map
, и убедиться, что он соответствует установленному диску (в вашем случае,/dev/sda
). -
Ошибки в установке GRUB: Возможно, было допущено несколько ошибок во время выполнения команд
grub-install
. Убедитесь, что вы последовательно выполняете команды и используете нужное устройство. -
Проблемы с созданием ISO: Если
X.iso
не был корректно создан изначально, то возникнут проблемы при его использовании для установки GRUB. Убедитесь, что файлы, которые вы копируете в ISO, корректны. -
Структура загрузочного сектора: Возможно, что проблемный диск не имеется в конкретном формате или GRUB не правильно его инициализировал из-за неправильной структуры разделов.
Решения
-
Проверка файла device.map: Откройте
ROOTFS_PATH/boot/grub/device.map
и убедитесь, что записи соответствуют:(hd0) /dev/sda
Если там указаны другие устройства, отредактируйте файл или удалите, чтобы GRUB мог правильно идентифицировать ваш диск.
-
Использование правильных команд для установки GRUB: В вашем скрипте следует удостовериться, что команды
grub-install
запускаются с правильными параметрами. Ваши команды могут выглядеть так:grub-install --root-directory=$ROOTFS_PATH /dev/sda
Это гарантирует, что GRUB установлен правильно на ваше устройство.
-
Проверка разметки и типу файловystems: Убедитесь, что все ваши разделы созданы и отформатированы корректно. Проверьте наличие и целостность файлов в каждом разделе.
-
Отладка GRUB:
- Попробуйте использовать другой загрузочный способ или другой образ ISO, чтобы убедиться, что ошибка не связана с самим образом.
- Если возможно, воспользуйтесь живым дистрибутивом Linux для доступа к инструментам восстановления.
Дополнительные комментарии
На ваш вопрос о том, зачем вы выполняете все эти действия: возможно, имеет смысл использовать готовые живые образы (Live CD/DVD), чтобы иметь лучший набор инструментов для устранения проблем, связанных с загрузчиком. Это может значительно упростить процесс диагностики и восстановления системы.
Заключение
Каждая проблема с GRUB может быть уникальной и требовать индивидуального подхода, но следуя предложенным шагам, вы сможете устранить большинство распространенных причин возникновения ошибок. Если проблема продолжает существовать, возможно, стоит обратиться к документации или сообществам, связанным с GRUB или конкретным дистрибутивом Linux, чтобы получить дополнительную помощь.