LinuxForum.Fans
Тема

Systemd init, взялся потихоньку, советы

Автор: zenon 15 сообщений 8290 просмотров
#221985

Мануал этот http://en.gentoo-wiki.com/wiki/Systemd других не видел.
В опциях загрузки ядра следующее:

text
linux /boot/kernel-x86_64-3.2.1-gentoo root=/dev/sdb8 quiet vga=795 nomodeset nouveau.modeset=0 real_init=/bin/systemd

Главное тут real_init=/bin/systemd

Сходу не получилось, на zen-kernel - ругань, сейчас не вспомню какая.
Попробовал gentoo-sources, не стал мудрить, конфиг стащил с Aptosid, ядро 3.2.1.
ok, загрузился. С сервисами буду разбираться.

Из того что есть после установки:

text
$ls -l /etc/systemd/system/getty.target.wants
итого 0
lrwxrwxrwx 1 root root 38 янв.  14 14:57 getty@tty1.service -> /usr/lib/systemd/system/getty@.service
lrwxrwxrwx 1 root root 38 янв.  14 14:57 getty@tty2.service -> /usr/lib/systemd/system/getty@.service
lrwxrwxrwx 1 root root 38 янв.  14 14:57 getty@tty3.service -> /usr/lib/systemd/system/getty@.service
lrwxrwxrwx 1 root root 38 янв.  14 14:57 getty@tty4.service -> /usr/lib/systemd/system/getty@.service
lrwxrwxrwx 1 root root 38 янв.  14 14:57 getty@tty5.service -> /usr/lib/systemd/system/getty@.service
lrwxrwxrwx 1 root root 38 янв.  14 14:57 getty@tty6.service -> /usr/lib/systemd/system/getty@.service

Все, то бишь только tty и всё.
Где брать иниты, кроме тех что в примерах по ссылке, не знаю пока.
У кого есть чем помочь, что сказать, выкладывайте. :)

#221986

Ага, добавил hwclock.

text
$cat /etc/systemd/system/hwclock.service
[Unit]
Description=hwclock

[Service] Type=oneshot ExecStart=/sbin/hwclock --hctosys --localtime ExecStop=/sbin/hwclock --systohc --localtime

[Install] WantedBy=multi-user.target

[console]$systemctl enable hwclock.service
ln -s '/etc/systemd/system/hwclock.service' '/etc/systemd/system/multi-user.target.wants/hwclock.service'[/console]

#221992
newzenon написал:
Главное тут real_init=/bin/systemd

а не проще? ln -s /bin/systemd /sbin/init

newzenon написал:
Где брать иниты, кроме тех что в примерах по ссылке, не знаю пока.

дык по ссылке их не один... но необычные выдумывать придётся самому...

newzenon написал:
nouveau.modeset=0

чего, правда свободные пользуешь? оно работает?

#221993
Fat-Zer написал:

а не проще? ln -s /bin/systemd /sbin/init

Для этого надо полностью на него перейти, а так, да конечно проще.

Fat-Zer написал:

дык по ссылке их не один... но необычные выдумывать придётся самому...

Сейчас два основных нужны keymaps и consolefont.
Пока не понял, но вот так
http://en.gentoo-wiki.com/wiki/Systemd#OpenRC_Compatibility
вроде обычные сервисы должны стартануть.

#221994
Fat-Zer написал:

[quote=newzenon]nouveau.modeset=0

чего, правда свободные пользуешь? оно работает?[/quote]
Была попытка, сейчас только опция осталась, не убрал. smile

#222008

Про оверлей-то я и забыл.

text
$eix systemd
[i] sys-apps/systemd
     Available versions:  (~)29-r3 (~)29-r5 [M](~)37-r1 [M](~)37-r3 [M](~)38 {acl audit bash-completion cryptsetup gtk lzma pam plymouth selinux tcpd}
     Installed versions:  29-r5(14:57:52 14.01.2012)(gtk pam tcpd -audit -cryptsetup -plymouth -selinux)
     Homepage:            http://www.freedesktop.org/wiki/Software/systemd
     Description:         System and service manager for Linux

[i] sys-apps/systemd-sysv-utils Available versions: (~)37 Installed versions: 37(14:02:56 15.01.2012) Homepage: http://www.freedesktop.org/wiki/Software/systemd Description: sysvinit compatibility symlinks and manpages

* sys-apps/baselayout-systemd [1] Available versions: (~)0 {+guess} Homepage: http://0pointer.de/blog/projects/the-new-configuration-files.html Description: Standard system configuration files

* sys-apps/systemd-units [1] Available versions: (~)9999 {+basic +desktop ingnome3 server} Homepage: http://www.freedesktop.org/wiki/Software/systemd http://en.gentoo-wiki.com/wiki/Systemd Description: Service files for sys-apps/systemd

[1] "systemd" /var/lib/layman/systemd

Надо рассмотреть что готовое есть.

#222116

Потихоньку начало доходить.
Вот арчевский systemd network.service

text
[Unit]
Description=Network Connectivity
Wants=network.target
Before=network.target

[Service] Type=oneshot RemainAfterExit=yes ExecStart=/etc/rc.d/network start ExecStop=/etc/rc.d/network stop

[Install] WantedBy=multi-user.target

Вот из примеров gentoo network.service

text
[Unit]
Description=Network Connectivity

[Service] Type=oneshot RemainAfterExit=yes ExecStart=/sbin/ifconfig eth0 192.168.1.2 mtu 1496 ExecStart=/sbin/route add default gw 192.168.1.1 ExecStop=/sbin/ifconfig eth0 down

[Install] WantedBy=network.target

Вот старт nginx; nginx.service

text
[Unit]
Description=A high performance web server and a reverse proxy server

[Service] Type=forking PIDFile=/run/nginx.pid ExecStartPre=/usr/sbin/nginx -t -q -g 'pid /run/nginx.pid; daemon on; master_process on;' ExecStart=/usr/sbin/nginx -g 'pid /run/nginx.pid; daemon on; master_process on;' ExecReload=/usr/sbin/nginx -g 'pid /run/nginx.pid; daemon on; master_process on;' -s reload ExecStop=/usr/sbin/nginx -g 'pid /run/nginx.pid;' -s quit

[Install] WantedBy=multi-user.target

cronie.service

text
[Unit]
Description=Periodic Command Scheduler

[Service] ExecStart=/usr/sbin/crond -n ExecReload=/bin/kill -HUP $MAINPID Restart=always

[Install] WantedBy=multi-user.target

Ну и acpi

text
[Unit]
Description=ACPI event daemon
Requires=acpid.socket

[Service] EnvironmentFile=/etc/conf.d/acpid ExecStart=/usr/sbin/acpid -f ${ACPID_ARGS}

Насколько я понял можно запуски обычных демонов даже использовать (и чтение конфигов из /etc/conf.d в том числе), разница в том что всей этой толпой командует systemd, и распараллеливает процесс загрузки.

#222121

Полистал буклет http://0pointer.de/public/systemd-lca2011.pdf

Lennart Poettering написал:
Shell is evil
Move to systemd, daemons, kernel, udev, . . .

Насколько я понял ругань на счет init скриптов, которые сплошь а шелле. Так?

#222183

Нативные конфигурационные файлы systemd:

text
/etc/locale.conf 
/etc/vconsole.conf 
/etc/hostname 
/etc/modules-load.d/*.conf

Сделал:

text
$cat /etc/vconsole.conf
KEYMAP="-u ru"
FONT="ter-k14n"

шрифт подхватился, переключения нет.

text
$cat /etc/locale.conf
LANG=ru_RU.UTF-8
LC_COLLATE=C
LC_NUMERIC=POSIX

Локали не подхватились, что то делаю не так.
localedef --no-archive -c -i ru_RU -f UTF-8 ru_RU.utf-8 - может?
/etc/hostname - нормально подхватил.

#222186

Совместимость с OpenRC

systemd comes with some degree of OpenRC compatibility, so it will gracefully read most of the base system options from its files. This includes the following files:

text

    /etc/conf.d/hostname for hostname,
    /etc/profile.env for locale (created by env-update from /etc/env.d),
    /etc/rc.conf for the unicode console setting,
    /etc/conf.d/consolefont for the console font settings,
    /etc/conf.d/keymaps for the keymap setting (but only the actual keymap). 

Additionally, the following configuration directories are both used by OpenRC and systemd:

text
    /etc/modules-load.d,
    /etc/sysctl.d,
    /etc/binfmt.d (since OpenRC-0.9.4). 

Alternatively, you can migrate your system to use Native systemd configuration files. Bear in mind that upstream has made it clear that at some point in the future it will stop supporting configuration files for specific distributions, and it will only support the native systemd configuration files. If you plan to use systemd exclusively, please use its native configuration files.
http://wiki.gentoo.org/wiki/Systemd

#222209

Не понял откуда появились локали.
Вроде после этого

text
localedef --no-archive -c -i ru_RU -f UTF-8 ru_RU.utf-8

Результат куда записывает localedef?

#222212

С сетью никаких проблем.
создал: /etc/systemd/system/network.service

text
[Unit]
Description=Network Connectivity

[Service] Type=oneshot RemainAfterExit=yes ExecStart=/sbin/ifconfig eth0 192.168.0.1 netmask 255.255.255.0 mtu 1496 broadcast 192.168.0.255 up ExecStart=/sbin/route add default gw 192.168.0.1 ExecStart=/sbin/ifconfig eth1 up

ExecStop=/sbin/ifconfig eth0 down ExecStop=/sbin/ifconfig eth1 down [Install] WantedBy=network.target

Добавил в стартап:

text
systemctl enable network.service

Главное чтобы в ExecStart был _бинарник_ с указанием пути, если прописать скрипт, он будет проигнорирован, если путь не указать, то сервис не запустится.

#222377

Написание собственных init скриптов, перевод http://wiki.opennet.ru/Systemd_%D0%B4%D0%BB%D1%8F_%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%BE%D0%B2%2C_%D1%87%D0%B0%D1%81%D1%82%D1%8C_3:_HOW-TO:_%D0%BF%D1%80%D0%B5%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_SysV_init-%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%B0_%D0%B2_systemd_service-%D1%84%D0%B0%D0%B9%D0%BB

Войдите или зарегистрируйтесь, чтобы ответить.