Похоже, вы говорите о 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, вероятно, целесообразно.