LINUX.ORG.RU
ФорумTalks

[ЖЖ] [lennart] [systemd] [debian] Я установил его

 , ,


0

1

У меня Debian с обычным sysvinit. Запускается оно достаточно долго.

Сегодня в связи с тредом про вброс Леннарта в гугле+ решил попробовать поставить systemd в debian wheezy. Раньше сталкивался с ним на всяких федорках, но не особо впечатлило.

HowTo:

aptitude install systemd
И в /etc/default/grub прописать
GRUB_CMDLINE_LINUX="init=/bin/systemd"
И сделать
sudo -i update-grub2

Что получилось: теперь система грузится быстрее, на глаз, раза в два (да-да, у меня помойка всякого серверософта, который, к тому же нужен, и его нельзя снести, и потому параллельная загрузка меня спасает). Точные бенчмарки приведу потом.

Дискасс.

PS. Расстраивает только то, что труЪ-системд-скрипты есть только для нескольких сервисов, т.е., из всех вкусностей systemd задействуется только параллельная загрузка.

Deleted

Вы написали - мы сыграли (с) Каламбур

Запилите интересные мысли - обыграем в балладе :)

bk_ ★★
()

Расстраивает только то, что труЪ-системд-скрипты есть только для нескольких сервисов

Напиши же, ну. Сервисы для systemd пишутся на минуту — там обычно строк 4-5. Это даже проще, чем написать init-скрипт.

из всех вкусностей systemd задействуется только параллельная загрузка.

Ещё, как минимум, интерфейс на dbus и поддержка cgroups, не говоря уже о fanotify. И всякие там зависимости от девайсов в стандартных сервисах типа fsck тоже по дефолту есть.

gentoo_root ★★★★★
()

что и требовалось доказать

stevejobs ★★★★☆
()
Ответ на: комментарий от Cancellor

А чойта они его в /bin положили? Непорядок-с.

[dsjjdkjd@laptop ~]# which systemd
/bin/systemd
[dsjjdkjd@laptop ~]# cat /etc/fedora-release 
Fedora release 17 (Rawhide)
[root@laptop ~]# 
reader
()
Ответ на: комментарий от Axon

А примерчик можно?

Запросто.

Раз:

[Unit]
Description=Enable laptop mode on battery

[Service]
Type=oneshot
ExecStart=/usr/sbin/laptop_mode auto
ExecStop=/usr/sbin/laptop_mode stop

[Install]
WantedBy=multi-user.target
Два:
[Unit]
Description=CPUFreq Daemon

[Service]
Type=simple
ExecStart=/usr/sbin/cpufreqd

[Install]
WantedBy=multi-user.target
В основном отличается только секция service.

gentoo_root ★★★★★
()

Что получилось: теперь система грузится быстрее, на глаз, раза в два (да-да, у меня помойка всякого серверософта, который, к тому же нужен, и его нельзя снести, и потому параллельная загрузка меня спасает).

sysvinit-проблемы. Арч безо всяких systemd быстро грузится.

geekless ★★
()
Ответ на: комментарий от Cancellor

А чойта они его в /bin положили? Непорядок-с.

ЕМНИП, он умеет работать от пользователя (параметр --user) и рулить его сервисами, но я с этим не разбирался.

gentoo_root ★★★★★
()
Ответ на: комментарий от daemonpnz

Секундомер не врет. А настолько сильный эффект плацебо не бывает.

Deleted
()
Ответ на: комментарий от gentoo_root

В арче таки SysVinit

Ну надо же. А разработчики в курсе?

В Арче от SysVinit используется один только /sbin/init + соответствующая обвязка. (Собственно, содержимое пакета sysvinit.) Всё остальное — BSD-style скрипты.

и с systemd он грузится ещё быстрее.

И насколько? Секунда, полторы? Неужели, целых две?

У меня больше всего времени при загрузке тратится на:

1. Инициализацию биоса.

2. Прогрузку иксов.

Всё остальное совершенно несущественно на фоне этих двух. Экономия на спичках.

geekless ★★
()
Ответ на: комментарий от Axon

Там BSD-style init.

BSD-style и Linux-style относятся не к бинарнику /sbin/init, а к init-скриптам. В арче скрипты стиля BSD, потому что есть один говноскрипт /etc/rc.sysinit (как-то так он называется), в котором лютая помойка из инициализации всего, и нельзя сделать /etc/init.d/consolefont restart, как в Linux-стиле скриптов, а надо заново выполнять весь /etc/rc.sysinit (т.е. перезагружаться). Но /sbin/init в арче — это обычный SysVinit, который уже вызывает init-скрипты стиля BSD.

gentoo_root ★★★★★
()
Ответ на: комментарий от gentoo_root

В арче скрипты стиля BSD, потому что есть один говноскрипт /etc/rc.sysinit (как-то так он называется), в котором лютая помойка из инициализации всего, и нельзя сделать /etc/init.d/consolefont restart

ЩИТО?

Alsvartr ★★★★★
()
Ответ на: комментарий от geekless

В Арче от SysVinit используется один только /sbin/init + соответствующая обвязка. (Собственно, содержимое пакета sysvinit.) Всё остальное — BSD-style скрипты.

init-скрипты никоим образом не относятся к тому, какой init выполняется. В арче обычный SysVinit. Скачай пакет с исходниками SysVinit и убедись, что ни одного init-скрипта там нет. А то, что SysVinit запускает скрипты в BSD-стиле, не делает SysVinit BSD-init'ом. SysVinit'у вообще всё равно, какие скрипты запускать — он делает это в рантайме в зависимости от содержимого /etc/inittab.

gentoo_root ★★★★★
()
Ответ на: комментарий от gentoo_root

А если в скрипте надо делать что-то кроме запуска/остановки? Почитать init-скрипты в дебиане - там порой такая лапша развесистая. Как простота systemd спасет от этого, интересно знать.

Alsvartr ★★★★★
()
Ответ на: комментарий от gentoo_root

/etc/rc.sysinit (как-то так он называется)

/etc/rc.sysinit

в котором лютая помойка

точнее, 281 строчка, считая пустые

и нельзя сделать /etc/init.d/consolefont restart

в rc.sysinit это одна строчка:

...

# Set console font if required
set_consolefont

...

Которая в свою очередь цепляет функцию из initscripts

/etc/rc.d/functions

...

# Function for setting console font if required
set_consolefont() {
        [[ $CONSOLEFONT ]] || return 0
        stat_busy "Loading Console Font: $CONSOLEFONT"
                #CONSOLEMAP in UTF-8 shouldn't be used
                [[ $CONSOLEMAP && ${LOCALE,,} =~ utf ]] && CONSOLEMAP=""
                local i
                for i in /dev/tty[0-9]*; do
                        setfont ${CONSOLEMAP:+-m "${CONSOLEMAP}"} \
                                "$CONSOLEFONT" -C ${i} &>/dev/null
                done
        if (( $? )); then
                stat_fail
        else
                stat_done
        fi
}

...
stevejobs ★★★★☆
()
Ответ на: комментарий от geekless

Всё остальное совершенно несущественно на фоне этих двух.

Без списка всего остального, данная информация бессмысленна.

reader
()
Ответ на: комментарий от Alsvartr

ЩИТО?

То, что пихать всё в один скрипт — не UNIX-way. /etc/rc.sysinit в арче запускает udev, делает проверку ФС, монтирует их, поднимает сеть, настраивает swap, часовой пояс, устанавливает hostname, настраивает локаль, шрифты, кеймап, запускает minilogd и ещё делает кучу дел. Все эти задачи разные и должны решаться отдельными скриптами, чтобы мне не пришлось перезагружать компьютер ради того, чтобы перезапустить udev или сделать что-нибудь одно заново. Поэтому BSD-стиль скриптов — г-но, а Linux-стиль лучше. Сервисы systemd — это отдельный разговор, они ни в какое сравнение не идут с init-скриптами.

gentoo_root ★★★★★
()
Ответ на: комментарий от gentoo_root

— не UNIX-way

сегодня эта фраза в каждом втором топике :)

stevejobs ★★★★☆
()
Ответ на: комментарий от Trashman

ЛОЛ ШТО? rc.d restart crond /etc/rc.d/crond restart

ВНЕЗАПНО, я говорил не про содержимое $DAEMONS в /etc/rc.conf, а те задачи, которые выполняет /etc/rc.sysinit. А ещё научись читать: я написал не crond, а consolefont.

gentoo_root ★★★★★
()
Ответ на: комментарий от Alsvartr

А если в скрипте надо делать что-то кроме запуска/остановки?

man systemd.service

ExecStartPre, ExecStartPost, ExecStopPre, ExecStopPost, ExecReload и так далее. Всё можно.

gentoo_root ★★★★★
()
Ответ на: комментарий от gentoo_root

То, что пихать всё в один скрипт — не UNIX-way. /etc/rc.sysinit в арче запускает udev, делает проверку ФС, монтирует их, поднимает сеть, настраивает swap, часовой пояс, устанавливает hostname, настраивает локаль, шрифты, кеймап, запускает minilogd и ещё делает кучу дел. Все эти задачи разные и должны решаться отдельными скриптами

Отлично, так давайте и разнесём их по разным скриптам. Вы готовы этим заниматься? Нет?

А менять шило на мыло и ставить вместо простой помойки сложную overengineered помойку готовы?

geekless ★★
()
Ответ на: комментарий от gentoo_root

Однако, суть-то в скриптах, которые, как раз, умеют параллельную загрузку сервисов.

Axon ★★★★★
()
Ответ на: комментарий от gentoo_root

Как народу лапшу вешают, однако. Таки не должны.

Перечитал вашу же новость про systemd, осознал, что не совсем правильно понял предложение:

упразднение загрузочных bash-скриптов и замена схожим по функциональности кодом на C для управления консолью, установки локали, запуска fsck, монтирования файловых систем и др.;

Впрочем, неправильно понять было легко.

Axon ★★★★★
()

HowTo:

aptitude install systemd И в /etc/default/grub прописать

GRUB_CMDLINE_LINUX=«init=/bin/systemd» И сделать

sudo -i update-grub2

aptitude install systemd и все, больше никаких движений делать не надо.

roman77 ★★★★★
()
Ответ на: комментарий от gentoo_root

ExecStartPre, ExecStartPost, ExecStopPre, ExecStopPost, ExecReload и так далее. Всё можно.

То что лапшу разнесли по секциям от лапши не избавляет. Как высказывание «Сервисы для systemd пишутся на минуту — там обычно строк 4-5. Это даже проще, чем написать init-скрипт» соотносится с истиной не очень понятно.

Alsvartr ★★★★★
()
Ответ на: комментарий от stevejobs

в rc.sysinit это одна строчка:

Раньше эта функция из /etc/rc.d/functions лежала целиком в /etc/rc.sysinit. Совершенствуются, значит. Глядишь, до них дойдёт и на Linux-стиль перейти, если на systemd раньше не перейдут.

И то, что это одна строчка, ничего не меняет. Я что, должен догадаться, что мне надо написать в консоли «( . /etc/rc.d/functions && set_consolefont; )»? Такие вещи должны быть интуитивными. Если я столкнусь с незнакомым дистрибутивом, то я попытаюсь найти /etc/init.d или /etc/rc.d, а в нём какой-нибудь consolefont, consolesetup, font и т.п. и запущу его с параметром restart, и это сработает. А в арче мне надо сначала прочитать 281 строку /etc/rc.sysinit, найти какой-то set_consolefont, а потом ещё выискивать, какие файлы инклюдит /etc/rc.sysinit, чтобы была эта функция (к тому же, это может быть многоуровневый инклюд — уже проще grep -r set_consolefont /etc).

А если уже так перезапускать сервисы, переписывая куски /etc/rc.sysinit в консоль, то почему бы уже не прописать init=/bin/bash и не грузить систему руками, переписав весь /etc/rc.sysinit в консоль? Короче, это неподходящий способ.

gentoo_root ★★★★★
()
Ответ на: комментарий от Deleted

У меня Debian с обычным sysvinit. Запускается оно достаточно долго.
Что получилось: теперь система грузится быстрее, на глаз, раза в два

У меня Debian с kexec, если я вдруг внезапно и перезагружаюсь, то это занимает секунд секунд 12.

anonymous_sama ★★★★★
()
Ответ на: комментарий от gentoo_root

чтобы мне не пришлось перезагружать компьютер ради того, чтобы перезапустить udev или сделать что-нибудь одно заново.

То есть, про /etc/rc.d/udev restart вы не слышали, да?

Axon ★★★★★
()
Ответ на: комментарий от geekless

О, так ты с матчастью не знаком.

Да нет, с матчастью не знаком ты. http://en.wikipedia.org/wiki/Init

System V init examines the /etc/inittab file for an :initdefault: entry, which tells init whether there is a default runlevel. If there is no default runlevel, then the user is dumped to a system console, where a runlevel must be entered manually.

BSD init runs the initialization shell script located in /etc/rc, then launches getty on text-based terminals or a windowing system such as X on graphical terminals under the control of /etc/ttys. There are no runlevels; the /etc/rc file determines what programs are run by init.

В арче есть /etc/inittab, а /sbin/init его читает и выполняет. Ещё там есть ранлевелы. Поэтому в арче SysVinit. То, какие скрипты он выполняет, зависит только от /etc/inittab. От того, что я отредактирую /etc/inittab, подсунув init'у другие скрипты BSD-стиля, SysVinit не станет BSD-init'ом.

Держи, просвещайся:

TL/DR, что именно оттуда читать?

gentoo_root ★★★★★
()
Ответ на: комментарий от gentoo_root

Ради прикола, пересобрал ядро под нужды systemd, смержил его, ребутнул, а оно ругается на невозможность загрузить /usr/lib/libdbus-1.so.3. /usr на отдельном разделе этой поделке видимо до сих пор не по зубам. Что делать? initramfs не предлагать.

daemonpnz ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.