Это похоже на проблему курицы и яйца.

Внутри файла /etc/fstab в корневом разделе я могу указать другой раздел для монтирования в точке монтирования /etc , например:

/dev/sda6 /etc defaults 0 0  

Может ли это вызвать какие-либо проблемы?
Предположим, что у меня есть некоторое разумное содержимое в новом /etc , включая идентичные каталоги fstab и надлежащие каталоги init и rc.

Как небольшое перефразирование вопроса: каков порядок операций загрузки?
Сначала проверяется /etc/fstab на монтирование дисков перед запуском остальных сценариев init.d?

2 ответа2

2

Это ужасная идея. Вы не должны и не можете помещать /etc в другой раздел из / . Ядро ищет /etc/fstab и кучу других файлов конфигурации при загрузке из / . Если /etc находится в другом, пока неизвестном разделе, как ядро найдет /etc/fstab для его монтирования?

0

Похоже, вы говорите о Debian.

Это говорит вам все, если у вас есть это, используя традиционную систему инициализации. В частности:

Программа "/sbin/init" выполняется в качестве первой программы и выполняет основной процесс загрузки. Debian обычно использует традиционную схему sysvinit с пакетом sysv-rc. См. Init (8), inittab (5) и "/usr/share/doc/sysv-rc/README.runlevels.gz" для точного объяснения. Этот основной процесс загрузки по существу проходит через следующее.

  • Система Debian переходит на уровень запуска N (нет), чтобы инициализировать систему, следуя описанию «/etc/inittab».

  • Система Debian переходит на уровень запуска S для инициализации системы в однопользовательском режиме, для завершения инициализации оборудования и т.д.

  • Система Debian переходит на один из указанных многопользовательских уровней запуска (от 2 до 5) для запуска системных служб.

Что происходит на уровне выполнения, так это то, что все в /etc/rcX.d выполняется в алфавитном порядке, где X - уровень выполнения.

Итак, если вы cd /etc/rcS.d , вы увидите несколько символических ссылок на /etc/init.d , которые начинаются с цифры. Номер там, чтобы определить порядок. Те, которые начинаются с S , выполняются при вводе уровня прогона, а те, которые начинаются с K , выполняются при выходе из уровня прогона. Уровень запуска "S" просто используется для инициализации, поэтому там нет K ссылок.

Если вы измените или переименуете что-нибудь, будьте осторожны. Убедитесь, что вы протестировали свои сценарии, прежде чем подвергать себя процессу загрузки.

Хорошо, сейчас попробую ответить на вопрос, используя приведенную выше информацию в качестве необходимого фона.

Под Debian /etc/rc.S/S11mountall.sh происходит критическое "монтирование всего в fstab". Тем не менее, fstab используется для монтирования корневой файловой системы в /etc/rc.S/S07checkroot.sh .

Если вы используете fstab для автоматического монтирования нового /etc , чего угодно в /etc/rc.S/S12* и выше будут использовать /etc на вашем "оверлейном" томе. Тем не менее, вам необходимо иметь действительный файл /etc/fstab для корневого тома в это время заранее.

Другие вещи, к которым /etc обращаются за включением, включают /etc/hostname , возможно, некоторые вещи, связанные с udev (что чрезвычайно важно). Вам нужно посмотреть все скрипты из /etc/rc.S/S11* и ниже, чтобы точно знать. Если вы действительно не хотите использовать /etc до тех пор, пока он не будет смонтирован из внешнего раздела, вы смотрите на изменение этих скриптов. Вероятно, это будет не так просто, как переключение порядка /etc/rc.S/S12mountall.sh , например, /etc/rc.S/S00mountall.sh , но вы, возможно, могли бы добавить новый сценарий, который вводит /etc из внешнего раздела ранее.

Вы можете использовать команду Linux mount --bind чтобы где-то смонтировать оригинальный /etc корневого тома (например, /etc_from_rootfs), чтобы скопировать его, когда вы вносите изменения в fstab или другие файлы, к которым обращались до /etc/rc.S/S12mountall.sh .

Ядро Linux не делает то, что делает Windows, то есть использует и требует наличия реестра до и во время загрузки. Само ядро будет нормально загружаться (но не очень полезно в 99% случаев) без /etc , но это зависит от программ пользовательского пространства, вызываемых после (начиная с init), которые затем смотрят на /etc , чтобы подготовить достойную пользовательскую среду ,

Звучит сложно? Именно поэтому прослушивание @MattDMo, вероятно, целесообразно.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .