Рубрики
boot \ grub \ grub2 \ init \ systemd

grub2 install

ссылки:

# https://www.gnu.org/software/grub/manual/grub/grub.html
# https://wiki.archlinux.org/index.php/GRUB_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)
# https://habr.com/post/181844/
# https://jasugrub2.blogspot.com/2015/05/grub2-uefi.html
# https://ru.wikibooks.org/wiki/Grub_2
# http://help.ubuntu.ru/wiki/grub
# https://mnorin.com/zagruzka-s-iso-obraza-cherez-grub.html
# https://habr.com/post/301534/
# http://rus-linux.net/MyLDP/boot/GRUB-bootloader-Full-tutorial.html
# https://losst.ru/ustanovka-zagruzchika-grub
# http://hostadmina.ru/blog/linux/shell/vosstanovlenie-zagruzchika-grub2.html
# http://www.supergrubdisk.org/ - специальный загрузочный диск Super Grub Disk
# http://www.system-rescue-cd.org/ - LiveCD
# http://www.lexpr.ru/node/409
# https://help.ubuntu.ru/wiki/%D0%B2%D0%BE%D1%81%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_grub

Установка системного загрузчика:

 
apt install grub - установка grub в debian
grub-install /dev/hda - установка загрузчика grub на /dev/hda
update-grub - перечитать конфигурацию grub

Первый способ восстановления grub / grub2:

0) Загружаемся с liveCD 
Узнаем на каких разделах находятся системные директории
fdisk -l
1) Монтируем в выделенную директорию, допустим ( /mnt ), раздел с системными директориями ( например /dev/sda2 )
mount /dev/sda2 /mnt
3) Проверяем что мы только что смонтировали
ls /mnt - смотрим список директорий
Мы должны увидеть директории /sys , /proc, /dev и т.д.
4) Биндим, файлы dev,sys,proc могут быть доступны по адресу-синониму
mount --bind /dev /mnt/dev
mount --bind /sys /mnt/sys
mount --bind /proc /mnt/proc
5) Включаем измененную систему (т.е. уже с жесткого диска)
chroot /mnt
6) Установка и обновление загрузчика
grub-install /dev/sda - устанавливаем загрузчик
grub-mkconfig -o /boot/grub/grub.cfg - обновляем меню загрузки
grub-install --recheck /dev/sda - еще раз проверяем 
7) Выходим из окружения chroot и от монтируем разделы
exit
umount /mnt/dev
umount /mnt/proc
umount /mnt/sys
umount /mnt

Второй способ восстановления grub в rescue mode:

Доступные команды ls, set, unset, insmod
ls - выведит все доступные разделы

(hd0) (hd0,1) (hd0,2)  (hd0,msdos3) - пример вывода команды ls

hd0 - первый диск 
hd0,1 - первый раздел первого диска
hd0,2 - второй раздел первого диска 

hd1 - второй диск 
hd1,1 - первый раздел второго диска

!!! Grub счет дисков начинается с 0, а счет разделов - с 1.
!!! hd0,msdos3 - иногда grub неправильно определяет файловую систему и пишет msdos
!!! Используйте числовые значения

find /boot/grub/stage1  - покажет раздел где храниться основная часть загрузчика GRUB

!!! вот так можно установить загрузчик 
!!!root (hdX,Y)
!!!setup (hdX)
!!quit

0) ls - выводим список  дисков 

1)  Предположим, что Линукс установлен на первый диск в первый раздел, то есть (hd0,1)
Указываем использовать диск (hd0,1) 
set prefix=(hd0,1)/boot/grub 
set root=(hd0,1)

2) Проверяем правильно мы выбрали раздел,  и если файлы загрузки.
ls /boot/grub
ls /


3) Подгружаем модули.
!!! Вместо ext2 пиши свою ФС (ext3, ext4 , btrfs, ntfs и т.д.)
insmod ext2 - загружаем модуль ext2
insmod normal - запускаем модуль
normal - запускаем grub

4) Grub перейдёт в полнофункциональный режим. 
Он автоматически найдет все операционки, 
которые можно подгружать, и покажет своё Grub-меню

5) Грузимся в систему и восстанавливаем загрузчик
grub-install /dev/sdX - установим загрузчик
update-grub - обновление меню загрузчика 

Пример:
ls - показываем разделы
ls (hd0,1)/ - показываем содержимое первого раздела первого диска
set prefix=(hd0,1)/boot/grub2 - определившись с разделом, укажем путь к модулям ядра
set root=(hd0,1) - указываем путь к файловой системе
insmod /boot/grub2/i386-pc/linux.mod - загружаем модули ядра для загрузки
linux /boot/vmlinuz root=/dev/sda1 ro - указываем ядро
initrd /boot/initrd - указываем ядро
boot - загружаемся
grub-install /dev/sda - устанавливаем загрузчик 
grub-mkconfig -o /boot/grub/grub.cfg - обновляем меню загрузки

Третий способ Super Grub Disk:

0) может  пригодится Любой LiveCD 
fdisk -l - узнаем информацию о дисках и ФС
mount /dev/sdX /mnt - монтируем диск /dev/sdX в каталог /mnt
nano /mnt/etc/fstab - конфиг монтирования
blkid - программа показывает UUID дисков и разделов

1) Загружаемся с  Super Grub Disk 
2) Выбираем авто поиск системы на разделах
3) Грузимся в нашу систему
4) Чиним загрузчик из под нашей системы
update-grub - обновление меню загрузчика 
grub-install /dev/sda - установка загрузчика на диск /dec/sda

Grub2, как выбрать предыдущее ядро для загрузки debian?:

0. Отредактируйте файл
vim /etc/default/grub

1. Найдите строку GRUB_DEFAULT=...(по умолчанию GRUB_DEFAULT=0) и укажите в кавычках путь меню к конкретному ядру (запомните индексы меню из шагов 2 и 3).
В моей системе первый индекс был равен 1, а второй - 2. 
Я установил значение GRUB_DEFAULT
GRUB_DEFAULT="1>2"

2. Обновите информацию GRUB для внесения изменений:
update-grub
reboot

3. Загружаемся в систему и проверяем:
uname -a  

P.s.
Для каждого пункта меню существует набор команд grub. 
Все скомпилированные записи хранятся в /boot/grub/grub.cfg файл.

P.s. Пример как в debian 13 выбрать нужное ядро при загрузке системы (для предыдущих версий тоже самое если используется grub2)

0. Смотрим какие есть ядра уже в grub:
#grep -e "menuentry " -e submenu -e linux /boot/grub/grub.cfg
grep -n "menuentry" /boot/grub/grub.cfg
-----------------------------------------
22:if [ x"${feature_menuentry_id}" = xy ]; then
23:  menuentry_id_option="--id"
25:  menuentry_id_option=""
28:export menuentry_id_option
120:menuentry 'Debian GNU/Linux' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-fd6a1857-62e4-47aa-b0f9-b432eb880607' {
137:submenu 'Advanced options for Debian GNU/Linux' $menuentry_id_option 'gnulinux-advanced-fd6a1857-62e4-47aa-b0f9-b432eb880607' {
138:    menuentry 'Debian GNU/Linux, with Linux 6.12.48+deb13-amd64' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-6.12.48+deb13-amd64-advanced-fd6a1857-62e4-47aa-b0f9-b432eb880607' {
155:    menuentry 'Debian GNU/Linux, with Linux 6.12.48+deb13-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-6.12.48+deb13-amd64-recovery-fd6a1857-62e4-47aa-b0f9-b432eb880607' {
172:    menuentry 'Debian GNU/Linux, with Linux 6.12.43+deb13-amd64' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-6.12.43+deb13-amd64-advanced-fd6a1857-62e4-47aa-b0f9-b432eb880607' {
189:    menuentry 'Debian GNU/Linux, with Linux 6.12.43+deb13-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-6.12.43+deb13-amd64-recovery-fd6a1857-62e4-47aa-b0f9-b432eb880607' {
206:    menuentry 'Debian GNU/Linux, with Linux 5.15.196' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.15.196-advanced-fd6a1857-62e4-47aa-b0f9-b432eb880607' {
223:    menuentry 'Debian GNU/Linux, with Linux 5.15.196 (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.15.196-recovery-fd6a1857-62e4-47aa-b0f9-b432eb880607' {
261:            menuentry 'UEFI Firmware Settings' $menuentry_id_option 'uefi-firmware' {

-------------------------------------------

1. Из предыдущей команды мы видим следующие
Структура меню:
0: Debian GNU/Linux (обычная загрузка)
1: Advanced options for Debian GNU/Linux (подменю)
1>0: Debian GNU/Linux, with Linux 6.12.48+deb13-amd64
1>1: Debian GNU/Linux, with Linux 6.12.48+deb13-amd64 (recovery mode)
1>2: Debian GNU/Linux, with Linux 6.12.43+deb13-amd64
1>3: Debian GNU/Linux, with Linux 6.12.43+deb13-amd64 (recovery mode)
1>4: Debian GNU/Linux, with Linux 5.15.196 - Вот наше требуемое ядро 
1>5: Debian GNU/Linux, with Linux 5.15.196 (recovery mode)

2. Добавим нужное ядро в загрузку по умолчанию:
Отредактировать файл"GRUB_DEFAULT":
vim /etc/default/grub
---------------------
GRUB_DEFAULT="1>Debian GNU/Linux, with Linux 5.15.196"
---------------------


3. Применяем изменения и перезагружаем систему:
#update-grub
grub-mkconfig -o /boot/grub/grub.cfg
reboot


P.s. Как вернуть все в зад
grub-set-default 0
#update-grub
grub-mkconfig -o /boot/grub/grub.cfg
reboot