[Цитировать]

    puhpol
  • 2
  • Стаж: 9 лет 4 месяца
  • Сообщений: 888
  • Репутация:73

    [+] [-]
Доброго времени господа.
Часто бывало так : Делаем картинку для сборки допустим с разрешением 1024х768, загружаемся с флешки , а BIOS не поддерживает такое разрешение.Или на оборот, делаем картинку 640х480 , загружаемся с флешки , картинку растягивает до безобразия.
Проблема в том что BIOS разных компьютеров имеет разное максимально возможное разрешение .
Что бы этого избежать достаточно добавить в menu.lst такие строки:
graphicsmode -1 640 && set GM=640 && echo 640 xres supported
graphicsmode -1 800 && set GM=800 && echo 800 xres supported
graphicsmode -1 1024 && set GM=1024 && echo 1024 xres supported
pause --wait=1
if "%GM%"=="1024" splashimage /boot/fon1024.bmp
if "%GM%"=="800" splashimage /boot/fon800.bmp
if "%GM%"=="640" splashimage /boot/fon640.bmp
Где /boot/fon640.bmp - путь к картинке в разрешении 640х480.
Соответственно в папке boot должны лежать три картинки в трех разрешениях.
ГРУБ сам при загрузке выяснит максимально возможное разрешение BIOS, и загрузит нужную картинку.

[Цитировать]

    Eagle123
  • 205
  • Стаж: 9 лет 2 месяца
  • Сообщений: 125
  • Репутация:7

    [+] [-]
Если я ничего не путаю, мне такой способ не понравился потому, что Груб начинает долго грузиться и перебирает (применяет) все подряд разрешения... Но да, зато выставит лучшее доступное разрешение.

[Цитировать]

    волчара
  • 253
  • Стаж: 9 лет 1 месяц
  • Сообщений: 577
  • Репутация:41

    [+] [-]
  • Откуда: Омск
Наиболее оптимальное разрешение картинки 800х600, по крайней мере я так всегда делаю, пробовал 1024х768 так на некоторых компах(старых) были проблемы с буквами в меню

[Цитировать]

    Kupr_Soft
  • 26917
  • Стаж: 3 года 2 месяца
  • Сообщений: 30
  • Репутация:16

    [+] [-]
  • Откуда: Питер
Давеча когда ковырялся в теме https://usbtor.ru/viewtopic.php?t=26 и затем посмотрел эту тему...
нашёл весьма интересные решения...
и возникла мысль сделать универсальный вариант меню, для Текстового и Графического режима:
из отличий у них, разная кодировка самого файла меню
Графический UTF-8
Текстовой OEM-866

и использутся разные шрифты (для русского языка)
Графический rus.gz (unifont)
Текстовой 8x16_866.psf

Выглядит это так:
есть начальное (настроечное) Menu.lst
(у меня запуск груба идёт из под DOSa и поэтому этот файлик лежит прямо в корне что-бы Grub.exe его подхватывал автоматом)
это меню в текстовом режиме, потому что это самый работоспособный вариант!
в этом начальном меню, выбор из двух пунктов
Графика или Текст (с автовыбором графики по таймауту) Кодировка OEM-866

вот в принципе его код с комментариями:

#Надпись с версией флешки (поверх родной надписи Grub4Dos)
write (md)0x220+1 !BAT\necho -n -P:0000 $[0107] Kupr_Soft Flash 5.0 (30.01.2021)                               %disk% \0 && initscript (md)0x220+1
#Русский шрифт для текстового меню
/Boot/textfont /Boot/8x16_866.psf
#Автоматический выбор меню по умолчанию
timeout 15
default 0
# pause --wait=15
#-----------------------------------------------------------------------
title Запуск Графического режима меню \n * \n * \n *
#Установка графического режима перебором, с установкой переменной GM и сообщением об этом
graphicsmode -1 640 && set GM=640 && echo 640x480 Установлено
graphicsmode -1 800 && set GM=800 && echo 800x600 Установлено
graphicsmode -1 1024 && set GM=1024 && echo 1024x768 Установлено
#Проверка переменной для загрузка картинки под соответствующее разрешение
if "%GM%"=="1024" splashimage /boot/splash/menu1024.bmp
if "%GM%"=="800" splashimage /boot/splash/menu800.bmp
if "%GM%"=="640" splashimage /boot/splash/menu640.bmp
#Установка переменной для понимая какой режим меню выбран
set MOD=GRF
#Выбор шрифта с кирилицей
#Тонкий шрифт
#font (hd0,0)/boot/unifont.hex.gz
#Обычный шрифт
font (hd0,0)/boot/rus.gz
configfile (hd0,0)/boot/menus/MENU.LST
#-----------------------------------------------------------------------
title Запуск Текстового режима меню \n * \n * \n *
#Установка расцветки меню
color blue/green yellow/green yellow/green green/black
## цвет обрамления меню
color border=0xEE11EE
#Установка переменной для понимая какой режим меню выбран
set MOD=TXT
configfile (hd0,0)/boot/menus/MENU.LST
всё манипуляции с режимом, картинкой и шрифтом проходят уже при выборе меню.
и всего ОДИН раз за время работы Grub4Dos. Это позволяет избежать постоянных задержек при переходах по подменю Груба если графика выставляется внутри каждого меню.
(да, получается что на ВСЁ меню и его подменю у Вас только ОДНА одинаковая картинка, но лично меня это устраивает)
(если кому-то захочется иметь в каждом рабочем меню (или подменю) свою картинку то просто в самом начале этого меню (или подменю) вставьте
#Проверка переменной для загрузка картинки под соответствующее разрешение
if "%GM%"=="1024" splashimage /boot/splash/menu1024.bmp
if "%GM%"=="800" splashimage /boot/splash/menu800.bmp
if "%GM%"=="640" splashimage /boot/splash/menu640.bmp
только прописав туда нужную вам картинку.
Рабочее меню (и подменю) Кодировка UTF-8

а теперь уже кусок непосредственно рабочего меню:

#Надпись с версией флешки (поверх родной надписи Grub4Dos)
write (md)0x220+1 !BAT\necho -n -P:0000 $[0107] Kupr_Soft Flash 5.0 (30.01.2021)                               %disk% \0 && initscript (md)0x220+1
#Таймаут выбора меню по умолчанию
timeout 30
#Пункт меню которое выбирается по умолчанию
default 1
#-----------------------------------------------------------------------------------------------
#---------------------------------
#Установка переменных для отображения меню (UTF-8 для графического режима или OEM-866 для тестового)
if "%MOD%"=="GRF" && set title3 Acronis, Paragon, R-Drive ==> && set com3=Программы для работы с жёсткими дисками, разделами и т.п.
if "%MOD%"=="TXT" && set title3 Acronis, Paragon, R-Drive ==> && set com3=�ணࠬ�� ��� ࠡ��� � ���⪨�� ��᪠��, ࠧ������ � �.�.
if "%MOD%"=="GRF" && set title4 Hiren's BootCD DOS Русский (15.2) && set com4=Старенький загрузочный DOS диск с большим набором программ и утилит
if "%MOD%"=="TXT" && set title4 Hiren's BootCD DOS ���᪨� (15.2) && set com4=���७쪨� ����㧮���� DOS ���� � ����訬 ����஬ �ணࠬ� � �⨫��
if "%MOD%"=="GRF" && set title5 Memtest86 v4.3.7 [PassMark] (Тест Памяти) && set com5=Tecт памяти Memtest86 v4.3.7 (PassMark)
if "%MOD%"=="TXT" && set title5 Memtest86 v4.3.7 [PassMark] (���� ������) && set com5=Tec� ������ Memtest86 v4.3.7 (PassMark)
if "%MOD%"=="GRF" && set title13 Other Boot (XP, Vista, Console, ResetPasswords) ==> && set com13=Несколько вариантов загрузок... && set com131=Сброс паролей и т.п.
if "%MOD%"=="TXT" && set title13 Other Boot (XP, Vista, Console, ResetPasswords) ==> && set com13=��᪮�쪮 ��ਠ�⮢ ����㧮�... && set com131=����� ��஫�� � �.�.
#---------------------------------
title %title3%  \n %com3%
configfile (hd0,0)/boot/menus/ACRONIS_MENU.LST
#---------------------------------
title %title4%  \n %com4%
map --read-only /Boot/IMA/HBCD_152_Rus.ima (fd0)
map --floppies=1
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
#---------------------------------
title %title5%  \n %com5%
kernel (hd0,0)/Boot/IMA/Memtest86-4.3.7.bin
#---------------------------------
title %title13%  \n %com13% \n %com131%
configfile (hd0,0)/boot/menus/OTHER_BOOT.LST
#---------------------------------
Теперь объясняю:
сначала устанавливаются все переменные для отображения меню (это первый блок)
если графика то переменная титле1-2-3 будет в таком тексте (кодировке) и комментарии com1-2-3 вот в таком тексте (кодировке)
для простоты я сначала сделал всё меню на UTF-8, но только не заполняя строчку для OEM-866
if "%MOD%"=="GRF" && set title1 Установка Microsoft Windows 10 x86 x64 (20H2)19042.631 && set com1=Чистая официальная от Microsoft версия 10 x86 x64 (20H2)19042.631
if "%MOD%"=="TXT"
затем открыл два редактора рядом один в UTF-8 другой в OEM-866
и копировал верхнюю строчку из первого и вставлял во второй
(получалось что весь тест был крякозяблой кроме сопированной второй строки
if "%MOD%"=="GRF" && set title1 ╨г╤Б╤В╨░╨╜╨╛╨▓╨║╨░ Microsoft Windows 10 x86 x64 (20H2)19042.631 && set com1=╨з╨╕╤Б╤В╨░╤П ╨╛╤Д╨╕╤Ж╨╕╨░╨╗╤М╨╜╨░╤П ╨╛╤В Microsoft ╨▓╨╡╤А╤Б╨╕╤П 10 x86 x64 (20H2)19042.631
if "%MOD%"=="TXT" && set title1 Установка Microsoft Windows 10 x86 x64 (20H2)19042.631 && set com1=Чистая официальная от Microsoft версия 10 x86 x64 (20H2)19042.631
после всех копирований, файл сохраняем переведя обратно в кодировку UTF-8.
Gосле того как ВСЕ переменные title1-2-3 и т.д. и ВСЕ переменные для комментов com1-2-3 выставлены
уже следует блок меню, в котором эти переменные подставляются... и собственно говоря работают =)
Получается в итоге, грузится груб с текстовым меню (везде работает) затем можно выбрать как работать дальше
работает графический?
ок он автоопределит разрешение и ОДИН раз подождём прогрузки шрифтов и картинок.
Можно работать.
Графический режим работает некорректно? перезагрузаемся и выбираем текстовой режим.
Можно работать.
p.s. Возможно где-то тут есть подводные камни о которых я не знаю, либо это можно сделать как-то по другому...


Показать сообщения:    

Текущее время: 28-Мар 21:47

Часовой пояс: UTC + 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы можете скачивать файлы