У вас есть две проблемы: идентификация диска и идентификация раздела.
Grub считает разделы с 0, Linux считает разделы с 1. Итак, если Grub hd0
- это sda
Linux, то Grub (hd0,5)
- это Linux sda6
.
Раздел, который вы выбираете в качестве «корневого» в Grub, не обязательно является корневым разделом Linux. В Grub «root» - это просто ярлык, позволяющий не вводить обозначение раздела перед именами файлов. Если у вас есть отдельный раздел / boot
, вы обычно устанавливаете его как корень Grub, потому что Grub заботится только о том, что находится в / boot
(образ ядра и начальный образ RAM-диска ). Linux не заботится о том, что находится в / boot
, кроме как обновить его.
Нумерация дисков в Grub и Linux может не совпадать. Grub использует BIOS компьютера для перечисления дисков. У Linux есть свои драйверы. Когда диски подключаются через другой интерфейс, трудно предсказать, в каком порядке они будут пронумерованы; это может быть тот, на который контроллер диска отвечает быстрее. Итак, hd0
Grub не обязательно является Linux sda
.
Чтобы ваш компьютер загружался надежно, независимо от того, как подключены диски и какова синхронизация ответов контроллера, используйте метки или UUID вместо буквенно-цифровых обозначений. После загрузки запустите update-grub
- обычно он должен сгенерировать файл /boot/grub/grub.cfg
с использованием UUID. И Grub, и Linux будут перечислять доступные разделы при запуске и запоминать их UUID. В grub.cfg
вы должны увидеть такие строки, как
search --no-floppy --fs-uuid --set=root 82aecd65-6423-4d95-9319-3034263ee747
и
linux /vmlinux root=UUID=82aecd65-6423-4d95-9319-3034263ee747 ro