Мнение Общественности |
Оценка Проекта
Всего ответов: 2940
|
Статистика |
|
|
grub2 mbr в файле
| |
JOYsticK8000 | Дата: Четверг, 07.05.2015, 15:05 | Сообщение # 1 |
Экспериментатор
Группа: Проверенные
Сообщений: 144
Статус: Отсутствует
| Может немного офтоп, решил я познакомится с 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
Статус: Отсутствует
| 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
Статус: Отсутствует
| 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
Статус: Отсутствует
| > А можно по подробнее как сделать 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
Статус: Отсутствует
| 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
Статус: Отсутствует
| > 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
Статус: Отсутствует
| 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
Статус: Отсутствует
| > А можно например передать загрузку грубу 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).
НАЖМИ МЕНЯ, прежде чем что-либо написать
|
|
| |
hans | Дата: Вторник, 29.08.2023, 21:11 | Сообщение # 9 |
Неизвестный
Группа: Проверенные
Сообщений: 1
Статус: Отсутствует
| прошу прощение за подъем чужой темы, нет прав создать свою, а спамить впустую не хочется.. есть желание установить 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 |
|
| |
|
|