Як здійснюється доступ до файлу / etc / fstab до встановлення root?


21

Я вносив деякі зміни /etc/fstab, коли у мене виникло це питання щодо курки і яєць - якщо /etc/fstabмістяться інструкції зі встановлення файлових систем, включаючи кореневий розділ, то як ОС читає цей файл в першу чергу?

Відповіді:


18

Коли завантажувач викликає ядро, він передає йому параметр, який називається root. Отже, як тільки ядро ​​закінчиться ініціалізацією, воно буде продовжуватись, встановивши заданий кореневий розділ до /та потім викликаючи /sbin/init(якщо це не було замінено іншими параметрами).

Тоді initпроцес запускає решту системи, завантажуючи всі служби, визначені для запуску, у вашому рівні запуску за замовчуванням.

Залежно від вашої конфігурації та системи init, яку ви використовуєте, між тими, які я згадав, може бути кілька інших кроків. В даний час найпопулярнішими системами init в Linux є SysVInit (традиційна), Upstart і Systemd. Більш детальну інформацію про процес завантаження ви можете знайти в цій статті у Вікіпедії .

Ось спрощений приклад конфігурації Grub. Важлива частина відповіді на ваше запитання - це другий та останній рядки root=/dev/sda3:

menuentry 'Gentoo GNU/Linux' --class gentoo --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-40864544-2d0f-471a-ab67-edd7e4754dae' {
    set root='hd0,msdos1'
    echo    'Loading Linux 3.12.6-gentoo-c2 ...'
    linux   /kernel-3.12.6-gentoo-c2 root=/dev/sda3 ro  
}

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


2
Кореневий розділ спочатку монтується ядром лише для читання. Потім initпроцес монтує речі у /etc/fstabвідповідності з параметрами, які зазвичай означають повторне встановлення кореневого розділу для читання-запису.
золотинки

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

@Kondybas LILO в Linux також жорстко кодує завантажувати ядро ​​за деякими фіксованими номерами блоків
phuclv

3

Запис fstabпотрібен, якщо ви хочете вказати деякі параметри кріплення, що не використовуються за замовчуванням. Однак на сьогодні systemdправильний пристрій ядра та fstype у fstabне потрібні. Ви можете замінити кореневий запис чимось на зразок:

#UUID=8f74237d-b689-4beb-9d1f-f60b426c9969 /            ext4        rw,relatime,data=ordered    0 1
dummy /             auto        rw,relatime,data=ordered,debug  0 1

і параметри кріплення все ще вшановуються системою.

Ви можете використовувати будь-яке неправильне ім’я пристрою, наприклад /dev/sdz1, крім поганого UUID. З поганим UUID повідомлення буде надруковано під час завантаження:, Failed to start Remount Root and Kernel File Systemsале система все одно завантажується.

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