Пользовательского поиска
Воскресенье, 22.12.2024, 14:41
Приветствую Вас Гость | RSS
Главная | grub2 mbr в файле - Форум | Регистрация | Вход
Меню Проекта
Форма входа
Мы Рекомендуем:
Мнение Общественности
Оценка Проекта
1. Отлично :-D
2. Хорошо :-)
3. Неплохо :-/
4. Очень плохо }:->
5. Ниочём :-(
Всего ответов: 2940
Статистика
GreenFlash
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: Sh1td0wn, asdqqww  
grub2 mbr в файле
JOYsticK8000Дата: Четверг, 07.05.2015, 15:05 | Сообщение # 1
Экспериментатор
Группа: Проверенные
Сообщений: 144
Репутация: 0
Статус: Отсутствует
Может немного офтоп, решил я познакомится с linux создал 3 раздела
Ext 4 /boot
Ext 4 /
swap

Карта разметки такая
Первичный Активный
1 NTFS с BСD
Первичный
2 NTFS Windows
Расширенный
3 Ext 4 /boot
4 Ext 4 /
5 swap
Первичный
6 NTFS данные

Далее получилась такая штука что линукс после установки автоматически у первого активного раздела изменил MBR на груб 2 и дальше я так понимаю передается загрузка на раздел 3 Ext 4 /boot где лежит сам груб 2.

Можно ли записать саму MBR от груб 2 с первого раздела в файл чтобы потом изменить MBR на NT 6, для запуска bootmgr а в BCD прописать что-то типа как груб4дос вызывается BCDEDIT /set %guid% path \grldr.mbr?
Слышал что в линуксе есть программа dd которая может записать например Ext 4 /boot в linux.bin, но это де будет занимать много места да и после обновления Ext 4 /boot эта вся штука может перестать работать. Так что хочется запускать именно MBR от груб2 через bootmgr.

Нашел в интернетах такую команду
dd if=/dev/sda5 of=/mnt/share/linux.bin bs=512 count=1 (Здесь мы копируем загрузочную область раздела /boot на dev/sda5 в файл linux.bin)

То есть если у меня MBR груба2 стала на
Первичный Активный
1 NTFS с BСD
То dd if=/dev/sda1 of=/mnt/share/linux.bin bs=512 count=1
Это скопирует именно MBR от груба2? Не будет лишних байт?


Сообщение отредактировал JOYsticK8000 - Четверг, 07.05.2015, 17:04
 
Sh1td0wnДата: Четверг, 07.05.2015, 19:24 | Сообщение # 2
Программист
Группа: Модераторы
Сообщений: 3829
Репутация: 210
Статус: Отсутствует
GRUB2 слишком толстый и с трудом ставится на разделы (grub-install выдаёт предупреждение, если видит, что GRUB2 устанавливается на раздел), а на NTFS-раздел у него вообще никакой причины ставиться не было. По умолчанию он ставится в MBR. Команда выше копирует не MBR, а загрузочный сектор первого раздела (вероятно, код запуска /bootmgr).

Если хотите установить GRUB2 на раздел, выполните grub-install --force /dev/sda5 (5, если /boot - первый логический раздел в расширенном), и тогда копируйте загрузочный сектор раздела той самой командой. После этого восстановите загрузчик Windows с установочного/восстановительного диска - и можно добавлять запуск сохранённого загрузочного сектора в меню.

Другой путь - сгенерировать код "загрузочного сектора" при помощи команды grub-mkimage.

А можно установить os-prober, запустить update-grub и получить пункт меню с запуском Windows прямо в GRUB2.


НАЖМИ МЕНЯ, прежде чем что-либо написать
 
JOYsticK8000Дата: Четверг, 07.05.2015, 19:50 | Сообщение # 3
Экспериментатор
Группа: Проверенные
Сообщений: 144
Репутация: 0
Статус: Отсутствует
Sh1td0wn, Да так и есть после установки бунту груб 2 прописался именно в MBR я просто запутался.

А можно по подробнее как сделать grub-mkimage?
Я впервые буду работать с линуксом. Установил Убунту.
Хочется инструкция для деревянного. по пунктам*

После grub-mkimage файл на выходе можно будет положить на системный раздел с BCD? И будет ли он работать если его прописать в BCD?

И странно почему нельзя скачать уже готовый grub.bin или что там на выходе получится, почему оно не распространяется вместе с грубом как в случае груб4дос?

В обще хочется сделать какую-то как бы инструкцию для тех кто хочет иметь виндовский MBR и первичный загрузчик использовать от мягих.


Сообщение отредактировал JOYsticK8000 - Четверг, 07.05.2015, 19:58
 
Sh1td0wnДата: Четверг, 07.05.2015, 21:29 | Сообщение # 4
Программист
Группа: Модераторы
Сообщений: 3829
Репутация: 210
Статус: Отсутствует
> А можно по подробнее как сделать grub-mkimage?

Код
# сгенерируем конфиг для нашего загрузочного файла
echo -e "set root=(hd0,msdos5)\nsource /boot/grub/grub.cfg" > boot.cfg
# базовый файл с загрузочным кодом
cat /usr/lib/grub/i386-pc/boot.img > myfile.boot
# необходимые для запуска основной части загрузчика модули
grub-mkimage -O i386-pc -c boot.cfg --prefix="(hd0,msdos5)/boot/grub" \
    biosdisk ext2 part_msdos configfile \
    >> myfile.boot
rm boot.cfg

(поправьте номер раздела с загрузчиком и пути к файлам, если они отличаются)
Вместо запуска раздела по номеру можно использовать UUID файловой системы или функцию поиска загрузочного раздела по файлу на нём - для этого нужно изменить конфиг загрузочного файла и добавить модуль search.

Подробнее про базовый загрузочный код и команду search.

> После grub-mkimage файл на выходе можно будет положить на системный раздел с BCD? И будет ли он работать если его прописать в BCD?

Должен. По крайней мере, если запускать его напрямую в виртуальной машине, работает.

> И странно почему нельзя скачать уже готовый grub.bin или что там на выходе получится, почему оно не распространяется вместе с грубом как в случае груб4дос?

Потому что GRUB2 распространяется в виде исходных кодов. Где-то на reboot.pro люди выкладывали GRUB2 в формате, аналогичном grldr/ntldr/bootmgr (такой файл получается, если в командах выше вместо boot.img взять g2hdr.img).


НАЖМИ МЕНЯ, прежде чем что-либо написать
 
JOYsticK8000Дата: Четверг, 07.05.2015, 21:59 | Сообщение # 5
Экспериментатор
Группа: Проверенные
Сообщений: 144
Репутация: 0
Статус: Отсутствует
Sh1td0wn, по сути это получается загрузочная дискетка с заранее настроенной конфигурацией? Она же будет и по размеру больше занимать получается и неудобвство именно в том что оно не универсальное получается.

Я просто так понял что если стоит grub2 mbr тогда оно ищет груб 2 и конфиг безразницы на каком разделе?

Например если я не буду создавать раздел ext4 /boot тогда кофиг с грубом 2 будет находится на том же разделе где и система и всеравно подхватится если если стоит grub2 в mbr. Вот как-то из простоты действий записать этот код MBR в файл и прописать его в BCD.

Или я может просто недопонимаю как это работает.

Не очень в программе dd и загрузочном коде но судя из этой статьи я понял что хватит первых 512 байт. Хотя не понятно почему там еще написано и про 63 сектора.

Или скорее всего я не понимаю саму структуру как работает этот груб 2.
Вот если судить по скрину из BOOTICE это что он записывает boot.img и core.img в MBR?


Сообщение отредактировал JOYsticK8000 - Четверг, 07.05.2015, 22:33
 
Sh1td0wnДата: Четверг, 07.05.2015, 23:38 | Сообщение # 6
Программист
Группа: Модераторы
Сообщений: 3829
Репутация: 210
Статус: Отсутствует
> Sh1td0wn, по сути это получается загрузочная дискетка с заранее настроенной конфигурацией?

Можно сказать и так.

> Она же будет и по размеру больше занимать получается и неудобвство именно в том что оно не универсальное получается.
> Я просто так понял что если стоит grub2 mbr тогда оно ищет груб 2 и конфиг безразницы на каком разделе?

Зависит от конфига, который в этот core.img встроен. Если воткнуть модуль search и модули поддержки всех файловых систем, получится универсальный core.img, ищущий конфиг на всех разделах, прямо как GRLDR.

> Не очень в программе dd и загрузочном коде но судя из этой статьи я понял что хватит первых 512 байт. Хотя не понятно почему там еще написано и про 63 сектора.
> Вот если судить по скрину из BOOTICE это что он записывает boot.img и core.img в MBR?

Дело в том, что GRUB2 очень толстый и целиком в 512 (на самом деле 446) байт не умещается. Соответственно, оставшаяся его часть (тот самый core.img) хранится в так называемой embedding area - области между MBR и первым разделом. При установке GRUB2 на диск внутри boot.img делается пометка, по какому именно адресу+размеру считывать core.img, так что если считать текущую MBR и запускать её из файла, всё будет работать, пока не произойдёт каких-то радикальных изменений в разметке жёсткого диска.

Судя по search_fs_file на скриншоте, с Bootice поставляется версия, которая ищет .../grub.cfg по имени.

Вот тут немного рассказано про процесс запуска GRUB2 и смещения внутри его частей, по которым записана важная информация.

> Не очень в программе dd и загрузочном коде но судя из этой статьи я понял что хватит первых 512 байт. Хотя не понятно почему там еще написано и про 63 сектора.

Там решают другую проблему: человек собирался скопировать только MBR с одного жёсткого диска на другой и установить таким образом GRUB2. По указанным выше причинам это ему не поможет. Мы же скопируем MBR в файл, но запускать её будем на том же жёстком диске, и она сможет найти все свои данные.


НАЖМИ МЕНЯ, прежде чем что-либо написать
 
JOYsticK8000Дата: Пятница, 08.05.2015, 08:34 | Сообщение # 7
Экспериментатор
Группа: Проверенные
Сообщений: 144
Репутация: 0
Статус: Отсутствует
Sh1td0wn, Спасибо большое, теперь хоть как-то понятно более менее как это работает. Действительно тогда удобнее самому конфигурировать при помощи grub-mkimage.

А можно например передать загрузку грубу 2 через груб4дос?

У меня настроено так что в меню BCD прописан grub4dos через который моднимаются разные утилиты если windows поломался. GRLDR и menu.lst лежит на разделе вместе с BCD. Вот в это меню прописать чтоб передавать загрузку в /boot/grub как то так например. Тогда другой вопрос как сделать так чтоб при установке той же Убунту не затрагивался MBR чтоб просто grub2 со своим конфигом запуска убунты ставился куда надо а уже вызов его через grub4dos например.

Или может в обще тогда легче из /boot/grub/grub.cfg переписать параметры запуска в меню grub4dos, там же нет ничего такого что не смог бы выполнить grub4dos?


Сообщение отредактировал JOYsticK8000 - Пятница, 08.05.2015, 10:19
 
Sh1td0wnДата: Пятница, 08.05.2015, 17:17 | Сообщение # 8
Программист
Группа: Модераторы
Сообщений: 3829
Репутация: 210
Статус: Отсутствует
> А можно например передать загрузку грубу 2 через груб4дос?

Из GRUB Legacy работает команда kernel /boot/grub/core.img. Если из GRUB4DOS она не сработает, можно сделать kernel /boot/grub/lnxboot.img + initrd /boot/grub/core.img (или склеить: cat lnxboot.img core.img > grub2.img и сделать kernel grub2.img).

> Тогда другой вопрос как сделать так чтоб при установке той же Убунту не затрагивался MBR чтоб просто grub2 со своим конфигом запуска убунты ставился куда надо а уже вызов его через grub4dos например.

В интерфейсе установщика можно выбрать устройство, на которое ставится загрузчик, но нельзя оставить его пустым. Чтобы не трогать MBR, можно поставить GRUB2 на раздел:


Больше возможностей в настройке загрузчика предоставляет debian-installer; диски для установки на его основе можно достать в виде сетевого установщика или версии для серверов. Ещё можно поиграть с "режимом эксперта" по кнопке F6 в десктопном установочном образе, но даст ли это возможность сделать нужные настройки, я не уверен.

Возможно, достаточно будет параметра ядра grub-installer/bootdev="", переданного установщику.

> Или может в обще тогда легче из /boot/grub/grub.cfg переписать параметры запуска в меню grub4dos, там же нет ничего такого что не смог бы выполнить grub4dos?

Тоже можно.
Код
kernel /путь/к/vmlinuz-версия root=UUID=uuid-корневого-раздела quiet splash     
initrd /путь/к/initrd.img-версия


Если /boot на том же разделе, что и корень, можно пользоваться символическими ссылками /vmlinuz и /initrd.img, они всегда указывают на последнюю установленную версию; если же /boot на отдельном разделе, нужно выставить link_in_boot = yes в /etc/kernel-img.conf и переустановить пакет с ядром (sudo aptitude reinstall linux-image-$(uname -r)).

Тогда можно и вовсе отказаться от установки загрузчика при помощи параметров ядра grub-installer/skip=true lilo-installer/skip=true (для debian-installer).
Прикрепления: 3465464.png (84.3 Kb) · 8343040.png (75.2 Kb)


НАЖМИ МЕНЯ, прежде чем что-либо написать
 
hansДата: Вторник, 29.08.2023, 21:11 | Сообщение # 9
Неизвестный
Группа: Проверенные
Сообщений: 1
Репутация: 0
Статус: Отсутствует
прошу прощение за подъем чужой темы, нет прав создать свою, а спамить впустую не хочется..
есть желание установить grub2 на второй раздел (возможно с запуском через другой загрузчик), диск сконфигурирован следующим образом
MRB BIOS
sda1 windows 10 с родным bcd загрузчиком
sda2 < хочется grub2 (был установлен на другом диске и скопирован сюда раздел dd)
sda3 linux с syslinux загрузчиком
sda4 data

при изменении активного раздела на sda3 linux с syslinux загружается без проблем
при изменении активного раздела на sda2 grub2 не стартует
в windows с помощью easybcd были добавлены 2 и 3-й разделы, хочу отметить, что через меню загрузки windows grub2 успешно стартует и работает!!

собственно ключевой вопрос, возможно ли как то сделать, что бы был активный второй раздел и с него стартовал grub2 не затирая при этом загрузчик windows?


Сообщение отредактировал hans - Вторник, 29.08.2023, 21:25
 
  • Страница 1 из 1
  • 1
Поиск:
Чат

Copyright GreenFlash © 2024
Рейтинг@Mail.ru