Для SysV init
, мне нужно /etc/inittab
паки Гетти записи, в /sbin/init
бинарном файле, двоичные файлы и общие библиотеки для оболочки, login
, то getty
РАМ / безопасность / тень материал, и несколько файлов устройств.
Поскольку upstart
мне нужны почти такие же требования, но вместо этого у /etc/inittab
меня есть несколько *.conf
файлов /etc/init
: один * .conf, с start on startup
которым устанавливается уровень запуска telinit
, и один * .conf для каждого tty, который запускается / восстанавливается getty
на этом tty на соответствующих уровнях выполнения. ,
Какая конфигурация и двоичные файлы мне нужны systemd
init
?
Кажется, что вся документация, которую я нахожу, сосредоточена на том, как использовать уже установленную систему для запуска и остановки служб.
Минимальный список файлов, которые нужно скопировать (кроме ядра / initrd) из работающей установки Arch или fedora , подойдет, но я не могу найти такую информацию systemd
.
Что я хотел бы знать, так это то, systemd
какие файлы требуются и что они должны содержать, чтобы запустить оболочку входа в систему после того, как initramfs выполнит ее switch_root
вызов systemd
/sbin/init
.
Пример для upstart
двоичных файлов и двух *.conf
файлов:
Файл /etc/init/whatever.conf
:
начать при запуске испускает уровень запуска задача скрипт Телинит 2 конец сценария
Файл /etc/init/tty1.conf
:
начать на уровне выполнения [12345] респаун exec / sbin / agetty -8 --noclear 38400 tty1 linux
Пример для sysvinit
бинарных файлов и 1 conf-файла с именем /etc/inittab
:
ID: 2: initdefault: c1: 12345: респаун: / sbin / agetty 38400 tty1 linux
Теперь я за systemd
эквивалентом.
Я предполагаю, что по крайней мере 1 *.service
файл нужен где-то, с [Service]
записью, содержащей ExecStart=-/sbin/agetty --noclear %I linux
и Restart=always
, но что еще нужно?
Ответы:
Прежде всего,
systemd
это не традиционный юниксinit
. Systemd намного больше, поэтому сравнивать их немного несправедливо.Чтобы ответить на этот вопрос, необходимы некоторые двоичные файлы и следующие файлы конфигурации:
выдача
systemctl enable console-getty.service getty@tty2.service
затем создает эти символические ссылки:ПРИМЕЧАНИЕ . Чтобы использовать
systemd
специальные функции дляagetty
динамического запуска , по требованию при нажатии Alt+ F3и т. Д., По-видимому, у вас также должны быть как минимум следующие два файла:где
autovt@.service
символическая ссылка наgetty@.service
.Содержимое конфигурационных файлов:
default.target
,getty.target
,sysinit.target
Файлы могут быть пустыми для кроме[Unit]
тега и (возможно)Description=xxx
.basic.target
также содержит информацию о зависимости:Я не уверен, нужны ли ссылки на цели, которые не существуют как файлы, или нет. Они описаны на
systemd.special(7)
странице руководства .console-getty.service
: (Особый случай для agetty на консоли)getty@.service
: (универсальный конфиг для всех сервисов getty, кроме консоли)Наконец, вам, вероятно, понадобятся некоторые из этих специальных двоичных файлов (я не пробовал, какие из них являются критическими)
Подводя итог процессу запуска systemd, я думаю, что он работает примерно так:
basic.target
(или все*.target
файлы?)WantedBy=
,Wants=
,Before=
,After=
... директивы в[Install]
разделе о*.service
и*.target
конфигурационных файлов.*.service
s, которые должны запускаться (которые не являются «специальными» службами), имеют[Service]
раздел сExecStart=
директивой, указывающей исполняемый файл для запуска.источник
[Install]
раздел не используется последовательностью загрузки, толькоsystemctl enable
. То, на что смотрит загрузка, это символические ссылки/etc/systemd/system/basic.target.wants/
, которые создаютсяsystemctl enable
.systemd
автоматически создает getty при переключении на терминалы, вплоть до определенного максимального числа. По умолчанию установлено значение 6 (поэтому вы автоматически получаете getty для alt + f1 - alt + f6). Если вы хотите изменить этот параметр, вы можете отредактировать,/etc/systemd/logind.conf
чтобы изменитьNAutoVTs
параметр на другое число (максимум 12)Если вы хотите, чтобы getty порождался, даже если вы не переключаетесь вручную, вы можете добавить символическую ссылку
/usr/lib/systemd/system/getty@.service
в/etc/systemd/system/getty.target.wants/
каталог:это приведет к
getty.target
требованию еще однойgetty@
услуги. Цель - это набор сервисов, которые нужно порождать, замена уровней выполнения, которые поддерживают зависимости. Цель по умолчанию зависит отgetty.target
Смотрите в systemd FAQ в ArchWiki
редактировать: я исследовал немного больше в документации .
При загрузке
systemd
демон загружает все системы вdefault
цели и их зависимости. Цель определяется файламиУ цели есть список подключенных сервисов, указанных символическими ссылками в каталогах
/etc
Версия имеет приоритет по умолчанию распределения в/usr/lib
..target
Требуется только один из файлов, а каталог не требуетсяgetty
это всего лишь одна из служб, которая может быть запущена сценариями инициализации. В проверенном мною дистрибутиве (fedora, arch)getty
запускается двумя разными способами:/usr/lib/systemd/system/getty@.service
файл, в котором имя tty заменяетсяsystemd
на имя файла ссылки )logind
когда пользователь переключается на виртуальный терминал (аналогично тому, как старыеinetd
сервисы вызывались только при поступлении запроса).logind
это другой демон, распространяемый сsystemd
и считывающий его конфигурацию из/etc/systemd/logind.conf
файла.Надеюсь, это удовлетворительно.
источник
systemd
. Я немного разбираюсь в этом, и это выглядит довольно просто, когда вы поймете, как все работаетsystemd
, враждебно, как при выполнении враждебного поглощения способа запуска открытой системы. Это отвлекает GNU / Linux от Unix. Не сказать, что это плохо, но это сильно отличается от того, что было традиционно. И погуглить немного указывает на то, что я не одинок.