Как это сделать что бы не убить Grub вновь?
Твои страдания натолкнули меня на мысль, загрузки Linuxа установленного неизвестно где и неизвестно как.
Там есть один неудобный момент. Поиск ведется по UUID раздела. Поэтому я всем своим разделам присваиваю метки-тома.
Метку проще ввести, даже по памяти.
Пользователь добавил сообщение 29 Октября 2018, 16:10:08:
Userboy, вот такой код у меня получился для "универсальной загрузки Linux":
submenu 'Linux on LABEL|UUID|DEV' --class ubuntu --class gnu-linux --class gnu --class os {
src='hit320_3'
#version='-4.13.0-36-generic.efi.signed'; avload='/boot'
root='x'
insmod part_gpt
#insmod part_msdos
insmod gzio
#insmod ext2
search -n -s -l ${src}
if [ $root = x ]
then search -n -s -u ${src}
if [ $root = x ]
then search -n -s -f ${avload}/vmlinuz${version}
rootfs="root=/dev/${src}"
else rootfs="root=UUID=$src"
fi
else rootfs="root=LABEL=$src"
fi
if [ $root = x ]
then msg="$src not exist!"; avload=''; avinit=''
else msg="Load $src from $root $rootfs"
if [ -e /boot/grub/grub.cfg ]
then avload='configfile'; src='/boot/grub/grub.cfg'
else avinit="initrd ${avload}/initrd.img${version}"; src="${avload}/vmlinuz${version} $key $rootfs --"; avload='linux'
fi
fi
echo "$msg"; sleep -v 4
if [ -n "$avload" ]; then ${avload} ${src}; fi
if [ -n "$avinit" ]; then ${avinit}; fi
}
Краткое описание.
В переменной src указываещь, где искать Linux. Это может быть метка тома, uuid раздела, или имя раздела, например sda1.
Если не найдена метка тома или uuid, то ищет файл ядра vmlinuz. Для этого случая, можно раскомментировать строку version, чтобы конкретизировать версию и расположение ядра.
Если раздел с заданным именем не будет найден - возврат в меню груб. Можно изменить переменную src и повторить.
Если раздел найден, то на этом разделе осуществляется поиск файла grub.cfg.
Если файл найден, то будет выведено меню груб, содержащееся в этом файле.
Если в этом меню все правильно, то выбрав нужный пункт, загрузишь систему.
Если grub.cfg не будет найден, то будет запущена загрузка системы с этого раздела с минимумом параметров.
У меня система загрузилась в обоих случаях. Как я уже говорил, использую загрузку по метке тома.
Добавь этот код в файл /etc/grub.d/40_custom. После этого выполни update-grub.
В меню груб появится пункт "Linux on LABEL|UUID|DEV".