Хочу представить небольшой скриптик, задача которого восстанавливать загрузчик Grub2.
Восстановление загрузчика выполняется по инструкции с wiki (http://wiki.rosalab.ru/ru/index.php/%D0 ... 0%B0_Grub2).
Запуск скрипта надо производить из под рута в live режиме.
Краткое описание, что делает скрипт:
1) Предоставляет пользователю информацию о подключенных носителях информации
2) Просит ввести корневой раздел
3) Проверяет есть ли этот раздел среди подключенных разделов, не является ли он swap разделом, EFI разделом (одним словом защита от случайных нажатий ). Если указанный раздел не подходит, то предоставляет возможность повторного ввода раздела.
4) Потом перед началом восстановления проверяете всели ввели правильно и жмете Y для восстановления. Или можете прекратить работу программы.
Скрипт не проверялся на машинах с uefi, по причине отсутствия оной.
Во вложенном архиве имеется .desktop файл. По желанию его можно использовать, чтобы запускать скрипт из меню.(необходимо учитывать, что в .desktop файле путь до скрипта /usr/bin/. Если у вас путь будет другой, то надо править).
Лично я использую на своем BariumOS. Добавил скрипт модулем и он запускается как из меню, так и из терминала как обычная программа linux.
Во втором архиве готовый для установки rpm пакет.
сделал маленькую правочку для систем с btrfs. Перезалил архив с скриптом.
Восстановление загрузчика Grub2
Добавлено: 31 окт 2022, 23:20
va9(2)
А зачем такие большие отступы?
Я бы еще табы на пробелы заменил. Это можно сделать командой expand -t 4 in-file >out-file.
Восстановление загрузчика Grub2
Добавлено: 01 ноя 2022, 13:06
ДонВенчензо
va9(2) писал(а): 31 окт 2022, 23:20
А зачем такие большие отступы?
Видимо потому, что я не особый спец в этом и нужного внимания этому не удилил
Восстановление загрузчика Grub2
Добавлено: 11 ноя 2022, 22:06
ДонВенчензо
1) Скрипт теперь работает с разными именами файлов устройств.(/dev/sda1, /dev/vdb1, /dev/hdb1 и т.д.). Это позволяет скрипту работать, к примеру, а виртуальных машинах.
2) В архив добавлена иконка для ярлыка
3) Добавил rpm пакет с приложением. По идее rpm дожен работать не зависимо от платформы
va9(2) писал(а): 31 окт 2022, 23:20
А зачем такие большие отступы?
Видимо потому, что я не особый спец в этом и нужного внимания этому не удилил
Уменьшил отступы, но работоспособность скрипта не проверял. В контейнере побоялся, а в виртуалку сегодня не хочется лезть. Теоретически ничего не должно было сломаться.
ㅤ
FILE=/chroot
if [ -d "$FILE" ]; then #Проверяем существует ли каталог /chroot
echo "Каталог $FILE уже существует. Создание не требуется."
else
echo "Создан каталог $FILE"
mkdir /chroot
fi
Если его обернуть в функции и разместить в самом начале, то скрипт станет короче на ~60 строк.
Тут похоже ошибка:
Переменная grub2recovery нигде не используется, а FILE в том месте еще не существует. Еще, break используется только в цикле, а условие в нем не находится, поэтому скрипт в этом месте будет падать если ошибку исправить.
if [ ! -e "/tmp/grub2recovery/" ]; then # Если /tmp/grub2recovery/ не существует - создать.
mkdir /tmp/grub2recovery/
fi
А лучше от него вообще избавиться и смонтировать раздел в /mnt.
Восстановление загрузчика Grub2
Добавлено: 13 ноя 2022, 22:12
ДонВенчензо
Спасибо за проделанную работу . Внес правки. Единственное пока все же оставил папку /tmp/grub2recovery/. На процесс это не влияет, система не захламляется, т.к. /tmp сам очистится при перезагрузке. В /mnt вроде монтировать логично, но пользуясь Барием я заметил, что в нем /mnt уже используется и не хочется использовать его, потому как нет понимания что может произойти. Для безопасности теперь монтирую btrfs "только для чтения"
Восстановление загрузчика Grub2
Добавлено: 15 ноя 2022, 19:38
darkthief13
Спасибо тебе добрый человек! С этим grub2 в Росе сплошные слезы! )
Восстановление загрузчика Grub2
Добавлено: 15 ноя 2022, 20:37
ДонВенчензо
darkthief13 писал(а): 15 ноя 2022, 19:38
С этим grub2 в Росе сплошные слезы! )
Если с дравами nvidia не баловаться, то все с ним нормально
Восстановление загрузчика Grub2
Добавлено: 15 ноя 2022, 21:18
darkthief13
Балуюсь с образами Acronis TI - настраиваю эталонный образ, сохраняю и разношу по машинам.Парк машин разный ).
Еще ни разу загрузчик сам не поднялся ни на одной машине без мата и танцев с бубном...
А UEFI - вообще беда (((, а если с Windows вместе - это слезы...
На Debian и Ubuntu такого не было. Толком и не понял в чем причина (особо и не разбирался).
Восстановление загрузчика Grub2
Добавлено: 16 дек 2022, 13:51
darkthief13
После последнего обновления grub2, исчезла проблема его не работы после разворачивания системы из настроенного образа на другое железо и другой жёсткий диск.
Восстановление загрузчика Grub2
Добавлено: 23 дек 2023, 10:57
Mad AlexX
Помимо линукса Rosa Fresh 12 на моём ноутбуке также установлена Windows 10, а т.к. она лицензионная, то периодически скачивает обновления и после некоторых крупных обновлений пропадает возможность загрузиться в линуксе. Вот и сейчас прилетело такое обновление, которое оставило возможность загрузки только Windows. Поэтому для всех, кто столкнулся с подобной ситуацией (и для себя в будущем тоже) небольшая инструкция, как можно вернуть возможность двойной загрузки.
Сразу скажу, что выполнение много раз рекомендованного на этом форуме update-grub2 никак не изменило ситуацию. Под спойлером приложил снимок с результатами работы update-grub2. Хотя обе операционки он и нашёл, но почему-то возможности выбирать ОС не появилась.
Следующие рекомендации применимы для дисков с таблице разделов GPT. Узнать какая таблица: MBR или GPT можно выполнив команду sudo parted -l. В моём случае вывод этой утилиты такой:
Модель: ATA ST500LM000-SSHD- (scsi)
Диск /dev/sda: 500GB
Размер сектора (логич./физич.): 512B/512B
Таблица разделов: gpt
Флаги диска:
Номер Начало Конец Размер Файловая система Имя Флаги
1 1049kB 106MB 105MB fat32 EFI System Partition загрузочный, esp
2 106MB 123MB 16,8MB Microsoft reserved partition msftres
3 123MB 134GB 134GB ntfs Basic data partition msftdata
4 134GB 134GB 545MB ntfs скрытый, diag
5 134GB 139GB 4295MB linux-swap(v1) подкачка
6 139GB 217GB 78,6GB ext4
7 217GB 226GB 8590MB fat32 fat32a msftdata
8 226GB 269GB 42,9GB ext4 lindata
9 357GB 500GB 143GB ntfs windata msftdata
Обратить внимание нужно на строчку: Таблица разделов: gpt. Если таблица разделов - gpt, можно загружаться с LiveUSB, а после загрузки возможность выбора ОС у меня появилась после следующих команду (даже без выполнения update-grub2) :
# mkdir /mnt/sda
# mount -t auto /dev/sda6 /mnt/sda/
# mount -t auto /dev/sda1 /mnt/sda/boot/efi/
# grub2-install --boot-directory=/mnt/sda/boot --bootloader-id=Rosa --target=x86_64-efi --efi-directory=/mnt/sda/boot/efi
, где sda1 - раздел EFI, sda6 - раздел с ОС Linux. Вполне возможно, что нет необходимости монтировать раздел с корнем, но проверю это, когда в следующий раз Windows обновится с затиранием двойной загрузки. А пока починилось и так, может ещё кому-то пригодится.
Нет, пользовался другой инструкцией, сейчас уже и не найду какой. Помню только, что там вместо grub2-install было написано grub-install.
А в первый раз восстановление через update-grub2, может потому и не пошло, что начал загружаться с установочной флешки, но увидев возможности загрузить установленную ОС решил проверить работоспособность установленной ранее операционки.
Восстановление загрузчика Grub2
Добавлено: 24 дек 2023, 14:31
turik02
grub-install
и
grub-update
это для ubuntu!
Для ROSA будет update-grub2 и правильно всё таки восстанавливать загрузившись в Live, а в неустановленную систему.