Как к/etc/fstab получают доступ, прежде чем корень смонтирован?

Вы могли сделать это с парой операторов.

Во-первых, заставьте список каталогов удалять использование

find -name *.rar -exec dirname {} ';' > toremove

Далее, cat toremove для проверки это имеет папки, которые Вы хотите. Затем передайте его rm -rf использование

sed 's/^/"/g' toremove | sed 's/$/"/g' | xargs rm -r

Наконец, rm toremove.

22
05.01.2014, 01:40
2 ответа

Когда загрузчик называет ядро, это передает его названный параметр root. Таким образом, после того как ядро закончило инициализировать его, продолжится путем монтирования данного корневого раздела к / и затем вызов /sbin/init (если это не было переопределено другими параметрами).

Затем init процесс запускает остальную часть системы путем загрузки всех сервисов, которые определяются, чтобы быть запущенными в значении по умолчанию runlevel.

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

Вот упрощенный пример моей конфигурации Личинки. Важная часть для ответа на вопрос находится на предпоследней строке, существует a 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 повторно монтирует его.

18
27.01.2020, 19:43
  • 1
    Корневой раздел первоначально смонтирован только для чтения ядром. init обработайте затем монтирует вещи в /etc/fstab согласно параметрам там, который обычно означает повторно монтировать корневое чтение-запись раздела. –  goldilocks 04.01.2014, 16:20
  • 2
    Также ядро может быть скомпилировано с hardcoded стандартными программами, который ищет некоторые специальные файлы на активном разделе, который уже не смонтирован. Загрузчик FreeBSD прокладывает себе путь. –  Kondybas 04.01.2014, 16:37
  • 3
    @Kondybas LILO на Linux также hardcoded для загрузки ядра в некоторых фиксированных номерах блока –  phuclv 16.06.2017, 07:12

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

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

и параметры монтирования по-прежнему учитываются systemd.

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

4
20.08.2021, 12:59

Теги

Похожие вопросы