Есть простой способ восстановить загрузчик?
Каждый раз после сбоя питания слетает загрузчик астры, и остается только виндосный. Обновил загрузчик на Live-usb, он увидел астру на жестком и загрузил ее. А что дальше? Везде ошибки восстановления или установки grub. Почему?
Все что есть в интернете к астре не подходит(((
Дайте плз совет как восстановить этот гребаный загрузчик в астре. А еще лучше — заменить MBR на Grub
townbov
New member
даже обновление с ошибкой))))
oko
New member
to townbov
Вообще странное поведение — сбои питания, слет загрузчика. Загрузчик либо есть, либо его нет. Хотя grub мог не сам записаться в нужную область, а дать лишь ссылку на себя, а размещаться на другом разделе. Тут бы знать, как вы его первично инсталлировали (тем более с uefi-flash).
С NVMe под Linux не работал, возможно там имеются свои баги (тем более в Астре, которая не очень за временем поспевает), но. Разве не тупо sudo grub-install /dev/nvme0n1, читай на само устройство, а не в конкретный раздел?
Что касается apt ugrade. Вы там случайно через dpkg не ставили и потом сносили spice? Похоже, что база apt зафиксировала изменения, а пакета-то уже и нет. Трайните его инсталл по-новой, а затем уже upgrade. Так-то может статься, что проблема вовсе не в системе как таковой.
Vosiley
New member
Не-не-не.
Т.к. это UEFI, да еще с Windows, то размечен диск однозначно в GPT.
Загрузчик GRUB ставится таким образом в директорию EFI. Т.е. /dev/nvme0n1p2 монтируем в /mnt , далее
grub-install --efi-directory=/mnt
Vosiley
New member
grub-install --efi-directory=/boot/efi
townbov
New member
grub-install --efi-directory=/boot/efi
Ага EFI именно там).
Но при выполнении выдает ошибку. Пробовал перемонтировать в /mnt но это конечно же ничего не меняет)
инсталятор ищет папку i386-pc в /usr/lib но она в /boot/efi. Ок) копирую ее туда куда он хочет)
после этого он не может найти kernel.img и его действительно там нет! Ок)) я копирую из платформы x86_64-efi и конечно же его он не устаивает)
ошибка в каком то заголовке ELF
я здаюсь)
townbov
New member
to townbov
Вообще странное поведение — сбои питания, слет загрузчика. Загрузчик либо есть, либо его нет. Хотя grub мог не сам записаться в нужную область, а дать лишь ссылку на себя, а размещаться на другом разделе. Тут бы знать, как вы его первично инсталлировали (тем более с uefi-flash).
С NVMe под Linux не работал, возможно там имеются свои баги (тем более в Астре, которая не очень за временем поспевает), но. Разве не тупо sudo grub-install /dev/nvme0n1, читай на само устройство, а не в конкретный раздел?
Что касается apt ugrade. Вы там случайно через dpkg не ставили и потом сносили spice? Похоже, что база apt зафиксировала изменения, а пакета-то уже и нет. Трайните его инсталл по-новой, а затем уже upgrade. Так-то может статься, что проблема вовсе не в системе как таковой.
Загрузчик так и остается после збоя. Но биос видит только запись майкрософт.
вот записи в папке efi которые биос видел до збоя: они все остались
появилась только какая то сомнительная копия в папке Boot:
переименовать пробовал- но все равно грузится только винда((
Знаю точно, что после переустановки Астры, биос ее снова увидит))))
Переустановка как решение — это треш)
РЕШЕНО! После установки оперативного обновления 9 на обновление 6 слетел GRUB на сервере с dmraid
Здравствуйте.
После обновления Astra Linux Special Edition 1.6 с обновления 6 до оперативного обновления 9 на сервере, после перезагрузки системы слетел GRUB: symbol ‘grub_calloc’ not found. И строка grub rescue. Загрузка в режиме EFI.
У сервера был настроен дисковый массив на dmraid, в fstab был прописан корневой раздел по идентификатору массива (UUID). При загрузке дистрибутива с DVD в режиме восстановления массив не видится потому как в ALSE, как я понял, нет нормальных драйверов для RAID.
Посоветуйте что можно сделать в данном случае, чтобы починить загрузку?
Спасибо.
YNA
New member
Мне вот такой способ всегда помогал. Попробуйте, терять то нечего.
https://forum.astralinux.ru/threads/3324/post-16666
Jbanchic
New member
Мне вот такой способ всегда помогал. Попробуйте, терять то нечего.
https://forum.astralinux.ru/threads/3324/post-16666
Спасибо за ответ. Проблема в том, что из-за dmraid в системе нет дисков sda. Если б можно было как-то увидеть массив на dmraid — поправить GRUB можно было бы без особых усилий.
YNA
New member
При чём здесь sda? Это просто пример подвернулся. Вы вообще пробовали? Мне тоже интересно.
Там был пример с новым железом и Астра как то спасовала. После восстановления загрузчика смогла загрузиться. Мне эта утилита помогала не только линуксовые загрузчики восстанавливать, но и виндовые (Win 10) после падения линукс-систем и ихнего Граба.
oko
New member
to Jbanchic
Правильно понимаю, что у вас на руках только DVD-диск с ALSE (базовый, без обновлений) и проблемный сервер, на который кто-то ранее установил пакеты поддержки dmraid? Если так, то пробуйте аналогично вот этому.
to YNA
Никакая утилита не поможет, если ОС, под которой загрузились, не видит накопителей с установленной ОС. Поэтому да, дело как раз в поддержке блочных устройств (те же /dev/sda в обычном случае SATA-дисков или /dev/dm в случае dmraid).
Jbanchic
New member
Правильно понимаю, что у вас на руках только DVD-диск с ALSE (базовый, без обновлений) и проблемный сервер, на который кто-то ранее установил пакеты поддержки dmraid? Если так, то пробуйте аналогично вот этому.
Сервер был установлен с базового диска по вами указанной инструкции с подсовыванием модулей dmraid для того, чтобы система увидела массив и прекрасно работала и грузилась. На нее успешно было накатано оперативное обновление 6. После накатывания последнего оперативного обновления 9, который кстати установился без проблем, после перезагрузки сломался GRUB. На текущий момент времени при старте появляется grub rescue и вышеуказанная ошибка. Для того, чтобы починить GRUB, как я понимаю, нужно подцепить дисковый массив, который голым дистрибом ALSE в режиме восстановления не видится на моменте подключения корневого каталога. Поэтому и задаю вопрос здесь.
P.S.: Особенность dmraid в том, что в fstab сам массив прописан был по UUID. И, как я понимаю, там есть свои особенности. Для того, чтобы подцепить массив по UUID и примонтировать его куда-либо для починки GRUB что нужно сделать?
oko
New member
to Jbanchic
Никогда не пользовался ALSE в режиме восстановления.
В Grub rescue команда ls тоже ничего не показывает?
Остается вариант грузануться с LiveCD с поддержкой dmraid, выполнить chroot в /boot-раздел или корневой (если /boot там) и оттуда восстановить grub через update-grub. Сам подобным не занимался на ALSE с учетом обязаловки паролей на grub и невозможности корректно использовать root (придется chroot выполнять под уч.запись sudo-пользователя, устанавливавшего систему). Поэтому что-то более детальное посоветовать не могу.
oko
New member
to Jbanchic
Кстати, да, можно и дистриб ALSE использовать. Выполнить как по инструкции dmraid=true, чтобы ALSE его увидела. Далее CTRL+ALT+F2, chroot, установить пакеты поддержки dmraid и обновить GRUB. И, не возвращаясь в графику, ребутнуть сервер. По-идее должно помочь.
Jbanchic
New member
Никогда не пользовался ALSE в режиме восстановления.
В Grub rescue команда ls тоже ничего не показывает?
Показывает. Два диска с тремя разделами на каждом. Ну оно и понятно — в RAID зеркало.
hd0 (hd0.gpt3) (hd0.gpt2) (hd0.gpt1) hd1 (hd1.gpt3) (hd1.gpt2) (hd1.gpt1)
Остается вариант грузануться с LiveCD с поддержкой dmraid, выполнить chroot в /boot-раздел или корневой (если /boot там) и оттуда восстановить grub через update-grub
oko
New member
to Jbanchic
Значит, поддержка dmraid не слетела. Тогда без LiveCD (чисто из grub rescue) можете сделать то же самое — ищите hd с /boot, чрутьтесь в него и далее по тексту.
Jbanchic
New member
to Jbanchic
Значит, поддержка dmraid не слетела. Тогда без LiveCD (чисто из grub rescue) можете сделать то же самое — ищите hd с /boot, чрутьтесь в него и далее по тексту.
Если можно поподробнее. из grub rescue. Какие команды доступны и какие нужно запустить из rescue? Насколько я знаю, в этом режиме доступны всего 4 команды: ls, set, unset, insmod.
По разделам: gpt3 -скорее всего раздел EFI, gpt2 — /, gpt1 — swap.
oko
New member
to Jbanchic
Не знаю, актуально ли еще, но вот тут испчерпывающе расписаны возможные варианты.
Вообще, у вас, конечно, комбо: dmraid + efi. Imho, в подавляющем большинстве случаев любого сервера и GPT (и, следовательно, EFI) не требуется, и аппаратный (и тем более фейковый) RAID проще заменить программным на базе mdadm. Если речь не идет о каких-нибудь сверхнагруженных системах и обязательном требовании BBU и доп.кэширования.
mister
New member
Jbanchic
New member
Похоже надо трясти техподдержку Астры. Похоже это реально проблема для тех, у кого есть RAID-массивы.
Jbanchic
New member
Проблема с dmraid решена.
Долгое время не было возможности исправить ситуацию из-за того, что загруженная система не распознавала разделы массива, видела только сам массив без разделов. Не помог ни оригинальный дистрибутив ALSE, ни более новый ALCE.
В итоге загрузчик починен. Помог Linux Mint 20.2 Cinnamon загрузочный диск с офсайта. Все три раздела (EFI, root, swap) система увидела без добавления инструкции dmraid=true.
Решение:
1. Создается каталог, к примеру /mnt/1
2. Монтируется корневой каталог (в моем случае /dev/mapper/isw_xxxxx_xxxp2) в /mnt/1
3. mount -o bind /proc /mnt/1/proc
mount -o bind /sys /mnt/1/sys
mount -o bind /dev /mnt/1/dev
4. chroot /mnt/1
5. Если у вас UEFI загрузка, то дополнительно монтируется раздел с EFI (в моем случае /dev/mapper/isw_xxxxx_xxxp1) в раздел, в который он должен монтироваться в /etc/fstab (после chroot он легко смотрится cat /etc/fstab) (в моем случае в /boot/efi)
6. grub-install
7. update-grub
Загрузчик починен, система грузится.
P.S.:Единственное добавлю, что в некоторых случаях, если используется UEFI, в BIOS может появиться другой починенный раздел загрузки и сохранится старый, который не грузит grub. Лишний можно (да и нужно) удалить в BIOS.
roshchindmitriy
New member
1. Ошибка error symbol: `grub_calloc` not found на дисках с UEFI.
2. Загрузиться в AstraLinux Orel 2.13.1 livecd или Linux Mint 20.2 livecd.
3. Список дисков:
# lsblk
4. Монтируем корневой раздел:
# sudo mount /dev/sda2 /mnt/
5. efi:
# sudo mount /dev/sda1 /mnt/boot/efi/
7. # sudo mount -o bind /sys/ /mnt/sys/
# sudo mount -o bind /proc/ /mnt/proc/
# sudo mount -o bind /dev/ /mnt/dev/
8. # sudo chroot /mnt/
9. # grub-install
10. # update-grub
11. Перезагрузка.
roshchindmitriy
New member
Исправить GRUB UNKNOWN ERROR:
1. Список доступных разделов:
# ls
2. Просмотреть содержимое каждого раздела:
# ls (hd0,3)/
Если вы увидели папку boot, значит это наш раздел.
3. # set root=(hd0,3)
# set prex=(hd0,3)/boot/grub
4. # insmod normal
# normal
Если загрузились с текущего диска:
1. Устанавливаем GRUB на диск /dev/sda:
# sudo grub-install
2. # sudo update-grub
3. Перезагрузка.