Завантажувальний диск - по суті мініатюрна, самодостатня Linux система на дискеті. Вона повинна виконувати багато функцій, які виконує укомплектована повнорозмірна Linux система. Перед спробою її створення, Ви повинні зрозуміти основи процесу завантаження Linux. Ми представляємо тут основи, які є достатніми для розуміння іншої частини цього документа. Багато подробиць і альтернативні опції були опущені.
Процес початкового завантаження.
Все PC системи починають процес завантаження з виконання коду в ROM (позначається BIOS) завантажуючи сектор 0, циліндра 0 завантажувального пристрою. Завантажувальний пристрій - зазвичай дисковод (позначається A: в DOS і / dev / fd0 в Linux). Потім BIOS намагається здійснити цей сектор. На більшості завантажувальних дисків, сектор 0, циліндра 0 містить або:
код завантажувача, такого як LILO, який знаходить, завантажує та виконує ядро, починаючи завантаження відповідним чином; або
початок ядра операційної системи, такої як Linux.
Якщо Linux ядро прямо скопійовано на дискету, перший сектор диска - є першим сектором ядра Linux. Цей перший сектор продовжить процес завантаження, завантажуючи іншу частину ядра з завантажувального пристрою.
Як тільки ядро повністю завантажено, воно виконує ініціалізацію драйверів пристроїв і їх структур даних. Як тільки воно повністю ініціалізувати, воно переглядає в своєму образі спеціальне відділення, звану ramdisk слово. Це слово визначає, де ядро буде шукати кореневу файлову систему. Коренева файлова система - звичайна файлова система, яка буде монтуватися як `` / ''. Ядру потрібно повідомити, де шукати кореневу файлову систему; якщо воно не може знайти завантажувальний образ, воно зупиняється.
У деяких ситуаціях # 8208; часто при завантаженні з дискети # 8208; коренева файлова система завантажується в ramdisk - оперативну пам'ять (RAM), з якої система працює як з диском. RAM на кілька порядків швидше дискети, так що операції системи з ramdisk виконуються швидко. Ядро також може завантажити стислу файлову систему з дискети і розпакувати її на ramdisk, що дозволяє помістити на дискеті набагато більше файлів.
Як тільки коренева файлова система завантажена і примонтировать, Ви бачите повідомлення:
Як тільки система успішно завантажила кореневу файлову систему, вона намагається виконати програму init (в / bin або / sbin). init читає конфігураційний файл / etc / inittab. шукає рядок, позначену sysinit. і виконує позначений скрипт. Скрипт sysinit - зазвичай щось на зразок / etc / rc чи /etc/init.d/boot. Цей скрипт - набір команд оболонки, які запускають основні системні служби, такі як запуск на жорстких дисках fsck. завантаження необхідних модулів ядра, ініціалізація підкачки (swapping), ініціалізація мережі, і монтування згаданих в / etc / fstab дисків.
Цей скрипт часто викликає різні інші скрипти, для модульної ініціалізації. Наприклад, в загальній структурі SysVinit, каталог /etc/rc.d/ містить комплексну структуру підкаталогів, чиї файли визначають, як запускати і завершувати більшість служб системи. Однак, на завантажувальних дисках сценарій sysinit часто дуже простий.
Коли сценарій sysinit закінчується, управління повертається до init. який потім входить в рівень запуску за замовчуванням (default runlevel). визначений у inittab ключовим словом initdefault. Рядок runlevel зазвичай визначає програму подібну getty. яка відповідає за зв'язок між консоллю і tty. Це - програма getty. яка друкує знайоме запрошення `` login: ''. Програма getty. для перевірки сеансу входження в систему та встановлення сесії користувачів, викликає програму login.
Типи дисків.
Зробивши базовий огляд процесу початкового завантаження, тепер ми можемо визначити різні типи передбачуваних дисків. Ми класифікуємо диски за чотирма типами. Тут і далі в цьому документі, якщо не вказано інше, термін `` диск '' використовується як дискета, хоча більшість обговорюваного матеріалу може застосовуватися і для жорстких дисків.
Диск містить здатне завантажуватися ядро. Диск може використовуватися для завантаження ядра, яке далі може завантажити кореневу файлову систему на іншому диску. Ядру на завантажувальному диску зазвичай потрібно вказати, де шукати кореневу файлову систему.
Часто завантажувальний диск завантажує кореневу файлову систему з іншого дискети, але можна вказати, щоб завантажувальний диск завантажував кореневу файлову систему з жорсткого диска. Зазвичай це робиться при випробуванні нового ядра. (Фактично, `` make zdisk '' автоматично створить такий диск з вихідного коду ядра).
Диск з файлової системою, що містить необхідні файли для виконання Linux системи. Такий диск не обов'язково містить ядро або завантажувач.
Кореневої диск може використовуватися для виконання системи незалежно від будь-яких інших дисків, після завантаження ядра. Зазвичай кореневої диск автоматично копіюється в ramdisk. Це робить кореневої диск набагато швидше, і звільняє дисковод для сервісного диска.
Завантажувальний / Кореневий (boot / root)
# 13; Диск, що містить і ядро, і кореневу файлову систему. Іншими словами, на ньому є все необхідне для завантаження і виконання Linux системи без жорсткого диска. Перевага цього типу диска в компактності # 8208; все необхідне знаходиться на одному диску. Однак поступово збільшується розмір всього призводить до того, що все важче помістити все на одну дискету, навіть із стисненням.
Диск, що містить файлову систему, яка не призначена, для монтування кореневої файлової системою. Це - додатковий диск даних. Якщо у Вас занадто багато поміщено на кореневому диску, Ви могли б використовувати диск цього типу, для зберігання додаткових утиліт.
Взагалі, коли ми говоримо `` створення завантажувального диска '' ми маємо на увазі створення обох завантажувального (ядро) і кореневого (файли) частин. Вони можуть бути або одним (одиночним завантажувальним / кореневих) диском, або окремими (завантажувальним + кореневих) дисками. Найбільш гнучкий підхід для рятувальних дискет у використанні роздільних кореневої і завантажувального дискет, а також однієї або більше сервісних дискет, для врегулювання перевищення.