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

    puhpol
  • 2
  • Стаж: 10 лет
  • Сообщений: 892
  • Репутация:75

    [+] [-]
BalAngel, stea.61, Приветствую Господа! aa
Спасибо огромное, теперь понятно. ay az

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

    BalAngel
  • 647
  • Стаж: 9 лет 8 месяцев
  • Сообщений: 258
  • Репутация:14

    [+] [-]
Не обращал внимание на то, что вместо файла unicode.pf2, можно применить euro.pf2
Если раздел не один, может возникнуть ситуация, когда при явном указывании на раздел с grub2 - hd(0,1) hd(0,2) - Grub2 не будет найден. Якобы не писать hd(x,y), мол, Grub2 будет искаться и найдется. Но вариант с неуказыванием hd(x,y) у меня не получается:
error: unknown filesystem
entering rescue mode...
grub rescue>
Попробую не на USB диске, а на флешке

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

    BalAngel
  • 647
  • Стаж: 9 лет 8 месяцев
  • Сообщений: 258
  • Репутация:14

    [+] [-]
GRUB 2,02 официальная версия была выпущена 26 04 2017
GRUB maintainers team is proud to announce GRUB 2.02 that we have just released. This release contains fixes for bugs uncovered in 2.02~rc2 and updated translations.
If you want a binary version for windows (i386-pc, i386-efi and x86_64-efi flavours) it’s available under http://ftp.gnu.org/gnu/grub/grub-2.02-for-windows.zip
and signature at
http://ftp.gnu.org/gnu/grub/grub-2.02-for-windows.zip.sig

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

    Devils
  • 14208
  • Стаж: 8 лет 5 месяцев
  • Сообщений: 20
  • Репутация:2

    [+] [-]
  • Откуда: Чехов
39965Оказалось все намного проще чем думалось. Вот рабочий скрипт по автоматическому появлению пункта меню для Grub2
if [ -f /test/bootmgr ]; then
menuentry "test"{
chainloader /efi/microsoft/x64/test/bootx64.efi
}
fi
Проверил на двух компах.
А если необходимо найти файл на другом разделе?
if [ search --set=root -f /EFI/Microsoft/Boot/bootmgfw.efi ] ; then
menuentry "Starting Windows from HDD (EFI)" --class win {
search --set=root -f /EFI/Microsoft/Boot/bootmgfw.efi
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
boot
}
fi
Такой вариант не находит файл на другом разделе, хотя файл есть.

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

    Ander_73
  • 15549
  • Стаж: 7 лет 10 месяцев
  • Сообщений: 3871
  • Репутация:127

    [+] [-]
Devils,
search --set=var -f /EFI/Microsoft/Boot/bootmgfw.efi
if [ -f ($var)/EFI/Microsoft/Boot/bootmgfw.efi ]; then
menuentry "Starting Windows from HDD (EFI)" {
  set root=$var
  chainloader ($var)/EFI/Microsoft/Boot/bootmgfw.efi
}
fi

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

    BalAngel
  • 647
  • Стаж: 9 лет 8 месяцев
  • Сообщений: 258
  • Репутация:14

    [+] [-]
Сборник статьей по Grub2 за последние 3-4 года (переведены с китайского на английский и русский)
Буковок много, слабонервным читать не советую. 36 МБ разархивированных.
Переводы неидеальные, кое-какое редактирование в большинстве делались в старых статьях, когда механические переводчики были не так продвинутые, как сейчас.
Чтобы в броузере видеть все статьи - жмякать grub2frame.html, правая колонка для содержания всего сборника (как в файлах chm)
DOC-HTML-Grub2

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

    AZJIO
  • 17953
  • Стаж: 6 лет 10 месяцев
  • Сообщений: 1325
  • Репутация:127

    [+] [-]
BalAngel, в архиве если посмотреть Scanner`ом, то там можно выкинуть некоторые файлы размером 10Мб, 4Мб и картинки по 2 Мб или обработать их конвертером сделав до 100 кб и останется компактный вариант, хотя я почитал, там много взято с этого форума тексты, нет структуры, например по разделам "Установка Grub2" и там же "Установка в Linux", "Установка в Windows", далее например "Синтаксис" и в ней "Внутренние переменные", "Примеры создания условий", далее: "структура файлов", "Локализация", "готовые конфиги" и в них "Загрузка ISO", "Загрузка ОС" и т.д.
А тут на общей простыне общие мысли, вроде что-то читаешь, а ответы на свои вопросы не находишь. Попробовал поиском по html-файлам искать к примеру информацию о переменной $prefix, и упоминания есть, а описания нет, в итоге методом тыка и поиском в гугле конкретных задач быстрее учишься чем читая простыни.
Просто вывел переменную используя echo в эмуляторе QEMU
menuentry "prefix"{
  echo $prefix
  pause
}

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

    AZJIO
  • 17953
  • Стаж: 6 лет 10 месяцев
  • Сообщений: 1325
  • Репутация:127

    [+] [-]
Вот фото MBR, там упоминание GRUB. Обычно в MBR указан файл, который загружается и продолжает выполнение загрузки. В данном случае интересует где связь, что начитает грузить MBR, какому файлу передавать загрузку. Читал что core.img является основным. Посмотрел бинарно boot.img он практически копия MBR.

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

    stea.61
  • 2490
  • Стаж: 8 лет 11 месяцев
  • Сообщений: 672
  • Репутация:101

    [+] [-]
  • Откуда: 61 RUS
Привет. aa
81037Читал что core.img является основным.
Так и есть.
При установке GRUB именно core.img и записывается на носитель в качестве загрузчика.
Содержимое (модули), конфиг core.img и его размещение на диске могут быть различные.
В MBR пишется boot.img и (по смещению 005С) адрес (номер сектора диска) записанного core.img, на который прямой адресацией передается управление из MBR.


Последний раз редактировалось: stea.61 (2020-10-26 21:06), всего редактировалось 1 раз

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

    AZJIO
  • 17953
  • Стаж: 6 лет 10 месяцев
  • Сообщений: 1325
  • Репутация:127

    [+] [-]
81041В MBR пишется boot.img и (со смещением 1F4) адрес (номер сектора диска+1) записанного core.img
Адрес = путь? Я не нахожу в секторе 1 путь \boot\grub\i386-pc\core.img. Если бы это было бинарное расположение файла core.img, то при копировании нового core.img в другое смещение он бы его не увидел, да и откуда ему знать, такой адрес если я распаковал архив. А пути я не вижу просмотрев несколько секторов. Смещение 1F4 это чуть меньше одного сектора, так как сектор 1FF = 512 байт.

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

    stea.61
  • 2490
  • Стаж: 8 лет 11 месяцев
  • Сообщений: 672
  • Репутация:101

    [+] [-]
  • Откуда: 61 RUS
AZJIO, я в посте адрес в MBR поправил - не 1F4, а 005С.
Со смещением 1F4 уже в файле core.img (точнее, в той области диска, куда записан загрузчик) в свою очередь прописывается адрес дальнейшей передачи управления.
Пути к файлу в MBR и нет - адресация не по имени файла, а прямая к области диска по номеру сектора.
Добавлено через 8 минут 55 секунд:
У core.img свой встроенный config, который может быть различным - формируется при компиляции.
В стандартном варианте выполняется поиск "домашнего" каталога, загрузка normal.mod (если он не встроен в core.img) и далее чтение-выполнение $prefix/grub.cfg.
81043и откуда ему знать, такой адрес если я распаковал архив.
Инсталлятор определяет и пишет нужную адресацию.
О какой "распаковке из архива" речь?

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

    AZJIO
  • 17953
  • Стаж: 6 лет 10 месяцев
  • Сообщений: 1325
  • Репутация:127

    [+] [-]
81044О какой "распаковке из архива" речь?
я заинтересовался способом установки Grub2 на флешку, в BOOTICE выбрал загрузчик Grub2 , он мне прописал MBR, но файлов нет, использовал команду
sudo grub-install --root-directory=/mnt/USB/ /dev/sdb
файлы появились, но есть проблемы с подключением фона и русского языка, а также пункты загрузки iso, которые работают на стационарном компе не работают с флешки, кроме одного образа, и я ломаю голову то ли Grub2 виноват, то ли проблема, что образы не могут смонтировать флешку, потому как пишет что sdb не найден или не удалось подключить, частично загрузившись.
фото

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

    stea.61
  • 2490
  • Стаж: 8 лет 11 месяцев
  • Сообщений: 672
  • Репутация:101

    [+] [-]
  • Откуда: 61 RUS
81047в BOOTICE выбрал загрузчик Grub2 , он мне прописал MBR, но файлов нет, использовал команду
В данном случае BOOTICE записал не только MBR, но и в область со 2-го по 63-й сектор свой (встроенный в BOOTICE) минимальный core.img - состав его модулей перечислен в окне установки MBR BOOTICE.
Добавлено через 5 минут 21 секунда:
81047файлы появились, но есть проблемы
Может иметь место несовместимость версий GRUB - core.img, встроенный в BOOTICE, довольно старый.
Добавлено через 5 минут 44 секунды:
Добавлено через 21 минута 41 секунда:
81047потому как пишет что sdb не найден или не удалось подключить, частично загрузившись.
А у тебя "/dev/sdb" где-то к параметрах загрузки прописано?
Если загрузка начинается с Flash, то она должна быть /dev/sda - зарузочный HDD (или Flash) это, как правило, /dev/sda.
А вообще самый правильный вариант - использовать в параметрах загрузки ID или метку диска.

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

    AZJIO
  • 17953
  • Стаж: 6 лет 10 месяцев
  • Сообщений: 1325
  • Репутация:127

    [+] [-]
stea.61, поломал загрузку, попробовал со второй страницы скачать виндовый инсталятор, по описанию сделал
grub-install.exe --boot-directory="d:/boot" \\.\physicaldrive1
теперь пишет grub_file_filtres не найден. У меня уже была эта ошибка. BOOTICE тоже не помогает.
81048Если загрузка начинается с Flash, то она должна быть /dev/sda - загрузочный HDD (или Flash) это, как правило, /dev/sda.
что если это для распакованного iso работает или для CD-диска, а для загрузки из образа он ещё не знает откуда он загрузился и монтирует диски, чтобы найти на них путь. Если образ не рассчитан монтировать флешки на загрузке, думая что он грузится с диска и флешка как бы ему не нужна, если нужна смонтируешь в файловом менеджере. На доступных устройствах думаю hdd имеет приоритет, пока не известно откуда шла загрузка. Fedora например не монтирует ntfs при поиске iso на дисках и не может себя загрузить, если только образ поместить на ext4 или fat32.
Восстановил загрузчик. Пробовал сначала v2.0.4 с ней проблема, скачал 2.0.2 с ней сразу пошло.
Вот теперь и русский язык загрузил и фоновую картинку.

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

    stea.61
  • 2490
  • Стаж: 8 лет 11 месяцев
  • Сообщений: 672
  • Репутация:101

    [+] [-]
  • Откуда: 61 RUS
81049образ не рассчитан монтировать флешки на загрузке
Для Linux Flash-Disk - это HDD.
Linux их может не монтировать (зависит от init скрипта), но в блочные устройства обязательно определит и номер присвоит.
Загрузочный диск, вероятнее всего, получит имя /dev/sda, но это не обязательно, потому и написал, что правильнее всего
в параметрах загрузки root-device прописывать через ID или метку диска.
81049Fedora например не монтирует ntfs при поиске iso на дисках и не может себя загрузить, если только образ поместить на ext4 или fat32.
Это, скорее всего, определено init файлом данного конкретного дистра, или может даже в ядре модуль ntfs отсутствовать - в каждом дистре своя политика. ab
PS Посмотрел твои скрины на ru-board:
"тут вначале пишет не могу открыть sdb, съёмное устройство не найдено"
Вероятная причина - на Flash не сброшен "грязный бит" от Windows.
Это довольно типично для Flash с FAT32 - Linux его воспринимает как признак того, что Win "не освободила" носитель.
В Mix-Linux я специально для обхода этой ситуации заметно усложнял initrd.


Последний раз редактировалось: stea.61 (2020-10-26 23:31), всего редактировалось 2 раз(а)

Страница 3 из 4


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

Текущее время: 26-Дек 14:03

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


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