Content-Type: text/x-zim-wiki
Wiki-Format: zim 0.6
Creation-Date: 2021-10-26T17:03:57+08:00

====== GRUB ======
Создан Вторник 26 октября 2021

	Недавно обнаружил новый простой способ восстановления GRUB.
	Это утилита Boot Repair, входящая в Linux Mint. См. описание [[08 Программы:Ventoy|Ventoy]] - программы для создания мультизагрузочных флешек. На ней, помимо прочего, находится загрузочный образ Linux Mint. Запускаю его из меню флешки, а уже в Mint Live - программу Boot Repair.
	Испытал, специально удалив вовсе папку /boot/grub на загрузочном разделе основной ОС Void. Программа прекрасно справилась с задачей восстановления.
	Интерфейс на английском, но всё понятно. Привожу все пункты меню, с нужными отметками (я восстанавливал GRUB на sda1):

=== Main options ===

[ ] Backup partitiontable, bootsectors and logs
[*] Reinstall GRUB
[ ] Restore MBR
[*] Unhide boot menu __1__ sec
[ ] Repair file systems

=== GRUB location ===

[*] OS to boot by default __sda1__ (у меня sda3 Mint и sda1 Void)
[ ] Separate boot partition ...
[ ] Place GRUB in all disks (except USB disks withhout OS)
[*] Place GRUB to __sda__

=== GRUB options ===

[ ] Purge GRUB before reinstalling it
[ ] GRUB Legacy
[ ] Reset extra space after MBR (solves the [ FlexNet ] error)
[ ] Uncomment GRUB_GFXMODE (solves the [ no-signal / out-of-range ] error)
[ ] ATA disk support (solves the [ out-of-disk ] error
[ ] Add a kernel option ...
[ ] Purge kernels then reinstall last kernel
[ ] Edit GRUB configuration file

=== MBR options ===

=== Other options ===

[*] Place the boot flag on __sda1__
[ ] Repair Windows boot files
[ ] Create a BootInfo summary (to get help by email or forum)
[ ] Upload the report to a pastebin
[ ] Participate to statistics of use
[ ] Check internet connection

	Жмем Apply, и можно загружаться в любую из ОС, имеющихся в ПК. Проверьте только, установлен ли флаг boot для вашего раздела.

	А в Sparky Linux вдруг обнаружил эту программу на русском языке. Копировал ISO Sparky Linux на мультифлешку вместо Linux Mint.
--------------------
	Другие способы:

	[[https://help.ubuntu.ru/wiki/grub|GRUB - загрузчик системы]]

	[[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|Восстановление GRUB]]

=== Восстановление с помощью LiveUSB ===

''sudo fdisk -l''
	Загрузочный раздел отмечен звездочкой, это sda1
''sudo mount /dev/sda1 /mnt''
''sudo grub-install --root-directory=/mnt /dev/sda''
	MBR восстановлен, а если нужно также обновить меню GRUB:
''sudo update-grub --output=/mnt/boot/grub/grub.cfg''

=== Восстановление в rescue mode ===

''ls''
	Выдает примерно такое:
(hd0) (hd0,msdos3) (hd0,msdos2) (hd0,msdos1) (hd1) (hd1,msdos2) (hd1,msdos1)
	Иногда Grub может неправильно опеределить, какие файловые системы находятся на разделах дисков. В данном случае определяет их как msdos. Нам нужно постараться угадать, какие диски мы видим. В данном случае видно два диска. Диск с индексом 0 содержит три раздела, диск с индексом 1 содержит два раздела. Зная структуру своих дисков несложно определить нужный диск.

	Grub называет разделы в обратном порядке. И становится непонятно, что имеется в виду под (hd0,msdos3) - первый раздел или третий? Тут можно выкрутиться, использовав синтаксис (hd0,1). Нужно помнить, что в Grub счет дисков начинается с 0, а счет разделов - с 1. Предположим, что Линукс установлен на первый диск в первый раздел, то есть (hd0,1). Даем команды:
''set prefix=(hd0,1)/boot/grub'' 
''set root=(hd0,1)''
	Этими командами мы указываем использовать диск (hd0,1) для дальнейших команд. После чего нужно проверить, действительно ли на этом разделе есть то, что нам нужно. Даем команду:
''ls /boot/grub''
	Если в ответ получаем список всех файлов в этой директории, то диск и раздел выбраны правильно. Подгружаем модули (для ext4):
''insmod ext2''
''insmod normal''
''normal''
	Grub перейдёт в полнофункциональный режим. Он автоматически найдет все операционки, которые можно подгружать, и покажет своё Grub-меню.
	Загрузить нужный Linux и затем восстановить GRUB:
''sudo grub-install /dev/sda''
--------------------
	Если есть другие ОС, можно их добавить и таким образом:
''sudo featherpad /etc/grub.d/40_custom''
__submenu "Sparky 2021.10" {__
__set root='hd0,msdos3'__
__linux /boot/vmlinuz-5.14.0-2-amd64 ro  quiet splash__
__echo	'Loading initial ramdisk ...'__
__initrd /boot/initrd.img-5.14.0-2-amd64__
__}__
__menuentry "To RAM Linux Mint 20.02 Live Desktop amd64" {__
__set isofile="/ISO/linuxmint-20.2-xfce-64bit.iso"__
__loopback loop (hd0,msdos2)$isofile__
__linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=${isofile} quiet splash toram --__
__initrd (loop)/casper/initrd.lz__
__}__
''sudo grub-mkconfig''
''sudo update-grub''
	Последний пункт "To RAM..." - это запуск ОС из ISO в ПК
--------------------
