Як перевірити, на яких дисках grub2 фактично встановлено MBR?


17

Я перебуваю в системі Debian / Squeeze (історія сягає щонайменше Вуді), яка була оновлена ​​до grub2 як частина оновлення Squeeze. Все працює добре, але я збираюся возитися з конфігурацією диска.

Наразі в апараті працює 2 накопичувачі на 80 ГБ з розділами RAID1-ed /, / home та / boot (є ще одна пара накопичувачів з RAID1-ed "/ data" та парою свопів, якщо хтось цікавився, де знаходиться підміна , але я їх не торкаюся).

Я додав 2 130 ГБ SSD, розподілив їх на принаймні такі ж великі розміри, як і на дисках 80 ГБ, і маю намір перейти на нові SSD-накопичувачі шляхом збільшення RAID1 для включення їх, очікування синхронізації, а потім видалення старих накопичувачі з масивів, тому залишаються лише SSD-диски (а потім зростає файлова система). Але суперечки між mdadm / ext3 - це не таке питання.

Це дасть мені два застарілих накопичувачі 80 ГБ (IDE), які я хочу вийняти з машини. Мене хвилює те, що для їх видалення знадобиться деякі важливі MBR. Як переконатися, що машина залишається завантажувальною?

Більш конкретно:

  • Коли я робив оновлення Squeeze, я пам'ятаю, був представлений вибір щодо того, на які диски grub2 слід встановити (я пішов із замовчуванням, на якому були всі диски). SSD-диски в той час не були в машині; як я можу це повторити, щоб отримати grub для встановлення на SSD MBR? (Я здогадуюсь, це переналаштування dpkg якогось пакета).

  • Як я можу знайти, на яких дисках grub2 думає, що він встановлений? Добре горе, сьогодні майже 200 файлів під / boot / grub /! Куди шукати? Крім того, здається, що дивно, що /boot/grub/device.map.auto перераховує лише 3 накопичувачі на даний момент (2 з 80 ГБ, але лише один з інших дисків, і жоден із SSD). Як мені це оновити? ( Оновлення: це була червона оселедець; device.map.auto, здається, є пережитком років тому; device.map виглядала розумною в оновленнях grub-mkdevicemap. Подумайте, моя параноїя в цій області походить від старого BIOS мобо, який би упорядкувати порядок пристроїв, який бачив GRUB за примхою).

Результат: все пройшло добре, і тепер у мене є два старі 80 ГБ IDE накопичувачів, і швидка і швидка завантажувальна система, що працює з RAID1-ed SSD з усіма файловими системами, змінила розмір до нових розмірів розділів. Інший "зниклий фрагмент головоломки" Grub ", який я шукав, - dpkg-reconfigure grub-pcце підказки, на яких дисках підтримувати MBR. Відповідь Аарона насправді найбільше заспокоїла мене, що це працює так, як очікувалося, отже, прийнявши цю відповідь.

Відповіді:


17

MBR - 512 байт, тому швидкий спосіб дізнатися, чи є GRUB ...

dd if=/dev/sda bs=512 count=1 | xxd

Що скидає MBR, я бачу "GRUB" в шахті в байті 0x17F = 383.

dd if=/dev/sda bs=1 count=4 skip=383

Коли я це роблю, він друкує ' GRUB' з подальшим ddвисновком.

Ви можете загорнути це в forцикл башти або щось, щоб перейти на більше дисків. якщо ви не хочете робити це вручну.


4
Лише незначне доповнення - адже положення GRUB, ймовірно, зміниться від версії до версії, можна скористатися dd if=/dev/sda bs=1 count=512 | grep -aob GRUB. Це поверне положення маркера в завантажувальному секторі.
Алессандро Сантіні

16

У процесі завантаження є кілька кроків (я описую традиційні BIOS для ПК):

  1. BIOS зчитує перший сектор (512 байт) завантажувального диска.
  2. Код у цьому першому секторі зчитує подальші дані та код у фіксованому місці через інтерфейс BIOS. Цей інтерфейс BIOS відкриває лише два жорстких диска: диск 0 - це те, де був прочитаний перший сектор, а диск 1 - інший диск, який нелегко передбачуваний, якщо у вас є більше двох. Завантажувальний сектор містить байт, який вказує, на якому жорсткому диску подані подальші дані; це диск, що містить/boot/grub .
  3. Код, завантажений на попередньому етапі, розуміє розділи, файлові системи та інші поняття високого рівня. Дані включають в себе розташування файлової системи (тобто подібний рядок(hd0)/boot/grub ), який визначає, де знайти grub.cfgта надалі модулі Grub.
  4. grub.cfg виконується, як правило, для показу меню та завантаження ОС.

Завантажувальний сектор генерується за допомогою grub-setup, як правило, викликається через grub-install. Завантажувальний сектор закінчується на будь-який диск ви вказали (в синтаксисі Linux) на grub-installабо в grub-setupкомандному рядку. Ви можете перевірити наявність у вас завантажувального сектора на дискуfile -s /dev/sda . Оскільки ви додаєте новий диск і хочете завантажуватися з нього, вам потрібно запуститиgrub-install на новому диску. Запуск grub-installдекількох разів на одному диску є нешкідливим.

Важка частина знаходиться у кроці 2 вище. Якщо це взагалі можливо, поставте Grub (тобто /boot/grubкаталог) на завантажувальний диск BIOS (або, підходячи до цього з іншого напрямку, скажіть вашому BIOS завантажуватися з диска, де він /boot/grubзнаходиться). Ось тут і device.mapвступає в гру. Переконайтеся, що (hd0)це відображено на диску, який містить/boot/grub , а потім запустіть grub-installна цьому диску.

Якщо ваші два диски у програмній конфігурації RAID-1, у вас буде однаковий завантажувальний сектор. Це бажана поведінка: якщо один диск, що є завантажувальним диском BIOS, не працює, завантаження з іншого буде просто працювати (оскільки вони містять однакові байти в тих же відповідних місцях). Якщо ви відображали лише певні розділи, то встановлення завантажувального сектору впливає лише на один з дисків. Вам слід grub-installзнову запустити на другому диску, після зміни device.mapасоціювати(hd0) з диском, що містить другу дзеркальну копію /boot/grub.

Крок 3 досить складний, але зазвичай працює поза коробкою. На кроці 4 Grub знаходить файлові системи UUID або шукає іменовані файли, тому вам більше не потрібно турбуватися про різні способи призначення дисків.

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