Они отсортированы численно, но join
требует лексикографической сортировки :24968, затем 479; и 24965, 24968, 88, затем 96.
Does the kernel assume it's existence?
Нет; ядро очень мало предполагает о содержимом файловых систем, с которыми оно используется. Ядро будет искать /etc/init
при некоторых обстоятельствах (вместе с /sbin/init
и т. д. ), а некоторые промежуточные драйверы используют помощники в etc
, но ядро будет нормально работать и без /etc
.
GLibc certainly has "/etc/hosts" hard-coded in the source.
Да, да .
How many of these paths are there in glibc? Is there a list somewhere? How hard would if be to change them?
В моей копии репозитория grep -r '"/etc'
находит 86 экземпляров. Я нигде не знаю поддерживаемого списка. Изменить пути в исходном коде не так уж сложно.
How much of the software on a bare bones embedded linux image is looking in there?
Это сложнее определить. Программы, ожидающие своей конфигурации в /etc
, обязательно заглянут туда; многие другие будут косвенно, через библиотеки, хотя бы библиотеку C. Первый потребует изменений для использования другого пути; последний подхватит любые изменения, внесенные в рассматриваемые библиотеки.
How would we find out?
grep
... См. также соответствующий поиск исходного кода в Debian .
Could we change it without recompiling?
Нет. Связанный с этим вопрос заключается в том, сколько изменений потребуется перед повторной компиляцией. Созданные Autoconf -скрипты configure
часто поддерживают параметр sysconfdir
, который по умолчанию равен /etc
или /usr/local/etc
, но он не подходит для всех ситуаций — во многих случаях он определяет, где программа устанавливает и ищет свои собственные файлы конфигурации, но это не изменит того, где программа ищет другие файлы, которые она ожидает в/etc
(см. библиотеку GNU C ).
And then, how much more is there in, for example, Ubuntu, that would have to be changed?
Я подозреваю, что все меньше и меньше по мере продвижения «вверх по стеку». Все, что настраивается пользователем -, в большинстве случаев будет иметь значения по умолчанию в /etc
, и многие программы в настоящее время вообще не имеют никакой конфигурации в /etc
, а если и делают, то это обеспечивается с помощью какого-либо механизма, отличного от непосредственного просмотра /etc
..
But if the Linux ecosystem were set up to make such a thing feasible, what might that look like?
Это может выглядеть как одна из спецификаций freedesktop.org , которые определяют, как программы находят файлы (XDG и т. д. ).
Вы спрашиваете о Gnu/Linux. (Linux — это ядро, которое также часто ошибочно используется для описания всей ОС. Поскольку ОС — это ядро, оболочка, командные инструменты, библиотеки и компилятор, я думаю, что это мог сказать Деннис Ричи. У вас может быть Linux без GNU :android и Gnu без Linux :cygwin, подсистема Windows для Linux 1, Gnu/Hurd, Gnu на BSD, Gnu на Solaris, …)
Просто перекомпилируйте каждую программу, чтобы найти конфигурацию в другом месте.
Любая программа, использующая auto -conf, может быть легко скомпилирована с использованием различных местоположений. Для этого могут быть веские причины. Но зачем менять значение по умолчанию.
Альтернативно все символические ссылки от /conf
до /etc
.(cd /; ln -s -T /etc /conf )