Завантажувач GNU GRUB

Під час завантаження системи першого користувача зустрічає меню спеціальної програми-завантажувача У Windows останніх версій також використовується подібна технологія, але, як правило, вона прихована від користувача, і звертається він до налаштувань завантажувача досить рідко Тому давайте поговоримо про процес завантаження операційної системи і місце завантажувача Якщо вам не терпиться приступити до роботи, можете перейти до наступної глави і повернутися сюди в тому випадку, коли виникне необхідність у налаштуванні параметрів завантажувача

Дійсно, користуючись однією операційною системою, зазвичай не замислюєшся про те, як відбувається процес завантаження У Linux з завантажувачем доводиться стикатися при перекомпіляції ядра у разі, коли необхідно змінити поведінку системи за умовчанням при додаванні нової операційної системи або нового жорсткого диска в аварійних випадках і в інших ситуаціях Деякі моменти ми будемо детально розбирати по ходу книги

Слід зазначити, що багато операцій з перебудови параметра завантажувача автоматизовані Наприклад, при оновленні ядра з репозитарія пакетів в конфігураційний файл завантажувача відразу ж заноситься відповідний запис Тому знання того, як працює завантажувач, буде потрібно при вирішенні нештатних ситуацій або для тонкого налаштування системи

Отже, при старті компютера відбувається зчитування змісту так званого MBR (Master Boot Record), який розташовується завжди в одному і тому ж місці – в першому секторі жорсткого диска (якщо зовсім точно – в нульовому) Займає MBR всього 512 байт і складається з трьох розділів Другий розділ називається таблицею розділів (англ Partition Table) Займає він 64 байта, складається з чотирьох записів, в кожній з яких описується геометрія первинних розділів диска (перший і останній циліндр, займаний розділом) Саме тому на диску може бути не більше чотирьох первинних розділів Тут же вказується тип файлової системи розділу, 1 біт займає ознака активності розділу Такий біт вказує на можливість використання розділу для завантаження операційної системи

У перших 446 байтах поміщається програма-завантажувач Кожен первинний і розширений розділ містить також запис на самому початку розміром один сектор (512 байт), званий Boot Record У деяких операційних системах програма-завантажувач, розташована в MBR, просто передає управління по ланцюжку первинного розділу, поміченого як активний, який, у свою чергу, завантажує необхідну програму для запуску системи Але більшості операційних систем мало відведених 512 байт для розташування всіх даних, необхідних для нормального завантаження Тому в завантажувальний сектор поміщаються тільки деякі інструкції, необхідні для запуску первинного завантажника операційної системи

У Linux найбільш популярні менеджери завантаження LILO (Linux LOader) і GRUB (GRand Unified Bootloader) Оскільки в Linux Mint для завантаження операційної системи використовується другий, про нього і піде мова далі Офіційний сайт проекту – http://wwwgnuorg/software/grub/

Проект виник в 1995 р при розробці ядра Hurd – досить оригінальною операційної системи, на жаль, так і не доведеної до остаточного релізу Розробники, замість того щоб завантажувати ядро Hurd якось по-особливому, запропонували специфікацію мультизавантаження (англ Multiboot Specification), що дозволяє завантажувати операційну систему універсальним чином Ті ж операційні системи, які були сумісними з цією специфікацією, зберегли схему завантаження по ланцюжку У 1999 р GRUB офіційно приєднався до проекту GNU, і вже починаючи з 2000 р виробники стали включати GRUB в свої дистрибутиви Сьогодні доступна GRUB версії 2, яка і використовується в якості менеджера завантаження в більшості сучасних дистрибутивів Далі мова піде саме про цю версію

ПРИМІТКА

Конфігураційний файл GRUB версії 1 називався / boot / grub / grubconf і мав дещо відмінний від першої версії формат

Програма установки Linux Mint сканує всі розділи жорсткого диска і заносить в конфігураційний файл GRUB / boot / grub / grubcfg Переглянути його вміст можна, ввівши команду (рис 216)

$ cat /boot/grub/grubcfg

Однак головна відмінність у версіях GRUB полягає в тому, що редагувати конфігураційний файл / boot / grub / grubcfg, як це робили у версії 1 завантажувача, не можна Про це красномовно свідчить попередження DO NOT EDIT THIS FILE (від англ «Не редагуйте файл») на самому початку файлу Файл генерується автоматично скриптом / usr / sbin / grub-mkconfig на підставі шаблонів, розташованих в каталозі / Etc / grubd, і налаштувань в / etc / default / grub Тому ви можете втратити свої правки при оновленні утиліти GRUB або в інших випадках, коли буде потрібно регенерація / boot / grub / grubcfg Файл досить великий за змістом, тому наведу лише окремі його частини, достатні, щоб розуміти основні установки

# DO NOT EDIT THIS FILE

# It is automatically generated by /usr/sbin/grub-mkconfig using templates

Рис 2i6 Конфігураційний файл GRUB v2

# from /etc/grubd and settings from /etc/default/grub

### BEGIN /etc/grubd/00_header ### if [  -s  /boot/grub/grubenv ] then

have_grubenv=true load_env

fi

set default=&quot0&quot

Параметр se t defaul t показує, яка система буде завантажуватися за замовчуванням, цифра 0 вказує на першу за списком запис, зазначену в параметрі

menuentry У нашому випадку це Linux Mint 9, 2632-21-generic(dev/sda1)

insmod reiserfs set root=(hd0,5)

Ці дві інструкції завантажують модуль ядра для файлової системи ReiserFS і вказують на кореневий розділ, в якому розміщені у тому числі конфігураційні файли завантажувача GRUB

if [ ${recordfail} = 1 ] then set timeout=-1

else

set timeout=10

###   END   /etc/grubd/00_heade r   ###

Параметр set timeout встановлює час очікування меню завантажувача, протягом якого користувач може вибрати іншу операційну систему

Далі йдуть описи тем оформлення меню завантаження В якості фонової картинки обраний малюнок у форматі PNG / boot / grub / linuxmintpng

###   BEGIN   /etc/grubd/05_debian_them e   ###

set menu_color_normal=white/black

set menu_color_highlight=black/white

###   END   /etc/grubd/05_debian_them e   ###

###   BEGIN   /etc/grubd/06_mint_them e   ###

insmod reiserfs set root=(hd0,5)

search –no-floppy –fs-uuid –set  ff8becfc-d3c4-4956-afbOc4f455bb0ba3 insmod png

if background_image /boot/grub/linuxmintpng then

set color_normal=white/black

set color_highlight=white/light-gray

else

set menu_color_normal=white/black

set menu_color_highlight=white/light-gray

### END /etc/grubd/06_mint_theme ###

І нарешті, меню вибору операційної системи:

### BEGIN /etc/grubd/10_linux ###

Завантажувач GNU GRUB

menuentry &quotLinux Mint 9, 2632-21-generic (/dev/sda1)&quot { recordfail=1

if [ -n ${have_grubenv} ] then save_env recordfail fi set quiet=l

insmod reiserfs set root=(hd0,5)

search —no-floppy —fs-uuid —se t  ff8becfc-d3c4-4956afb0-c4f455bb0ba3

linux /boot/vmlinuz-2632-21-generic root=UUID=5bc61bd938b5-43a4-b3e8-11f9fd8ab389 ro   quiet splash

initrd  /boot/initrdimg-2632-21-generic

### END /etc/grubd/10_linux ###

### BEGIN /etc/grubd/20_memtest86+ ### menuentry &quotMemory test (memtest86+)&quot {

linuxl6 /boot/memtest86+bin

}

### END /etc/grubd/20_memtest86+ ###

### BEGIN /etc/grubd/30_os-prober ###

menuentry &quotMicrosoft Windows XP Home Edition (on /dev/sdal)&quot { set root=(hd0,1)

chainloader +1

### END /etc/grubd/30_os-prober ###

Всі операційні системи, наведені в параметрі menuentry, будуть доступні для вибору при завантаженні Якщо користувач нічого протягом 10 секунд не вибере, то буде запущена операційна система, зазначена в se t default

Рядок

linux /boot/vmlinuz-2632-21-generic root=UUID=ff8becfc-d3c44956-afb0-c4f455bb0ba3 ro quiet splash

вказує на файл ядра / boot/vmlinuz-2632-21-generic і параметри, що передаються ядру при завантаженні системи За допомогою root вказується кореневий розділ Як бачите, для позначення розділу використаний UUID, а не імя

ПРИМІТКА

Initrd (Initial RAM Disk) – це образ диска, розпаковувати в оперативну память для початкової ініціалізації системи, який утворює тимчасову файлову систему, що містить драйвера і утиліти, які необхідні ядру при старті

Так, редагувати / boot / grub / grubcfg безпосередньо не має сенсу Подивимося, звідки беруться установки для його генерування

Спочатку виводимо вміст файлу / etc / default / grub, після установки системи за допомогою утиліти cat або в будь-якому текстовому редакторі:

$ cat /etc/default/grub

# If you change this file, run `update-grub´ afterwards to update

# /boot/grub/grubcfg

GRUB_DEFAULT=0

GRUB_HIDDEN_TIMEOUT=0

GRUB_HIDDEN_TIMEOUT_QUIET=true GRUB_TIMEOUT=&quot10&quot

GRUB DISTRIBUTOR=`lsb release -i -s 2&gt /dev/null || echo Debian`

GRUB_CMDLINE_LINUX_DEFAULT=&quotquiet splash&quot GRUB_CMDLINE_LINUX=&quot&quot

Завантажувач GNU GRUB

# Uncomment to disable graphical terminal  (grub-pc only)

#GRUB_TERMINAL=console

# The resolution used on graphical terminal

# note that you can use only modes which your graphic card supports via VBE

# you can see them in real GRUB with the command 4vbeinfo

#GRUB_GFXMODE=640×480

# Uncomment if you dont want GRUB to pass &quotroot=UUID=xxx&quot parameter to Linux

#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entrys

#GRUB_DISABLE_LINUX_RECOVERY=&quottrue&quot

Тепер розберемо деякі параметри Ви, напевно, звернули увагу, що файл складається з ряду рядків виду ПАРАМЕТР = ЗНАЧЕННЯ. Все, що записано після знака дієз #,

вважається коментарем і не враховується при регенерації нового конфігураційного файлу Закоментувавши рядки, розробники вже приготували настройки, і щоб привести їх в дію, слід просто зняти коментар Порівнявши параметри з файлом / boot / grub / grubcfg знаходимо збіги Наприклад, рядок

GRUB_DE FAULT=0

відповідає set def ault = 0, тобто при необхідності можна змінити операційну систему, яка буде завантажуватися за замовчуванням, прописавши тут потрібне значення Причому якщо в якості параметра вказати saved, то наступного разу буде завантажуватися операційна система, обрана в минулий раз Крім цифри можна відразу задати мітку, як вона прописана в параметрі menuentry Наприклад:

GRUB_DEFAULT=&quotLinux Mint 9 Isadora, linux 2632-21-generic (/dev/sda5)&quot

Змінивши параметр GRUB_TIMEOUT = 10, ми встановимо новий час очікування вибору меню користувачем в секундах Встановивши значення -1, ми відключимо таймер відліку, і меню буде відображатися до тих пір, поки користувач не вибере потрібний пункт

Рядок

GRUB_CMDLINE_LINUX_DEFAULT=&quotquiet  splash&quot

задає параметри ядру за замовчуванням У даному випадку активована графічна заставка і «мовчазний режим» завантаження При необхідності дописуємо тут потрібні додаткові параметри Про деякі з них ми будемо говорити по ходу книги Якщо завантаження системи неможлива через проблеми сумісності обладнання, слід спробувати додати один з наступних параметрів – noapic, nolapic, noacpi, acpi = off, pci = noacpi, nopcmcia (якщо є pcmciaустройство), irqpoll, all generic ide Наприклад, для материнських плат на nVidia nForce часто слід додавати – noapic nolapic, інакше завантаження переривається чорним екраном

Аналогічно, передавши параметр ядру, можна вказати дозвіл екрана при завантаженні Наприклад, додавши vga = 7 91, ми встановимо дозвіл 1024 х 768 з кількістю квітів 64 Кбайт, vga = 7 90 – 1024 х 768 і 32 Кбайт кольоровості, vga = 787 – 800 х 600

Параметр ro singl e переводить систему в режим завантаження в режимі одного, який зазвичай використовується при відновленні працездатності системи

У каталозі / etc / grubd є кілька файлів Переглянути їх список можна, наприклад, за допомогою консольної команди ls (рис 217):

Рис 217 Список файлів в каталозі / etc / grubd

Параметри, які вони генерують у файлі / boot / grub / grubcfg, позначаються секціями кшталт:

### BEGIN /etc/grubd/30_os-prober ###

### END /etc/grubd/30_os-prober ###

Файли 10_linux і 30_os-prober відповідають за пошук і додавання в меню Linux та інших операційних систем, встановлених на жорстких дисках компютера Файл 20_memtest86 + додає в меню пункт, що дозволяє провести перевірку оперативної памяті І нарешті, файл 40_custom дає можливість користувачеві самостійно додати свої пункти завантаження в меню Наприклад, це можуть бути будь-які особливі варіанти завантаження системи

ПРИМІТКА Е

Файл 40_custom повинен обовязково закінчуватися порожнім рядком, інакше останній пункт меню не буде відображатися

Після всіх правок / etc / default / grub або файлів в / etc / grubd для генерування нового файлу / boot / grub / grubcfg слід виконати команду

$ sudo update-grub

ПРИМІТКА Е

При оновленні GRUB з версії 1 на версію 2 необхідно використовувати команду upgrade-from-grub-legacy, яка на підставі старого конфігураційного файлу створить новий

Забігаючи трохи вперед, скажу, що в установленому Linux Mint є графічна утиліта, що дозволяє змінити деякі параметри GRUB, викликати яку можна з меню Адміністрування • Менеджер завантаження (Рис 218)

Рис 218 Налаштування GRUB за допомогою графічної утиліти

У вікні можна вказати час очікування вибору системи, операційну систему, завантажену за замовчуванням, дозвіл екрана під час завантаження системи У вкладці створюється рятувальна дискета і вказується дозвіл екрана при показі меню завантажувача Все просто і зрозуміло

Джерело: Яремчук С А Linux Mint на 100% – СПб: Питер, 2011 – 240 е: ил – (Серія «На 100%»)

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*