Доброе время суток всем!Прибежала сегодня одна сотрудница спец-отдела с глазами побитой коровы перед закланием, притащила установочные диск и флешку вначале с требованиями, потом - с мольбами: закупили какое-то ПО, надо установить на комп. Внутри - какое-то наше отечественное ПО на базе дебиана, запиленного под кали, на ядре ещё 4.17.17. Флешка грузится только в режиме БИОС. UEFI не понимает категорически. :( Компы, что есть в наличии, умеют только UEFI.
Я эту штуку на раздел sda6 в итоге поставил, она даже что-то попыталась записать в mbr, но грузиться не может - говорит "Missing operating system. ERROR: No boot disk has been detected..." Диск в GPT.
Кто помнит, как lilo|grub|etc уговорить с GPT грузиться? Или как убедить это поделие загрузиться через UEFI? Современные ж дистрибутивы того же Кали умеют грузиться через UEFI. Я как-то давно вопросами загрузки не занимался - расслабился и всё, оказывается, забыл... :(
Спасибо заранее за пинок в нужную сторону!
grub насколько я зная прекрасно грузится с GPT и может все-таки uefi то отключается в этих компах?
ну гугл если начать набирать grub gpt предлагает grub gpt bios boot partition -- ну и почитать
> grub насколько я зная прекрасно грузится с GPT и может все-таки uefi
> то отключается в этих компах?Я вчера не успел поковыряться в этой штуке - не знаю, что за загрузчик она поставила. :( Но на примере опыта работы с Астрой СЕ, вполне допускаю, что средств разработки в ней может и не быть. :( Придётся грузиться с чего-то стороннего и ставить. А я как-то упустил grub в своём развитии. С lilo в своё время разобрался, а с grub-ом проблем не возникало - не удосужился до сих пор. :(
Надо маленький диск ~1Mb хватит.
Теперь необходимо сменить тип этого диска на BIOS GRUB (bios_grub) type=21686148-6449-6E6F-744E-656564454649
Допустим он под номером 1# parted /dev/sda
(parted) p
(parted) set 1 bios_grub on
(parted) p
(parted) q# sfdisk -d /dev/sda
сверить тип разделаНадо загрузится из чего нибудь, потом примонтировать диск с "новой" системой и
chroot /в/новую/систему
# grub-install /dev/sda
grub-install имеет параметры, попробовать те что с UEFI если сам что ему надо не найдёт.
> Надо маленький диск ~1Mb хватит.GPT-шный EFI подойдёт? 356 Метров, 277 свободных.
> Надо загрузится из чего нибудь, потом примонтировать диск с "новой" системой и
> chroot /в/новую/систему
> # grub-install /dev/sdaА вот с этим грустно - grub в этой штуке стоит, но, видимо, какой-то древний. grub-install там отсутствует. Есть кучка утилит:
/usr/lib/grub
/usr/lib/grub/grub-mkconfig_lib
/usr/bin/grub-glue-efi
/usr/bin/grub-script-check
/usr/bin/grub-render-label
/usr/bin/grub-mkimage
/usr/bin/grub-mkrescue
/usr/bin/grub-mklayout
/usr/bin/grub-kbdcomp
/usr/bin/grub-menulst2cfg
/usr/bin/grub-editenv
/usr/bin/grub-file
/usr/bin/grub-mkpasswd-pbkdf2
/usr/bin/grub-fstest
/usr/bin/grub-syslinux2cfg
/usr/bin/grub-mount
/usr/bin/grub-mkfont
/usr/bin/grub-mknetdir
/usr/bin/grub-mkrelpath
/usr/bin/grub-mkstandalone
/usr/sbin/grub-macbless
/usr/sbin/grub-probe
/usr/sbin/grub-mkconfig
/usr/sbin/grub-mkdevicemapdpkg говорит, что стоит grub-common 2.02+dfsg1-4
> grub-install имеет параметры, попробовать те что с UEFI если сам что ему
> надо не найдёт.На live-cd от kali, что под рукою, grub в пакетах не стоит, но в загрузчике присутствует... :(
Абстрагируйся от конкретного grub. Надо всего бутнуть ядро с определёнными параметрыми. В своём родном буте пропиши их ядро с параметрами и инитрд.Можно поставить и другой GRUB. Файл /boot/grub/grub.conf можно потом чуть руками подправлять. Для глобальных настроек используй /etc/default/grub можно /etc/grub.d/*
> Абстрагируйся от конкретного grub. Надо всего бутнуть ядро с определёнными параметрыми.
> В своём родном буте пропиши их ядро с параметрами и инитрд.Это понятно, но вот пока даже грузануться в grub не получается. :( Я уже освежил теорию по https://wiki.archlinux.org/title/GRUB_(Русский), попытался подменить в EFI-разделе /EFI/Boot/bootx64.efi на EFI-загрузчик с линуксовой флешки - всё равно, грузится либо винда, либо "Missing operating system. ERROR: No boot disk has been detected..."
> Можно поставить и другой GRUB. Файл /boot/grub/grub.conf можно потом чуть руками подправлять.
> Для глобальных настроек используй /etc/default/grub можно /etc/grub.d/*Это уже будет следующий шаг. Мне бы первый рубеж преодолеть...
>> Можно поставить и другой GRUB. Файл /boot/grub/grub.conf можно потом чуть руками подправлять.
>> Для глобальных настроек используй /etc/default/grub можно /etc/grub.d/*
> Это уже будет следующий шаг. Мне бы первый рубеж преодолеть...Поставил я другой линукс, проапдейтил grub, снова загрузился в это поделие, запустил установку - она перетёрла всё. При попытке загрузки grub ругается, что ему не хватает файла /boot/grub/x86_64-efi/normal.mod и выпадает в rescue.
Гружусь с live-USB - файлы на месте.
Снова пытаюсь загрузиться - rescue grub видит устройства (hd0) (hd1) (hd1,gpt8) (hd1,gpt7) (hd1,gpt6) ... (hd1,gpt1)
систему ставлю(ил) на sda6
На все (hd1,gptX) ответ один - "Filesystem is unknown", кроме (hd1,gpt6) - там ext2 и в этом разделе - файловая система ("новая") со всей структурой.Поискал по ключевому слову "normal.mod" - ничего на разделе нет. Т.е., каким-то образом инсталлер этого поделия грохнул часть кода(?) установленного grub, что он теперь не может подгрузить свои модули? Я правильно понимаю?
глубоко не вникал, но вдруг оно -- https://archlinux.org.ru/forum/topic/946/
Я попытался скопировать (sda1)/EFI/grub/ в (sda6)/boot, теперь grub в rescue выпадает с ошибкой
error: symbol `grub_disk_get_size` not found.
при попытке загрузить модуль normal выдаёт туже ошибку grub_disk_get_size.
Я так понимаю, что это несовместимость версий нового модуля и старого загрузчика. Но на sda6 я не нашёл ничего, похожего на grub-install, а на live-USB загрузчик есть, но ни пакета, ни того же grub-install нет.
Получается, что инсталлер прописал grub и переназначил загрузку на sda6, но сам настолько древний, что работать с UEFI не умеет, а скопировать модули grub не достаточно (логично). Как бы теперь синхронизировать версии ядра grub и модулей...> глубоко не вникал, но вдруг оно -- https://archlinux.org.ru/forum/topic/946/
Почитаю, спасибо.
К сожалению, перебрал всё, в безрезультатных попытках загрузить ядро с sda6. Через insmod grub говорит, что (модуль/ядро) не является EFI-архитектурно-независимым образом, а простые попытки впрямую загрузить (hd1,gpt6)/boot/vmlinuz выдают ошибку "Command not found". :(>> глубоко не вникал, но вдруг оно -- https://archlinux.org.ru/forum/topic/946/
> Почитаю, спасибо.Есть интересные мысли, записал себе в блокнот, но в моём случае ничего не помогло.
Есть возможность отключить установку GRUB в инсталлере?99% Linux-ов вообще можно не инсталировать а скопировать всё в новый корень:
# cp -pRPd /old/* /mnt/new/
А GRUB с UEFI установить и настроить отдельно.
Или сбекапь GRUB перед установкой, а потом откати, так будет рабочий GRUB в котором руками можно добавить ещё один пункт для загрузки старого дистра.
> Есть возможность отключить установку GRUB в инсталлере?Не нашёл. Там есть ярлык "Установка...", ссылающийся на что-то qt-based, которое вывадит на экран какой-то копирайт, спрашивает, на какой раздел или диск поставить, выводит индикатор процесса и говорит "Ok" в конце. Может, у него где-то и есть меню конфигурации, но я не искал.
> Или сбекапь GRUB перед установкой, а потом откати, так будет рабочий GRUB
> в котором руками можно добавить ещё один пункт для загрузки старого
> дистра.А что нужно для полного бэкапа граб-а? Я сильно подозреваю, что одни файлы модулей и конфиги из каталога grub - это не достаточно. Нужен же ещё boot-загрузчик и тело (ядро), которое потом обработает меню. А ещё, оказывается, и версии бывают разные...
PS: А я там ещё веточку в обсуждении отрастил, но её модератор скрыл - её совсем никто не видит?
Ковыряюсь потихоньку в проблеме, читаю про grub и вдруг натыкаюсь на такой очень интересный момент: загрузился я с liveUSB (старенький kali примерно 5-7-летней давности - что валялось в загашнике)...# fdisk -l
Disk /dev/sda: 465.76 GiB, 500107862016 bytes, 976773168 sectors
Disk model: ST500LT012-1DG14
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 36DC2626-8506-44CC-A0C2-90A79D0C1DFCDevice Start End Sectors Size Type
/dev/sda1 2048 739327 737280 360M EFI System
/dev/sda2 739328 1001471 262144 128M Microsoft reserved
/dev/sda3 1001472 435116031 434114560 207G Microsoft basic data
/dev/sda4 435116032 854630399 419514368 200G Microsoft basic data
/dev/sda5 854630400 901408767 46778368 22.3G Microsoft basic data
/dev/sda6 901408768 943570943 42162176 20.1G EFI System
/dev/sda7 943570944 944754687 1183744 578M Windows recovery environment
/dev/sda8 944754688 976773119 32018432 15.3G Microsoft basic dataDisk /dev/sdb: 3.69 GiB, 3965190144 bytes, 7744512 sectors
Disk model: Storage Device
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x26d50dddDevice Boot Start End Sectors Size Id Type
/dev/sdb1 * 2048 7744511 7742464 3.7G c W95 FAT32 (LBA)Disk /dev/loop0: 2.38 GiB, 2558971904 bytes, 4997992 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes# mount |grep sda
/dev/sda1 on /mnt/UEFI type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro)# ls -al /mnt/UEFI/EFI/grub
total 3604
drwxr-xr-x 5 root root 4096 Dec 18 12:09 .
drwxr-xr-x 7 root root 4096 Dec 19 06:06 ..
-rwxr-xr-x 1 root root 326 Dec 18 12:09 config.cfg
-rwxr-xr-x 1 root root 191158 Dec 18 12:09 dejavu-bold-14.pf2
-rwxr-xr-x 1 root root 212142 Dec 18 12:09 dejavu-bold-16.pf2
-rwxr-xr-x 1 root root 753664 Dec 18 12:09 efi.img
-rwxr-xr-x 1 root root 2970 Dec 18 12:09 grub.cfg
drwxr-xr-x 2 root root 20480 Dec 18 12:09 i386-efi
drwxr-xr-x 2 root root 4096 Dec 18 12:09 live-theme
-rwxr-xr-x 1 root root 27 Dec 18 12:09 loopback.cfg
-rwxr-xr-x 1 root root 63071 Dec 18 12:09 splash.png
-rwxr-xr-x 1 root root 415 Dec 18 12:09 theme.cfg
-rwxr-xr-x 1 root root 2395475 Dec 18 12:09 unicode.pf2
drwxr-xr-x 2 root root 20480 Dec 18 12:09 x86_64-efi# less /mnt/UEFI/EFI/grub/grub.cfg
source /boot/grub/config.cfg# Live boot
menuentry "Live system" {
linux /live/vmlinuz-5.9.0-kali1-686-pae boot=live components quiet splash noeject findiso=${iso_path}
initrd /live/initrd.img-5.9.0-kali1-686-pae
}
menuentry "Live system (fail-safe mode)" {
linux /live/vmlinuz-5.9.0-kali1-686-pae boot=live components noeject memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
initrd /live/initrd.img-5.9.0-kali1-686-pae
}
[skip...]Т.е., сейчас, с загруженной live-USB системы в разделе EFI на жёстком диске конфиг груб-а от текущей live-USB системы! Подозреваю, что не только конфиг, но и остальные файлы-модули. Кто-то имет понятие, что происходит и как это работает? Расскажите, плз, прокоментируйте...
Я подозреваю, что происходит какой-то ремап - вряд ли оно каждый раз переписывается: могут же быть и бездисковые системы и другие варианты загрузки... Получается, нет никакого смысла работать напрямую с EFI-разделом sda1 на диске - это просто отображение текущего загрузчика, через который загрузилась система...
Помогите разложить в голове по правильным полочкам!
Я бы предложил изменить вектор приложения усилий. Не воевать с сложными схемами загрузки,
а найти комп с пустым диском и универсальными биосом, на котором будет шанс что содержимое
этой флешки встанет и запустится так как это предполагали её создатели. После этого - изучать
что там поставилось и как собственно сам нужный софт,а не grub, перенести на те компы где оно
должно в дальнейшем работать. Это может оказаться быстрее,так как будут доступны все привычные
инструменты для изучения этой системы,а не одна только малоинформативная командная строка
загрузчика как сейчас.
> Я бы предложил изменить вектор приложения усилий. Не воевать с сложными схемами
> загрузки, а найти комп с пустым диском и универсальными биосом, на котором будет
> шанс что содержимое этой флешки встанет и запустится так как это предполагали её
> создатели. После этого - изучать что там поставилось и как собственно сам нужный
> софт,а не grub, перенести на те компы где оно должно в дальнейшем работать. Это
> может оказаться быстрее,так как будут доступны все привычные инструменты для
> изучения этой системы,а не одна только малоинформативная командная строка
> загрузчика как сейчас.Да я его, в общем-то, победил ещё в прошедшем году... А разгадывать, что разработчики наворотили в своём аттестованном поделии - тот ещё трэш. Там и постгрес, и какой-то самописный веб-сервер на qt, преобразующий галочки установленные клиентом, в параметры командной строки. И ещё ж потом преобразование полученных результатов в удобочитаемый для хомячков формат...
Всё это на основе того же kali, как выяснилось, только прилизано, переведено на русский и сертифицировано в органах...
В принципе, инсталлер ставит нормально всё, что нужно этой системе для работы. Задача была ядро грузануть.
> что разработчики наворотили в своём аттестованном поделии - тот ещё трэш.
> Там и постгрес, и какой-то самописный веб-сервер на qt, преобразующий галочки
> установленные клиентом, в параметры командной строки. И ещё ж потом преобразование
> полученных результатов в удобочитаемый для хомячков формат...
> Всё это на основе того же kali, как выяснилось, только прилизано, переведено
> на русский и сертифицировано в органах...Ты бы хоть тем, кто всё это закупил и сказал, чтобы больше поползновений не возникало.
Поставить на виртуалку. Разобрать что в итоге создаёт инсталлятор.Из виртуалки сдампить через dd полезные разделы на реальный комп, изменить размеры разделов.
Параметры загрузки прописать или взятые из ВМ. Или до dd использовать дистр, который сделает нужное, а потом на bare-metal подменить содержимое разделов на взятые из ВМб может нужно поменять какие-либо пути к файлам и UUID FS. Но если вместо dd делать cp, то UUID не изменятся.
Если нельзя просто засунуть в виртуалку и забыть.
> Поставить на виртуалку. Разобрать что в итоге создаёт инсталлятор.
> Из виртуалки сдампить через dd полезные разделы на реальный комп, изменить размеры
> разделов.Если б таварищи подошли изначально по-человечески - можно было заморачиваться с reverse-engineering-ом, переносом и прочими расчёсками. А так - с наездом: "мы купили, а ты должен..." "продажники не смогли, теперь ты давай..." Ну их в пень! Завёл, чтоб работало и пусть дальше читают инструкцию внимательно!..
> Если нельзя просто засунуть в виртуалку и забыть.
Ради них ещё и виртуалку громоздить... Не, если для изощрённо поиздеваться - конечно можно, но я как-то сразу не додумался до такого садизма... :) Какой-нибудь vmware-player, в него - проксмокс, а туда уже - этого зверя... :)
Проще оказалось с grub-ом разобраться...
>[оверквотинг удален]
> категорически. :( Компы, что есть в наличии, умеют только UEFI.
> Я эту штуку на раздел sda6 в итоге поставил, она даже что-то
> попыталась записать в mbr, но грузиться не может - говорит "Missing
> operating system. ERROR: No boot disk has been detected..." Диск в
> GPT.
> Кто помнит, как lilo|grub|etc уговорить с GPT грузиться? Или как убедить это
> поделие загрузиться через UEFI? Современные ж дистрибутивы того же Кали умеют
> грузиться через UEFI. Я как-то давно вопросами загрузки не занимался -
> расслабился и всё, оказывается, забыл... :(
> Спасибо заранее за пинок в нужную сторону!efilinux умеет кушать конфиги от сислинукса и вроде как от lilo. Если грузите через ефи, в МБР ничего писать не надо, если надо с МБР через ГПТ, у сислинукса на это есть вариант бутблока.
> Спасибо заранее за пинок в нужную сторону!Точно же! chroot, user-mode-linux, qemu и podman - всё это отличные решения проблемы "закупили какое-то ПО"