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

НАЗВА
initrd - електронний диск, який встановлюється під час
завантаження системи

ОПИС
Спеціальний файл / dev / initrd є блоковим пристроєм
тільки для читання. Пристрій / dev / initrd - це
електронний диск, устанавліваеми під час завантаження системи
до того моменту, як запускається ядро. Тому ядро ​​може
використовувати вміст файлів блокових пристроїв / dev / ini-
trd для двоступеневої завантаження системи.

На першому місці завантаження ядро ​​запускається і
встановлює кореневу файлову систему, яка містить
/ Dev / initrd. На другому ступені завантажуються додаткові
драйвери і модулі з початкового кореневого розділу. після
завантаження додаткових модулів встановлюється нова
коренева файлова система.

ОПЕРАЦІЯ ЗАВАНТАЖЕННЯ
За допомогою initrd система завантажується в наступному порядку:

1. Початковий завантажувач завантажує програму ядра і
вміст / dev / initrd в пам'ять комп'ютера.

2. При запуску ядро ​​"розпаковує" і копіює
вміст пристрою / dev / initrd в пристрій
/ Dev / ram0, а потім звільняє пам'ять, яка використовується
пристроєм / dev / initrd.

3. Ядро встановлює (для читання і запису) пристрій
/ Dev / ram0 як початкову кореневу файлову систему.

4. Якщо звичайна коренева система є і початковою
(Наприклад, / dev / ram0), то ядро ​​переходить до останнього
кроку в завантаженні.

5. Якщо файл, що запускається / linuxrc присутній в
початкової кореневій системі, то / linuxrc запускається з
ідентифікатором користувача, рівним нулю. (Файл / lin-
uxrc повинен мати права доступу до системи, щоб
здійснити відповідний запуск. Файл / linuxrc може
бути будь-яким запускаються файлом, включаючи скрипт shell.)

6. Якщо / linuxrc не запущені або / linuxrc перерваний, то
встановлюється нормальна коренева файлова система.
(Якщо робота / linuxrc з файлової системою, встановленою
над початковою кореневої файлової системою, переривається,
то поведінка ядра стає неадекватною. прочитайте
розділ ЗАУВАЖЕННЯ для отримання більш докладної
інформації).

7. Якщо звичайна коренева файлова система має каталог
/ Initrd, то пристрій / dev / ram0 переноситься з / в
/ Initrd. Інакше, якщо каталогу / initrd не існує, то
пристрій / dev / ram0 видаляється. При перенесенні з / в
/ Initrd / dev / ram0 не видаляється і процес надалі
працює з / dev / ram0. Якщо каталогу / initrd НЕ
існує в звичайній кореневій системі і залишаються
процеси, що працюють з / dev / ram0 (при існуванні
/ Linuxrc), поведінка ядра стає непередбачуваною.
Прочитайте розділ ЗАУВАЖЕННЯ для отримання більш докладної
інформації про це.

8. Звичайна процедура завантаження (наприклад, виклик
/ Sbin / init) проводиться звичайної кореневої файлової
системою.

ОПЦИИ
Ніжеследующіі опції початкового завантажувача з використанням
initrd впливають на завантаження ядра:

initrd = имяфайла
Вказує файл, який завантажується як вміст
/ Dev / initrd. Для LOADLIN це опція командної
рядки. Для LILO Вам слід використовувати цю
команду в файлі налаштувань LILO під назвою
/etc/lilo.config. Назва файлу, вказане в цій
опції, буде чином файлової системи,
заархівованим програмою gzip.

root = назва-пристрою
вказує на пристрій, що використовується як
нормальна коренева файлова система. для LOADLIN
це опція командного рядка. Для LILO це опція,
використовувана під час завантаження; вона може бути
опцією в файлі налаштувань LILO під назвою
/etc/lilo.config. Пристрій, вказане в цій
рядку, має встановлюватися при наявності
підходящої кореневої файлової системи.

ЗМІНА ЗВИЧАЙНОЮ КОРЕНЕВОЇ СИСТЕМИ
За замовчуванням установки ядра (з параметром rdev або збірка
ядра з цим параметром) або установки в опціях початкового
завантажувача використовуються для звичайної кореневої файлової
системи. При складанні файлової системи NFS як кореневої
треба використовувати опції завантаження nfs_root_name і
nfs_root_addrs для настройки NFS. Для отримання більш
докладної інформації по системі NFS, зібраної як
коренева, прочитайте файл документації про ядрі nfsroot.txt.
Додаткову інформацію про встановлення кореневої файлової
системи можна також прочитати в документації про LILO і LOAD-
LIN.

ВИКОРИСТАННЯ
Головною причиною використання initrd була можливість
налаштовувати модулі ядра при установці системи.

Далі наводяться етапи установки:

1. Програма-завантажувач встановлюється з дискети або з
будь-якого іншого носія разом з мінімальним ядром
(Наприклад, підтримка для / dev / ram, / dev / initrd і
файлова система ext2) завантажує / dev / initrd зі стислою
початкової файлової системою.

2. Скрипт / linuxrc визначає: що необхідно для складання
кореневої файлової системи (який тип пристрою,
драйвери пристрою і т.д.), носії (наприклад, CD-ROM,
мережу і т.д.). Це може бути зроблено шляхом опитування
користувача, методом автопробаціі або використовуючи обидва
підходу.

3. Скрипт / linuxrc завантажує необхідні модулі з
початкової файлової системи.

4. Далі / linuxrc створює кореневу файлову систему. (На
цьому ступені вона ще не є робочою).

5. Скрипт / linuxrc встановлює / proc / sys / kernel / real-
root-dev, розбирає / proc, завантажувальний кореневу файлову
систему і будь-яку файлову систему, яку він зібрав, і
завершує свою роботу.

6. Ядро встановлює робочу кореневу файлову систему.

7. Коли файлова система встановлена ​​і функціонує,
можна встановити початковий завантажувач.

8. Початковий завантажувач налаштований на установку в / dev / ini-
trd, файлову систему з набором модулів для зборки
системи. (Пристрій / dev / ram0 може бути змінено,
потім від'єднано, а образ може бути скопійований з
пристрою в файл).

9. Тепер система може бути завантажена.

Основною роллю / dev / initrd для наведеного вище процесі
є використання даних резервування під час роботи
завантажувального кореневої файлової системи без вимоги
повного ядра або його збірки.

Другий варіант використовується, головним чином, якщо Linux
працює в системах з різною конфігурацією і в мережі,
адмініструється однією людиною. У таких випадках зручно
використовувати одне ядро ​​і мінімальна кількість
специфічного програмного забезпечення. створіть загальний
файл з усіма необхідними модулями, тоді будуть
відрізнятися тільки скрипт / linuxrc або скрипт, який запускається
/ Linuxrc.

Така інформація, як місцезнаходження розділу з кореневої
файлової системою, не потрібна під час завантаження; система,
загружаемая с / dev / initrd, може провести опитування
користувача і / або робити визначення автоматично.

Також дистрибутиви Linux СD-ROM можуть використовувати initrd
для спрощеної установки системи за допомогою CD-ROM.
Дистрибутив може використовувати LOADLIN для прямого завантаження
/ Dev / initrd з CD-ROM без будь-яких дискет. дистрибутив
також може використовувати дискету LILO і потім
завантажити більший електронний диск за допомогою / dev / initrd
з CD-ROM.

КОНФІГУРАЦІЯ
/ Dev / initrd - це блоковий пристрій тільки для читання з
основним номером 1 і другорядним номером 250. Зазвичай
права на / dev / initrd належать root.disk з режимом 0400
(Тільки для читання користувачем root). якщо система
Linux не має готового / dev / initrd, він може бути створений
наступними командами:

mknod -m 400 / dev / initrd b 1 250
chown root: disk / dev / initrd

Підтримка для електронного диска і завантажувального
електронного диска (наприклад, CONFIG_BLK_DEV_RAM = y і CON-
FIG_BLK_DEV_INITRD = y) повинна бути зібрана разом з ядром
для того, щоб використовувати / dev / initrd. при
використанні / dev / initrd драйвер електронного диска НЕ
може бути завантажений як модуль.

ФАЙЛИ
/ Dev / initrd
/ Dev / ram0
/ linuxrc
/ initrd

СМ. ТАКОЖ
1. З існуючим ядром будь-яка файлова система, що залишається
встановленої при перенесенні / dev / ram0 з / в / initrd,
доступна. Записи в / proc / mounts не оновлюється.

2. У випадку з поточною версією ядра: якщо каталогу / initrd
не існує і якщо / dev / ram0 використовується будь-яким
процесом (або в ньому встановлена ​​будь-яка файлова
система), то "/ dev / ram0 НЕ буде повністю знищений. Якщо
/ Dev / ram0 неповний від'єднана, то / dev / ram0 залишиться
в пам'яті системи.

3. Користувачі / dev / initrd не повинні залежати від
поведінки описаного в попередніх зауваженнях. швидше
за все це буде виправлено в наступних версіях ядра
Linux.

ЗАУВАЖЕННЯ
Оригінальний текст в ядрі для initrd був написаний Werner Almes-
berger і Hans Lermen. Оригінальний текст initrd
додається в ядро, починаючи з версії 1.3.73.

Оффтоп

>>> Після п'яти місяців розробки побачив світло реліз десктоп-оточення MATE 1.12, в рамках якого продовжено розвиток кодової бази GNOME 2.32 із збереженням класичної концепції формування робочого столу. Установчі пакети з MATE 1.12 найближчим часом будуть підготовлені для Arch Linux. Linux Mint, Debian, Ubuntu, Fedora, Mageia, Slackware і openSUSE. MATE 1.12 увійде до складу найближчого випуску Linux Mint 17.3, а також буде доступний через репозиторій для користувачів Ubuntu MATE.

>>> Кес Кук (Kees Cook), колишній головний сисадмін kernel.org і лідер Ubuntu Security Team, який нині працює в компанії Google над забезпеченням захисту ChromeOS, оголосив про створення проекту Kernel Self Protection Project, в рамках якого планується сформувати співтовариство для розвитку і просування в основне ядро ​​Linux технологій активного захисту, більшість з яких вже підготовлені в рамках проектів PaX і Grsecurity. Фінансування та ресурси для проведення робіт будуть надані організацією Linux Foundation і учасниками програми Core Infrastructure Initiative.

>>> Відбувся реліз Linux -дістрібутіва Ubuntu 15.10 "Wily Werewolf". Готові установчі образи створені для Ubuntu Desktop, Ubuntu Server і Ubuntu Core (для них на попередніх етапах тестування пропонувалися тільки щоденні збірки), а також для Kubuntu, Lubuntu, Ubuntu MATE, Ubuntu Cloud, Ubuntu GNOME і Xubuntu.

Схожі статті