Коллеги, посоветуйте пожлуйста как решить проблему с мультизагрузкой...
Суть, если в целом, такова. Есть мультизагрузочная флешка. Я ее неспешно обновляю. Достаточно немалый объем работы проделал уже. Но встал колом пока на моменте загрузки CentOS, вернее, актуального Oracle Linux, с флешки используя Grub2. Но подобная проблема есть у всех дистрибутивов после CentOS6.
Текущий конфиг, относящийся к загрузке OEL:
menuentry "Oracle Enterprise Linux" {
insmod loopback
insmod iso9660
insmod ext2
insmod gzio
insmod part_gpt
insmod xfs
set isofile="/boot/Images/SharedImages/Linux/Oracle/OEL.iso"
loopback loop $isofile
probe -u (loop) --set=loopuuid
set id=UUID=$loopuuid
linux (loop)/images/pxeboot/vmlinuz inst.stage2=hd:$id:$isofile inst.repo=hd:$id:$isofile rootfstype=auto rw rd.live.image quiet rhgb
initrd (loop)/images/pxeboot/initrd.img
}
В принципе, обойтись можно и без loopback, распаковав vmlinuz и initrd. Тем более что у loopback есть проблемы с SecureBoot.
Суть проблемы - base system загружается до stage2, и не находит, откуда грузиться дальше, падая с ошибкой:
Прошу прощения за фото экрана, QEMU дико тормозит, поэтому тестирую на реальном железе.
Решение, подобное описанному здесь - пробовал. Но, завести не получилось. Плюс, не хотелось бы привязываться к имени флешки, лучше было бы использовать UUID, который можно получить средствами grub2.
GRUB2. Восстановление. Запуск системы.
1) Предыстория.
Желание пользоваться линуксом было давно,но считал,что не разберусь. Не так давно решил все же перейти на эту замечательную ОС, но на тот момент у меня был ноутбук Asus eee pc и как-то у меня с ним не очень вышло.(Пост ранее об этом писал) За прошедшее время обзавелся машинкой HP Elitebook 6930p и опять же решил поставить линукс. Сначала была установленна Lubuntu, но как-то не очень "зашла". После небольших раздумий решил,что стоит попробовать установить российскую ОС "Роса". Задуманно - сделанно. ROSA FRESH R11 установленна.
На следующий день,то бишь сегодня, решил чуть поэкспериментировать с драйверами видеокарты. В настройках на выбор было четыре драйвера(один как раз на данный момент использовался), выбрал другой наугад,применил, система запросила перезагрузку. И после оной - не загрузилась. Зато загрузился "веселый" черный экран. И что-то мне подсказывало, что это "Бзззззз" - неспроста.
текст гласил: "Поддерживается несколько BASH-подобных команд редактирования строки. Есть вывод списка команд по TAB для дополнения. Также есть везде, где возможно, вывод списка по TAB для устройств или файлов. "
Ну, и собсна,строка "grub> "
По логике вещей стало понятно,что похоже накрылось что-то в загрузчике GRUB. На тот момент я знал о загрузчке:
а) он загружает (что-то. Наверное,систему)
б) он называется GRUB
в) может загружать разные ОС
Все. Да и сейчас не рсбо больше знаю.
Первое решение обратиться за помощью в группу Росы в ВК - результатов не дало. Советы конечно дали, но в виде "чем смог - тем помог" . И за это спасибо!
Яндекс - выдал кучу всего. И все вроде понятно и просто, только вот нифига не срабатывает.
Методом проб и ошибок систему я запустил.
И поэтому выложу результаты опыта здесь - может кому сэкономлю время и нервы.
2) Восстановление загрузчика.
Итак.
Краткая шпаргалка
ls
ls (hdX,Y)
ls (hdX,Y)/
ls (hdX,Y)/boot/
set prefix=(hdX,Y)/boot
set root=(hdX,Y)
insmod /boot/grub2/i386-pc/linux.mod
linux /boot/vmlinuz(здесь указываем полное название ядра,а не просто "vmlinuz") root=/dev/sdaY
initrd /boot/initrd(указываем соответственно ядру, и опять же полное название включая расширение)
boot
Те кто шпаргалку не понял. листайте ниже. там объяснения и фото.
Первое что пишем это - ls.
Эта команда возвратит известные диски и разделы.
Далее пользователь должен задать диск и раздел, где находиться система. Если вы не помните/не знаете, где она, то методом научного тыка перебираете все. По очереди. Из тех вариантов, что вам вернула команда ls. То есть в моем случае это было так
ls (hd0)
ls (hd0,6)
ls (hd0,5)
ls (hd0,1) <--Приставку msdos можно опустить--->
На вариантах hd0,5 и hd0,1 команда выдала, что на данных разделах имеется файловая система ext. Значит на одном из них и должна находиться наша система.
Проверить можно также командой ls. Добавив после раздела слэш.
ls hd(0,1)/
Команда возвратила название каталогов (папок) находящихся на этом разделе. Среди них есть каталог Boot, который нам и нужен.
Но еще неплохо бы узнать какой именно загрузчик у нас. GRUB или GRUB2. Каталог должен находиться в Boot, поэтому вновь воспользуемся командой ls немного ее дополнив
ls (hd0,1)/boot/
Тут мы видим каталог grub2, а также видим два ядра(vmlinuz) и два файла initrd соответствующих ядрам. Это очень нужная информация!
Дальше мы, используя команду set prefix, устанавливаем префикс и корневой раздел
set prefix=(hd0,1)/boot
Указываем путь к файловой системе
set root=(hd0,1)
загружаем модуль загрузки linux
insmod /boot/grub2/i386-pc/linux.mod
Теперь нам надо загрузить ядро. У меня их почему-то два. Выбирал наугад.
linux /boot/vmlinuz-4.15.0-desktop-47.2rosa-x86_64 root=/dev/sda1
В конце обязательно указываем root-раздел
В интернетике пишут,что полное название ядра можно не указывать. Можно ограничиться записью вида:
linux /boot/vmlinuz
Но у меня почему-то такой вариант не проходил ни в какую. До тех пор пока не указал имя ядра полностью. Может из-за того,что ядра два?!
Теперь выбираем образ инит-диска(еще б мне кто объяснил что такое вообще)
initrd /boot/initrd-4.15.0-desktop-47.2rosa-x86_64.img
образ инит-диска выбираем соответсвенно ядру. Обратите внимание,что у инит-диска указывается расширение файла - .img .
Указывают, что выбор инит-диска можно записать короче
initrd /boot/initrd.img
У меня такой вариант не прошел.
Ну-с и последнее. загрузка.
boot
Если все сделали правильно - будет вам счастье!
После того как загрузитесь не забудьте установить GRUBcustomizer и поправить свой загрузчик. А то вся это пляска будет при каждой загрузке.
За неточности в терминах - тапками не кидать. Я только учусь. )