Проинсталлировал на внешний USB-диск Debian 8.6 64 bit. Вся инсталляция прошла нормально. Разбитие разделов делалось инсталлятором на автомате «один раздел на всё», на разделе ext4.
При загрузке с этого USB-диска появляется сообщение:
error: attempt to read or write outside of disk 'hd0'
И grub вываливается в rescue mode.
Смотрю, видит ли Груб диск. Диск есть и виден:
ls
(hd0) (hd0,msdos1)
Смотрю корень диска:
ls (hd0,msdos1)/
./ ../ lost+found/ etc/ media/ ... boot/ ... и т. д.
Пытаюсь посмотреть каталог boot. И тут облом:
ls (hd0,msdos1)/boot
error: attempt to read or write outside of disk 'hd0'
Может быть, ему нужен слеш в конце? Нет, со слешем та же картина:
ls (hd0,msdos1)/boot/
error: attempt to read or write outside of disk 'hd0'
Начинаю проверять другие каталоги. И вот какая картина выясняется.
Grub может прочитать каталоги:
- media
- var
- sbin
- bin
- tmp
- sys
- run
- root
- proc
- home
- srv
- opt
И не может прочитать каталоги:
- etc
- usr
- lib
- lib64
- dev
- boot
- mnt
Может быть, файловая система кривая? Гружусь в RescueCD, проверяю через fsck -f -p - ошибок нет. Монтирую этот USB-диск в /mnt/disk, во все каталоги могу зайти.
Решил переставить Груб через chroot.
Прокидываю разделы устройств:
mount --bind /dev /mnt/disk/dev
mount --bind /sys /mnt/disk/sys
mount --bind /proc /mnt/disk/proc
Переключаюсь с помощью chroot на корень USB-диска:
chroot /mnt/disk /bin/bash
Узнаю версию mkcofig груба:
grub-mkconfig -v
grub-mkconfig (GRUB) 2.02~beta2-22+deb8u1
Перегенерирую конфиг груба:
grub-mkconfig -o /boot/grub/grub.cfg
... Все океюшки, ошибок нет ...
И переустанавливаю груб:
grub-install /dev/sdb
... Все океюшки, ошибок нет ...
Пергружаюсь, и снова Grub выпадает в rescue mode. И всё то же самое.
Что делать? Как заставить Grub загружать Linux?