Загрузка grub EFI из ubuntu 16.04 (и, предположительно, 22.04 так как там та же проблема) при загрузке ubuntu 11.04/12.04/13.04: "kernel too old" Solved / РЕШЕНО


РЕШЕНИЕ 1 (ПРОСТОЕ, НО НЕ НАДЁЖНОЕ). Используя средство "Восстановление загрузки" (boot-repair):

{Start}-> {Системные} -> {Администрирование}-> {Восстановление загрузчика}

-> {update} Обновить boot-repair

-> {восстановить загрузку}

Средство вполне надёжно. У меня восстанавливало всё, кроме ubuntu 12.04 расположенной на том же HDD, что и ubuntu 16.04.


РЕШЕНИЕ 2 (ГАРАНТИРОВАННОЕ, НО ТЯЖЕЛОВЕСНОЕ). Используя из работающей ubuntu 16.04 ВИРТУАЛЬНУЮ МАШИНУ, которая вместо виртуального HDD будет использовать физический, содержащий разделы ubuntu 11.04/12.04/13.04

sudo aptitude install virtualbox

 

"Вот пример для настоящего физического диска, который будет использоваться в качестве диска виртуальной машины." [1]

sudo VBoxManage internalcommands createrawvmdk -filename drive.vmdk -rawdisk /dev/sdb

 

cd

ls -l

-rw------- 1 root root   537 ноя 19 18:45 drive.vmdk

Размер файла "виртуального" диска ссылающегося на реальный диск 537 байт

 

sudo virtualbox

Осталось "Создать" виртуальную машину и в её настройках указать "Носитель" - этот файл.

Если при попытке загрузки будут проблемы, то приготовиться к загрузки с USB-flash / CD/DVD + командам chroot и прочим. С последующим update-grub и grub-install


РЕШЕНИЕ 3 (САМОЕ ЧАСТО ПРЕМИНИМОЕ и РАБОТОСПОСОБНОЕ). Судя по инструкциям [2] проблема в том, что и ubuntu 16.04 и ubuntu 12.04 используя /dev/sda1 смонтированный в /boot/efi/ кладут всё в одну и ту же папку: /boot/efi/EFI/ubuntu

При этом если ubuntu 12.04 отказалась грузится, то из 16.04 в соответствии с инструкциями [2] монтируемся к ней, делаем chroot, затем grub-install в результате кажется что в перечне    sudo efibootmgr -v    всё вроде бы осталось, без изменений, но перезагрузив компьютер получаем работоспособную систему, прада на старой (из ubuntu 12.04) версии grub.

+ Дополнение к РЕШЕНИЮ 3.

Потом можно бы откопировать папку /boot/efi/EFI/ubuntu/ в /boot/efi/EFI/ub1204/ и дать командs из источника [2], часть 7.2 вида:

sudo efibootmgr --create --disk /dev/sda --part 1 --label "ub1204_grubx" -u --loader '\EFI\ub1204\grubx64.efi'   

(из хвоста команды убрал последний параметр, как лишний: root=/dev/sda4)

В результате в UEFI-BIOS (cot4) появится пункт загрузки "ub1204_grubx" и с этого момента можно будет на уровне BIOS-UEFI по F8 выбирать откуда грузиться. При этом при обновлении ubuntu 16.04 проблемы не будет. Подробнее здесь [2]

А на экране будет отклик вида:

BootCurrent: 0003
Timeout: 1 seconds
BootOrder: 0000,0003,0001,0002
Boot0001* CD/DVD Drive
Boot0002* Hard Drive
Boot0003* ubuntu
Boot0000* ub1204_grubx

То есть в текущем состоянии по-умолчанию грузится "0000" ( ub1204_grubx).

 

Если нужно, чтобы по-умолчанию грузилась 0003 (ubuntu 1604), то даём команду:

sudo efibootmgr -o 3,0,1,2         # то есть сначала 0003, потом 0000, затем 0001, и наконец 0002

И на экране будет отклик вида:

BootCurrent: 0003
Timeout: 1 seconds
BootOrder: 0003,0000,0001,0002
Boot0000* ub1204_grubx
Boot0001* CD/DVD Drive
Boot0002* Hard Drive
Boot0003* ubuntu

То есть в текущем состоянии по-умолчанию грузится "0003" (ubuntu 1604).

 

 

----

Если при этом Ubuntu_12.04 начинает грузиться (появляется меню Grub), но потом загрузка почему-то останавливается, то дальнейшее исправит "Решение 1" из верхней части данной страницы, то есть (автоматическое восстановление загрузчика с LiveCD или рабочей операционной системы).

РЕШЕНИЕ 4 (Когда ни одна из Операционных Систем не грузится).
Воспользоваться GRUB_CD


Ссылки

1. "Использование физического диска в VirtualBox" https://mnorin.com/ispol-zovanie-fizicheskogo-diska-v-virtualbox.html

2. "Clonezilla для тех линуксоидов, кто использует liveCD и ленится запоминать (понимать?)" tula-it.ru/node/138 в части 7 "Распаковка образа без grub-efi на раздел GPT" http://tula-it.ru/comment/2958#comment-2958


Перенесено сюда из адреса: http://tula-it.ru/node/1359