Чи можливо мати boot.img Grub2 в MBR і завантажити його core.img з окремого завантажувального розділу?


3

У мене є багатозавантажена система, якою я хотів би використовувати Grub для управління. Версія доставки Grub з моїм дистрибутивом Linux є Grub2, і вона встановлює еквівалент етапу 1.5-2, core.img, в решта секторів на першому треку після MBR, але перед першим розділом. На жаль, ці сектори потребують іншої програми.

У мене є окремий первинний / завантажувальний розділ. Якби я міг зберігати boot.img як мій MBR, але якби він виглядав у / boot-розділі для core.img, а не вбудованому в секторах, що безпосередньо слідують за MBR, все б справно працювало. Чи можливо це за допомогою grub2?

linux  mbr  grub 

здається, це має бути можливо. оскільки grub може завантажувати ланцюг, можливо, вам знадобиться повністю встановити grub в завантажувальний сектор розділу; тоді ви можете піти з встановлення лише коду stage1 в MBR. не впевнений у цьому точно, потрібно буде більше досліджувати.
шарлатаний кіхот

Який тип додатка потрібен для адреси секторів поза розділом? Це якийсь смішний DRM або антипіратський елемент до програми?
Олексій

Введення будь-якого коду в нічиїй землі, що передує 1-й перегородці, - це просто прості гайки, і, безумовно, одна з найбільших помилок GRUB.
kreemoweet

@kreemoweet: За винятком того, що зона "зарезервована для завантажувальних операцій". Тут також зберігається TrueCrypt ключ шифрування. Будь-яка програма, яку не потрібно завантажувати, ніколи не повинна пошкоджувати цю область.
BatchyX

Відповіді:


1

Можна налаштувати GRUB2 в режимі BIOS для завантаження з розділу без вбудовування в область після MBR, але є деякі ускладнення:

  1. Ви повинні мати /bootзвичайний розділ (це може бути первинний або логічний розділ, але не слід використовувати програмні RAID (md) або LVM). Окремий розділ для /bootне є абсолютно необхідним, але якщо /bootвін зберігається в кореневій файловій системі, ті самі обмеження розділів застосовуватимуться до розділу кореневої файлової системи.

  2. Файлова система, яка використовується для, /bootповинна підтримувати режим встановлення блок-списку. Найчастіше це підтримує файлові системи Linux; Важливими винятками є btrfsі xfs(однак, btrfsє достатньо велика площа завантажувача для вбудовування core.imgтуди, тому встановлення GRUB2 там ще може працювати). Знову ж таки, якщо у вас немає окремого розділу /boot, ці обмеження застосовуватимуться до вашої кореневої файлової системи.

    Режим встановлення блочного списку розробникам GRUB2 не рекомендується, тому що в цьому режимі core.imgзберігається у /bootфайловій системі як звичайний файл, але насправді до нього можна скористатись секторальними номерами, що зберігаються в завантажувальному секторі розділу, генерованому GRUB (і core.imgсам по собі), тому роблячи будь-яка операція з цим файлом може порушити завантаження. Це ще одна причина мати окремий /bootрозділ при використанні цього режиму - менше шансів, що ви виконаєте деяку операцію з файловою системою, яка вплине core.img.

  3. Якщо ви /bootперебуваєте на логічному розділі, ви повинні мати певні засоби для запуску коду завантажувача з сектору завантаження розділу - багато версій коду MBR підтримують завантаження лише з первинних розділів. Одне рішення - використовувати код MBR від Syslinux , який підтримує завантаження навіть з логічних розділів.

Припустимо, що ваш /bootрозділ /dev/sda2; то слід встановити там GRUB2 із такою командою:

grub-install --force /dev/sda2

Вам потрібно скористатися --forceопцією, оскільки останні версії GRUB2 відмовляються від використання режиму установки блочного списку без нього.

Потім слід використовувати fdisk /dev/sdaдля позначення розділу 2 активним.

Нарешті, якщо у вас був якийсь код завантаження за замовчуванням у MBR (наприклад, старіша установка GRUB), вам потрібно встановити код, який завантажує завантажувальний сектор з активного розділу - наприклад, ви можете взяти mbr.binз Syslinux:

dd bs=440 count=1 conv=notrunc if=mbr.bin of=/dev/sda

Якщо ви використовуєте логічний розділ для /boot, ви можете також розглянути можливість використання altmbr.binвід Syslinux, який приймає номер розділу завантаження з байту в MBR замість того, щоб шукати активний розділ, так що будь-яка операційна система, яка не є Linux на комп'ютері, не буде плутати логічний розділ, позначений як активний.


0

Наскільки я бачу, неможливо налаштувати Grub2 таким чином, що код у MBR виглядає десь за винятком наступного сектора для його core.img.

Однак ви можете завантажити весь Grub у свій / завантажувальний розділ. Це заощаджує необхідність втручатися в будь-який з даних, що зберігаються на початку диска. За замовчуванням код у MBR знайде активний розділ та управління передачею до першого сектору цього розділу. Якщо вам потрібен відповідний MBR, є одна, що постачається разом із Syslinux .

Це передбачає, що ваш / завантажувальний розділ є нормальним первинним розділом.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.