Завантажити за допомогою grub, linux exp group
Завантажити за допомогою GRUB!
GRUB - це не назва гусениці, їжі з ресторану швидкого харчування або модного акронима в стилі GNU. GRUB - це GNU GRand Unified Bootloader.
І він дійсно найбільший з загрузчиков, здатний завантажити будь-який Лінукс, та й взагалі практично будь-яку операційну систему, пропрієтарних чи, опенсорсний чи, неважливо.
GRUB не пов'язаний з будь-якою системою, навпаки, про нього можна думати як про дуже маленькою і дуже спеціалізованої по функціоналу ОС. Основна мета ядра GRUB - розпізнавати файлові системи і завантажувати в пам'ять образи завантаження, і для виконання цих дій у нього є інтерфейс, який базується на меню, а також інтерфейс командного рядка.
Інтерфейс командного рядка - вельми потужний і функціональний, з історією команд і автодоповнення, як звикли користувачі bash.
GRUB - звичайний компонент Мультізавантажувальний систем, що розуміє образи завантаження всіх Лінукс, BSD-систем, GNU / Hurd, BeOS, систем дядька Білла. Навіть якщо ваш основний завантажувач - LILO, недурною ходом матиме дискету з GRUB, щоб максимально швидким і простим способом відновити, наприклад, вбиту завантажувальний запис диска (MBR).
Тому далі можна опустити міркування на тему "Чому GRUB" і перейти до експериментів.
Як завжди, установка GRUB - двохстадійний процес. Перша стадія полягає в збірці GRUB в своєму робочому системному оточенні, і ми для цього будемо використовувати Лінукс. Друга стадія є встановлення та налаштування завантажувача в якості основного для Мультізагрузочний конфігурації.
Перший крок звичайний: завантажимо вихідні, растарім їх і запустимо ./configure, make, make install:
tar -xzvf grub-0.5.96.1.tar.gz
cd grub-0.5.96.1
./ configure
make
make install
Будуть зібрані виконувані файли: grub, grub-install і mbchk; допоміжні файли встановляться в / usr / local / share / grub / i386-pc /, також скопійовано мани і інформація GNU.
Для освоєння другої стадії створимо завантажувальний флоппі з GRUB. Після того, як експерименти в рамках пісочниці на дискеті стануть звичними і зрозумілими, можна встановлювати завантажувач в MBR основного диска. Навіть якщо ви не станете встановлювати GRUB, наявність такої дискети не завадить. Мало що.
Поройтесь в своїх кошиках для сміття в пошуках невикористовуваних флоппі-дисків, один з яких навіть може виявитися справним, і відформатуйте знайдений скарб:
fdformat / dev / fd0
mkfs -t msdos / dev / fd0
Ми збираємося помістити ряд файлів на цей диск, тому змонтуйте його в ваше звичайне місце для монтування флоппиков:
grub> cat (hd0,2) / etc / fstab
Подібно bash, стрілки вгору і вниз допоможуть вам переміщатися по історії команд GRUB-shell, а tab буде доповнювати імена команд і імена файлів.
Нарешті, можна викликати специфічний інтерфейс меню, що базуються на файлі конфігурації:
grub> configfile (fd0) /boot/grub/menu.lst
Ця команда перемкне GRUB в режим меню з інтерфейсом, визначеному в файлі menu.lst. Ми ще не створили його, але зараз створимо.
Використання командного рядка GRUB - це круто, однак після сотні стартів різних систем ентузіазм якось злегка зменшується. Потрібно мінімальна автоматизація. Інтерфейс меню GRUB - повністю настроюється, так що боятися нема чого.
Крім вибору системи для завантаження меню (а точніше, його конфігураційний файл) надасть нам такі можливості, як установка системи для завантаження за замовчуванням після тайм-ауту, вибір системи для завантаження, якщо чергова завантаження закінчилася збоєм, перемикання між режимами меню і командного рядка, інтерактивне редагування меню, захист завантажувача паролем.
Коли GRUB завантажується, він автоматично перевіряє наявність файлу /boot/grub/menu.lst на своєму завантажувальному пристрої. Якщо файл знайдений, завантажувач переходить в режим меню, як показано на малюнку 2.
Малюнок 2. Меню GRUB
Лістинг файлу меню /boot/grub/menu.lst:
# /boot/grub/menu.lst
# Grub boot menu configuration
# General configuration:
timeout 10
default 0
fallback 2
fallback 4
color light-gray / blue red / light-gray
# Boot stanzas follow
# Each is implicitly numbered from 0
# In the order of appearance below
# (0) Debian (default boot):
title Debian [/ vmlinuz]
root (hd0,2)
kernel / vmlinuz root = / dev / sda3 ro
# (1) Debian - runlevel 1
title Debian [/ vmlinuz single]
root (hd0,2)
kernel / vmlinuz single root = / dev / sda3 ro
# (2) Debian-old (first fallback)
title Debian [/vmlinuz.old]
root (hd0,2)
kernel /vmlinuz.old root = / dev / sda3 ro
# (3) Debian-kernel testing
title Debian [/vmlinuz.test]
root (hd0,2)
kernel /vmlinuz.test root = / dev / sda3 ro
# (4) Slackware (second fallback):
title Slackware
root (hd0,1)
kernel / vmlinuz root = / dev / sdb2 ro vga = 791 mem = 256M
# (5) FreeBSD:
title FreeBSD
root (hd1,0, a)
kernel / boot / loader
# (6) OpenBSD:
title OpenBSD
# You would like to use:
## root (hd1,1, a)
## kernel --type = openbsd / bsd
# But openbsd passes bios kernel parameters with
# Its own bootloader, the first stage of which is
# Installed in the partition boot record, and in
# Turn calls / boot, which in turn loads kernel / bsd.
# So just use the GRUB chainloader instead:
root (hd1,1)
makeactive
chainloader +1
# (7) BeOS:
title BeOS
rootnoverify (hd1,2)
makeactive
chainloader +1
# (8) WinDoze
title Win98
root (hd0,0)
makeactive
chainloader +1
# End file menu.lst
Перший набір команд задає основні конфігураційні параметри. Timeout встановлює час в секундах для очікування вибору пункту меню, після закінчення завантажиться система за замовчуванням.
Команда default якраз і задає цю систему за замовчуванням. Система може бути охарактеризована рядків. Набори іменуються починаючи з 0. Відображення систем йде в такому ж порядку, в якому вони вказані в конфіги.
Команда fallback задає систему для завантаження, якщо попередня завантаження завершилася збоєм. Можна задати більше однієї.
Команда color дозволяє вдихнути трохи життя в текстове меню шляхом зміни кольору символів. Синтаксис команди кольору:
color foreground / background [hilite-fg / hilite-bg]
де фон і передній план повинні бути обрані з набору квітів black, blue, green, cyan, red, magenta, brown і light-gray; dark-gray, light-blue, light-green, light-cyan, light-cyan, light-red, light-magenta, yellow і white.
Серед цих квітів тільки перші вісім використовуються для фону. hilite-fg / hilite-bg пара визначає, як виглядатиме вибраний пункт меню.
Далі йдуть набори рядків для завантажуваних систем, по одному набору на систему. Title визначає назву системи і як вона буде відображатися в меню. Відмінності з командним рядком - в наборах немає команди boot. Вона виконується автоматично.
Цей приклад охоплює лише деякі з можливостей GRUB. Крім завантаження звичайних систем, ви можете завантажувати ядра для відновлення, тестові ядра, ядра з різними опціями і так далі.
По суті справи, конфігураційний файл GRUB дуже схожий з конфігурацією LILO. Крім того, після деякого освоєння GRUB-shell створити просту конфігурацію має бути відносно нескладно. Не турбуйтеся про досконалість першого досвіду; ви швидко переконаєтеся, що зміни можна вносити швидко і інтерактивно і GRUB-shell завжди доступний в будь-якому режимі.
Після створення конфігурації, змонтуйте GRUB-дискету знову і скопіюйте файл в потрібну локацію:
cp mygrub.conf /floppy/boot/grub/menu.lst
Тепер при завантаженні з дискети ви побачите (бінго!) Меню, як на малюнку 2. Зачекайте timeout секунд і система за замовчуванням завантажиться самостійно. Або ж за допомогою клавіші стрілок для переміщення на потрібну позицію, де буде потрібно натиснути Enter. Або натисніть "c" для переходу в командний режим. З командного режиму назад в меню можна перейти натисканням клавіші Esc.
Редагувати записи меню теж можна. Це дозволить змінити або додати деякі опції перед власне завантаженням. Ці зміни будуть мати значення тільки в даній сесії. Для закріплення їх потрібно змінити конфігураційний файл.
Випробовуйте свою конфігурацію з дискети, поки вона вас абсолютно не задовольнить. Потім можна пропалити завантажувач на жорсткий диск.
Установка на жорсткий диск
Операції з жорстким диском з установки GRUB в цілому такі ж, як і для установки на флоппі-диск. Різниця в тому, що на дискеті все ресурси, потрібні GRUB, знаходяться тут же. Це всього-на-всього каталог з файлами і завантажувальний запис в MBR дискети. При установці на жорсткий диск ви повинні вирішити, де будуть розташовуватися ці ресурси.
Наприклад, ви можете розташувати каталог / boot / grub на першому первинному розділі першого диска і скопіювати всі потрібні файли туди, як у випадку з дискетою. У нашому модельному випадку цей розділ буде містити установку Win98. Але ви можете також встановити каталог / boot / grub взагалі на будь-який розділ системи, аби була файлова система, про яку знає GRUB. На практиці зазвичай розташовують файли в найбільш стабільному розділі, не в тому, який заново через день.
У нашому прикладі ми будемо використовувати розділ з установкою Slackware. Створимо каталог / boot / grub, скопіюємо туди потрібні файли (вони у нас лежать в / usr / local / share / grub / i386-pc). Створений файл конфігурації меню помістимо туди ж.
Запустимо оболонку GRUB (або завантажити за допомогою нашого флоппі в командному режимі). У запрошенні оболонки виконаємо наступне:
grub> root (hd0,1)
grub> setup (hd0)
grub> quit
Власне, все. Тепер наша система повністю оGRUBлена, з урахуванням перезапису MBR. Перевантажити і переконаємося в працездатності меню.
Кілька слів про ці команди установки. перша,
каже GRUB змонтувати цей пристрій. Всі файли тепер мають шляху щодо цього пристрою.
це спрощений інтерфейс до програми установки GRUB. Тут ми вказуємо пристрій - носій MBR, тобто весь перший жорсткий диск, а не перший розділ цього диска. Ваш технічний письменник може допустити таку помилку, ви ж немає, так як відмінність критично. Кожен розділ має бут-сектор, але не в кожному розміщення первинного завантажника призведе до потрібного результату. Головний завантажувальний запис, MBR, зчитується в пам'ять BIOS-ом машини, тобто при кожному завантаженні. Її то нам і треба.
Коли GRUB встановлює себе на пристрій, він в першу чергу копіює невеликий шматок себе в MBR. Ця ділянка коду може викликати stage1. Коли управління передано stage1, вже є достатньо інформації про те, звідки і як завантажити наступну стадію. Файли знайдуться в каталозі / boot / grub на вже змонтованому розділі.
Для перевірки цієї установки просто змініть якісь параметри в /boot/grub/menu.lst. Будь-які зміни негайно позначаться на наступному завантаженні.
Якщо зіпсована MBR, можна відновити завантажувальний запис DOS. Для цього використовується команда:
з дискети DOS.
Якщо зіпсований завантажувач ОС, наприклад, ви переписали помилково PTR, потрібно відновити сектор розділу засобами ОС. Наприклад, для Win98 це робить команда
знову-таки з дискети.
Інші ОС як правило теж мають кошти для відновлення своїх завантажувальних записів. Для FreeBSD, наприклад, потрібно дивитися мани boot0cfg (8), для OpenBSD - installboot (8).
Як і багато інших проектів GNU, GRUB має ряд недокументованих можливостей, серед яких, наприклад:
* Ремапімнг дисків і маніпуляція прихованими розділами
* Мережева завантаження за допомогою BOOTP і DHCP для підтримки Мультізавантажувальний схем через мережу
* Ремапінг клавіатури, прямий доступ до геометрії диска, читання пам'яті, тести портів введення / виводу і процесора, підтримка декомпресії деяких форматів
GRUB знаходиться в фазі активної розробки, так що корисно почитати документацію GNU.