Я вносил некоторые изменения /etc/fstab
, когда мне приходил в голову вопрос о курице и яйце - если он /etc/fstab
содержит инструкции по монтированию файловых систем, включая корневой раздел, то как ОС в первую очередь считывает этот файл?
Когда загрузчик вызывает ядро, он передает ему параметр с именем root
. Поэтому, как только ядро завершит инициализацию, оно продолжит монтирование указанного корневого раздела /
и последующий вызов /sbin/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
можно задать параметры файловой системы , которые затем будут применяться один раз инициализация перемонтирует его.
init
процесс монтирует объекты в/etc/fstab
соответствии с их параметрами, что обычно означает повторное монтирование корневого раздела для чтения-записи.fstab
Необходим вход в , если вы хотите указать некоторые нестандартные параметры монтирования. Тем не менее, в настоящееsystemd
время правильное устройство ядра и fstype в неfstab
являются ненужными. Вы можете заменить корневую запись чем-то вроде:и параметры монтирования все еще учитываются systemd.
Вы можете использовать любое плохое имя устройства, например
/dev/sdz1
, кроме плохого UUID. При неправильном UUID сообщение будет напечатано при загрузкеFailed to start Remount Root and Kernel File Systems
, но система все равно загрузится .источник