https://wiki.archlinux.org/api.php?action=feedcontributions&user=Klay&feedformat=atomArchWiki - User contributions [en]2024-03-28T09:55:23ZUser contributionsMediaWiki 1.41.0https://wiki.archlinux.org/index.php?title=Lenovo_ThinkPad_Edge_E530_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=345174Lenovo ThinkPad Edge E530 (Русский)2014-11-18T06:28:31Z<p>Klay: /* tp_smapi */</p>
<hr />
<div>[[Category:Русский]]<br />
[[Category:Laptops (Русский)]]<br />
[[en:Lenovo ThinkPad Edge E530]]<br />
{{Unmaintained (Русский)}}<br />
{{Note (Русский)|Данная статья актуальна как для Lenovo thinkPad Edge E530, так и для E430.}}<br />
==Железо==<br />
<br />
{| class="wikitable"<br />
|-<br />
! Устройство || Работоспособность<br />
|-<br />
| Видео (Intel HD4000/Nvidia GTX 630) || Да<br />
|-<br />
| Ethernet (Realtek RTL8111/8168B) || Да<br />
|-<br />
| Wireless (Broadcom BCM4313 802.11b/g/n) || Да<br />
|-<br />
| Bluetooth || Да<br />
|-<br />
| Аудио (Intel HD Audio) || Да<br />
|-<br />
| Камера || Да<br />
|-<br />
| Сканер отпечатков пальцев || Да ([[Fingerprint-gui]])<br />
|-<br />
| Картридер (Realtek RTS5229) || Да<br />
|}<br />
===Видео===<br />
При наличии дополнительной видеокарты '''Nvidia GTX 630''', следует установить пакет {{Pkg|bumblebee}} из [https://wiki.archlinux.org/index.php/Arch_User_Repository_(Русский) AUR]. Далее следовать инструкциям соответствующей страницы [https://wiki.archlinux.org/index.php/Bumblebee вики].<br />
<br />
===Ethernet===<br />
Хотя, '''Realtek RTL8111/8168B''' работает корректно со стандартным модулем '''r8169''', в некоторых случаях рекомендуется установить модуль {{Pkg|r8168}}, доступный в [https://wiki.archlinux.org/index.php/Official_Repositories_(Русский) официальном репозитории]:<br />
# pacman -S r8168<br />
После установки потребуется выгрузить модуль '''r8169''' и загрузить установленный. Также, модуль {{Pkg|r8168}} конфликтует с модулем '''r8169''', поэтому также следует добавить последний в '''blacklist''':<br />
# rmmod r8169<br />
# modprobe r8168<br />
# echo "blacklist r8169" > /etc/modprobe.d/r8169_blacklist.conf<br />
<br />
===Wireless===<br />
Сетевая карта '''Broadcom BCM4313''' работает с модулем '''brcmsmac''' "из коробки". Однако, при работе с этим модулем устройство находится в режиме энергосбережения, что приводит к плохому приему сигнала и малому радиусу видимости сетей. Рекомендуется установить проприетарный драйвер для карточки из [https://wiki.archlinux.org/index.php/Arch_User_Repository_(Русский) AUR]:<br />
# yaourt -S broadcom-wl<br />
Затем загрузить установленный модуль:<br />
# modprobe wl<br />
Добавлять модули '''b43''' и '''brcmsmac''' в '''blacklist''' нет необходимости, так как пакет {{AUR|broadcom-wl}} уже содержит нужный файл. Следует также заметить, что данная сетевая карта с модулем '''b43''' '''не работает'''.<br />
<br />
===Сканер отпечатков пальцев===<br />
Работает корректно с {{AUR|fingerprint-gui}}. Следует установить соответствующий пакет из [https://wiki.archlinux.org/index.php/Arch_User_Repository_(Русский) AUR]:<br />
# yaourt -S fingerprint-gui<br />
Далее следовать инструкциям соответствующей страницы [https://wiki.archlinux.org/index.php/Fingerprint-gui вики]. Адрес устройства можно посмотреть, выполнив команду:<br />
# lsusb | grep Upek<br />
Bus 001 Device 004: ID 147e:1002 Upek<br />
===Картридер===<br />
<br />
{{Note (Русский)|При использовании ядра версии >3.8 драйвер работает "из коробки". Устройства будут определяться, как '''/dev/mmcX'''.}}<br />
Картридер '''не работает''' "из коробки". Для корректной работы следует установить из [https://wiki.archlinux.org/index.php/Arch_User_Repository_(Русский) AUR] модуль {{AUR|rts5229}}:<br />
# yaourt -S rts5229<br />
# modprobe rts5229<br />
<br />
==Трэкпоинт==<br />
Трэкпоинт работает "из коробки", однако отсутствует возможность скроллинга. Для того, чтобы иметь возможность скроллинга в X при зажатии средней клавиши тачпада, необходимо создать файл в директории '''/etc/X11/xorg.conf.d/''' со следующим содержимым:<br />
{{hc|/etc/X11/xorg.conf.d/20-thinkpad.conf|<nowiki><br />
Section "InputClass"<br />
Identifier "Trackpoint Wheel Emulation"<br />
MatchProduct "TPPS/2 IBM TrackPoint"<br />
MatchDevicePath "/dev/input/event*"<br />
Option "EmulateWheel" "true"<br />
Option "EmulateWheelButton" "2"<br />
Option "Emulate3Buttons" "false"<br />
Option "XAxisMapping" "6 7"<br />
Option "YAxisMapping" "4 5"<br />
EndSection<br />
</nowiki>}}<br />
<br />
==Fan-control==<br />
{{Warning (Русский)|[https://bbs.archlinux.org/viewtopic.php?id&#61;151028 Сообщается], что Thinkfan в настоящий момент на данной модели не работает.}}<br />
Для работы с кулером необходимо добавить опцию к модулю '''thinkpad_acpi''':<br />
{{hc|/etc/modprobe.d/modprobe.conf|2=options thinkpad_acpi fan_control=1}}<br />
и отредактировать файл настроек:<br />
{{hc|/etc/thinkfan.conf|sensor /sys/devices/platform/coretemp.0/temp1_input}}<br />
Управление кулером осуществляется записью в соответствующие файлы:<br />
# echo engage > /proc/acpi/ibm/fan<br />
# echo level auto > /proc/acpi/ibm/fan<br />
# echo level 1 > /proc/etc/ibm/fan<br />
Доступные параметры можно посмотреть, вызвав:<br />
# cat /proc/acpi/ibm/fan<br />
<br />
==tp_smapi==<br />
Стандартный модуль {{Pkg|tp_smapi}} в настоящее время не поддерживает настройку батареи на данной модели. Для настройки режима зарядки следует установить из [https://wiki.archlinux.org/index.php/Arch_User_Repository_(Русский) пользовательского репозитория] пакет {{AUR|tpacpi-bat}}:<br />
# yaourt -S tpacpi-bat<br />
Затем отредактировать (по желанию) файл настроек:<br />
{{hc|/usr/lib/systemd/system/tpacpi-bat.service|<nowiki><br />
[Unit]<br />
Description=sets battery thresholds<br />
[Service]<br />
Type=oneshot<br />
RemainAfterExit=yes<br />
ExecStart=/usr/bin/tpacpi-bat -s ST 0 35<br />
ExecStart=/usr/bin/tpacpi-bat -s SP 0 85<br />
[Install]<br />
WantedBy=multi-user.target</nowiki>}}<br />
где для параметра '''ST''' выставить желаемое значение заряда батареи, при котором она начнет заряжаться (35%), а для параметра '''SP''' - при котором перестанет (85%).<br />
Затем, при необходимости изменения настроек выполнить:<br />
# systemctl start tpacpi-bat.service<br />
Включать сервис при каждой загрузке нет необходимости.<br />
Для подробностей обратитесь к соответствующей странице [https://wiki.archlinux.org/index.php/Tp_smapi вики].<br />
<br />
==Информация об устройствах==<br />
===Вывод lspci===<br />
<pre><br />
00:00.0 Host bridge: Intel Corporation 2nd Generation Core Processor Family DRAM Controller (rev 09)<br />
00:01.0 PCI bridge: Intel Corporation Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port (rev 09)<br />
00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)<br />
00:14.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family USB xHCI Host Controller (rev 04)<br />
00:16.0 Communication controller: Intel Corporation 7 Series/C210 Series Chipset Family MEI Controller #1 (rev 04)<br />
00:1a.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family USB Enhanced Host Controller #2 (rev 04)<br />
00:1b.0 Audio device: Intel Corporation 7 Series/C210 Series Chipset Family High Definition Audio Controller (rev 04)<br />
00:1c.0 PCI bridge: Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 1 (rev c4)<br />
00:1c.1 PCI bridge: Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 2 (rev c4)<br />
00:1c.2 PCI bridge: Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 3 (rev c4)<br />
00:1c.3 PCI bridge: Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 4 (rev c4)<br />
00:1d.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family USB Enhanced Host Controller #1 (rev 04)<br />
00:1f.0 ISA bridge: Intel Corporation HM77 Express Chipset LPC Controller (rev 04)<br />
00:1f.2 SATA controller: Intel Corporation 7 Series Chipset Family 6-port SATA Controller [AHCI mode] (rev 04)<br />
00:1f.3 SMBus: Intel Corporation 7 Series/C210 Series Chipset Family SMBus Controller (rev 04)<br />
01:00.0 VGA compatible controller: NVIDIA Corporation Device 1058 (rev a1)<br />
02:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. RTS5229 PCI Express Card Reader (rev 01)<br />
03:00.0 Network controller: Broadcom Corporation BCM4313 802.11b/g/n Wireless LAN Controller (rev 01)<br />
0c:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 07)<br />
</pre><br />
===Вывод lsusb===<br />
<pre><br />
Bus 003 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub<br />
Bus 004 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub<br />
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub<br />
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub<br />
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub<br />
Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub<br />
Bus 003 Device 003: ID 0a5c:21f4 Broadcom Corp. <br />
Bus 003 Device 004: ID 147e:1002 Upek <br />
Bus 004 Device 003: ID 05ca:1823 Ricoh Co., Ltd<br />
</pre></div>Klayhttps://wiki.archlinux.org/index.php?title=User:Klay&diff=341751User:Klay2014-10-25T16:48:14Z<p>Klay: </p>
<hr />
<div>__NOTOC__<br />
This is the user page for '''Klay'''. Feel free to leave a question or comment on my [[User talk:Klay|Talk page]].<br />
<br />
Ukraine, Kyiv<br />
<br />
== Contacts ==<br />
Use my [[User talk:Klay|talk]] page for public comments. <br />
Use my [[Special:EmailUser/Klay|email]] for private comments.<br />
<br />
== Languages ==<br />
* Russian<br />
* English<br />
<br />
== Experience Using Distributions ==<br />
<br />
* Fedora - 1.5 Years<br />
* Ubuntu - From January 2014 to now<br />
* Debian - 6 Month<br />
* Red Hat - 1 Year<br />
* Arch Linux - From April 2012 to March 2013<br />
* Linux Mint - From March 2013 to January 2014<br />
<br />
{{Note|This layout was borrowed from [[User:Filam]].}}</div>Klayhttps://wiki.archlinux.org/index.php?title=Fonts_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=319192Fonts (Русский)2014-06-11T09:35:47Z<p>Klay: /* Установка шрифтов при помощи менеджера пакетов Pacman */</p>
<hr />
<div>[[Category:Fonts (Русский)]]<br />
[[Category:Graphics and desktop publishing (Русский)]]<br />
[[Category:Eye candy (Русский)]]<br />
[[Category:Русский]]<br />
[[cs:Fonts]]<br />
[[de:Schriftarten]]<br />
[[en:Fonts]]<br />
[[es:Fonts]]<br />
[[it:Fonts]]<br />
[[ja:Fonts]]<br />
[[tr:Yazıtipleri]]<br />
[[zh-CN:Fonts]]<br />
[[zh-TW:Fonts]]<br />
{{Unmaintained (Русский)}}<br />
<br />
{{Related articles start}}<br />
{{Related|Font configuration}}<br />
{{Related|Infinality-bundle+fonts}}<br />
{{Related|Java Runtime Environment Fonts}}<br />
{{Related|MS Fonts}}<br />
{{Related|Xorg Font Configuration (Русский)}}<br />
{{Related articles end}}<br />
<br />
Установка и настройка шрифтов в Arch Linux.<br />
<br />
= Установка шрифтов =<br />
<br />
Основной каталог размещения шрифтов:<br />
<br />
* {{ic|/usr/share/fonts/}}<br />
Шрифты, расположенные в этих каталогах, будут доступны всем пользователям системы. Однако, установка в эти каталоги требует привилегий суперпользователя. Если у вас нет таких полномочий — Вы можете установить шрифты в каталог:<br />
<br />
* {{ic|~/.fonts/}}<br />
Все шрифты, находящиеся в {{ic|~/.fonts/}} будут доступны только его владельцу.<br />
<br />
== Установка шрифтов при помощи менеджера пакетов Pacman ==<br />
<br />
Просмотреть все доступные для установки шрифты можно командой:<br />
<br />
{{bc|$ pacman -Ss fonts}}<br />
<br />
Установить необходимый шрифт можно командой {{ic|pacman -S <имя-пакета>}}. Например:<br />
<br />
{{bc|# pacman -S ttf-dejavu}}<br />
Эта команда установит шрифт ''DejaVu'' в каталог {{ic|/usr/share/fonts/TTF/}}.<br />
<br />
== Ручная установка шрифтов ==<br />
Для установки шрифтов вручную необходимо:<br />
<br />
* Скачать необходимые шрифты<br />
* Создать каталог хранения шрифтов, установленных вручную. Например:<br />
{{bc|# mkdir /usr/share/fonts/TTFmisc}}<br />
* Скопировать/разархивировать в него необходимые шрифты<br />
<br />
* Создать/пересоздать список псевдонимов для имён шрифтов, который необходим X-серверу:<br />
{{bc|<br />
# cd /usr/share/fonts/TTFmisc<br />
# rm ./fonts.scale<br />
# mkfontscale<br />
}}<br />
* Создать/пересоздать список имён шрифтов в данном каталоге и файлов, в которых они содержатся (необходим X-серверу):<br />
{{bc|<br />
# cd /usr/share/fonts/TTFmisc<br />
# rm ./fonts.dir<br />
# mkfontdir<br />
}}<br />
* Пересоздать файлы описания fonts.cache-NN для каталогов со шрифтами:<br />
{{bc|# fc-cache -fv}}<br />
<br />
= Рекомендации по выбору шрифтов =<br />
<br />
В качестве основного шрифта рабочего окружения можно рекомендовать либо [http://en.wikipedia.org/wiki/Droid_(font) Droid Fonts], либо [http://ru.wikipedia.org/wiki/Bitstream_Vera Bitstream Vera Fonts], либо [http://www.redhat.com/promo/fonts Red Hats Liberation Fonts]. Однако стоит заметить, что [http://img515.imageshack.us/img515/4259/liberationcustomdb7.png начертание некоторых букв] шрифта ''Red Hats Liberation Fonts'' на данный момент оставляет желать лучшего, поэтому его, в отличие от ''Bitstream Vera Fonts'', необходимо устанавливать вручную, а не из репозитория.<br />
<br />
== Установка Droid Fonts ==<br />
{{bc|# pacman -S ttf-droid}}<br />
<br />
== Установка Bitstream Vera Fonts ==<br />
<br />
{{bc|# pacman -S ttf-dejavu}}<br />
<br />
== Установка Red Hats Liberation Fonts ==<br />
<br />
{{bc|1=<br />
# mkdir /usr/share/fonts/TTFmisc<br />
# cd /usr/share/fonts/TTFmisc<br />
# wget -O ./liberation-fonts.tar.gz https://bugzilla.redhat.com/attachment.cgi?id=290976 <br />
# tar -xf ./liberation-fonts.tar.gz<br />
# cp ./liberation-fonts/*.ttf ./<br />
# rm -R ./liberation-fonts/<br />
# rm -R liberation-fonts.tar.gz<br />
# mkfontscale<br />
# mkfontdir<br />
}}<br />
<br />
== Установка шрифтов Microsoft<sup>&reg;</sup> ==<br />
<br />
Так как в пакете ''ttf-ms-fonts'' присутствуют некоторые шрифты, начертание которых на данный момент оставляет желать лучшего, можно воспользоваться альтернативным вариантом их установки, который заключается в выборочной инсталляции только необходимых шрифтов.<br />
<br />
Необходимые шрифты Вы можете скачать на [http://sourceforge.net/project/showfiles.php?group_id=34153&package_id=56408 этой] странице веб-сайта [http://ru.wikipedia.org/wiki/SourceForge.net SourceForge.net]<br />
<br />
'''''Не рекомендуется''' скачивать шрифт ''Arial'', т.к. ''Red Hats Liberation Fonts'', загруженный с сайта [https://bugzilla.redhat.com/show_bug.cgi?id=427791 Red Hat Bugzilla], имеет схожее начертание и более чёткие линии.''<br />
<br />
После того, как Вы скачали все необходимые exe-файлы — из них нужно извлечь шрифты в соответствующую папку (напр., {{ic|/usr/share/fonts/TTFmisc/}}):<br />
<br />
{{bc|<br />
# cabextract -F *.TTF -d /usr/share/fonts/TTFmisc <имя-пакета>.exe<br />
# cd /usr/share/fonts/TTFmisc<br />
# mkfontscale<br />
# mkfontdir<br />
}}<br />
<br />
= Шрифты с включенным LCD фильтром=<br />
== "LCD" пакеты ==<br />
'''Установка:'''<br />
<br />
Удалите оригинальные пакеты:<br />
{{bc|<br />
# pacman -Rd libxft cairo<br />
}}<br />
<br />
Установите патченные пакеты из [https://aur.archlinux.org/packages.php AUR] (с использованием пакета [[Post_Installation_Tips#Accessing_AUR_seamlessly |yaourt]]):<br />
{{bc|<br />
$ yaourt -S fontconfig-lcd<br />
$ yaourt -S cairo-lcd<br />
# pacman -S libxft-lcd<br />
}}<br />
<br />
Перезапустите Xorg ({{ic|Ctrl+Alt+Backspace}})<br />
<br />
'''Удаление:'''<br />
{{bc|<br />
# pacman -Rd libxft-lcd cairo-lcd fontconfig-lcd<br />
# pacman -S libxft cairo<br />
}}<br />
<br />
== "LCD" пакеты c патчами Ubuntu==<br />
<br />
'''Установка:'''<br />
<br />
Процесс установки этих пакетов несколько отличается от вышеописанных. Для быстрой и успешной инсталляции все действия должны производиться в такой последовательности:<br />
<br />
{{bc|<br />
$ yaourt -S freetype2-ubuntu<br />
}}<br />
<br />
При установке yaourt сообщит о конфликте, конфликтующие пакеты нужно будет удалить.<br />
<br />
Аналогично устанавливаются остальные пакеты. Порядок установки пакетов должен быть таким:<br />
<br />
1. freetype2-ubuntu<br />
2. fontconfig-ubuntu<br />
3. cairo-ubuntu<br />
<br />
= Конфигурация =<br />
<br />
== Общие понятия ==<br />
<br />
Настройки, касающиеся отрисовки шрифтов в Xorg, находятся в:<br />
<br />
* папке {{ic|/etc/fonts/}}<br />
* файле {{ic|/etc/X11/Xresources}} (содержимое ниже)<br />
<br />
Содержимое {{ic|/etc/fonts/}}:<br />
<br />
* папка conf.avail - содержит доступные файлы конфигураций<br />
* папка conf.d - содержит символические ссылки на файлы конфигураций (из папки {{ic|/etc/fonts/conf.d/}}), определяющие параметры шрифтов (отрисовка, замена одних шрифтов другими и т.д.)<br />
* файл fonts.dtd<br />
* файл fonts.conf<br />
<br />
Например, для применения автохинтинга шрифтов Free Type необходимо создать в папке {{ic|/etc/fonts/conf.d/}} символическую ссылку на файл {{ic|/etc/fonts/conf.avail/10-autohint.conf}}:<br />
<br />
{{bc|<br />
# ln -s /etc/fonts/conf.avail/10-autohint.conf /etc/fonts/conf.d/10-autohint.conf<br />
}}<br />
<br />
'''Примечание:''' В настоящее время не все шрифты с автохинтингом выглядят приемлемо, поэтому рекомендуется его использовать либо для отрисовки шрифтов малого размера, либо не использовать вообще.<br />
<br />
Как можно заметить, для файлов конфигурации применяется следующий формат именования:<br />
<br />
{{ic|<xx>-<sometext>.conf}}, где:<br />
<br />
{{ic|<sometext>}} - любой текст, описывающий параметры, находящиеся в этом файле (напр.: "hinting-full");<br />
<br />
{{ic|<xx>}} - двузначное число от 00 до 99, влияет на позицию файла при сортировке по имени, а, соответственно, и на его приоритет: чем больше число - тем выше приоритет.<br />
<br />
Например: если в дирректории будут находится два файла с именами {{ic|11-hinting-slight.conf}} (применение слабого сглаживания) и {{ic|10-hinting-medium.conf}} (применение среднего сглаживания), то файл {{ic|11-hinting-slight.conf}} "перекроет" файл {{ic|10-hinting-medium.conf}} и при отрисовке шрифтов будет использоваться слабое сглаживание.<br />
<br />
'''Примечание:''' В файле {{ic|/etc/fonts/conf.d/README}} Вы можете более подробно узнать о префиксном нумеровании, применяемого для этих файлов.<br />
<br />
== Рекомендации по настройке (для патчей *-ubuntu) ==<br />
<br />
Здесь приведено содержимое конфигурационных файлов/каталогов, так или иначе влияющих на начертание шрифтов в системе.<br />
<br />
'''Примечание:''' Если у Вас в системе всего один пользовательский аккаунт - настраивать шрифты рекомендуется посредством правки файла {{ic|~/.fonts.conf}} ([[Fonts (Русский)#cat ~/.fonts.conf (альтернатива настройкам в /etc/fonts/...)]]), т.к. это:<br />
* избавит Вас от повторной настройки при переустановке/смене дистрибутива<br />
* удобно для быстрого отката изменений (достаточно сделать копию одного файла, а не нескольких)<br />
<br />
Файл {{ic|/etc/X11/Xresources}}:<br />
{{bc|<br />
Xft.dpi: 96<br />
! hintnone, hintslight, hintmedium, hintfull<br />
Xft.hintstyle: hintfull<br />
Xft.hinting: true<br />
! lcdnone, lcddefault, lcdlight, lcdlegacy<br />
Xft.lcdfilter: lcddefault<br />
Xft.rgba: rgb<br />
}}<br />
<br />
Эти настройки можно также задать персонально для пользователя в файле {{ic|~/.Xdefaults}}. Подробнее об опциях Xft написано [http://www.freedesktop.org/wiki/ScreenFontSettings здесь].<br />
<br />
Каталог {{ic|/etc/fonts/conf.d/}} :<br />
{{bc|<br />
lrwxrwxrwx 1 root root 31 Апр 9 10:48 10-antialias.conf -> ../conf.avail/10-antialias.conf<br />
lrwxrwxrwx 1 root root 42 Апр 17 13:18 10-hinting-full.conf -> /etc/fonts/conf.avail/10-hinting-full.conf<br />
lrwxrwxrwx 1 root root 29 Апр 9 10:48 10-hinting.conf -> ../conf.avail/10-hinting.conf<br />
lrwxrwxrwx 1 root root 43 Апр 8 18:17 10-sub-pixel-rgb.conf -> /etc/fonts/conf.avail/10-sub-pixel-rgb.conf<br />
lrwxrwxrwx 1 root root 51 Апр 17 13:14 11-lcd-filter-lcddefault.conf -> /etc/fonts/conf.avail/11-lcd-filter-lcddefault.conf<br />
...<br />
lrwxrwxrwx 1 root root 41 Апр 9 10:49 45-latin.conf -> /etc/fonts/conf.avail/45-latin.conf-droid<br />
...<br />
lrwxrwxrwx 1 root root 41 Апр 9 10:49 60-latin.conf -> /etc/fonts/conf.avail/60-latin.conf-droid<br />
...<br />
lrwxrwxrwx 1 root root 34 Апр 8 18:18 99-misc.conf -> /etc/fonts/conf.avail/99-misc.conf<br />
}}<br />
<br />
Файл {{ic|/etc/fonts/conf.d/10-antialias.conf}} :<br />
{{bc|1=<br />
<?xml version="1.0"?><br />
<!DOCTYPE fontconfig SYSTEM "fonts.dtd"><br />
<fontconfig><br />
<!-- Use the Antialiasing --> <br />
<match target="font"><br />
<edit name="antialias" mode="assign"><bool>true</bool></edit><br />
</match><br />
</fontconfig><br />
}}<br />
<br />
Файл {{ic|/etc/fonts/conf.d/10-hinting-full.conf}} :<br />
{{bc|1=<br />
<?xml version="1.0"?><br />
<!DOCTYPE fontconfig SYSTEM "fonts.dtd"><br />
<fontconfig><br />
<!-- Use Full Hinting --> <br />
<match target="font"><br />
<edit name="hintstyle" mode="assign"><const>hintfull</const></edit><br />
</match><br />
</fontconfig><br />
}}<br />
<br />
Файл {{ic|/etc/fonts/conf.d/10-hinting.conf}} :<br />
{{bc|1=<br />
<?xml version="1.0"?><br />
<!DOCTYPE fontconfig SYSTEM "fonts.dtd"><br />
<fontconfig><br />
<!-- Use Hinting --> <br />
<match target="font"><br />
<edit name="hinting" mode="assign"><bool>true</bool></edit><br />
</match><br />
</fontconfig><br />
}}<br />
<br />
Файл {{ic|/etc/fonts/conf.d/10-sub-pixel-rgb.conf}} :<br />
{{bc|1=<br />
<?xml version="1.0"?><br />
<!DOCTYPE fontconfig SYSTEM "fonts.dtd"><br />
<fontconfig><br />
<!-- Enable sub-pixel rendering --> <br />
<match target="font"><br />
<edit name="rgba" mode="assign"><const>rgb</const></edit><br />
</match><br />
</fontconfig><br />
}}<br />
<br />
Файл {{ic|/etc/fonts/conf.d/11-lcd-filter-lcddefault.conf}} :<br />
{{bc|1=<br />
<?xml version="1.0"?><br />
<!DOCTYPE fontconfig SYSTEM "fonts.dtd"><br />
<!-- conf.d/lcd-filter-lcddefault.conf --><br />
<fontconfig><br />
<!-- Use lcddefault as default for LCD filter --><br />
<match target="font"><br />
<edit mode="assign" name="lcdfilter"><br />
<const>lcddefault</const><br />
</edit><br />
</match><br />
</fontconfig><br />
}}<br />
<br />
Файл {{ic|/etc/fonts/conf.d/45-latin.conf-droid}} :<br />
{{bc|1=<br />
<?xml version="1.0"?><br />
<!DOCTYPE fontconfig SYSTEM "fonts.dtd"><br />
<fontconfig><br />
<!--<br />
Mark common families with their generics so we'll get<br />
something reasonable<br />
--><br />
<br />
<!--<br />
Serif faces<br />
--><br />
<alias><br />
<family>Droid Serif</family><br />
<family>Bitstream Vera Serif</family><br />
<family>DejaVu Serif</family><br />
<family>Liberation Serif</family><br />
<family>Times New Roman</family><br />
<family>Times</family><br />
<family>Nimbus Roman No9 L</family><br />
<family>Luxi Serif</family><br />
<family>Thorndale AMT</family><br />
<family>Thorndale</family><br />
<default><family>serif</family></default><br />
</alias><br />
<!--<br />
Sans-serif faces<br />
--><br />
<alias><br />
<family>Droid Sans</family><br />
<family>Bitstream Vera Sans</family><br />
<family>DejaVu Sans</family><br />
<family>Liberation Sans</family><br />
<family>Arial</family><br />
<family>Helvetica</family><br />
<family>Verdana</family><br />
<family>Albany AMT</family><br />
<family>Albany</family><br />
<family>Nimbus Sans L</family><br />
<family>Luxi Sans</family><br />
<default><family>sans-serif</family></default><br />
</alias><br />
<!--<br />
Monospace faces<br />
--><br />
<alias><br />
<family>Droid Sans Mono</family><br />
<family>Bitstream Vera Sans Mono</family><br />
<family>DejaVu Sans Mono</family><br />
<family>Liberation Mono</family><br />
<family>Courier New</family><br />
<family>Courier</family><br />
<family>Andale Mono</family><br />
<family>Luxi Mono</family><br />
<family>Cumberland AMT</family><br />
<family>Cumberland</family><br />
<family>Nimbus Mono L</family><br />
<default><family>monospace</family></default><br />
</alias><br />
<!--<br />
Fantasy faces<br />
--><br />
<alias><br />
<family>Impact</family><br />
<family>Copperplate Gothic Std</family><br />
<family>Cooper Std</family><br />
<family>Bauhaus Std</family><br />
<default><family>fantasy</family></default><br />
</alias><br />
<!--<br />
Cursive faces<br />
--><br />
<alias><br />
<family>ITC Zapf Chancery Std</family><br />
<family>Zapfino</family><br />
<family>Comic Sans MS</family><br />
<default><family>cursive</family></default><br />
</alias><br />
</fontconfig><br />
}}<br />
<br />
Файл {{ic|/etc/fonts/conf.d/60-latin.conf}} :<br />
{{bc|1=<br />
<?xml version="1.0"?><br />
<!DOCTYPE fontconfig SYSTEM "fonts.dtd"><br />
<fontconfig><br />
<alias><br />
<family>serif</family><br />
<prefer><br />
<family>Droid Serif</family><br />
<family>DejaVu Serif</family><br />
<family>Bitstream Vera Serif</family><br />
<family>Times New Roman</family><br />
<family>Thorndale AMT</family><br />
<family>Luxi Serif</family><br />
<family>Nimbus Roman No9 L</family><br />
<family>Times</family><br />
</prefer><br />
</alias><br />
<alias><br />
<family>sans-serif</family><br />
<prefer><br />
<family>Droid Sans</family><br />
<family>DejaVu Sans</family><br />
<family>Bitstream Vera Sans</family><br />
<family>Verdana</family><br />
<family>Arial</family><br />
<family>Albany AMT</family><br />
<family>Luxi Sans</family><br />
<family>Nimbus Sans L</family><br />
<family>Helvetica</family><br />
<family>Lucida Sans Unicode</family><br />
<family>BPG Glaho International</family> <!-- lat,cyr,arab,geor --><br />
<family>Tahoma</family> <!-- lat,cyr,greek,heb,arab,thai --><br />
</prefer><br />
</alias><br />
<alias><br />
<family>monospace</family><br />
<prefer><br />
<family>Droid Sans Mono</family><br />
<family>DejaVu Sans Mono</family><br />
<family>Bitstream Vera Sans Mono</family><br />
<family>Andale Mono</family><br />
<family>Courier New</family><br />
<family>Cumberland AMT</family><br />
<family>Luxi Mono</family><br />
<family>Nimbus Mono L</family><br />
<family>Courier</family><br />
</prefer><br />
</alias><br />
<!--<br />
Fantasy faces<br />
--><br />
<alias><br />
<family>fantasy</family><br />
<prefer><br />
<family>Impact</family><br />
<family>Copperplate Gothic Std</family><br />
<family>Cooper Std</family><br />
<family>Bauhaus Std</family><br />
</prefer><br />
</alias><br />
<!--<br />
Cursive faces<br />
--><br />
<alias><br />
<family>cursive</family><br />
<prefer><br />
<family>ITC Zapf Chancery Std</family><br />
<family>Zapfino</family><br />
<family>Comic Sans MS</family><br />
</prefer><br />
</alias><br />
</fontconfig><br />
}}<br />
<br />
Файл {{ic|/etc/fonts/conf.d/99-misc.conf}} :<br />
{{bc|1=<br />
<?xml version="1.0"?><br />
<!DOCTYPE fontconfig SYSTEM "fonts.dtd"><br />
<fontconfig><br />
<!-- Enable sub-pixel rendering --><br />
<match target="font"><br />
<edit name="rgba" mode="assign"><br />
<const>rgb</const><br />
</edit><br />
</match><br />
<br />
<!--Enable Autohint--><br />
<match target="font"><br />
<test name="size" compare="less_eq"><br />
<double>8</double><br />
</test><br />
<edit name="autohint" mode="assign"><br />
<bool>true</bool><br />
</edit><br />
</match><br />
<br />
<!-- Change hintstyle to hintslight for bold fonts--><br />
<!-- except small (till 9th size) --><br />
<match target="font"><br />
<!--<test name="weight" compare="more_eq"><br />
<const>medium</const><br />
</test>--><br />
<test name="size" compare="more"><br />
<double>10</double><br />
</test><br />
<edit name="hintstyle" mode="assign"><br />
<const>hintslight</const><br />
</edit><br />
</match><br />
<br />
<!-- Disable Anti Aliasing for Tahoma ()--><br />
<!--<match target="font"><br />
<test name="family"><br />
<string>Tahoma</string><br />
</test><br />
<test compare="less" name="size" qual="any"><br />
<double>12</double><br />
</test><br />
<edit mode="assign" name="antialias"><br />
<bool>false</bool><br />
</edit><br />
</match>--><br />
<br />
<!-- Autohint for Tahoma (bold 6th size) --><br />
<match target="font"><br />
<test name="family"><br />
<string>Tahoma</string><br />
</test><br />
<test name="size" compare="eq"><br />
<double>6</double><br />
</test><br />
<test name="weight" compare="more_eq"><br />
<const>medium</const><br />
</test><br />
<edit name="autohint" mode="assign"><br />
<bool>true</bool><br />
</edit><br />
</match><br />
<!-- Replace Clean font with sans-serif --><br />
<match target="pattern" name="family" ><br />
<test name="family" qual="any" ><br />
<string>Clean</string><br />
</test><br />
<edit mode="assign" name="family" ><br />
<string>sans-serif</string><br />
</edit><br />
</match><br />
<!-- Replace Fixed font with monospace --><br />
<match target="pattern" name="family" ><br />
<test name="family" qual="any" ><br />
<string>Fixed</string><br />
</test><br />
<edit mode="assign" name="family" ><br />
<string>monospace</string><br />
</edit><br />
</match><br />
<!-- Replace Nimbus family font with default --><br />
<match target="pattern" name="family" ><br />
<test name="family" qual="any" ><br />
<string>Nimbus Sans L</string><br />
</test><br />
<edit mode="assign" name="family" ><br />
<string>sans-serif</string><br />
</edit><br />
</match><br />
<match target="pattern" name="family" ><br />
<test name="family" qual="any" ><br />
<string>Nimbus Roman No9 L</string><br />
</test><br />
<edit mode="assign" name="family" ><br />
<string>serif</string><br />
</edit><br />
</match><br />
<match target="pattern" name="family" ><br />
<test name="family" qual="any" ><br />
<string>Nimbus Mono L</string><br />
</test><br />
<edit mode="assign" name="family" ><br />
<string>monospace</string><br />
</edit><br />
</match><br />
</fontconfig><br />
}}<br />
<br />
'''Примечание:''' Рекомендации по настройке характерны для системы, в которой установлены следующие пакеты:<br />
{{bc|<br />
cairo-ubuntu<br />
Cairo vector graphics library, with Ubuntu's LCD rendering patches<br />
fontconfig-ubuntu<br />
A library for configuring and customizing font access, with Ubuntu's LCD rendering patches<br />
freetype2-ubuntu<br />
TrueType font rendering library, with Ubuntu's LCD rendering patches<br />
libxft-ubuntu<br />
FreeType-based font drawing library for X, with Ubuntu's LCD rendering patches<br />
ttf-droid<br />
A font created by Ascender Corporation for use by the Open Handset Alliance platform, Android.<br />
}}<br />
<br />
=== cat {{ic|~/.fonts.conf}} (альтернатива настройкам в {{ic|/etc/fonts/...}}) ===<br />
{{bc|1=<br />
<?xml version="1.0"?><br />
<!DOCTYPE fontconfig SYSTEM "fonts.dtd"><br />
<fontconfig><br />
<match target="font"><br />
<edit name="antialias" mode="assign"><bool>true</bool></edit><br />
<edit name="autohint" mode="assign"><bool>false</bool></edit><br />
<edit name="hintstyle" mode="assign"><const>hintfull</const></edit><br />
<edit name="hinting" mode="assign"><bool>true</bool></edit><br />
<edit name="rgba" mode="assign"><const>rgb</const></edit><br />
<!-- lcdnone, lcddefault, lcdlight, lcdlegacy --><br />
<edit name="lcdfilter" mode="assign"><const>lcddefault</const></edit><br />
</match><br />
<br />
<match target="font"><br />
<test name="size" compare="less_eq"><double>8</double></test><br />
<edit name="autohint" mode="assign"><bool>true</bool></edit><br />
</match><br />
<match target="font"><br />
<test name="size" compare="more_eq"><double>14</double></test><br />
<edit name="rgba" mode="assign"><const>none</const></edit><br />
</match><br />
<br />
<match target="font"><br />
<test name="family"><string>Tahoma</string></test><br />
<test name="size" compare="eq"><double>6</double></test><br />
<test name="weight" compare="more_eq"><const>medium</const></test><br />
<edit name="autohint" mode="assign"><bool>true</bool></edit><br />
</match><br />
<!-- Replace Clean font with sans-serif --><br />
<match target="pattern" name="family" ><br />
<test name="family" qual="any" ><br />
<string>Clean</string><br />
</test><br />
<edit mode="assign" name="family" ><br />
<string>sans-serif</string><br />
</edit><br />
</match><br />
<!-- Replace Fixed font with monospace --><br />
<match target="pattern" name="family" ><br />
<test name="family" qual="any" ><br />
<string>Fixed</string><br />
</test><br />
<edit mode="assign" name="family" ><br />
<string>monospace</string><br />
</edit><br />
</match><br />
<!-- Replace Nimbus family font with default --><br />
<match target="pattern" name="family" ><br />
<test name="family" qual="any" ><br />
<string>Nimbus Sans L</string><br />
</test><br />
<edit mode="assign" name="family" ><br />
<string>sans-serif</string><br />
</edit><br />
</match><br />
<match target="pattern" name="family" ><br />
<test name="family" qual="any" ><br />
<string>Nimbus Roman No9 L</string><br />
</test><br />
<edit mode="assign" name="family" ><br />
<string>serif</string><br />
</edit><br />
</match><br />
<match target="pattern" name="family" ><br />
<test name="family" qual="any" ><br />
<string>Nimbus Mono L</string><br />
</test><br />
<edit mode="assign" name="family" ><br />
<string>monospace</string><br />
</edit><br />
</match><br />
<br />
<!-- Set default font --><br />
<alias><br />
<family>Droid Serif</family><br />
<default><family>serif</family></default><br />
</alias><br />
<br />
<alias><br />
<family>Droid Sans</family><br />
<default><family>sans-serif</family></default><br />
</alias><br />
<br />
<alias><br />
<family>Liberation Mono</family><br />
<default><family>monospace</family></default><br />
</alias><br />
<br />
<alias><br />
<family>serif</family><br />
<prefer><family>Droid Serif</family></prefer><br />
</alias><br />
<alias><br />
<family>sans-serif</family><br />
<prefer><family>Droid Sans</family></prefer><br />
</alias><br />
<alias><br />
<family>monospace</family><br />
<prefer><family>Liberation Mono</family></prefer><br />
</alias><br />
</fontconfig><br />
}}<br />
<br />
= Шрифт в консоли =<br />
== Теория ==<br />
После запуска ядро Linux создаёт и поддерживает текстовую консоль.<br />
<br />
Текст, выводимый в символьное устройство {{ic|/dev/console}} , записывается в специальный буфер в памяти вместе с информацией о цвете.<br />
<br />
Для отображения этого текста на экране используется другой буфер, в который загружен специально предназначенный для консоли растровый моноширинный шрифт.<br />
<br />
При инициализации консоли в этот буфер записывается дефолтный шрифт, вкомпилированный в ядро (как правило, без кириллицы), а в дальнейшем шрифт в буфере может быть заменён с помощью утилиты {{ic|setfont}}. Так как в этом буфере находится только содержимое файла со шрифтом, но не его название, ядро не знает, какой шрифт в него загружен, и в случае создания консоли заново, как это происходит при переключении из текстового режима во фрэймбуфер после старта соответствующего видеокарте drm-модуля, шрифт снова сбрасывается в дефолт.<br />
<br />
В дополнение к "реальной" консоли, ядро поддерживает динамически расширяемый набор виртуальных консолей {{ic|/dev/tty1}}, {{ic|tty2}} и т.д., и корневую виртуальную консоль {{ic|/dev/tty0}}<br />
<br />
Хотя устройства для первых 59 виртуальных консолей создаются заранее, сами консоли при этом остаются в представлении ядра лишь номерами. Реально они появляются только после первой попытки вывода в них текста. На экран все виртуальные консоли выводятся путём подмены буферов в единственной "реальной" консоли, причём буфер шрифта при создании новой виртуальной консоли берётся тот, что был в "реальной" на момент создания.<br />
<br />
В результате, если шрифт был загружен в реальную консоль '''до''' создания виртуальной консоли, в последующем он автоматически распространяется на все виртуальные, в противном случае этого не происходит, и каждая новая виртуальная наследует шрифт из предыдущей видимой, то есть тот, что был загружен в "реальную" в тот момент.<br />
<br />
== Практика ==<br />
В пакете {{ic|systemd}} за загрузку консольного шрифта отвечает программа {{ic|/usr/lib/systemd/systemd-vconsole-setup}} , которая читает его имя из параметра {{ic|FONT&#61;}} в конфиге {{ic|/etc/vconsole.conf}} . Суффикс/расширение (.pcf.gz) файла со шрифтом в конфиге писать не обязательно.<br />
<br />
Имеющиеся в системе консольные шрифты находятся в каталоге {{ic|/usr/share/kbd/consolefonts/}} , проверить их можно, запустив команду {{ic|setfont}} для каждого из них.<br />
<br />
Если для вашей видеокарты при загрузке системы подключается drm-модуль, например i915 для intel, его старт приводит к появлению нового устройства фреймбуфера ''(или замене старого на новый)'' ({{ic|/dev/fb0}} и т.д.), и повторной инициализации консоли со сбросом шрифта. Если это происходит уже '''после''' того, как {{ic|systemd-vconsole-setup}} загрузила ваш шрифт, вам требуется либо загрузить его повторно, либо [[KMS#Early_KMS_start|обеспечить старт drm-модуля]] заведомо раньше загрузки шрифта.<br />
<br />
Второе проще всего сделать, добавив ваш drm-модуль в строку [[Mkinitcpio#MODULES|MODULES&#61;]] конфига {{ic|/etc/mkinitcpio.conf}} и перегенерировав образ initramfs. Для стационарной системы этого вполне достаточно.<br />
<br />
Если вы используете initramfs с хуком {{ic|systemd}}, либо вообще не используете initramfs, или ваша же система "переносная", то есть находится на съёмном диске или флешке, и запускается на разных машинах, предпочтительнее первый вариант. Для этого нужно создать правило UDEV, которое будет срабатывать на появление нового устройства {{ic|/dev/fb*}}<br />
<br />
* {{ic|/etc/udev/rules.d/96-fb-all-vcs-setup.rules}}<br />
# Setup all vconsoles for a new framebuffer device<br />
KERNEL=="fb*", ACTION=="add", RUN+="/bin/sh /etc/udev/all-vcs-set.sh"<br />
<br />
и скрипт, который оно будет запускать:<br />
<br />
* {{ic|/etc/udev/all-vcs-set.sh}}<br />
#!/bin/sh<br />
# We must load locale for $VCS util<br />
. /etc/locale.conf<br />
export LANG<br />
VCS=/usr/lib/systemd/systemd-vconsole-setup<br />
# Setup the "real" (current) console first<br />
$VCS<br />
# Setup all other active consoles<br />
for VC in /dev/vcs[0-9]*<br />
do $VCS /dev/tty${VC#/dev/vcs}<br />
done<br />
<br />
Скрипт читает локаль, которая требуется для нормальной работы утилиты {{ic|systemd-vconsole-setup}}, после чего выполняет её для "реальной" консоли, и для каждой из созданных на этот момент виртуальных, если такие есть. Для определения инициализированных виртуальных консолей здесь использованы устройства произвольного доступа к текстовым буферам соответствующих консолей {{ic|/dev/vcs*}}, которые в отличии от {{ic|/dev/tty*}} создаются только для уже имеющихся консолей.<br />
<br />
<br><br><br />
Возможен ещё один вариант решения – отсрочить загрузку шрифта до момента инициализации фреймбуфера. Для этого можно создать правило UDEV, которое заставит systemd создавать юниты для устройств фреймбуфера:<br />
* {{ic|/etc/udev/rules.d/96-fb-systemd.rules}}<br />
# Register all framebuffer devices in systemd<br />
SUBSYSTEM=="graphics", TAG+="systemd", ENV{SYSTEMD_ALIAS}+="/sys/subsystem/graphics/%k"<br />
и дополнить {{ic|systemd-vconsole-setup.service}}, указав, что установка шрифтов должна ожидать '''первой''' инициализации фреймбуфера:<br />
* {{ic|/etc/systemd/system/systemd-vconsole-setup.service.d/ordering.conf}}<br />
[Unit]<br />
Requires=sys-subsystem-graphics-fb0.device<br />
After=sys-subsystem-graphics-fb0.device<br />
Этот вариант несколько проще, но менее универсален:<br />
* Он '''не''' будет работать в случаях '''повторной''' инициализации фреймбуфера, например, если при загрузке VESA-фреймбуфер сменяется на drm-фреймбуфер.<br />
* Также он '''не''' сможет загрузить шрифт в дополнительные виртуальные консоли, если они появились '''до''' инициализации фреймбуфера.<br />
* И наконец, он этот вариант '''заблокирует загрузку шрифта при отсутствии фреймбуфера'''.<br />
<br />
<br><br><br />
Самый простой способ (пере)загрузки шрифта в консоли при инициализации фреймбуфера – прямой вызов утилиты '''systemd-vconsole-setup''' из правила UDEV:<br />
* {{ic|/etc/udev/rules.d/96-fb-vconsole-setup.rules}}<br />
# Setup vconsole for a new framebuffer device<br />
KERNEL=="fb*", ACTION=="add", IMPORT{file}="/etc/locale.conf", RUN+="/usr/lib/systemd/systemd-vconsole-setup"<br />
В этом случае загрузка шрифта не блокируется при отсутствии фреймбуфера, и срабатывает автоматически даже при его повторной инициализации. Единственный недостаток – шрифт не будет загружен для дополнительных виртуальных консолей, если они инициализируются раньше фреймбуфера. Эту возможность учитывает и реализует только решение с шелл-скриптом ''(см. выше)''.<br />
<br />
= Внешние ссылки =<br />
* [http://posix.ru/desktop/x_and_fonts/ Рендеринг шрифтов в X Window: как в ... и даже лучше]<br><br><br />
* [http://archlinux.org.ru/forum/topic/1090/ Решение проблемы шрифта в консоли – archlinux.org.ru]<br><br></div>Klayhttps://wiki.archlinux.org/index.php?title=ArchWiki:Translation_Team_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=319003ArchWiki:Translation Team (Русский)2014-06-10T15:46:52Z<p>Klay: /* Команда */</p>
<hr />
<div>[[Category:ArchWiki (Русский)]]<br />
[[Category:Русский]]<br />
[[ar:Archwiki Translating Team]]<br />
[[el:ArchWiki Translation Team]]<br />
[[en:ArchWiki Translation Team]]<br />
[[es:ArchWiki Translation Team]]<br />
[[hr:ArchWiki Translation Team]]<br />
[[it:ArchWiki Translation Team]]<br />
[[ja:ArchWiki Translation Team]]<br />
[[pl:ArchWiki Translation Team]]<br />
[[pt:ArchWiki Translation Team]]<br />
[[tr:ArchWiki_Çeviri_Ekibi]]<br />
[[zh-CN:ArchWiki Translation Team]]<br />
Эта страница содержит информацию о русской команде переводчиков [[ArchWiki:About (Русский)|ArchWiki]] и задачах, стоящих перед ней.<br />
<br />
{{Note (Русский)|Не вносите изменения в эту страницу, если вы не являетесь членом команды}}<br />
<br />
== О проекте ==<br />
<br />
=== Цели и задачи ===<br />
<br />
Цель проекта - предоставление русскоязычным пользователям Archlinux как можно более полной документации по дистрибутиву и всему, что с ним связано. Для осуществления этой цели мы выполняем следующие задачи:<br />
<br />
* Перевод на русский язык документации по дистрибутиву Arch Linux<br />
* Поддержание статей в актуальном состоянии<br />
* Написание собственных статей или информации, дополняющей другие статьи<br />
<br />
=== Команда ===<br />
<br />
Список наших переводчиков:<br />
<br />
* [[User:Gim|Gim]]<br />
* [[User:Kycok|Kycok]]<br />
* [[User:klay|klay]]<br />
<br />
Для вступления в команду просто начните поддерживать статьи (желательно из [[Special:WhatLinksHere/Template:Unmaintained (Русский)|этого]] списка) и обратитесь к одному из наших участников.<br />
<br />
== Вклад в общее дело ==<br />
<br />
Оперативная поддержка страниц — важнейший элемент, определяющий успешность выполнения поставленной [[#Цели и задачи|цели]]. Вы можете помочь нашему проекту, вступив в команду или просто создавая/переводя/улучшая статьи русскоязычного сегмента. Если при этом у вас возникнут вопросы и вам потребуется помощь, вы всегда можете обратиться к любому из [[#Команда|участников]] проекта.<br />
<br />
{{Warning (Русский)|Если вы желаете нам помочь с переводом какой-либо статьи, пожалуйста, сообщите нам об этом на [[Talk:ArchWiki Translation Team (Русский)#Список страниц, переводимых в настоящий момент|странице обсуждения]]. Это необходимо для того, чтобы избежать выполнения одной и той же работы разными людьми}}<br />
<br />
=== С чего начать? ===<br />
<br />
# Если вы не знаете, как редактировать страницы ArchWiki, ознакомьтесь со статьей [[Help:Редактирование]]. Там также описаны стандарты форматирования<br />
# Рекомендуем ознакомиться с [[Help:i18n]]. Там содержится полезная информация, связанная с интернационализацией и локализацией ArchWiki<br />
# [[Special:UserLogin|Авторизируйтесь]], чтобы иметь возможность редактировать страницы ArchWiki<br />
# Выберите любую статью (желательно из тех, которые [[Special:WhatLinksHere/Template:Unmaintained (Русский)|уже созданы, но требуют перевода]]), кажущуюся вам наиболее полезной и/или интересной, и создайте/обновите ее перевод <br> '''Дальнейшие шаги предназначены для тех, кто хочет вступить в нашу команду:'''<br />
# Напишите одному из наших [[#Команда|участников]] (для этого можно использовать их страницы обсуждения) о желании вступить в команду и заниматься поддержкой выбранной вами страницы<br />
# Удалите из выбранной страницы шаблон [[Template:Unmaintained (Русский)]]<br />
<br />
Начальный объём работы зависит от того, как долго страница находилась без поддержки. Первым делом нужно оценить информацию на актуальность и синхронизировать её с английским вариантом.<br />
<br />
Если какая-то информация отсутствует в русскоязычном варианте, можно скопировать текст из английской статьи и переводить его по частям. В этом случае не забудьте добавить в статью или раздел с непереведённым текстом шаблон [[Template:Translateme (Русский)]].<br />
<br />
=== Что нужно будет делать? ===<br />
<br />
Под поддержкой страницы подразумевается:<br />
<br />
* Отслеживание изменений в англоязычном и русскоязычном вариантах страницы<br />
* Перевод добавленной/изменённой информации или отмена контрпродуктивных правок<br />
* Максимально возможная синхронизация расположения всех элементов между русской и английской страницами<br />
<br />
=== Какие страницы требуют поддержки? ===<br />
<br />
Список статей, требующих сопроводителя (или, хотя бы, одноразового перевода), доступен на странице [[Special:WhatLinksHere/Template:Unmaintained (Русский)]].<br />
<br />
Однако, вы можете помочь поддерживать большие и важные статьи, которые уже сопровождаются кем-то другим, при условии согласованности ваших действий.<br />
<br />
=== Как отказаться от сопровождения страницы? ===<br />
<br />
Если по какой-либо причине вы больше не хотите сопровождать страницу, добавьте в неё шаблон [[Template:Unmaintained (Русский)]] и удалите страницу из [[#Список страниц с сопроводителем|списка страниц с сопроводителем]] ниже, чтобы другие участники были уведомлены об этом и, возможно, взяли на себя её поддержку.<br />
<br />
== Список проверки ==<br />
<br />
Перед тем, как опубликовать страницу, рекомендуется проверить следующее:<br />
<br />
# Правильность использования заглавных букв в названии статьи (подробности: [[Help:Стиль#Заголовок]])<br />
# Категории: статья должна принадлежать к тем же (русским) категориям, что и английский вариант, а также к категории [[:Category:Русский|Русский]]. Пример: сравните категории, к которым принадлежат страницы [[systemd]] и [[systemd (Русский)]]<br />
# Межъязыковые ссылки: должны присутствовать все межъязыковые ссылки, имеющиеся в английской статье, плюс ссылка на английскую статью (подробности: [[Help:I18n#Interlanguage links|Межъязыковые ссылки]])<br />
# Описание изменений: его необходимо указывать '''при каждой правке''' (подробности: [[Help:Стиль#Краткое описание изменений]])<br />
<br />
Теперь можно смело сохранять страницу. Если вы создали новую страницу (а не обновили ее), обязательно выполните следующие действия:<br />
<br />
# Создайте русские межъязыковые ссылки на страницах '''всех''' остальных языков<br />
# Зайдите на английскую версию страницы. В меню слева нажмите на ссылку ''Ссылки сюда'' и проверьте, есть ли в списке русские статьи. Скорее всего, они будут. В этом случае отредактируйте каждую такую статью, чтобы русские страницы ссылались на вашу новую страницу, а не на английскую. Для удобства используйте функцию поиска в вашем браузере<br />
# Если название статьи можно перевести на русский язык, создайте [[Help:Editing (Русский)#Перенаправления|перенаправление]] с [[Help:Article naming guidelines (Русский)#Многоязычные статьи|локализованным заголовком]]. Примеры таких статей можно найти в разделе [[#Список страниц с сопроводителем]]<br />
<br />
Если вы являетесь членом русской команды переводчиков [[ArchWiki:About (Русский)|ArchWiki]], не забудьте добавить статью в [[#Список страниц с сопроводителем]].<br />
<br />
== Текущие задачи ==<br />
<br />
'''Как можно быстрее:''' Переосмотреть и организовать поддержку страницы [[Основные рекомендации]] в связи с важностью<br />
<br />
== Список страниц с сопроводителем ==<br />
<br />
В этой таблице представлен список страниц, которые поддерживаются в рамках проекта.<br />
<br />
В столбце ''Заметки'' вы, в частности, можете попросить помощи с переводом какого-либо раздела статьи, которую вы сопровождаете. При этом обязательно используйте шаблон [[Template:Translateme (Русский)]] и скопируйте в раздел свежий английский текст, чтобы тому участнику, который захочет вам помочь, не приходилось искать его самостоятельно.<br />
<br />
{{Warning (Русский)|Пожалуйста, не просите помощи с переводом, если вы собираетесь самостоятельно его завершить. У других участников ArchWiki всегда есть то, чем необходимо заняться}}<br />
<br />
{| class="wikitable sortable collapsible" style="text-align: left; width: 100%;"<br />
|-<br />
! Страница<br />
! Локализованный заголовок<br />
! Сопроводитель<br />
! width="40%" | Заметки<br />
|-<br />
| [[Arch User Repository (Русский)]] || [[Пользовательский репозиторий Arch]] || [[User:Kycok|Kycok]] || -<br />
|-<br />
| [[Beginners' guide (Русский)]] || [[Руководство для новичков]] || [[User:Kycok|Kycok]] || -<br />
|-<br />
| [[Bluetooth (Русский)]] || Не требуется || [[User:Kycok|Kycok]] || -<br />
|-<br />
| [[Brother DCP-7030 (Русский)]] || Не требуется || [[User:Kycok|Kycok]] || -<br />
|-<br />
| [[Chromium (Русский)]] || Не требуется || [[User:Gim|Gim]] || -<br />
|-<br />
| [[Firefox (Русский)]] || Не требуется || [[User:Gim|Gim]] || -<br />
|-<br />
| [[GNOME (Русский)]] || Не требуется || [[User:Kycok|Kycok]] || -<br />
|-<br />
| [[GnuPG (Русский)]] || Не требуется || [[User:Gim|Gim]] || -<br />
|-<br />
| [[Help:Article naming guidelines (Русский)]] || [[Help:Указания по выбору имен статей]] || [[User:Kycok|Kycok]] || -<br />
|-<br />
| [[Help:Editing (Русский)]] || [[Help:Редактирование]] || [[User:Kycok|Kycok]] || -<br />
|-<br />
| [[Help:Style (Русский)]] || [[Help:Стиль]] || [[User:Kycok|Kycok]] || -<br />
|-<br />
| [[Kcaldav (Русский)]] || Не требуется || [[User:Kycok|Kycok]] || -<br />
|-<br />
| [[List of applications (Русский)]] || [[Список приложений]] || [[User:Kycok|Kycok]] || -<br />
|-<br />
| [[Main page (Русский)]] || [[Заглавная страница]] || [[User:Kycok|Kycok]] || -<br />
|-<br />
| [[Nessus (Русский)]] || Не требуется || [[User:Kycok|Kycok]] || -<br />
|-<br />
| [[Network configuration (Русский)]] || [[Настройка сети]] || [[User:Kycok|Kycok]] || Новая<br />
|-<br />
| [[Network Security Services (Русский)]] || Не требуется || [[User:Gim|Gim]] || -<br />
|-<br />
| [[Official repositories (Русский)]] || [[Официальные репозитории]] || [[User:Kycok|Kycok]] || -<br />
|-<br />
| [[pacman (Русский)]] || Не требуется || [[User:Kycok|Kycok]] || -<br />
|-<br />
| [[Pacnew and Pacsave files (Русский)]] || [[Файлы Pacnew и Pacsave]] || [[User:Kycok|Kycok]] || -<br />
|-<br />
| [[PKGBUILD (Русский)]] || Не требуется || [[User:Kycok|Kycok]] || -<br />
|-<br />
| [[Samba (Русский)]] || Не требуется || [[User:Kycok|Kycok]] || -<br />
|-<br />
| [[Samba/Troubleshooting (Русский)]] || [[Samba/Решение проблем]] || [[User:Kycok|Kycok]] || -<br />
|-<br />
| [[Secure Shell (Русский)]] || Не требуется || [[User:Kycok|Kycok]] || -<br />
|-<br />
| [[SSH Keys (Русский)]] || [[Ключи SSH]] || [[User:Kycok|Kycok]] || -<br />
|-<br />
| [[Syslinux (Русский)]] || Не требуется || [[User:Kycok|Kycok]] || -<br />
|-<br />
| [[systemd (Русский)]] || Не требуется || [[User:Kycok|Kycok]] || -<br />
|-<br />
| [[The Arch Way (Русский)]] || [[Философия Arch]] || [[User:Kycok|Kycok]] || -<br />
|-<br />
| [[Yakuake (Русский)]] || Не требуется || [[User:Gim|Gim]] || -<br />
|}<br />
<br />
Итого: '''29''' страниц; '''11,4%''' от всех страниц категории [[:Category:Русский|Русский]].</div>Klayhttps://wiki.archlinux.org/index.php?title=Yandex_Disk_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=287461Yandex Disk (Русский)2013-12-09T23:49:17Z<p>Klay: </p>
<hr />
<div>[[Category:Internet Applications]]<br />
[[en:Yandex Disk]]<br />
== Установка ==<br />
<br />
[https://disk.yandex.ru Яндекс Диск] - бесплатный облачный сервис от Яндекса, который позволяет синхронизировать фотографии, видео и документы между любыми устройствами, имеющими доступ в интернет.<br />
Консольный клиент позволяет:<br />
* Синхронизировать файлы и папки на Диске<br />
* Настроить общий доступ к вайлам и папкам через ссылки<br />
* Настроить синхронизацию<br />
<br />
{{AUR|Yandex-disk}} может быть установлен из [[Arch User Repository|AUR]]. На данный момент доступна только консольная версия клиента без GUI.<br />
<br />
Для настройки прокcи, имени пользователя и локальной паки введите:<br />
<br />
$ yandex-disk setup<br />
<br />
После этого начнется автоматическая синхронизация. Яндекс Диск готов к использованию!<br />
<br />
== Команды ==<br />
<br />
Вы можете управлять Яндекс Диском через файловый менеджер или консоль. <br />
<br />
Полный список команд для консоли доступен через {{ic|man yandex-disk}} или <br />
<br />
$ yandex-disk --help<br />
<br />
Несколько примеров:<br />
<br />
*{{ic|setup}} - запустить мастер первоначальной настройки.<br />
<br />
*{{ic|start}} - запустить как демон и начать синхронизацию папки. В файл ".sync/status" записывается текущий статус синхронизации.<br />
<br />
*{{ic|stop}} - остановить демон.<br />
<br />
*{{ic|status}} - показать статус демона: статус синхронизации, ошибки, последние синхронизированные файлы, состояние дискового пространства. Если указан FILE, будет возвращен статус для этого файла.<br />
<br />
*{{ic|token}} - получить OAuth токен, зашифровать и сохранить его в специальном файле (по умочанию - /.config/yandex-disk/passwd). Если не указаны опции -p PASSWORD или --password PASSWORD, то пароль требуется ввести из STDIN.<br />
<br />
*{{ic|sync}} - синхронизировать папку и завершить сеанс (если демон запущен, необходимо дождаться завершения синхронизации).<br />
<br />
*{{ic|publish}} - сделать файл/папку публичной и вывести ссылку в STDOUT. Объект будет скопирован в папку для синхронизации. Для перезаписи существующих объектов используйте опцию --overwrite.<br />
<br />
*{{ic|unpublish}} - удаление публичного доступа к файлу/папке.</div>Klayhttps://wiki.archlinux.org/index.php?title=Xorg_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=285121Xorg (Русский)2013-11-28T20:57:30Z<p>Klay: /* Запуск */</p>
<hr />
<div>[[Category:Русский]]<br />
[[Category:XServer (Русский)]]<br />
[[cs:Xorg]]<br />
[[da:Xorg]]<br />
[[de:X]]<br />
[[el:Xorg]]<br />
[[en:Xorg]]<br />
[[es:Xorg]]<br />
[[fr:Xorg]]<br />
[[it:Xorg]]<br />
[[nl:Xorg]]<br />
[[pl:Xorg]]<br />
[[pt:Xorg]]<br />
[[ro:Xorg]]<br />
[[tr:X_Sunucusu]]<br />
[[zh-CN:Xorg]]<br />
[[zh-TW:Xorg]]<br />
<br />
'''Xorg''' - свободная открытая реализация оконной системы X11. Xorg очень популярен среди пользователей Linux, что привело к тому, что большинство приложений с графическим интерфейсом используют X11, из-за этого Xorg доступен в большинстве дистрибутивов. Более подробную информацию смотрите в [http://en.wikipedia.org/wiki/X.Org_Server статье о Xorg в Википедии] или [http://wiki.x.org/wiki/ на wiki X.org]<br />
<br />
== Установка ==<br />
<br />
[[pacman|Установите]] X-сервер из пакета {{Pkg|xorg-server}}, доступный в [[Official Repositories (Русский)|официальном репозитории]]. Также вы можете установить полезные утилиты из группы {{Grp|xorg-apps}}.<br />
<br />
[[udev]] определит ваше оборудование, а [[Wikipedia:evdev|evdev]] будет выступать в качестве горячего подключения драйверов для практически для всех устройств ввода. Они требуются пакетом {{Pkg|xorg-server}}, поэтому нет необходимости устанавливать их отдельно.<br />
<br />
{{Tip|По умолчанию среда X пустая, и вам, скорее всего, придётся установить [[Window Manager|оконный менеджер]] или [[Desktop Environment|среду рабочего стола]] для X.}}<br />
<br />
== Запуск ==<br />
<br />
''См. также: [[Start X at Boot (Русский)|Запуск X при загрузке]]''<br />
<br />
{{Tip|Самый простой способ запустить X — воспользоваться [[Display Manager|менеджером дисплея]], например [[GDM]], [[KDM]] или [[SLiM]].}}<br />
<br />
Если вы хотите запустить X без менеджера дисплея, установите пакет {{Pkg|xorg-xinit}}. Можно установить {{Pkg|xorg-twm}}, {{Pkg|xorg-xclock}} и {{Pkg|xterm}}, чтобы запустилась среда, установленная по умолчанию.<br />
<br />
Команды {{ic|startx}} и {{ic|xinit}} запустят X-сервер и клиенты (Команда {{ic|startx}} — просто интерфейс для более универсальной команды {{ic|xinit}}). Для определения клиента {{ic|startx}}/{{ic|xinit}} читают файл {{ic|~/.xinitrc}}. При его отсутствии читается {{ic|/etc/X11/xinit/xinitrc}}, который запустит оконный менеджер [[Twm]], [[Wikipedia:Xclock|Xclock]] и [[Xterm]].<br />
<br />
Более подробная информация доступна в статье [[xinitrc]].<br />
<br />
{{Note|<br />
* Если возникают проблемы, почитайте журнал в {{ic|/var/log/Xorg.0.log}}. Строчки, начинающиеся с {{ic|(EE)}} сообщают об ошибках, {{ic|(WW)}} — предупреждения.<br />
* Если файл {{ic|~/.xinitrc}} ''пустой'', нужно удалить или [[xinitrc|отредактировать его]], чтобы запустить X правильно. Если этого не сделать, X покажет пустой экран без ошибок в {{ic|Xorg.0.log}}. Удаление этого файла запустит среду по умолчанию.}}<br />
<br />
== Настройка ==<br />
<br />
Xorg можно настроить через {{ic|/etc/X11/xorg.conf}}, {{ic|/etc/xorg.conf}} или файлы, находящиеся в каталоге {{ic|/etc/X11/xorg.conf.d/}}. Обычно никаких настроек не требуется. Вы можете создавать новые файлы конфигурации в {{ic|/etc/X11/xorg.conf.d/}}, но их имена должны начинаться с {{ic|XX-}}, где XX — номер, и оканчиваться на {{ic|.conf}} (например, файл, начинающийся на 10, запускается раньше 20).<br />
<br />
Кроме того, драйвер может поставляться с инструментами для настройки Xorg. Например, для NVIDIA запустите nvidia-xconfig, для ATI — aticonfig.<br />
<br />
=== Устройства ввода ===<br />
<br />
==== Synaptics Touchpad ====<br />
<br />
''Основная статья: [[Touchpad Synaptics (Русский)|Touchpad Synaptics]]''<br />
<br />
Если у вас ноутбук, [[pacman|установите]] драйвер тачпада из пакета {{Pkg|xf86-input-synaptics}}, доступного в [[Official Repositories (Русский)|официальном репозитории]].<br />
<br />
После установки вы можете обнаружить файл {{ic|10-synaptics.conf}} в {{ic|/etc/X11/xorg.conf.d}}. Можете закомментировать или удалить строчки {{ic|InputClass}}, связанные с тачпадом, в файле {{ic|10-evdev.conf}}.<br />
<br />
==== Отключение горячего подключения ====<br />
С версии '''1.8''' Xorg-server использует udev для определения устройств. Эта настройка отключает его использование.<br />
<br />
Section "ServerFlags"<br />
Option "AutoAddDevices" "False"<br />
EndSection<br />
<br />
{{Warning|Это отключит горячее подключения для '''всех''' устройств ввода. Гораздо удобнее, чтобы udev сам подключал устройства. '''Отключение горячего подключения не рекомендуется!'''}}<br />
<br />
=== Настройки клавиатуры ===<br />
<br />
Xorg может определить клавиатуру неправильно, что может дать проблемы с раскладкой.<br />
<br />
Чтобы увидеть полный список поддерживаемых моделей клавиатур и раскладок, откройте {{ic|/usr/share/X11/xkb/rules/xorg.lst}}.<br />
<br />
Установка раскладки для текущего сеанса Xorg:<br />
<br />
# setxkbmap dvorak<br />
<br />
==== Задержка и скорость повтора ====<br />
<br />
Используйте команду {{ic|xset r rate DELAY RATE}} для изменения, потом запишите команду в {{ic|~/.xinitrc}}, чтобы сохранить настройки.<br />
<br />
==== Просмотр настроек клавиатуры ====<br />
{{hc|$ setxkbmap -print -verbose 10|<nowiki><br />
<br />
Setting verbose level to 10<br />
locale is C<br />
Applied rules from evdev:<br />
model: evdev<br />
layout: us<br />
options: terminate:ctrl_alt_bksp<br />
Trying to build keymap using the following components:<br />
keycodes: evdev+aliases(qwerty)<br />
types: complete<br />
compat: complete<br />
symbols: pc+us+inet(evdev)+terminate(ctrl_alt_bksp)<br />
geometry: pc(pc104)<br />
xkb_keymap {<br />
xkb_keycodes { include "evdev+aliases(qwerty)" };<br />
xkb_types { include "complete" };<br />
xkb_compat { include "complete" };<br />
xkb_symbols { include "pc+us+inet(evdev)+terminate(ctrl_alt_bksp)" };<br />
xkb_geometry { include "pc(pc104)" };<br />
};<br />
</nowiki>}}<br />
<br />
<br />
<br />
В связи с выходом X.org 1.8, HAL больше не отвечает за переключение раскладок клавиатуры.<br />
<br />
==== Переключение раскладок средствами X.org ====<br />
<br />
{{Note|Установите {{Pkg|xorg-xkbevd}} и добавьте {{ic|xkbevd}} в секцию DAEMONS файла {{ic|/etc/rc.conf}}.}}<br />
<br />
Для настройки переключения раскладок нужно создать новый файл в {{ic|/etc/X11/xorg.conf.d/}}, например, {{ic|20-keyboard-layout.conf}} со следующим содержанием:<br />
<br />
<pre>Section "InputClass"<br />
Identifier "keyboard-layout"<br />
MatchIsKeyboard "on"<br />
Option "XkbLayout" "us,ru"<br />
Option "XkbOptions" "grp:caps_toggle,grp_led:scroll"<br />
EndSection</pre><br />
<br />
За комбинацию клавиш переключения между двумя раскладками отвечает опция XkbOptions. Например, если вы хотите настроить переключение по Caps Lock:<br />
<br />
Option "XkbOptions" "grp:caps_toggle"<br />
<br />
Или переключение по Ctrl+Shift:<br />
<br />
Option "XkbOptions" "grp:ctrl_shift_toggle"<br />
<br />
Опция "grp_led:scroll" отвечает за включение индикатора Scroll Lock при смене на вторую раскладку (в данном случае - ru(winkeys)). Можно использовать вместо Scroll Lock и Caps Lock, и Num Lock.<br />
<br />
Также вместо редактирования настроек можно добавить следующую команду в {{ic|~/.xinitrc}}:<br />
<br />
setxkbmap -layout "us,ru" -option "grp:caps_toggle,grp_led:scroll"<br />
<br />
==== Включение pointerkeys ====<br />
[[Wikipedia:Mouse keys|Mouse keys]] теперь по умолчанию отключены, и их нужно включать вручную:<br />
<br />
{{hc|/etc/X11/xorg.conf.d/20-enable-pointerkeys.conf|<nowiki>Section "InputClass"<br />
Identifier "Keyboard Defaults"<br />
MatchIsKeyboard "yes"<br />
Option "XkbOptions" "keypad:pointerkeys"<br />
EndSection</nowiki>}}<br />
<br />
Также можно запустить:<br />
<br />
$ setxkbmap -option keypad:pointerkeys<br />
<br />
Both will make the {{ic|Shift+Num Lock}} shortcut toggle mouse keys.<br />
<br />
==== Модель клавиатуры ====<br />
<br />
Чтобы изменить модель клавиатуры, используйте опцию XkbModel в разделе InputDevice клавиатуры. Например, если у вас клавиатура Microsoft Wireless Multimedia Keyboard:<br />
<br />
Option "XkbModel" "microsoftmult"<br />
<br />
=== InputClasses ===<br />
<br />
{{Translateme|в английской вики имеется несколько примеров по настройке InputClass в файлах конфигурации}}<br />
<br />
== Графика ==<br />
<br />
=== Установка драйвера ===<br />
<br />
Графическим драйвером по умолчанию является vesa ({{Pkg|xf86-video-vesa}}), поддерживаемый почти всеми видеокартами, но в нем нет поддержки 2D или 3D ускорения, для включения которого вам потребуется установить драйвер специально для вашей видеокарты.<br />
<br />
Для начала определите ее:<br />
<br />
$ lspci | grep VGA<br />
<br />
После этого установите соответствующий драйвер. Вы можете поискать их с помощью команды:<br />
<br />
$ pacman -Ss xf86-video<br />
<br />
Доступные открытые драйверы:<br />
*NVIDIA: {{Pkg|xf86-video-nouveau}} (см. [[Nouveau]])<br />
*Intel: {{Pkg|xf86-video-intel}} (см. [[Intel]])<br />
*ATI: {{Pkg|xf86-video-ati}} (см. [[ATI]])<br />
<br />
Проприетарные драйверы:<br />
*NVIDIA: {{Pkg|nvidia}} (см. [[NVIDIA]])<br />
*ATI: {{AUR|catalyst}} (см. [[ATI Catalyst]])<br />
<br />
Xorg должен работать гладко и без проприетарных драйверов, которые обычно нужны только для «продвинутых» функций, таких как быстрое 3D-ускорение, настройка нескольких экранов и ТВ-выход.<br />
<br />
=== Настройка монитора ===<br />
<br />
==== Начало работы ====<br />
<br />
{{Note|Эти настройки необязательны, и не следует что-либо менять, если вы не знаете, что делаете.<br><br />
Но нужно выполнять настройку при использовании двух мониторов и драйвера nouveau. См. [[Nouveau#Configuration]].}}<br />
<br />
Создайте новый файл конфигурации, например {{ic|/etc/X11/xorg.conf.d/10-monitor.conf}}. Вставьте в него следующий код:<br />
<br />
{{bc|<nowiki><br />
Section "Monitor"<br />
Identifier "Monitor0"<br />
EndSection<br />
<br />
Section "Device"<br />
Identifier "Device0"<br />
Driver "vesa" #Choose the driver used for this monitor<br />
EndSection<br />
<br />
Section "Screen"<br />
Identifier "Screen0" #Collapse Monitor and Device section to Screen section<br />
Device "Device0"<br />
Monitor "Monitor0"<br />
DefaultDepth 16 #Choose the depth (16||24)<br />
SubSection "Display"<br />
Depth 16<br />
Modes "1024x768_75.00" #Choose the resolution<br />
EndSubSection<br />
EndSection<br />
</nowiki>}}<br />
<br />
==== Несколько мониторов ====<br />
<br />
===== NVIDIA =====<br />
''См. [[NVIDIA#Multiple monitors]]''<br />
<br />
===== Более одной видеокарты =====<br />
Вы должны определить нужный драйвер для использования и поставить bus ID нужной видеокарты.<br />
{{bc|<br />
Section "Device"<br />
Identifier "Screen0"<br />
Driver "nouveau"<br />
BusID "PCI:0:12:0"<br />
EndSection<br />
<br />
Section "Device"<br />
Identifier "Screen1"<br />
Driver "radeon"<br />
BusID "PCI:1:0:0"<br />
EndSection<br />
}}<br />
<br />
Чтобы узнать bus ID:<br />
$ lspci | grep VGA<br />
01:00.0 VGA compatible controller: nVidia Corporation G96 [GeForce 9600M GT] (rev a1)<br />
<br />
bus ID здесь 1:0:0.<br />
<br />
=====Скрипт для переключения внутреннего/внешнего мониторов для ноутбуков=====<br />
<br />
{{bc|<nowiki><br />
#!/bin/bash<br />
<br />
IN="LVDS1"<br />
EXT="VGA1"<br />
<br />
if (xrandr | grep "$EXT" | grep "+")<br />
then<br />
xrandr --output $EXT --off --output $IN --auto<br />
else<br />
if (xrandr | grep "$EXT" | grep " connected")<br />
then<br />
xrandr --output $IN --off --output $EXT --auto<br />
fi<br />
fi<br />
</nowiki>}}<br />
<br />
Узнать имена мониторов можно с помощью команды:<br />
# xrandr -q<br />
<br />
Если у вас нет {{ic|xrandr}}, [[pacman|установите]] пакет {{Pkg|xorg-xrandr}}.<br />
<br />
=== Размер дисплея/DPI ===<br />
<br />
{{out of date|}}<br />
<br />
Для того чтобы выбрать правильный размер шрифтов, размер дисплея должен быть установлен для предпочитаемого DPI.<br />
<br />
Сначала можно попробовать - настроить Xorg на автоопределение DPI и размеров экрана с помощью [http://en.wikipedia.org/wiki/Display_Data_Channel DDC].<br><br />
В <code>/etc/X11/xorg.conf</code> :<br />
...<br />
Section "Module"<br />
# support for Data Display Channel. Allows to query the monitor capabilities via the video card<br />
Load "ddc"<br />
# serial bus over which you speak the ddc protocol to get info from the monitor<br />
Load "i2c"<br />
...<br />
Section Screen<br />
...<br />
DefaultColorDepth 24<br />
SubSection "Display"<br />
Depth 24<br />
Modes "1280x1024" "1152x864" "1024x768" "800x600" "640x480"<br />
EndSubSection<br />
...<br />
Не прописывайте Modeline и DisplaySize. Иногда это работает, если нет можно всё настроить вручную.<br />
<br />
<br />
В секции <code>"Monitor"</code> пропишите размер дисплея в миллиметрах:<br />
<br />
Section "Monitor"<br />
...<br />
DisplaySize 336 252 # 96 DPI @ 1280x960<br />
...<br />
EndSection<br />
<br />
Формула, рассчитывающая значение DisplaySize такова Ширина x 25.4 / DPI и Высота x 25.4 / DPI. Например, если вы запускаете Xorg с разрешением 1024x768 и хотите DPI, равное 96, используйте 1024 x 25.4 / 96 и 768 x 25.4 / 96. Округлённые значения приведены ниже.<br />
<br />
# calc: (x|y)pixels * 25.4 / dpi<br />
# DisplaySize 168 126 # 96 DPI @ 640x480<br />
# DisplaySize 210 157 # 96 DPI @ 800x600<br />
# DisplaySize 269 201 # 96 DPI @ 1024x768<br />
# DisplaySize 302 227 # 96 DPI @ 1152x864<br />
# DisplaySize 336 252 # 96 DPI @ 1280x960<br />
# DisplaySize 336 269 # 96 DPI @ 1280x1024 (соотношение сторон не 4:3)<br />
# DisplaySize 420 315 # 96 DPI @ 1600x1200<br />
<br />
<br />
Для nVidia драйверов вы, возможно, захотите отключить автоматическое определение DPI и поставить его вручную. Существует также более простой способ настройки DPI на этих картах. Любая или обе из следующих строк могут быть вставлены в секцию Device для вашей nVidia карты.<br />
<br />
Option "UseEdidDpi" "false"<br />
Option "DPI" "96 x 96"<br />
<br />
Результат может быть проверен с помощью следующей команды, которая должна вернуть 96x96 точек на дюйм, если вы установили DPI на 96.<br />
<br />
xdpyinfo | grep -B1 dot<br />
<br />
=== DPMS ===<br />
DPMS (Display Power Management Signaling) — технология, позволяющая настроить энергосбережение монитора, когда компьютер не используется. Она позволит вам автоматически переключить монитор в режим ожидания через определенное время простоя. См. [[DPMS]]<br />
<br />
=== Monitor ===<br />
<br />
В зависимости от вашего оборудования, у Xorg может не получиться обнаружить верно возможности вашего монитора или же просто вы захотите использовать меньшее разрешение, чем то. которое поддерживает ваш монитор. Возможно, вы захотите посмотреть на следующие значения в руководстве вашего монитора перед их установкой.<br />
Следующие настройки указываются в секции Monitor:<br />
<br />
==== Строчная синхронизация (horizontal sync) ====<br />
<br />
HorizSync 28-64<br />
<br />
==== Частота обновления ====<br />
<br />
VertRefresh 60<br />
<br />
=== Screen ===<br />
<br />
Следующие настройки указываются в секции Screen:<br />
<br />
==== Глубина цветовой гаммы ====<br />
<br />
Depth 24<br />
<br />
==== Разрешение ====<br />
<br />
Modes "1280x1024" "1024x768" "800x600"<br />
<br />
=== Шрифты ===<br />
<br />
Некоторые советы по настройке шрифтов можно найти в [[Xorg Font Configuration (Русский)|статье, посвящённой этому]].<br />
<br />
=== Примеры файлов xorg.conf ===<br />
<br />
<!-- Все, у кого есть написанный работающий файл xorg.conf, разместите здесь ссылку на него, чтобы другие могли посмотреть! Пожалуйста, не вставляйте файл здесь, а разместите где-нибудь и укажите ссылку. Спасибо!<br />
<br />
'''''to author:''' без обид, но в ряде веб-броузеров ссылки не открываются либо на момент просмотра недоступны, поэтому все-таки пару примером выложить стоит.'' --><br />
<br />
'''Работающий пример для видео карты GF-5200, монитор CTX, стандартные клавиатура и мышь'''<br />
<br />
Section "ServerLayout"<br />
Identifier "Minimal layout"<br />
Screen "Screen0" 0 0<br />
EndSection<br />
<br />
Section "Module"<br />
SubSection "extmod"<br />
Option "omit xfree86-dga"<br />
EndSubSection<br />
EndSection<br />
<br />
Section "Monitor"<br />
Identifier "CTX VL500 series, MS500 series (120 Hz)|0"<br />
DisplaySize 280 210<br />
HorizSync 30.0 - 70.0<br />
VertRefresh 50.0 - 120.0<br />
EndSection<br />
<br />
Section "Device"<br />
Identifier "Card0|0"<br />
Driver "nvidia"<br />
EndSection<br />
<br />
Section "Screen"<br />
Identifier "Screen0"<br />
Device "Card0|0"<br />
Monitor "CTX VL500 series, MS500 series (120 Hz)|0"<br />
DefaultDepth 24<br />
SubSection "Display"<br />
Modes "1024x768" "1024x736" "1024x600" "960x720" "848x480" "832x624" "800x600" "720x576" "640x480"<br />
EndSubSection<br />
EndSection<br />
<br />
* Shadowhand (nv и nvidia драйвера): http://people.os-zen.net/shadowhand/configs/xorg.conf<br />
* Cerebral (fglrx и radeon драйвера): http://www.student.cs.uwaterloo.ca/~tjwillar/configs/xorg.conf<br />
* raskolnikov (via unichrome и synaptics драйвера): http://athanatos.free.fr/Arch/xorg.conf<br />
* cheer (nvidia и synaptics драйвера, русская раскладка, dell 9400): http://lice.wordpress.com/dell-9400-configuration/xorgconf/<br />
<br />
== Усовершенствование загрузки X ==<br />
для опций X смотрите<br />
<br />
man Xserver<br />
<br />
Следующие опции могут быть добавлены к переменной "defaultserverargs" в файле /usr/bin/startx.<br />
<br />
запретить X прослушивание по tcp:<br />
-nolisten tcp<br />
избавиться от серого узора при загрузке X и заменить его чёрным фоном:<br><br />
-br<br />
включить задержку загрузки глифов для 16-битных шрифтов:<br />
-deferglyphs 16<br />
<br />
Если вы запускаете X с помощью kdm, то скрипт startx не выполняется. Эти опции могут быть добавлены к переменной "ServerCmd" в файле /opt/kde/share/config/kdm/kdmrc.<br />
<br />
== Изменения в модульном Xorg ==<br />
<br />
=== Самые распространённые пакеты ===<br />
<br />
Note: Мета-пакет 'xorg' включает в себя самые распространённые нужные пакеты - когда вы делаете '''pacman -Syu''' для обновления с Xorg 6.8, он должен обновиться до этого пакета.<br />
<br />
Удостоверьтесь, что вы установили драйвера для мыши, клавиатуры и видеокарты. Для устройств ввода пакеты '''xf86-input-keyboard''' и '''xf86-input-mouse''' должны быть установлены. Дргие пакеты вида '''xf86-input-*''' доступны для других устройств ввода.<br />
<br />
Что касается видеокарты, найдите, какой драйвер требуется и установите соответствующий пакет вида '''xf86-video-*'''. Пользователи ATI и Nvidia могут установить проприетарные драйвера для своих видеокарт ([[NVIDIA (Русский) | NVIDIA]], [[ATI | ATI]]).<br />
<br />
Для установки всех драйверов сразу доступны пакеты '''xorg-input-drivers''' и '''xorg-video-drivers'''.<br />
<br />
=== OpenGL 3D ускорение ===<br />
<br />
Xorg 7.1 в Arch Linux использует модульный вид для mesa, системы рендеринга OpenGL. Доступны некоторые реализации:<br />
* libgl-dri: свободная реализация DRI OpenGL. Возвращается к софтверному рендерингe, когда не установлен ни один из DRI драйверов.<br />
* некоторые другие, предоставляющие libGL (ati, nvidia)<br />
<br />
Когда pacman устанавливает приложение, которому требуется mesa, он установит один из этих пакетов. Чтобы быть уверенным в установке нужной библиотеки для вашей системы, установите её до установки Xorg. Установка нужного пакета после также возможна, хотя это может иногда привести к некоторым ошибкам с зависимостями, которые можно преодолеть с помощью опции -d.<br />
<br />
=== glxgears и glxinfo ===<br />
<br />
Эти приложения находятся в пакете mesa-demos.<br />
<br />
== Проблемы ==<br />
<br />
=== Если вместо всех шрифтов квадратики ===<br />
<br />
# pango-querymodules > /etc/pango/pango.modules<br />
<br />
=== Быстрое решение конфликта с Bitstream-Vera ===<br />
Если вы видите сообщение о конфликте ttf-bitstream-vera conflicts и xorg:<br />
#Выйдите из pacman'а, ответив no.<br />
#Run <code>pacman -Rd xorg</code><br />
#Run <code>pacman -Syu</code><br />
#Run <code>pacman -S xorg</code><br />
#Обновите пути в файле /etc/X11/xorg.conf<br />
<br />
=== Быстрое решение конфликтов файлов в /usr/include ===<br />
Если вы видите сообщения о конфликтах файлов в /usr/include/X11 и /usr/include/GL:<br />
#выполните <code>rm /usr/include/{GL,X11}</code><br />
#выполните <code>pacman -Su</code><br />
Каталоги, на которые были созданы символические ссылки будут удаленыи заменены реальными каталогами в новом пакете xorg, который и вызвал конфликт у файлов.<br />
<br />
=== Конфликты с libgl-dri ===<br />
<br />
Если вы видите сообщение типа:<br />
:: libgl-dri conflicts with nvidia-legacy. Remove nvidia-legacy? [Y/n]<br />
это проиходит из-за нескольких реализаций OpenGL, объяснённых в разделе OpenGL выше - pacman пытается установить libgl-dri для удовлетворения зависимостей, но ещё и хочет обновить ваш видеодрайвер, а они конфликтуют. Для разрешения проблемы попробуйте:<br />
<br />
* обновить видеодрайвер перед полным обновлением системы: <br />
pacman -S nvidia-legacy<br />
pacman -Syu<br />
<br />
или, если это не работает:<br />
* Удалить существующий видеодрайвер, обновиться, потом переустановить драйвер:<br />
$ pacman -Rd nvidia-legacy<br />
$ pacman -Syu<br />
$ pacman -S nvidia-legacy<br />
:: nvidia-legacy conflicts with libgl-dri. Remove libgl-dri? [Y/n] '''Y'''<br />
<br />
=== НЕработающее колесо мыши ===<br />
Протокол "Auto" не работает правильно в Xorg 7. В секции InputDevice для мыши, измените:<br />
Option "Protocol" "auto"<br />
на<br />
Option "Protocol" "IMPS/2"<br />
или<br />
Option "Protocol" "ExplorerPS/2"<br />
<br />
=== Дополнительные кнопки на мыши перестали работать ===<br />
Пользователи USB мышей должны прочитать [[Get_All_Mouse_Buttons_Working]].<br />
<br />
Пользователи Intellimouse (ExplorerPS/2) могут столкнуться с неработающим скроллом и боковыми кнопками. Раньше была запись в xorg.conf:<br />
Option "Buttons" "7"<br />
Option "ZAxisMapping" "6 7"<br />
и пользователи также запускали xmodmap, чтобы боковые кнопки работали, командой типа:<br />
xmodmap -e "pointer = 1 2 3 6 7 4 5"<br />
Теперь xmodmap не нужен. Вместо этого исправьте xorg.conf так:<br />
Option "Buttons" "5"<br />
Option "ZAxisMapping" "4 5"<br />
Option "ButtonMapping" "1 2 3 6 7"<br />
и боковые кнопки 7-кнопочной Intellimouse будут работать, как и прежде, без запуска xmodmap.<br />
<br />
=== Проблемы с клавиатурой ===<br />
<br />
Некоторые раскладки клавиатуры изменились. Стало невозможным:<br />
* использовать Ctrl+Alt+Fx для переключения между консолями<br />
* переключаться по раскладкам<br />
* использовать знак £ для локали gb<br />
<br />
Проблема заключается в том, что некоторые раскладки (например, ''sk_qwerty'', ''uk'') перестали существовать. Следует заменить<br />
Option "XkbLayout" "us,sk_qwerty"<br />
на<br />
Option "XkbLayout" "us,sk"<br />
Option "XkbVariant" ",qwerty"<br />
<br />
Также обратите внимание на следующие строки:<br />
Option "XkbRules" "xfree86" #должно быть "xorg"<br />
Option "XkbVariant" "nodeadkeys" #эта строчка может вызывать описанные выше проблемы, попробуйте её закомментировать.<br />
<br />
==== AltGR (Compose клавиша) не работает правильно ====<br />
<br />
Если после обновления вы не можете использовать клавишу altGr, как раньше её использовали, попробуйте добавить эту строку в раздел клавиатуры:<br />
Option "XkbOptions" "compose:ralt"<br />
<br />
Это не совсем правильный вариант активирования клавиши AltGr на немецкой клавиатуре (например, чтобы использовать знаки '|' и '@'). Просто выберите верный keyboard variant, чтобы клавиша снова заработала, например (для немецкой клавиатуры):<br />
Option "XkbLayout" "de"<br />
Option "XkbVariant" "nodeadkeys"<br />
<br />
Вышеуказанные решения не работают, если у вас итальянская клавиатура. Для того чтобы активировать клавишу AltGr на итальянской клавиатуре, проверьте правильность следующих строк:<br />
Driver "kbd"<br />
Option "XkbRules" "xorg"<br />
Option "XkbVariant" ""<br />
<br />
==== Невозможно установить раскладку командой setxkbmap ====<br />
<br />
После обновления некоторые qwerty раскладки были удалены, например sk_qwerty. Если вы хотите переключить имеющуюся раскладку на другую qwerty, используйте следующую команду:<br />
setxkbmap NAME_OF_THE_LAYOUT qwerty<br />
например, для sk_qwerty вводите:<br />
setxkbmap sk qwerty<br />
<br />
Может так получиться, что после обновления и вышеприведённой команды будет сообщение: "Error loading new keyboard description".<br />
Оказывается, xserver не имеет прав записи, исполнения и чтения в /var/tmp<br />
Просто дайте права на эту директорию и перезапустите xserver!<br />
<br />
==== Настройка франко-канадской раскладки (бывшая ca_enhanced) ====<br />
<br />
В Xorg7 "ca_enhanced" более не существует. Для получения той раскладки, которая была, придётся использовать маленький трюк.<br />
Измените<br />
Option "XkbLayout" "ca_enhanced"<br />
на<br />
Option "XkbLayout" "ca"<br />
Option "XkbVariant" "fr"<br />
<br />
То же самое, видимо, и с другими подобными раскладками. Вы можете обратиться к Gentoo HowTo по этому вопросу: http://www.gentoo.org/proj/en/desktop/x/x11/modular-x-howto.xml<br />
<br />
=== KDM/GDM не работают ===<br />
<br />
KDM/GDM не может запуститься, так как ищет X в неверном месте.<br />
<br />
<br />
* '''Исправления в конфигурационных файлах:''' отредактируйте соответствующие конфигурационные файлы для KDM/GDM (наверное, лучшее решение).<br />
<br />
Для GDM измените файл gdm.conf, заменив все встречающиеся упоминания /usr/X11R6/bin/X на /usr/bin/X<br />
<br />
vim /opt/gnome/etc/gdm/gdm.conf<br />
<br />
Команда замены для vi<br />
<br />
:%s/\/usr\/X11R6\/bin\/X/\/usr\/bin\/X/g<br />
<br />
Для KDM надо изменить файл /opt/kde/share/kdm/kdmrc.<br />
<br />
<br />
* '''Метод символических ссылок:''' вам надо запустить следующие команды для исправления ситуации:<br />
<br />
mkdir -p /usr/X11R6/bin/<br />
ln -s /usr/bin/X /usr/X11R6/bin/X<br />
<br />
попробуйте снова, должно заработать.<br />
<br />
Если вышеуказанная команда не сработала, попробуйте так:<br />
<br />
ln -s /usr/bin/ /usr/X11R6/bin<br />
<br />
Возможно, потребуется перезагрузка.<br />
<br />
=== Отсутствующие библиотеки ===<br />
* '''Помогите! Постоянно вываливается окно с сообщением об ошибке запуска моей любимой программы: "libXчто-то" не существует!'''<br><br />
В большинстве случаев всё, что вам нужно сделать, - это взять имя библиотеки (например,libXau.so.1), перевести название в нижний регистр и установить её:<br />
pacman -S libxau<br />
<br />
=== Некоторые пакеты не собираются, жалуясь на отсутствующие X11 includes ===<br />
Просто переустановите пакеты xproto и libx11, даже если они уже установлены.<br />
<br />
=== Невозможно загрузить шрифт '(null)' ===<br />
* '''Некоторые программы не работают и говорят, что не могут загрузить шрифт `(null)'.'''<br><br />
Эти пакеты хотят каких-то дополнительных шрифтов. Некоторые программы работают только с bitmap шрифтами.<br />
Доступны два больших пакета, содержащих bitmap шрифты, xorg-fonts-75dpi и xorg-fonts-100dpi. Вам не нужны оба, достаточно и одного. Чтобы найти, какой вам подходит больше, попробуйте команду:<br />
<br />
xdpyinfo | grep resolution<br />
<br />
и выберите, что ближе (75 или 100 вместо XX)<br />
<br />
pacman -S xorg-fonts-XXdpi<br />
<br />
=== Иконки KDE в панели задач и на Десктопе не работают ===<br />
* '''Панель задач KDEне работает и исчезли иконки на рабочем столе'''<br><br />
Установите пакеты libxcomposite и libxss:<br />
<br />
pacman -S libxcomposite libxss<br />
<br />
=== Обновление с testing до current (отсутствующие файлы) ===<br />
<br />
Если вы обновились с Xorg 7 из testing до Xorg 7 из current и обнаружили, что много файлов отсутствуют (включая startx, /usr/share/X11/rgb.txt и другие), потеря могла произойти из-за того, что пакет xorg-clients был разбит на много мелких пакетов.<br><br />
<br />
Вам необходимо переустановить пакеты, которые являются зависимостями xorg-clients:<br />
pacman -S xorg-apps xorg-font-utils xorg-res-utils xorg-server-utils \<br />
xorg-twm xorg-utils xorg-xauth xorg-xdm xorg-xfs xorg-xfwp \<br />
xorg-xinit xorg-xkb-utils xorg-xsm<br />
<br />
Это должно разрешить проблему.<br />
<br />
=== Проблемы с MIME типами в различных DE ===<br />
<br />
Если вы заметили недостающие иконки и вы не можете открывать файлы по щелчку мыши в вашем DE, добавьте следующие строчки в /etc/profile или предпочитаемый скрипт загрузки и перезагрузитесь.<br />
XDG_DATA_DIRS=$XDG_DATA_DIRS:/usr/share<br />
export XDG_DATA_DIRS<br />
<br />
=== DRI перестало работать с картами Matrox ===<br />
<br />
Если вы используете карту Matrox и DRI не работает после обновления до xorg7, попробуйте добавить строку<br />
Option "OldDmaInit" "On"<br />
в секцию Device, описывающую видеокарту в xorg.conf.<br />
<br />
=== Не выставляется нужное разрешение экрана ===<br />
<br />
Если Xorg запускается разрешением экрана, не соответствующим максимально возможному для вашего монитора - попробуйте расширить диапазон частот '''VertRefresh''' в секции '''Monitor'''. Некоторые мониторы не могут воспроизводить картинку своего максимального разрешения на максимальной частоте.<br />
<br />
== Полезные ссылки ==<br />
* [[Добавление экранного менеджера входа в систему (KDM, GDM или XDM) в автозагрузку]]<br />
* [[Запуск X при загрузке]]<br />
* [[Xorg Font Configuration (Русский)]]<br />
* Проприетарные видеодрайверы<br />
** [[ATI | ATI wiki]]<br />
** [[NVIDIA (Русский)]]<br />
* [[Desktop Environment]]<br />
** [[KDE]]<br />
** [[GNOME]]<br />
** [[MATE]]<br />
** [[Xfce]]<br />
** [[Enlightenment]]<br />
** [[Fluxbox]]<br />
* [[Compiz]]<br />
<br />
Внешние ссылки:<br />
<br />
* [http://en.wikipedia.org/wiki/X.Org_Server X.org Wikipedia Article]<br />
* [http://wiki.x.org/wiki/ X.org]</div>Klayhttps://wiki.archlinux.org/index.php?title=Pacman_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=256694Pacman (Русский)2013-05-12T01:37:18Z<p>Klay: spell check</p>
<hr />
<div>[[Category:Управление пакетами (Русский)]]<br />
[[Category:Русский]]<br />
[[cs:Pacman]]<br />
[[da:Pacman]]<br />
[[de:Pacman]]<br />
[[el:Pacman]]<br />
[[en:Pacman]]<br />
[[es:Pacman]]<br />
[[fr:Pacman]]<br />
[[id:Pacman]]<br />
[[it:Pacman]]<br />
[[ja:Pacman]]<br />
[[ko:Pacman]]<br />
[[lt:Pacman]]<br />
[[nl:Pacman]]<br />
[[pl:Pacman]]<br />
[[pt:Pacman]]<br />
[[ro:Pacman]]<br />
[[sr:Pacman]]<br />
[[sv:Pacman]]<br />
[[tr:pacman]]<br />
[[uk:Pacman]]<br />
[[zh-CN:Pacman]]<br />
[[zh-TW:Pacman]]<br />
{{Lowercase title}}<br />
{{Article summary start|Описание}}<br />
{{Article summary text|pacman - [[Wikipedia:Package management system|пакетный менеджер]] Arch Linux. Менеджеры пакетов используются для установки, обновления и удаления программного обеспечения. В данной статье рассматриваются основные приемы и советы по устранению неполадок.}}<br />
{{Article summary heading|Обзор}}<br />
{{Article summary text|{{Package management overview}}}}<br />
{{Article summary heading|Дополнительно}}<br />
{{Article summary wiki|Downgrading Packages (Русский)}}<br />
{{Article summary wiki|Improve Pacman Performance (Русский)}}<br />
{{Article summary wiki|pacman GUI Frontends (Русский)}}<br />
{{Article summary wiki|pacman Rosetta}}<br />
{{Article summary wiki|pacman Tips}}<br />
{{Article summary wiki|Pacman package signing}}<br />
{{Article summary wiki|FAQ_(Русский)#Управление_пакетами}}<br />
{{Article summary wiki|pacman-key (Русский)}}<br />
{{Article summary wiki|Pacnew and Pacsave Files}}<br />
{{Article summary heading|Полезные ссылки}}<br />
{{Article summary link|libalpm(3) Manual Page|https://www.archlinux.org/pacman/libalpm.3.html}}<br />
{{Article summary link|pacman(8) Manual Page|https://www.archlinux.org/pacman/pacman.8.html}}<br />
{{Article summary link|pacman.conf(5) Manual Page|https://www.archlinux.org/pacman/pacman.conf.5.html}}<br />
{{Article summary link|repo-add(8) Manual Page|https://www.archlinux.org/pacman/repo-add.8.html}}<br />
{{Article summary end}}<br />
<br />
[[Wikipedia:Package management system|Система управления пакетами]] '''[https://www.archlinux.org/pacman/ pacman]''' является одной из основных особенностей Arch Linux. Он сочетает в себе простой формат бинарных пакетов и легкую в использовании систему сборки (смотрите [[Arch Build System]] и [[makepkg]]). '''Pacman''' позволяет пользователям с легкостью управлять и настраивать под себя пакеты, вне зависимости от того, из официального ли они репозитория Arch или собраны самостоятельно.<br />
<br />
'''Pacman''', синхронизируя пакеты с главным сервером, поддерживает систему в актуальном состоянии. Такая клиент-серверная модель позволяет скачивать/устанавливать пакеты со всеми требуемыми зависимостями всего одной командой.<br />
<br />
'''Pacman''' написан на языке C и использует формат пакетов {{ic|.pkg.tar.xz}}.<br />
<br />
{{Tip|Официальный пакет {{Pkg|pacman}} включает в себя много дополнительных полезных инструментов, таких как '''makepkg''', '''pactree''', '''vercmp''' и другие. Весь перечень можно получить с помощью {{ic|pacman -Ql pacman <nowiki>|</nowiki> grep bin}} }}<br />
<br />
== Конфигурация ==<br />
<br />
Основные настройки pacman находятся в {{ic|/etc/pacman.conf}}. В этом файле пользователь может указать все нужные ему настройки программы. Подробнее о конфигурировании можно прочесть в [https://www.archlinux.org/pacman/pacman.conf.5.html man pacman.conf].<br />
<br />
Есть пасхалка: при добавлении в # Misc options параметра ILoveCandy скучные решетки превращаются в пакмена и точки, которые он ест :D <br />
<br />
=== Основные параметры ===<br />
<br />
Основные параметры находятся в секции {{ic|[options]}}. Для получения дополнительной информации о параметрах прочтите страницу man или изучите установленный по умолчанию файл {{ic|pacman.conf}}.<br />
<br />
==== Пропуск обновления пакетов ====<br />
<br />
Для пропуска обновления какого-либо пакета добавьте его название в строку:<br />
<br />
{{bc|<nowiki>IgnorePkg=имя_пакета</nowiki>}}<br />
<br />
В случае, если необходимо в строке {{ic|IgnorePkg}} перечислить несколько пакетов, разделяйте их имена пробелами:<br />
<br />
{{bc|<nowiki>IgnorePkg=имя_пакета1 имя_пакета2 имя_пакета3</nowiki>}}<br />
<br />
==== Пропуск обновления группы пакетов ====<br />
<br />
Как и в случае с пакетом, вы также можете запретить обновления группы пакетов, например так:<br />
<br />
{{bc|<nowiki>IgnoreGroup=имя_группы</nowiki>}}<br />
<br />
==== Игнорирование установки файлов в систему ====<br />
<br />
Для пропуска каталогов, в которые должны будут устанавливаться файлы, перечислите эти каталоги в {{Ic|NoExtract}}. Например, для игнорирования установки юнитов [[systemd (Русский)|systemd]]:<br />
<br />
{{bc|<nowiki>NoExtract=usr/lib/systemd/system/*</nowiki>}}<br />
<br />
=== Репозитории ===<br />
<br />
В этом разделе файла {{ic|pacman.conf}} указываются репозитории, которые будут использоваться. Их можно указать прямо здесь или подключить из другого файла.<br />
<br />
Все официальные репозитории перечислены в одном файле - {{ic|/etc/pacman.d/mirrorlist}}, для доступа к ним используется переменная {{ic|$repo}}; таким образом достаточно поддерживать в актуальном состоянии только один список.<br />
<br />
Далее приведен пример использования [[mirrors|зеркал]] [[Official Repositories (Русский)|официальных репозиториев]], которые перечислены в {{ic|/etc/pacman.d/mirrorlist}}.<br />
<br />
{{bc|<nowiki><br />
<br />
#[testing]<br />
#SigLevel = PackageRequired <br />
#Include = /etc/pacman.d/mirrorlist<br />
<br />
[core]<br />
#SigLevel = PackageRequired<br />
Include=/etc/pacman.d/mirrorlist<br />
<br />
[extra]<br />
#SigLevel = PackageOptional<br />
Include = /etc/pacman.d/mirrorlist<br />
<br />
#[community-testing]<br />
#SigLevel = PackageRequired<br />
#Include = /etc/pacman.d/mirrorlist<br />
<br />
[community]<br />
#SigLevel = PackageOptional<br />
Include = /etc/pacman.d/mirrorlist<br />
<br />
#Если в вашей x86_64 системе необходимо запускать 32-битные программы,<br />
#раскоментируйте нужные multilib репозитории.<br />
<br />
#[multilib-testing]<br />
#SigLevel = PackageRequired<br />
#Include = /etc/pacman.d/mirrorlist<br />
<br />
[multilib]<br />
#SigLevel = PackageOptional<br />
Include = /etc/pacman.d/mirrorlist<br />
<br />
# Использование собственного репозитория. Обратитесь к справочной странице pacman для<br />
# получения дополнительной информации по созданию собственных репозиториев.<br />
<br />
#[custom]<br />
#SigLevel = Optional TrustAll<br />
#Server = file:///home/custompkgs<br />
</nowiki>}}<br />
<br />
{{Warning|Будьте осторожны при использовании репозитория [testing]. Пакеты в нём активно разрабатываются и обновляются, это может сказаться на стабильности и работоспособности других пакетов или системы в целом. Людям, использующим репозиторий [testing], для своевременного получения информации рекомендуется подписаться на [https://mailman.archlinux.org/mailman/listinfo/arch-dev-public список рассылки arch-dev-public].}}<br />
<br />
=== Безопасность пакетов ===<br />
<br />
В Pacman 4 реализован дополнительный уровень безопасности устанавливаемых пакетов - подписи пакетов. Для включения проверки подписей перейдите [[pacman-key (Русский)|сюда]].<br />
<br />
== Использование ==<br />
<br />
Чтобы узнать обо всех возможностях pacman, изучите [https://archlinux.org/pacman/pacman.8.html man pacman]. Примеры ниже - это только небольшая подборка доступных операций.<br />
<br />
===Установка пакетов===<br />
<br />
====Установка определенных пакетов====<br />
Для установки одного пакета или группы пакетов (включая зависимости) используйте следующую команду:<br />
<br />
# pacman -S имя_пакета1 имя_пакета2 ...<br />
<br />
Если пакет имеет несколько версий в разных репозиториях (например в [extra] и [testing]), можно указать, откуда именно следует установить пакет:<br />
<br />
# pacman -S extra/имя_пакета<br />
<br />
====Установка группы пакетов====<br />
Некоторые пакеты принадлежат к группе пакетов, которые могут быть установлены одновременно. Например, при выполнении команды:<br />
<br />
# pacman -S gnome<br />
будут установлены все пакеты, входящие в группу {{ic|gnome}}. Чтобы увидеть список пакетов, принадлежащих к группе gnome, выполните:<br />
<br />
# pacman -Sg gnome<br />
<br />
Перечень доступных групп пакетов можно изучить, посетив https://www.archlinux.org/groups/.<br />
<br />
{{Note|Если не будет использована опция {{ic|--needed}}, то при установке группы будут переустановлены все ранее установленные в систему и принадлежащие этой группе пакеты (даже если установленные в системе пакеты будут иметь последнюю доступную версию).}}<br />
<br />
{{Warning|1=При установке недостаточно одного обновления списка пакетов (например, {{ic|pacman -Sy имя_пакета}}): могут возникнуть проблемы с зависимостями. Смотрите разделы [https://bbs.archlinux.org/viewtopic.php?id=89328] и [[#Частичные обновления официально не поддерживаются|Частичные обновления не поддерживаются]]. В первую очередь, перед установкой новых пакетов выполняйте полное [[#Обновление Системы|обновление системы]].}}<br />
<br />
=== Удаление пакетов ===<br />
<br />
Для удаления пакета без удаления установленных зависимостей:<br />
<br />
# pacman -R имя_пакета<br />
<br />
Для удаления пакета со всеми зависимостями, не используемыми другими установленными пакетами:<br />
<br />
# pacman -Rs имя_пакета<br />
<br />
Для удаления пакета, его зависимостей и всех пакетов, зависящих от целевого пакета:<br />
<br />
{{Warning|Эта операция рекурсивна и должна использоваться с осторожностью, так как появляется риск удалить много потенциально необходимых пакетов.}}<br />
<br />
# pacman -Rsc имя_пакета<br />
<br />
Для удаления пакета, который требуется другому пакету, без удаления зависимого пакета:<br />
<br />
# pacman -Rdd ''package_name''<br />
<br />
По умолчанию pacman создает резервные копии конфигурационных файлов удаляемых приложений с помощью добавления к ним расширения {{ic|.pacsave}}. Если вы хотите удалить и эти файлы, используйте ключ {{ic|-n}}:<br />
<br />
# pacman -Rn имя_пакета<br />
<br />
{{Note|pacman не удаляет конфигурационных файлов, созданных самими приложениями (например, "dot-файлы" в вашей домашней папке).}}<br />
<br />
===Обновление системы===<br />
<br />
pacman может обновить все пакеты системы одной командой. Количество пакетов зависит от того, насколько свежие пакеты стоят в вашей системе. Лучший вариант - синхронизация базы данных репозиториев '''И''' обновление вашей системы одной командой (не будут обновлены пакеты из 'локальных' и не настроенных репозиториев):<br />
<br />
# pacman -Syu<br />
<br />
{{Warning|В связи с тем, что Arch является постоянно обновляемым дистрибутивом, пользователям следует помнить, что после или в процессе обновления могут возникнуть непредвиденные трудности. Поэтому обновляться следует с осторожностью. Это означает, что если, например, ожидаются большие изменения или нововведения в обновляемых пакетах, то обновлять систему лучше тогда, когда у пользователя будет достаточно свободного времени и он будет готов к решению возможных проблем.}}<br />
<br />
pacman является мощным инструментом по управлению пакетами, но он не сможет обработать все возможные ситуации. Если вас это смущает - прочтите [[The Arch Way (Русский)|Путь Arch Linux]]. Пользователь должен быть внимателен и сам заниматься обеспечением работоспособности своей системы. '''При выполнении обновления системы крайне важно читать и осмысливать всю информацию, которую выводит pacman.''' Если вы изменяли конфигурационный файл, то при обновлении, во избежание перезаписи, будет создан новый конфигурационный файл {{ic|.pacnew}}. pacman предложит объединить его с вашим конфигурационным файлом. Выполнять объединение файлов придется вручную и, лучше всего, сразу после обновления. Для получения дополнительной информации обратитесь к руководству [[Pacnew and Pacsave Files]].<br />
<br />
{{Tip|Не забывайте, что вывод pacman заносится в {{ic|/var/log/pacman.log}}.}}<br />
<br />
Перед обновлением желательно посетить [https://www.archlinux.org/ главную страницу Arch Linux], [https://www.archlinux.org.ru/ главную страницу русскоязычного сообщества Arch Linux] и проверить там последние новости (или подписаться на канал RSS): для обновлений, требующих дополнительного вмешательства (если выполнения указанных pacman-ом действий не достаточно), будут добавлены соответствующие новости.<br />
<br />
Если решить проблемы согласно инструкциям не удаётся, поищите подобные сообщения на форуме. Вполне возможно, что другие пользователи, столкнувшиеся с подобными проблемами, уже предоставили варианты по их решению.<br />
<br />
=== Запросы к базе данных пакетов ===<br />
<br />
pacman с помощью флага {{ic|-Q}} может искать пакеты в локальной базе данных; смотрите:<br />
<br />
$ pacman -Q --help<br />
<br />
и с помощью флага {{ic|-S}} в базе данных (репозиториях); смотрите:<br />
<br />
$ pacman -S --help<br />
<br />
pacman умеет искать пакеты в базе данных как по названиям, так и по описаниям:<br />
<br />
$ pacman -Ss условие1 условие2 ...<br />
<br />
Поиск пакета по имени в базе данных (вывод без дополнительной информации):<br />
<br />
$ pacman -Sqs условие1 условие2 ...<br />
<br />
Для поиска среди установленных пакетов:<br />
<br />
$ pacman -Qs условие1 условие2 ...<br />
<br />
Для отображения обширной информации о данном пакете:<br />
<br />
$ pacman -Si имя_пакета<br />
<br />
для установленных пакетов:<br />
<br />
$ pacman -Qi имя_пакета<br />
<br />
Использование сдвоенного флага {{ic|-i}} позволит просмотреть список резервных копий файлов и список измененных файлов:<br />
<br />
$ pacman -Qii имя_пакета<br />
<br />
Для получения списка файлов установленного пакета:<br />
<br />
$ pacman -Ql имя_пакета<br />
<br />
Для получения списка файлов неустановленного пакета можно использовать утилиту {{ic|pkgfile}} из состава пакета [[pkgtools]] или {{ic|nosr}}, входящую в пакет {{aur|nosr-git}}, который расположен в [[AUR (Русский)]].<br />
<br />
Чтобы узнать, какому пакету принадлежит нужный файл:<br />
<br />
$ pacman -Qo /путь/к/файлу/имя_файла<br />
<br />
Для получения списка пакетов, которые больше не требуются как зависимости (пакеты, которые могут быть безопасно удалены или сироты):<br />
<br />
$ pacman -Qdt<br />
<br />
Для отображения зависимостей в виде дерева:<br />
<br />
$ pactree имя_пакета<br />
<br />
Для получения списка пакетов, которые зависят от вашего пакета, можно воспользоваться утилитой {{ic|whoneeds}} из состава пакета [[pkgtools]]:<br />
<br />
$ whoneeds имя_пакета<br />
<br />
=== Получение списка установленных пакетов для быстрого восстановления системы ===<br />
<br />
Хорошей практикой является сохранение списка всех установленных пакетов. Если ваша система "упала" и её сложно восстановить, pacman может легко переустановить эти пакеты.<br />
<br />
Сначала сохраните в список пакеты (доступные в репозитории):<br />
pacman -Qqe | grep -v "$(pacman -Qmq)" > pkglist<br />
<br />
безопасная, но и более сложная альтернатива (во избежание удаления частичных совпадений):<br />
comm -13 <(pacman -Qmq | sort) <(pacman -Qqe | sort) > pkglist<br />
<br />
Сохраните этот файл на флешке или на другом носителе.<br />
<br />
Скопируйте файл pkglist в новую систему, перейдите в эту папку. Для восстановления используйте команду:<br />
pacman -S $(cat pkglist)<br />
<br />
=== Получение списка файлов, не принадлежащих ни одному пакету ===<br />
<br />
Если вы всегда хотите держать свою систему в чистоте и уважаете [[Путь Arch]], вы должны иногда проверять файлы, отсутствующие в базе данных pacman. Эти файлы зачастую установлены сторонними приложениями с использованием '''./configure; make; make install''' и т.п. Вы можете найти все эти установленные файлы (или симлинки), используя этот простой скрипт:<br />
<br />
#!/bin/bash<br />
time /usr/bin/pacman -Ql | cut -d ' ' -f 2- | sort -u > db.txt<br />
time find /arch /bin /boot /etc /lib /opt /sbin /usr 2>/dev/null | while read i; do<br />
if [ ! -d "$i" ]; then<br />
echo "$i"<br />
fi;<br />
done | sort -u > fs.txt<br />
time comm -23 fs.txt db.txt > non-db.txt<br />
<br />
#для проверки:<br />
#cat non-db.txt | while read i; do pacman -Qo "$i" 2>&1; done | tee test.txt<br />
<br />
Заметьте, все файлы, указанные в non-db.txt, НЕ БУДУТ удалены без подтверждения. Здесь могут находиться конфигурационные файлы, журналы и др. Используйте этот список только если знаете, что вы делаете.<br />
<br />
=== Дополнительные команды ===<br />
<br />
Обновление системы и установка списка пакетов (за одну операцию):<br />
<br />
# pacman -Syu имя_пакета1 имя_пакета2 ...<br />
<br />
Скачать пакет, но не устанавливать его:<br />
<br />
# pacman -Sw имя_пакета<br />
<br />
Установить локальный пакет (не из репозитория):<br />
<br />
# pacman -U /путь/к/пакету/имя_пакета-version.pkg.tar.xz<br />
<br />
Установить 'не локальный' пакет (не из репозитория):<br />
<br />
# pacman -U <nowiki>http://www.example.com/repo/example.pkg.tar.xz</nowiki><br />
<br />
Удалить из кэша ({{ic|/var/cache/pacman/pkg}}) неустановленные пакеты:<br />
<br />
{{Warning|Будут удалены все пакеты из кэша. Поэтому, в случае возникновения проблем после обновлениий, появятся дополнительные трудности, связанные с откатом версий пакетов.}}<br />
<br />
# pacman -Sc<br />
<br />
Полная очистка кэша пакетов:<br />
<br />
{{Warning|Будут удалены все пакеты из кэша. Выполняйте это только в том случае, если у вас всё нормально работает и вы уверены, что вам не понадобится [[Downgrade_packages| откатывать]] какой-либо пакет.}}<br />
<br />
# pacman -Scc<br />
<br />
{{Tip|В качестве альтернативы ключам {{ic|-Sc}} и {{ic|-Scc}} можно использовать пакет {{AUR|Cacheclean}}, доступный в [[AUR]]. Это скрипт на python, который позволяет выборочно очищать кэш pacman'а от старых версий пакетов}}<br />
<br />
===Частичные обновления официально не поддерживаются===<br />
Arch Linux - постоянно обновляемый дистрибутив, и это значит, что в репозиториях всегда находятся новые версии [[Wikipedia:Library (computing)|библиотек]]. Разработчики и доверенные пользователи собирают пакеты для репозиториев с использованием этих библиотек. Для пакетов, установленных локально (например, пакеты из [[Arch User Repository (Русский)|AUR]]), нужно самостоятельно решать вопрос с зависимостями согласно данным [[Wikipedia:soname|soname]].<br />
<br />
Именно поэтому частичное обновление '''не поддерживается'''. Не используйте {{ic|pacman -Sy package}} или другие эквиваленты {{ic|pacman -Sy}} и {{ic|pacman -S package}}. Всегда перед установкой пакетов синхронизируйте репозитории и обновляйте систему полностью. По той же самой причине нужно быть осторожными при использовании {{ic|IgnorePkg}} и {{ic|IgnoreGroup}}.<br />
<br />
Если после частичного обновления оказалось, что бинарные файлы не могут найти нужных версий библиотек и проблему '''невозможно "решить" созданием символической ссылки''' (библиотеки не имеют '''обратной совместимости'''), выполните {{ic|pacman -Syu}}, как правило, этого будет достаточно для устранения проблемы.<br />
<br />
== Устранение проблем ==<br />
<br />
{{FAQ<br />
|question=Мне нужно запустить pacman-key --init, но отсутствуют ssh / X или генераторы случайных чисел. Как мне получить энтропию?<br />
|answer=Для решения проблемы нужно перемещать указатель мыши, нажимать на клавиатуре случайные кнопки или запустить дисковую активность, например, с помощью {{ic|updatedb}}. Будьте терпеливы, процесс может затянуться на длительное время. При этом переход в другую консоль, по Alt+F2-6, временно работать не будет.}}<br />
<br />
{{FAQ<br />
|question=Мне нужно запустить pacman-key --init через ssh. Как мне получить энтропию?<br />
|answer=На целевой машине соберите и установите пакет {{AUR|rng-tools}} из [[AUR (Русский)]]. Подключитесь через ssh и выполните следующие команды:<br />
{{bc|# sed -i 's/0/10/' /etc/conf.d/rngd<br />
# rngd -f -r /dev/urandom &<br />
# pacman-key --init}}<br />
<br />
После успешного выполнения pacman-key просто остановите rngd и удалите пакет.<br />
<br />
{{bc|# killall rngd<br />
# pacman -Rns rng-tools}}<br />
}}<br />
<br />
{{FAQ<br />
|question=Pacman не находит PGP ключи для импорта и не обновляет пакеты. Как можно это исправить?<br />
|answer=На самом деле проблема не в pacman. Проблема в сервере ключей, используемом по умолчанию. Измените сервер ключей на более надежный таким способом:<br />
<br />
# sed -i '/keyserver/ s,keys.gnupg.net,pgp.mit.edu,' /etc/pacman.d/gnupg/gpg.conf<br />
Pacman4 теперь готов к использованию.}}<br />
<br />
{{FAQ<br />
|question=Обновление пакета XYZ сломало мою систему!<br />
|answer=Arch Linux - передовой, постоянно обновляемый дистрибутив. Обновления для пакетов становятся доступными тогда, когда их посчитают достаточно стабильными для повседневного использования. Тем не менее, обновления иногда требуют вмешательства пользователя: может потребоваться обновление конфигурационных файлов, могут измениться дополнительные зависимости и т.д.<br />
<br />
Запомните основное правило: не обновляйте систему "вслепую". Всегда внимательно изучайте список обновляемых пакетов. Обращайте внимание на обновление "критически важных" компонентов ({{ic|linux}}, {{ic|xorg-server}} и т.д.). Если такие пакеты есть, проверьте наличие новостей на https://www.archlinux.org/ и просмотрите последние сообщения на форуме, возможно, кто-то уже столкнулся с проблемами при обновлении.<br />
<br />
Если известно/ожидается, что после обновления могут возникнуть проблемы, pacman выведет соответствующее сообщение. Если вы упустили какую-то информацию, которую вывел pacman, то её можно еще раз просмотреть в {{ic|/var/log/pacman.log}}. <br />
<br />
Теперь, '''если не было никаких предупреждений от pacman, отсутствуют соответствующие новости на https://www.archlinux.org/ и нет сообщений относительно обновлений на форуме''', имеет смысл обратиться за помощью на форум, [[IRC Channel|IRC-канал]], или [[Downgrading Packages|откатить пакет к работающей версии]].<br />
<br />
Перечитайте последний абзац.}}<br />
<br />
{{FAQ<br />
|question=Я знаю, что для пакета ABC доступны обновления, но pacman сообщает мне, что система в актуальном состоянии!<br />
|answer=Зеркала pacman синхронизируются не мгновенно. Иногда может пройти более 24 часов, прежде чем обновления станут доступны вам. <br />
<br />
В качестве решения можно посоветовать сменить зеркало. На [https://www.archlinux.org/mirrors/status/ MirrorStatus] можно посмотреть состояние зеркал.}}<br />
<br />
{{FAQ<br />
|question=При обновлении появляется сообщение об ошибке: "file exists in filesystem" ("файл существует в файловой системе")!<br />
|answer=Дополнительно: ''Взято из https://bbs.archlinux.org/viewtopic.php?id=56373 у Misfit138.''<br />
<br />
error: could not prepare transaction<br />
error: failed to commit transaction (conflicting files)<br />
package: /path/to/file exists in filesystem<br />
Errors occurred, no packages were upgraded.<br />
<br />
Почему это происходит? pacman, при обнаружении конфликтующих файлов, по умолчанию не будет их перезаписывать автоматически. Это не ошибка, так сделано специально.<br />
<br />
Вопрос решается тривиально. Сначала проверьте, не принадлежит ли файл другому пакету ({{ic|pacman -Qo /path/to/file}}). Если принадлежит, создайте [[Reporting Bug Guidelines (Русский)|отчет об ошибке]]. Если проблемный файл не нужен другим пакетам, переименуйте его и перезапустите команду обновления. Если в дальнейшем проблем не возникнет, то старый файл можно удалить.<br />
<br />
Если программа была установлена вручную, без использования pacman или его оболочек, вам нужно будет удалить программу и все ее файлы, а затем выполнить установку при помощи pacman.<br />
<br />
Информация о каждом установленном файле хранится в файле с метаданными пакета {{ic|/var/lib/pacman/local/$package-$version/files}}. При повреждении этого файла (он может быть пустым или отсутствовать) во время обновления пакета и будет получена ошибка "file exists in filesystem" ("файл существует в файловой системе").<br />
<br />
Обычно такие ошибки возникают во время установки или обновления всего лишь одного пакета, поэтому вместо ручного переименования или удаления конфликтующих файлов, принадлежащих данному пакету, выполните {{ic|pacman -S --force $package}}. После этой команды pacman принудительно перезапишет эти файлы.<br />
<br />
Никогда '''не''' запускайте {{ic|pacman -Syu --force}}.<br />
}}<br />
<br />
{{FAQ<br />
|question=При установке пакета я получаю сообщение об ошибке: "not found in sync db"<br />
|answer=Для начала убедитесь, что пакет вообще существует (и вы нигде не опечатались!). Если пакет не существует, то проблема может быть в том, что ваша база пакетов не синхронизирована с репозиториями или репозитории неправильно настроены. Для принудительного обновления списка пакетов попробуйте выполнить {{ic|pacman -Syy}}.}}<br />
<br />
{{FAQ<br />
|question=pacman несколько раз обновляет один и тот же пакет!<br />
|answer=Это может быть связано с дублированием записей в {{ic|/var/lib/pacman/local/}}, К примеру, имеется два экземпляра {{ic|linux}}. {{ic|pacman -Qi}} выведет правильную версию, а {{ic|pacman -Qu}} покажет её как устаревшую и, следовательно, требующую обновления.<br />
<br />
Решение: удалить лишнюю запись из {{ic|/var/lib/pacman/local/}}.<br />
<br />
{{Note|pacman версии 3.4 в случае обнаружения повторяющихся записей должен вывести сообщение об ошибке.}}}}<br />
<br />
{{FAQ<br />
|question=pacman сбоит при обновлении!<br />
|answer=Если при попытке удаления, переустановки или обновления пакетов pacman падает с ошибкой "database write" ("записи в базу данных"):<br />
#Загрузитесь, используя Arch live CD<br />
#Смонтируйте корневую файловую систему<br />
#Обновите базу данных pacman с помощью {{ic|pacman -Syy}}<br />
#Переустановите сломанный пакет через {{ic|pacman -r /путь/к/корневому_разделу -S package}}}}<br />
<br />
{{FAQ<br />
|question=Я установил программу, используя {{ic|make install}}; теперь эти файлы не принадлежат ни одному из пакетов!<br />
|answer=При обнаружении "конфликтующих файлов", чтобы их не перезаписывать вручную, можно использовать pacman с ключом {{ic|--force}} ({{ic|pacman -S --force}}).<br />
<br />
Почитайте [[pacman Tips#Identify files not owned by any package]] о скрипте, проверяющем файловую систему на наличие ''брошенных'' файлов.}}<br />
<br />
{{FAQ<br />
|question=Мне нужен пакет с определенным файлом. Как узнать, какому пакету это файл принадлежит?<br />
|answer=Установите [[pkgtools]], в его состав входит {{ic|pkgfile}}, использующий отдельную базу данных со всеми файлами и связанными с ними пакетами.}}<br />
<br />
{{FAQ<br />
|question=pacman полностью неработоспособен! Как мне его переустановить?<br />
|answer=Если pacman не работает и не получается его восстановить, скачайте вручную пакеты ({{Pkg|openssl}}, {{Pkg|libarchive}} и {{Pkg|pacman}}) и распакуйте их в корневой раздел. Бинарный pacman будет восстановлен вместе с конфигурационным файлом по умолчанию. Затем, для поддержания целостности базы данных пакетов, переустановите скачанные пакеты стандартными средствами pacman. Дополнительную информацию и пример (устарел) скрипта, автоматизирующего этот процесс, можно найти в [https://bbs.archlinux.org/viewtopic.php?id=95007 этом] сообщении форума.}}<br />
<br />
{{FAQ<br />
|question=После обновления системы получаю следующее сообщение об ошибке: "unable to find root device". После перезагрузки система не загружается.<br />
|answer=Вероятно, при обновлении ядра "поломалась" initramfs (например, при использовании pacman с опцией {{ic|--force}}). Для восстановления работоспособности выполните следующие действия.<br />
<br />
Загрузитесь с Arch live-cd. После загрузки выполните:<br />
<br />
# mkdir /mnt/arch<br />
# mount /dev/sda''X'' /mnt/arch (ваш корневой раздел)<br />
# cd /mnt/arch<br />
# mount -t proc proc proc/<br />
# mount -t sysfs sys sys/<br />
# mount -o bind /dev dev/<br />
# mount /dev/sda''X'' boot/ (ваш раздел /boot)<br />
# chroot .<br />
# pacman -Syu udev mkinitcpio<br />
# mkinitcpio -p linux<br />
<br />
Затем отмонтируйте смонтированные разделы и перезагрузитесь.}}<br />
<br />
==Смотрите также==<br />
<br />
* [[Common Applications/Utilities#Package management]]</div>Klayhttps://wiki.archlinux.org/index.php?title=Systemd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=253868Systemd (Русский)2013-04-13T01:02:37Z<p>Klay: /* Автомонтирование */</p>
<hr />
<div>{{DISPLAYTITLE:systemd (Русский)}}<br />
[[Category:Русский]]<br />
[[Category:Процесс Загрузки (Русский)]]<br />
[[en:systemd]]<br />
[[es:systemd]]<br />
[[fr:systemd]]<br />
[[it:systemd]]<br />
[[ja:Systemd]]<br />
[[zh-CN:systemd]]<br />
[[zh-TW:Systemd]]<br />
{{Article summary start|Сводка}}<br />
{{Article summary text|Статья охватывает установку и настройку systemd.}}<br />
{{Article summary heading|Связанные статьи}}<br />
{{Article summary wiki|systemd/User}}<br />
{{Article summary wiki|systemd/Services}}<br />
{{Article summary wiki|systemd FAQ}}<br />
{{Article summary wiki|init Rosetta (Русский)}}<br />
{{Article summary wiki|udev (Русский)}}<br />
{{Article summary end}}<br />
Цитата с [http://freedesktop.org/wiki/Software/systemd веб-страницы проекта]:<br />
<br />
''"'''systemd''' - система [инициализации] и менеджер служб для Linux, совместимые со скриптами инициализации SysV и LSB. '''systemd''' обеспечивает возможности агрессивной параллелизации, использует сокеты и активацию [[D-Bus]] для запускаемых служб, предлагает запуск демонов по необходимости, отслеживает процессы при помощи [[cgroups|контрольных групп]] Linux, поддерживает мгновенные снимки и восстановление состояния системы, монтирование и точки монтирования, а также внедряет основанную на зависимостях логику контроля процессов сложных транзакций. Эта система может выступать заменой [[SysVinit|sysvinit]]."''.<br />
<br />
{{Note|1=За детальным объяснением причин происходящего перехода Arch'а на systemd обратитесь к [https://bbs.archlinux.org/viewtopic.php?pid&#61;1149530#p1149530 сообщению на англоязычном форуме].}}<br />
<br />
Смотрите также [[Wikipedia:Systemd|статью в Википедии]].<br />
<br />
== Соображения перед началом миграции ==<br />
<br />
* Почитайте про systemd на [http://freedesktop.org/wiki/Software/systemd/ сайте разработчиков].<br />
* Обратите внимание, что systemd имеет собственный '''журнал (journal)''', заменяющий '''syslog''', хотя оба варианта ведения логов могут сосуществовать. Обратитесь к приведенному ниже [[#Журнал|разделу, посвященному журналу]].<br />
* Хотя systemd вполне способна заменить определенную функциональность таких демонов, как '''cron''', '''acpid''' или '''xinetd''', но если вы не хотите, можете не отказываться от использования традиционных демонов.<br />
* Интерактивные загрузочные скрипты (initscripts) не работают с systemd. В частности, '''netcfg-menu''' [https://bugs.archlinux.org/task/31377 не может] использоваться при загрузке системы.<br />
<br />
== Установка ==<br />
<br />
{{Note|Оба пакета - {{pkg|systemd}} и {{pkg|systemd-sysvcompat}} - ставятся по умолчанию при установке с носителя новее, чем [https://www.archlinux.org/news/systemd-is-now-the-default-on-new-installations/ 2012-10-13].}}<br />
<br />
{{Note|Если вы запускаете Arch Linux в виртуальном выделенном сервере (VPS), пожалуйста, обратитесь к [[Virtual_Private_Server#Moving_your_VPS_from_initscripts_to_systemd|соответствующей странице вики (англ.)]].}}<br />
<br />
Следующий раздел предназначен для тех установок Arch Linux, которые все еще зависят от пакетов {{pkg|sysvinit}} и {{pkg|initscripts}} и не перешли на использование {{pkg|systemd}}.<br />
<br />
# Установите пакет {{pkg|systemd}} и добавьте следующую запись к [[kernel parameters|параметрам загрузки ядра]]: {{ic|1=init=/usr/lib/systemd/systemd}}<br />
# Выполнив это, вы сможете включать или отключать любой необходимый сервис путем применения команды {{ic|systemctl enable <service_name>}} (это примерно соответствует тому, что включалось в массив {{ic|DAEMONS}}). Новые имена (отличные от прежних демонов) можно посмотреть [[Daemons_List|здесь]].<br />
# Перезагрузите свою систему и убедитесь, что {{ic|systemd}} в настоящее время активен, выполнив следующую команду: {{ic|cat /proc/1/comm}}. Данная команда должна вернуть строку {{ic|systemd}}.<br />
# Убедитесь, что hostname (имя компьютера) у вас под systemd установлено праильно: {{ic|hostnamectl set-hostname myhostname}}.<br />
# Удалите {{pkg|initscripts}} и {{pkg|sysvinit}} из вашей системы и установите {{pkg|systemd-sysvcompat}}.<br />
# Теперь можно (но не обязательно) удалить параметр {{ic|1=init=/usr/lib/systemd/systemd}}, поскольку необходимости в нем более нет. Инициализация по умолчанию обеспечивается пакетом {{pkg|systemd-sysvcompat}}.<br />
<br />
=== Дополнительная информация ===<br />
<br />
* Если в параметрах ядра имеется значение {{ic|quiet}}, вероятно, вам стоит удалить его для нескольких первых загрузок systemd, чтобы видеть возникающие во время загрузки проблемы.<br />
<br />
* Теперь при использовании systemd добавлять вашего пользователя в [[Users and Groups|группы]] ({{ic|sys}}, {{ic|disk}}, {{ic|lp}}, {{ic|network}}, {{ic|video}}, {{ic|audio}}, {{ic|optical}}, {{ic|storage}}, {{ic|scanner}}, {{ic|power}} и др.)) в большинстве случаев '''нет''' необходимости. Это даже может нарушить работоспособность системы. Например, добавление в группу audio может привести к невозможности быстрого переключения между пользователями и позволит приложениям заблокировать программное микширование. Каждый вход PAM предоставляет сессию logind, которая дает вам разрешения для локальной сессии посредством [[Wikipedia:Access control list|POSIX ACLs]] на аудио/видео устройства и позволяет выполнять некоторые операции, такие, как как монтирование съемных носителей через [[udisks]].<br />
<br />
* Удаление пакета {{Pkg|initscripts}} нарушит совместимость с основным конфигурационным файлом прежней системы инициализации {{ic|rc.conf}}. Соблюдайте осторожность в том случае, если у вас статическое сетевое соединение посредством данного конфигурационного файла или же используются некоторые демоны, еще не совместимые с systemd. Обратитесь к [[#Эмуляция initscripts| разделу Эмуляция initscripts]] для получения более детальной информации о том, как эти две системы инициализации могут сосуществовать.<br />
<br />
== Родные системные файлы ==<br />
<br />
{{Note|Возможно, вам придется создать эти файлы. Все файлы должны иметь права доступа {{ic|644}} и владельца {{ic|root:root}}.}}<br />
<br />
=== Имя компьютера (hostname) ===<br />
<br />
Имя компьютера настраивается в файле {{ic|/etc/hostname}}. Этот файл может содержать содержать доменное имя системы, если таковое имеется, однако в момент написания руководства команда {{ic|hostnamectl}} не устанавливала FQDN (Fully Qualified Domain Name — полностью определенное имя домена). Для установки короткого имени компьютера выполните:<br />
<br />
# hostnamectl set-hostname '''myhostname'''<br />
<br />
Обратитесь к руководствам {{ic|man 5 hostname}} и {{ic|man hostnamectl}} для получения более подробной информации.<br />
<br />
Вот примерный файл:<br />
<br />
{{hc|/etc/hostname|<br />
myhostname<br />
}}<br />
<br />
=== Локаль ===<br />
<br />
{{Note|Перед установкой локали по умолчанию вам сперва необходимо сделать локали доступными системе, раскомментировав их в файле {{ic|/etc/locale.gen}} (т.е. убрать знак {{ic|#}} вначале строки) и затем выполнив команду {{ic|locale-gen}} от суперпользователя root. Локаль, установленная командой {{ic|localectl}}, должна быть одной из '''раскомментированных''' локалей в файле {{ic|/etc/locale.gen}}.}}<br />
<br />
Системная локаль по умолчанию настраивается в конфигурационном файле {{ic|/etc/locale.conf}}. Для установки локали по умолчанию выполните:<br />
<br />
# localectl set-locale LANG="ru_RU.UTF-8"<br />
<br />
Для получения подробной информации о вариантах настройки обратитесь к руководствам {{ic|man 1 localectl}} и {{ic|man 5 locale.conf}}.<br />
* Дальнейшая информация содержится в статье [[Locale]].<br />
<br />
Вот примерный файл:<br />
<br />
{{hc|/etc/locale.conf|2=<br />
LANG=ru_RU.utf8}}<br />
<br />
=== Консоль и раскладка клавиатуры ===<br />
<br />
Файл {{ic|/etc/vconsole.conf}} устанавливает настройки виртуальной консоли (раскладку клавиатуры и консольный шрифт).<br />
<br />
{{hc|/etc/vconsole.conf|2=<br />
KEYMAP=ru<br />
FONT=cyr-sun16<br />
}}<br />
<br />
{{Note|С версии {{Pkg|systemd}}-194 используются шрифт ядра и раскладку по умолчанию (т.е. американскую английскую). Нет более необходимости (для тех, кто использует американскую английскую раскладку) настраивать в конфигурационном файле строки {{ic|1=KEYMAP=}} и {{ic|1=FONT=}}, их можно оставить пустыми.}}<br />
<br />
Другой способ настройки раскладки клавиатуры в консоли состоит в использовании команды:<br />
<br />
# localectl set-keymap ru<br />
<br />
Команда <code>localectl</code> также может быть использована для установки раскладки клавиатуры в X11:<br />
<br />
# localectl set-x11-keymap ru<br />
<br />
Для получения подробной информации о вариантах настройки обратитесь к руководствам {{ic|man 1 localectl}} и {{ic|man 5 vconsole.conf}}.<br />
* Для получения детальной информации обратитесь к разделам [[Fonts#Console_fonts|консольные шрифты (англ.)]] и [[KEYMAP|раскладка клавиатуры (англ.)]].<br />
<br />
=== Временная зона ===<br />
<br />
Временная зона настраивается путем создания соответствующей символической ссылки {{ic|/etc/localtime}} на файл временной зоны в директории {{ic|/usr/share/zoneinfo/}}. Чтобы сделать это автоматически, выполните команду:<br />
<br />
# timedatectl set-timezone Europe/Moscow<br />
<br />
Для получения подробной информации о вариантах настройки обратитесь к руководствам {{ic|man 1 timedatectl}}, {{ic|man 5 localtime}} и {{ic|man 7 archlinux}}.<br />
<br />
{{Note|Прежний конфигурационный файл {{ic|/etc/timezone}} объявлен устаревшим с выходом {{pkg|systemd}}-190 и должен быть удален.}}<br />
<br />
Альтернативный метод - создание символической ссылки вручную:<br />
<!-- НЕ СОЗДАВАЙЬТЕ АБСОЛЮТНУЮ СИМВОЛИЧЕСКУЮ ССЫЛКУ, руководство archlinux(7) ясно указывает, что это должна быть относительная символическая ссылка --><br />
<br />
# ln -sf ../usr/share/zoneinfo/Europe/Moscow /etc/localtime<br />
<br />
Если в вашей системе имеется прежний конфигурационный файл {{ic|/etc/timezone}}, он теперь может быть безопасно удален, посокльку не используется systemd.<br />
<br />
=== Аппаратные часы ===<br />
<br />
Systemd будет использовать UTC для аппаратных часов по умолчанию.<br />
{{Tip|Обычно рекомендуется запускать [[NTP|демон Network Time Protocol]] для поддержания синхронизации аппаратных часов с системным временем.}}<br />
<br />
==== Аппаратные часы по localtime ====<br />
<br />
Если вы собираетесь выставить аппаратные часы по localtime (местному времени, что '''КАТЕГОРИЧЕСКИ НЕ РЕКОМЕНДУЕТСЯ'''), выполните команду:<br />
<br />
# timedatectl set-local-rtc true<br />
<br />
Если же захотите вернуть ваши аппаратные часы к использованию временного формата UTC, выполните:<br />
<br />
# timedatectl set-local-rtc false<br />
<br />
Помните, что настройка перехода на зимнее/летнее время - неблагодарное занятие. Если переход на зимнее/летнее время происходит в тот момент, когда ваш компьютер выключен, то при следующей загрузке ваши часы будут показывать ошибочное время ([http://www.cl.cam.ac.uk/~mgk25/mswish/ut-rtc.html здесь об этом чуть подробнее (англ.)]). Последние версии ядра устанавливают системное время из RTC (часов реального времени) непосредственно во время загрузки без использования {{ic|hwclock}}, при этом ядро всегда считает, что RTC выставлено по UTC. Это означает, что если RTC выставлено по местному времени (local time), системное время будет изначально установлено ошибочно и затем корректироваться вскоре после этого при каждой загрузке. Это является причиной некоторых досадных багов (идущие назад часы редко являются нужной вещью).<br />
<br />
Причиной, позволяющей RTC быть выставленными по местному времени, является двойная загрузка системы с Windows, ([http://blogs.msdn.com/b/oldnewthing/archive/2004/09/02/224672.aspx которая использует localtime (англ.)]). Windows воспринимает RTC, выставленные по UTC при помощи простого [[Time#UTC in Windows|исправления реестра (англ.)]]. Если вы столкнетесь с подобными проблемами при двойной загрузке с Windows, вы можете установить аппаратные часы на использование местного времени. <br />
<br />
Если вы настроите Windows на использование UTC, также не забудьте отключить функцию "Обновление времени по Интернету" ("Internet Time Update"), иначе для Windows возникнет проблема с аппаратными часами, поскольку система будет пытаться синхронизировать их с временем через Интернет. Вместо этого следует оставить время в формате RTC и синхронизовать через Интернет в Linux посредством демона [[NTP]], как это предлагалось выше.<br />
<br />
* За дальнейшей информацией обратитесь к статье [[Time]].<br />
<br />
=== Подгружаемые модули ядра ===<br />
<br />
Сегодня все необходимые модули для загрузки подгружаются автоматически с помощью [[Udev]], так что, если вам не надо (или же вы не должны) использовать какой-нибудь модуль не из дерева ядра , нет необходимости дополнительно помещать какие-либо модули в какой-то файл конфигурации загрузки. Тем не менее, бывают случаи, когда вы можете подгрузить дополнительный модуль в процессе загрузки или поместить какой-то модуль в черный список, чтобы ваш компьютер работал правильно.<br />
<br />
==== Дополнительно подгружаемые при загрузке модули ====<br />
<br />
Необходимые для загрузки дополнительные модули оформляются в статический список файлов в директории {{ic|/etc/modules-load.d/}}. Каждый из конфигурационных файлов имеет наименование вида {{ic|/etc/modules-load.d/<program>.conf}} (где <program> - имя подгружаемого модуля) и содержит список имен подгружаемых модулей ядра, каждое из которых начинается с новой строки. При этом игнорируются как пустые строки конфигурационных файлов, так и строки, у которых первым символом, отличным о пробела, является символ {{ic|#}} и {{ic|;}}. Например:<br />
<br />
{{hc|/etc/modules-load.d/virtio-net.conf|<br />
# Load virtio-net.ko at boot<br />
virtio-net}}<br />
<br />
Более подробная информация содержится в руководстве {{ic|man 5 modules-load.d}}.<br />
<br />
==== Настройка параметров модулей ====<br />
<br />
Дополнительные параметры модулей должны устанавливаться в конфигурационном файле {{ic|/etc/modprobe.d/modprobe.conf}}.<br />
<br />
Например:<br />
<br />
* мы имеем {{ic|/etc/modules-load.d/loop.conf}} с прописанным модулем {{ic|loop}} для подгрузки его во время загрузки системы.<br />
<br />
* в файле {{ic|/etc/modprobe.d/modprobe.conf}} определяются дополнительные параметры, такие, как {{ic|options loop max_loop&#61;64}}.<br />
<br />
Затем вновь установленные параметры могут быть проверены с помощью команды {{ic|cat /sys/module/loop/parameters/max_loop}}.<br />
<br />
==== Черный список ====<br />
<br />
Добавление модулей в черный список работает также, как и в случае с {{Pkg|initscripts}}, поскольку в действительности эта функция выполняется таким инструментом, как {{Pkg|kmod}}. Обратитесь к разделу [[Kernel_modules#Blacklisting|Module Blacklisting]] за более подробной информацией.<br />
<br />
=== Монтирование файловых систем ===<br />
<br />
Установка по умолчанию автоматически проверяет файловые системы командой fsck и монтирует файловые системы перед запуском тех сервисов, котрым необходимо иметь эти системы примонтированными. Например, systemd позволяет в автоматическом режиме добиться, что удаленные файловые системы наподобие [[NFS]] и [[Samba]] подключаются после поднятия сети. Поэтому монтирование как локальных, так и удаленных файловых систем, прописанных в {{ic|/etc/fstab}} должно работать "из коробки".<br />
<br />
Обратитесь к руководству {{ic|man 5 systemd.mount}} для получения более подробной информации.<br />
<br />
==== Автомонтирование ====<br />
<br />
* Если ваш раздел {{ic|/home}} занимает большой объем, лучшим вариантом было бы позволить сервисам не зависеть от подключения {{ic|/home}} и запускать данные сервисы, когда {{ic|/home}} еще подвергается проверке при загрузке системы. Добиться такого результата можно добавлением следующих параметров в запись файла {{ic|/etc/fstab}}, касающуюся раздела {{ic|/home}}:<br />
<br />
noauto,x-systemd.automount<br />
<br />
Такие параметры вызовут команду fsck и примонтируют {{ic|/home}} при первом обращении к данному разделу, и ядро будет буферизовать все файлы доступа к {{ic|/home}} до готовности данного раздела.<br />
<br />
{{Note|Nаким образом для вашей файловой системы {{ic|/home}} при монтировании будет установлен тип {{ic|autofs}}, который по умолчанию игнорируется утилитой [[mlocate]]. Скорость автомонирования {{ic|/home}} при этом не увеличится более чем на одну или две секунды,в зависимости от вашей системы, поэтому данный труюк, возможно, не стоит применять.}}<br />
<br />
* То же самое применимо и к удаленным файловым системам. Если вы хотите, чтобы монтирование данных систем происходило только по мере доступа к ним, вы можете использовать параметр {{ic|1=x-systemd.device-timeout=#}} в файле {{ic|/etc/fstab}} для определения таймаута в том случае, кода сетевые ресурсы оказываются недоступны.<br />
<br />
* В случае использования зашифрованных файловых систем с ключами доступа, вам также Iследует добавить параметр {{ic|noauto}} в соответствующие записи файла {{ic|/etc/crypttab}}. systemd не будет подключать зашифрованные устройства при загрузке, но, вместо этого, дождется реального обращения к ним и автоматически откроет к ним доступ с использованием определенных ключей перед тем, как они будут примонтированы. Это сэкономит несколько секунд при загрузке системы, например, в случае использования зашифрованного устройства RAID, потому что systemd не будет дожидаться от устройства, когда оно станет доступным. Например:<br />
<br />
{{hc|/etc/crypttab|<br />
data /dev/md0 /root/key noauto}}<br />
<br />
=== LVM ===<br />
<br />
Если у вас имеются тома [[LVM]], не активированные посредством [[Mkinitcpio|initramfs]], включите сервис {{ic|lvm-monitoring}}, который предоставляется пакетом {{pkg|lvm2}}:<br />
<br />
# systemctl enable lvm-monitoring<br />
<br />
Точно так же, если у вас LVM на устройствах с шифрованием, монтируемым позже в процессе загрузки (например, из {{ic|/etc/crypttab}}), вам необходимо включить сервис {{ic|lvm-on-crypt}}, который также предоставляется пакетом {{pkg|lvm2}}:<br />
<br />
# systemctl enable lvm-on-crypt<br />
<br />
=== Управлением питанием ACPI ===<br />
<br />
Systemd обрабатывает некоторые события, связанные с [http://ru.wikipedia.org/wiki/ACPI ACPI], что настраивается при помощи параметров в конфигурационном файле {{ic|/etc/systemd/logind.conf}}:<br />
<br />
* {{ic|HandlePowerKey}}: определяет действия системы при нажатии кнопки питания (вкл./выкл.).<br />
* {{ic|HandleSuspendKey}}: определяет действия системы при нажатии кнопки спящего режима.<br />
* {{ic|HandleHibernateKey}}: определяет действия системы при нажатии кнопки ждущего режимаs.<br />
* {{ic|HandleLidSwitch}}: определяет действия системы при закрытии крышки компьютера.<br />
<br />
Для соответствующих действий могут использоваться значения {{ic|ignore}} (пропустить), {{ic|poweroff}} (отключить питание), {{ic|reboot}} (перезагрузить), {{ic|halt}} (выключить), {{ic|suspend}} (включить спящий режим), {{ic|hibernate}} (включить ждущий режим), {{ic|hybrid-sleep}} (включить режим гибридного сна), {{ic|lock}} (заблокировать) или {{ic|kexec}} (системный вызов позволяющий оперативно переключиться в другое ядро).<br />
<br />
Если данные параметры не определены, по умолчанию systemd будет использовать следующие: {{ic|1=HandlePowerKey=poweroff}}, {{ic|1=HandleSuspendKey=suspend}}, {{ic|1=HandleHibernateKey=hibernate}}, и {{ic|1=HandleLidSwitch=suspend}}.<br />
<br />
В системах без графического интерфейса (или использующих простые оконные менеджеры наподобие [[i3]] или [[awesome]]) так можно заменить демон [[acpid]], который обычно используется для реагирования на данные события ACPI.<br />
<br />
{{Note|Выполните команду {{ic|systemctl restart systemd-logind.service}}, чтобы изменения вступили в силу.}}<br />
<br />
{{Note|Systemd не может обрабатывать события AC и Battery ACPI, поэтому, если вы используете [[Laptop Mode Tools]] или другие аналогичные утилиты, по-прежнему требуется [[acpid]].}}<br />
<br />
В текущей версии systemd параметры {{ic|Handle*}} будут применены ко всей системе, если только они не "подавляются (временно отключены) другой программой, такой, как менеджер питания данного окружения рабочего стола. Если эти ограничений нет, вы можете столкнуться с ситуацией, когда systemd приводит вашу систему в спящий режим, а затем, когда система пробуждается менеджером управлением питания, снова "усыпляет" ее.<br />
<br />
{{Warning|В настоящее время менеджеры управления питанием в новейших версиях сред [[KDE]] и [[GNOME]] являются единственными, которые используют такие команды "подавления". До тех пор, пока их не будут применять другие менеджеры, вам надо выставить в параметрах {{ic|Handle}} значение {{ic|ignore}}, если вы хотите, чтобы события ACPI обрабатывались в случае использования [[Xfce]], [[acpid]] или других программ.}}<br />
<br />
{{Note|Systemd также может использовать для перевода системы в спящий/ждущий режим другие движки (такие, как [[Uswsusp]] или [[TuxOnIce]]), в дополнение к движку ''ядра''.}}<br />
<br />
==== Хуки спящего режима ====<br />
<br />
Systemd в своих командах {{ic|systemctl suspend}}, {ic|systemctl hibernate}} или {{ic|systemctl hybrid-sleep}} не использует [[pm-utils]] для "усыпления" машины; хуки [[pm-utils]], включая любые [[Pm-utils#Creating_your_own_hooks|пользовательские хуки]] не будут работать. Тем не менее, systemd предоставляет два схожих механизма запуска пользовательских скриптов для данных событий. <br />
<br />
===== Сервис-файлы для спящего режима/возобновления работы =====<br />
<br />
Сервис-файлы могут быть подключены к suspend.target, hibernate.target и sleep.target для выполнения действий до или после перевода системы в спящий/ждущий режимы. Отдельные файлы следует создавать для пользовательских действий или системных действий/действий, выполняемых суперпользователем root. Для включения пользовательских сервис-файлов, выполните команду {{ic|# systemctl enable suspend@<user> && systemctl enable resume@<user>}}. Примеры:<br />
<br />
{{hc|/etc/systemd/system/suspend@.service|2=<nowiki><br />
[Unit]<br />
Description=User suspend actions<br />
Before=sleep.target<br />
<br />
[Service]<br />
User=%I<br />
Type=forking<br />
Environment=DISPLAY=:0<br />
ExecStartPre= -/usr/bin/pkill -u %u unison ; /usr/local/bin/music.sh stop ; /usr/bin/mysql -e 'slave stop'<br />
ExecStart=/usr/bin/sflock<br />
<br />
[Install]<br />
WantedBy=sleep.target</nowiki>}}<br />
<br />
{{hc|/etc/systemd/system/resume@.service|2=<nowiki><br />
[Unit]<br />
Description=User resume actions<br />
After=suspend.target<br />
<br />
[Service]<br />
User=%I<br />
Type=simple<br />
ExecStartPre=/usr/local/bin/ssh-connect.sh<br />
ExecStart=/usr/bin/mysql -e 'slave start'<br />
<br />
[Install]<br />
WantedBy=suspend.target</nowiki>}}<br />
<br />
Для действий суперпользователя root/системных действий (включается командой {{ic|# systemctl enable root-suspend}}):<br />
<br />
{{hc|/etc/systemd/system/root-resume.service|2=<nowiki><br />
[Unit]<br />
Description=Local system resume actions<br />
After=suspend.target<br />
<br />
[Service]<br />
Type=simple<br />
ExecStart=/usr/bin/systemctl restart mnt-media.automount<br />
<br />
[Install]<br />
WantedBy=suspend.target</nowiki>}}<br />
<br />
{{hc|/etc/systemd/system/root-suspend.service|2=<nowiki><br />
[Unit]<br />
Description=Local system suspend actions<br />
Before=sleep.target<br />
<br />
[Service]<br />
Type=simple<br />
ExecStart=-/usr/bin/pkill sshfs<br />
<br />
[Install]<br />
WantedBy=sleep.target</nowiki>}}<br />
<br />
Несколько полезных советов по поводу этих сервис-файлах (подробности командой {{ic|man systemd.service}}):<br />
* В случае {{ic|1=<nowiki>Type=OneShot</nowiki>}} вы можете использовать несколько строк {{ic|1=<nowiki>ExecStart=</nowiki>}}. В противном случае допустима только одна строка ExecStart. Можно добавить больше команд либо при помощи {{ic|ExecStartPre}}, либо отдельными командами, разделенными точкой с запятой (;) (смотрите первый пример из приведенных выше - обратите внимание на пробелы до и после точки с запятой... это необходимо!).<br />
* Команды с префиксом '-' приведут к ненулевому (не "0") статусу выхода, который проигнорируется и будет рассматриваться как успешное завершение команды. <br />
* Лучший способ обнаружения ошибок при диагностике данных сервис-файлов - конечно же, команда {{ic|journalctl}}.<br />
<br />
===== Комбинированный сервис-файл спящего режима/возобновления работы =====<br />
<br />
При помощи комбинированного сервис файла спящего-режима/возобновления работы единственный худ сделает всю работу для различных стадий работы компьютера (спящий режим/возобновление работы) и для различных целей (спящий режим/ждущий режим/гибридный рпежим сна).<br />
<br />
Пример и объяснение:<br />
<br />
{{hc|/etc/systemd/system/wicd-sleep.service|2=<nowiki><br />
[Unit]<br />
Description=Wicd sleep hook<br />
Before=sleep.target<br />
StopWhenUnneeded=yes<br />
<br />
[Service]<br />
Type=oneshot<br />
RemainAfterExit=yes<br />
ExecStart=-/usr/share/wicd/daemon/suspend.py<br />
ExecStop=-/usr/share/wicd/daemon/autoconnect.py<br />
<br />
[Install]<br />
WantedBy=sleep.target</nowiki>}}<br />
<br />
* {{ic|1=<nowiki>RemainAfterExit=yes</nowiki>}}: После запуска сервис считается активным, пока не будет явно остановлен.<br />
<br />
* {{ic|1=<nowiki>StopWhenUnneeded=yes</nowiki>}}: В случае, если сервис активен, он может быть остановлен, если нет нуждающихся в нем других активных сервисов. В данном примере он будет остановлен после остановки целевого файла sleep.target.<br />
<br />
* Поскольку sleep.target. используемый такими целевыми юнатами, как suspend.target, hibernate.target, hybrid-sleep.target и самим sleep.target является сервисом StopWhenUnneeded, хук гарантирует старт/остановку различных задач должным образом.<br />
<br />
===== Хуки в /usr/lib/systemd/system-sleep =====<br />
<br />
Systemd запускает все исполняемые файлы в директории {{ic|/usr/lib/systemd/system-sleep/}}, передавая каждому из них два аргумента:<br />
<br />
* Аргумент 1: или {{ic|pre}}, или {{ic|post}}, в зависимости от которых машина либо "уснет", либо будет "пробуждена";<br />
* Аргумент 2: или {{ic|suspend}}, или {{ic|hibernate}} или же {{ic|hybrid-sleep}}, в зависимости от того, что было вызвано.<br />
<br />
В отличие от [[pm-utils]], systemd запустит данные скрипты одновременно, а не один после другого.<br />
<br />
Вывод любого пользовательского скрипта будет записан сервисом {{ic|systemd-suspend.service}}, {{ic|systemd-hibernate.service}} или {{ic|systemd-hybrid-sleep.service}}. Вы вы можете увидеть данный выход в [[#Журнал systemd|журнале]] systemd:<br />
<br />
# journalctl -b -u systemd-suspend<br />
<br />
Обратите внимание, что вместо использования скриптов вы также можете использовать специальные целевые юниты - {{ic|sleep.target}}, {{ic|suspend.target}}, {{ic|hibernate.target}} или {{ic|hybrid-sleep.target}} для того, чтобы подключить к другим юнитам возможности перехода в спящий режима.<br />
<br />
Пример пользовательского скрипта по переходу в спящий режим:<br />
<br />
{{hc|/usr/lib/systemd/system-sleep/example.sh|<br />
#!/bin/sh<br />
case $1/$2 in<br />
pre/*)<br />
echo "Going to $2..."<br />
;;<br />
post/*)<br />
echo "Waking up from $2..."<br />
;;<br />
esac}}<br />
<br />
Не забудьте сделать ваш скрипт исполняемым:<br />
<br />
# chmod a+x /usr/lib/systemd/system-sleep/example.sh<br />
<br />
Обратитесь к руководствам {{ic|man 7 systemd.special}} и {{ic|man 8 systemd-sleep}} для получения дальнейшей информации.<br />
<br />
=== Временные файлы ===<br />
<br />
Systemd-tmpfiles использует конфигурационные файлы в директориях {{ic|/usr/lib/tmpfiles.d/}} и {{ic|/etc/tmpfiles.d/}} для определения действий с временными файлами и директориями (создание, очистка и удаление их), обычно расположенные в {{ic|/run}} or {{ic|/tmp}}. Каждый файл с настройками имеет название вида {{ic|/etc/tmpfiles.d/<program>.conf}}. Данные конфигурационные файлы имеют приоритет по сравнению с любыми файлами с таким же названием, расположенными в директории {{ic|/usr/lib/tmpfiles.d/}}.<br />
<br />
Временные файлы tmpfiles обычно поставляются вместе с сервис-файлами для создания директорийк. которые, как ожидается, будут использоваться определенными демонами. Например, демон [[Samba]] предполагает наличие директории {{{ic|/run/samba}} с соответствующими правами доступа. В данном случае tmpfile выглядит следующим образом:<br />
<br />
{{hc|/usr/lib/tmpfiles.d/samba.conf|<br />
D /run/samba 0755 root root}}<br />
<br />
tmpfiles также могут использоваться для записи значений в определенные файлы во врем загрузки. К примеру, если вы используете {{ic|/etc/rc.local}} для того, чтобы отключить пробуждение системы USB-устройствами, при помощи команды {{ic|echo USBE > /proc/acpi/wakeup}}, вы можете вместо этого использовать следующий tmpfile:<br />
<br />
{{hc|/etc/tmpfiles.d/disable-usb-wake.conf|<br />
w /proc/acpi/wakeup - - - - USBE}}<br />
<br />
Обратитесь к руководству {{ic|man 5 tmpfiles.d}} за более подробной информацией.<br />
<br />
{{note|Указанный метод установки параметров в {{ic|/sys}} может не сработать, поскольку сервис {{ic|systemd-tmpfiles-setup}}, возможно, запустится до того, как будут подгружены соответствующие модули устройства. В этом случае вам следует проверить, имеет ли модуль необходимые вам параметры при помощи {{ic|modinfo <module>}} и установить данный параметр при помощи [[Modprobe.d#Configuration|конфигурационного файла в директории {{ic|/etc/modprobe.d}}]]. В противном случае, чтобы установить соответствующий атрибут для устройства, как только оно будет доступно, вам необходимо создать [[Udev#About_udev_rules|правило udev]].}}<br />
<br />
=== Юнит ===<br />
<br />
Юнит (англ. unit) - конфигурационный файл, содержащий информацию о сервисе (службе), сокете, устройстве, точке монирования/автомонирования, файле подкачке или разделе, определяемом для загрузки уровне запуска, пути в файловой системе или таймере, которые контролируются и управляются при помощи systemd. Синтаксис юнитов навеян спецификацией .desktop-файлов (XDG Desktop Entry Specification), которая, в свою очередь, вдохновлялась .ini-файлами от Microsoft Windows. <br />
<br />
Обратитесь к руководству {{ic|man 5 systemd.unit}} для получения дальнейшей информации.<br />
<br />
== Основы использования systemctl ==<br />
<br />
Главная команда для наблюдения и контроля за состоянием systemd - команда {{ic|systemctl}}. Некоторые из вариантов ее использования связаны с изучением состояния системы и управлением сервисами. Обратитесь к странцам руководства {{ic|man 1 systemctl}} для получения более детальной информации.<br />
<br />
{{Tip|Вы можете использовать приведенные ниже команды {{ic|systemctl}} с ключом {{ic|-H <user>@<host>}} для того, чтобы контролировать systemd на удаленной машине. В этом случае для соединения с удаленным процессом systemd будет использовать [[SSH]].}}<br />
<br />
{{Note|{{ic|systemadm}} - официальная графическая оболочка для {{ic|systemctl}}. Она доступна в виде пакета {{AUR|systemd-ui-git}} из [[AUR]].}}<br />
<br />
=== Анализ состояния системы ===<br />
<br />
Список запущенных юнитов:<br />
<br />
$ systemctl<br />
<br />
или:<br />
<br />
$ systemctl list-units<br />
<br />
Список юнитов, попытка запуска которых завершилась неудачей:<br />
<br />
$ systemctl --failed<br />
<br />
Доступные юниты можно посмотреть в директориях {{ic|/usr/lib/systemd/system/}} и {{ic|/etc/systemd/system/}} (последняя директория имеет приоритет). Вы можете увидеть список установленных юнитов командой:<br />
<br />
$ systemctl list-unit-files<br />
<br />
=== Использование юнитов ===<br />
<br />
Юниты могут быть сервисами ({{ic|.service}}), точками монтирования ({{ic|.mount}}) или сокетами ({{ic|.sockets}}). При использовании команды {{ic|systemctl}} необходимо всегда указывать полное имя файла, включая расширение. Однако, есть несколько сокращений при определении юнита следующими командами{{ic|systemctl}}:<br />
<br />
* Ели вы не указали суффикс, systemctl предполагает, что это {{ic|.service}}. Например, {{ic|netcfg}} и {{ic|netcfg.service}} будут трактоваться одинаково.<br />
* Точки монтирования будут автоматически преобразованы в соответствующий юнит {{ic|.mount}}. Например, указание {{ic|/home}} равнозначно {{ic|home.mount}}.<br />
* Аналогично точкам монтирования, имена устройств автоматически преобразуются в соответствующий юнит {{ic|.device}}, поэтому указание {{ic|/dev/sda2}} полностью соответствует юниту {{ic|dev-sda2.device}}.<br />
<br />
Обратитесь к руководству {{ic|man systemd.unit}} для получения детальной информации.<br />
<br />
{{Note|При использовании юнитов следует обращать внимание на регистр букв в наименовании сервис-файлов: так, необходимо использовать ''NetworkManager.'''service''' '' (запомните употребление в данном названии букв в верхнем регистре) для включения сервиса NetworkManager'а, в противном случае вы получите сообщение об ошибке и сервис во время загрузки системы не запустится.}}<br />
<br />
Незамедлительно запустить юнит:<br />
<br />
# systemctl start <unit><br />
<br />
Незамедлительно остановить юнит:<br />
<br />
# systemctl stop <unit><br />
<br />
Перезапустить юнит:<br />
<br />
# systemctl restart <unit><br />
<br />
Запросить у юнита перезагрузку его настроек:<br />
<br />
# systemctl reload <unit><br />
<br />
Показать статус юнита, а также запущен он или нет:<br />
<br />
$ systemctl status <unit><br />
<br />
Проверить включение юнита (т.е. разрешен ли юниту запуск при загрузке системы):<br />
<br />
$ systemctl is-enabled <unit><br />
<br />
Включить юнит (разрешить юниту запуск при загрузке системы):<br />
<br />
# systemctl enable <unit><br />
<br />
{{Note| Сервис-файлы, не имеющие раздела {{ic|Install}}, обычно вызываются автоматически другими сервисами. Если вам требуется установить их вручную, используйте следующую команду, заменив {{ic|foo}} именем вашего сервиса.<br />
<br />
# ln -s /usr/lib/systemd/system/''foo''.service /etc/systemd/system/graphical.target.wants/<br />
}}<br />
<br />
Выключить юнит (запретить юниту запуск при загрузке системы):<br />
<br />
# systemctl disable <unit>}}<br />
<br />
Показать страницу помощи для юнита (необходима поддержка этой функции в указанном файле юнита):<br />
<br />
$ systemctl help <unit><br />
<br />
Перезагрузить systemd с поиском новых или измененных юнитов:<br />
<br />
# systemctl daemon-reload<br />
<br />
=== Управление питанием ===<br />
<br />
Для управления питанием необходим {{ic|polkit}}.<br />
<br />
Если у вас локальная пользовательская сессия {{ic|systemd-logind}} и нет других активных сессий, приведенные ниже команды сработают и без привилегий суперпользователя root. В противном случае (например, вследствие того, что пользователь залогинился в tty), systemd автоматически запросит у вас пароль root.<br />
<br />
Завершить работу и перезагрузить систему:<br />
<br />
$ systemctl reboot<br />
<br />
Завершить работу и выключить компьютер (с отключением питания):<br />
<br />
$ systemctl poweroff<br />
<br />
Перевести систему в спящий режим:<br />
<br />
$ systemctl suspend<br />
<br />
Перевести систему в ждущий режим:<br />
<br />
$ systemctl hibernate<br />
<br />
Перевести систему в режим гибридного сна (или suspend-to-both):<br />
<br />
$ systemctl hybrid-sleep<br />
<br />
== Запуск окружения рабочего стола из systemd ==<br />
<br />
Чтобы включить графический вход в систему, запустите выбранный вами демон [[Display Manager (Русский)|экранного менеджера]] (например, [[KDM]]). В настоящий момент доступны сервис-файлы для [[GDM]], [[KDM]], [[SLiM]], [[XDM]], [[LXDM]] и [[LightDM]].<br />
<br />
# systemctl enable kdm<br />
<br />
Эта команда должна работать "из коробки". Если вдруг она не сработала, то, возможно, у вас {{ic|default.target}} установлен вручную или остался с прежней установки:<br />
<br />
{{hc|# ls -l /etc/systemd/system/default.target|<br />
/etc/systemd/system/default.target -> /usr/lib/systemd/system/graphical.target}}<br />
<br />
Просто удалите символическую ссылку и systemd будет использовать целевой юнит по умолчанию - {{ic|default.target}} (т.е. {{ic|graphical.target}}).<br />
<br />
# rm /etc/systemd/system/default.target<br />
<br />
=== Использование systemd-logind ===<br />
<br />
{{Note|С 30.10.2012 [[ConsoleKit]] был [http://archlinux.org.ru/node/352/ заменен на systemd-logind] как механизм входа в окружение рабочего стола по умолчанию.}}<br />
<br />
Для того, чтобы проверить статус вашей пользовательской сессии, вы можете использовать команду {{ic|loginctl}}. Все действия [[PolicyKit]] наподобие перевода системы в спящий режим или монтирования внешних носителей с помощью [[Udisks]] должны работать автоматически.<br />
<br />
$ loginctl show-session $XDG_SESSION_ID<br />
<br />
== Написание пользовательского файла .service==<br />
<br />
''Смотрите статью: [[Systemd/Services]]''<br />
<br />
=== Обработка зависимостей ===<br />
<br />
В случае использования systemd зависимости могут быть разрешены правильным построением файлов юнитов. ,Наиболее частый случай -- когда юниту {{ic|A}} требуется, чтобы юнит {{ic|B}} был запущен перед тем, как запустится сам юнит {{ic|A}}. В этом случае добавьте строки {{ic|1=Requires=B}} и {{ic|1=After=B}} в секцию {{ic|[Unit]}} сервис-файла юнита {{ic|A}}. Если подобная зависимость не является обязательной, добавьте соответственно взамен указанных выше строки {{ic|1=Wants=B}} и {{ic|1=After=B}}. Обратите внимание, что {{ic|1=Wants=}} и {{ic|1=Requires=}} не подразумевают {{ic|1=After=}}, что означает, что если {{ic|1=After=}} не определено, два юнита будут запущены параллельно друг другу.<br />
<br />
Обычно зависимости указываются в сервис-файлах, а не в целевых юнитах. Например, {{ic|network.target}} потребуется любому сервису, который связан с настройкой ваших сетевых интерфейсов, поэтому в любом случае определите загрузку вашего пользовательского юнита после запуска {{ic|network.target}}.<br />
<br />
=== Тип ===<br />
<br />
Существует несколько различных типов запуска служб, которые надо иметь в виду при написании пользовательского сервис-файла. Тип запуска определяется параметром {{ic|1=Type=}} в секции {{ic|[Service]}}. Обратитесь к руководству {{ic|man systemd.service}} для получения более детального объяснения.<br />
<br />
* {{ic|1=Type=simple}} (по умолчанию): systemd предполагает, что сервис будет запущен незамедлительно. Процесс при этом не должен форкнуться. Не используйте этот тип, если другим сервисы зависят от очередности при запуске данного сервиса, за исключением активации сокета.<br />
* {{ic|1=Type=forking}}: systemd предполагает, что сервис запускается однократно, процесс форкается и родительский процесс завершается. Используйте данный тип для запуска классических демонов за исключением тех случаев, когда, как вам известно, в таком поведении процесса нет необходимости. Вам следует также определить {{ic|1=PIDFile=}}, чтобы systemd могла отслеживать основной процесс.<br />
* {{ic|1=Type=oneshot}}: Полезен для скриптов, которые выполняют одну работу, а потом завершаются. Вам может понадобиться также установить параметр {{ic|1=RemainAfterExit=yes}}, чтобы systemd по-прежнему считала процесс активным, даже после его завершения<br />
* {{ic|1=Type=notify}}: Идентичен параметру {{ic|1=Type=simple}}, но с той оговоркой, что демон пошлет systemd сигнал о своей готовности. Эталонная реализация данного уведомления обеспечивается библиотекой {{ic|libsystemd-daemon.so}}.<br />
* {{ic|1=Type=dbus}}: Сервис считается находящимся в состоянии готовности, когда определенное {{ic|BusName}} появляется в системной шине DBus.<br />
<br />
=== Редактирование предоставленных пакетами файлов юнитов ===<br />
<br />
Для того, чтобы отредактировать предоставляемый пакетом файл юнита, вы можете создать директорию {{{ic|/etc/systemd/system/<unit>.d/}} (например, {{ic|/etc/systemd/system/httpd.service.d/}}) и поместить в нее файлы place {{ic|*.conf}}, чтобы переопределить настройки данных файлов или чтобы добавить новые параметры. Systemd проведет парсинг данный файлов {{ic|*.conf}} и применит их настройки поверх настроек поставляемого исходного юнита. Например, если вы просто хотите добавить в сервис-файл дополнительную зависимость, вы можете исоздать следующий файл:<br />
<br />
{{hc|/etc/systemd/system/<unit>.d/customdependency.conf|2=<br />
[Unit]<br />
Requires=<new dependency><br />
After=<new dependency>}}<br />
<br />
Затем выполните следующие команды для того, чтобы изменения вступили в силу:<br />
<br />
# systemctl daemon-reload<br />
# systemctl restart <unit><br />
<br />
В качестве другого варианта вы можете скопировать старый юнит из директории {{ic|/usr/lib/systemd/system/}} в директорию {{ic|/etc/systemd/system/}} aи применить свои изменения в последней директории. Юнит-файл в директории {{ic|/etc/systemd/system/}} всегда имеет приоритет и переопределяет настройки такого же юнита в директории {{ic|/usr/lib/systemd/system/}}. Обратите внимание, что поставляемый исходный юнит в директории {{ic|/usr/lib/}} изменяется при обновлении пакета и эти изменения не будут автоматически применены к вашему отредактированному юниту в директории {{ic|/etc/}}. Дополнительно вы должны вручную выполнить команду {{ic|systemctl reenable <unit>}}, чтобы изменения вступили в силу. В силу указанных соображений рекомендуется вместо данного варианта использовать описанный выше метод с файлами в директории {{ic|*.conf}}. <br />
<br />
{{Tip|Вы можете использовать команду {{ic|systemd-delta}}, чтобы увидеть, какие файлы юнитов были переопределены и что в точности было изменено. Поскольку файлы, предоставляющие юниты, будут время от времени обновляться, используйте для обслуживания системы systemd-delta.}}<br />
<br />
=== Подсветка синтаксиса файлов юнитов в Vim ===<br />
<br />
Подсветка синтаксиса файлов юнитов для systemd в редакторе [[Vim]] может быть осуществлена путем установки пакета {{Pkg|vim-systemd}} из [[Official Repositories (Русский)|официальных репозиториев]].<br />
<br />
== Уровни запуска/цели ==<br />
<br />
Уровни запуска (по-английски уровень запуска - runlevel) для systemd являются устаревшей концепцией. Systemd использует ''цели'' (англ. target), которые выполняют ту же задачу, что и уровни запуска, но действуют немного по-другому. Каждая ''цель'' поименована (т.е. имеет собственное имя, а не номер) и, как предполагается, предназначена для конкретных задач; возможно иметь в одно и то же время активными несколько таких целей. Некоторые ''цели'' реализованы так, что наследуют все сервисы других ''целей'' и добавляют к ним свои сервисы. В systemd имеются также ''цели'', которые имитируют общие уровни запуска SystemVinit, поэтому вы можете переключаться между целевыми юнитами с использованием привычной команды {{ic|telinit RUNLEVEL}}. <br />
<br />
=== Получение информации о текущем уровне запуска/цели ===<br />
<br />
При использовании systemd для этого предназначена следующая команда (заменяющая {{ic|runlevel}}):<br />
<br />
$ systemctl list-units --type=target<br />
<br />
=== Создание пользовательской цели ===<br />
<br />
Уровни запуска, по которым расписаны конкретные задачи на установке дистрибутива Fedora по умолчанию - 0, 1, 3, 5 и 6; есть маппинг 1:1 с помощью конкретной цели systemd. К сожалению, не существует хорошего способа сделать то же самое для определяемых пользователем уровней, таких, как 2 и 4. Использование их предполагает, что вы создаете новый именованный '' целевой юнит'' systemd наподобие {{ic|/etc/systemd/system/<your target>}}, который берет за основу один из существующих уровней запуска (взгляните, например, на {{ic|/usr/lib/systemd/system/graphical.target}}), создаете также директорию {{ic|/etc/systemd/system/<your target>.wants}} и затем символические ссылки на те дополнительные сервисы из директории {{ic|/usr/lib/systemd/system/}}, которые вы хотите включить при загрузке.<br />
<br />
== Таблица уровней запуска и их аналогов в Systemd ==<br />
<br />
{| class="wikitable" border="1" cellpadding="5" cellspacing="0"<br />
! Уровнень запуска SysV !! systemd Target !! Примечание<br />
|-<br />
| 0 || runlevel0.target, poweroff.target || Выключить систему.<br />
|-<br />
| 1, s, single || runlevel1.target, rescue.target || Однопользовательский уровень запуска.<br />
|-<br />
| 2, 4 || runlevel2.target, runlevel4.target, multi-user.target || Уровень запуска, определенный пользователем/специфичный для узла. По умолчанию соответствует уровню запуска 3.<br />
|-<br />
| 3 || runlevel3.target, multi-user.target || Многопользовательский режим без графики. Пользователи, как правило, входят с помощью множества консолей или через сеть.<br />
|-<br />
| 5 || runlevel5.target, graphical.target || Многопользовательский режим с графикой. Обычно эквивалентен запуску всех сервисов уровня 3 и графическому менеджеру входа.<br />
|-<br />
| 6 || runlevel6.target, reboot.target || Перезагрузка.<br />
|-<br />
| emergency || emergency.target || Аварийная оболочка.<br />
|-<br />
|}<br />
<br />
=== Изменение текущей цели ===<br />
<br />
В systemd цели доступны посредством " целевых юнитов". Вы можете изменить их командой:<br />
<br />
# systemctl isolate graphical.target<br />
<br />
Данная команда изменит только лишь текущую цель и не повлияет на следующую загрузку системы. Она соответствует командам наподобие {{ic|telinit 3}} или {{ic|telinit 5}} для Sysvinit.<br />
<br />
=== Изменение цели для загрузки ===<br />
<br />
Стандартная цель - {{ic|default.target}}, которая по умолчанию является псевдонимом юнита {{ic|graphical.target}} (примерно соответствующего прежнему уровню выполнения 5). Для изменения цели при загрузке по умолчанию, добавьте следующий дополнительный [[kernel parameters|параметр ядра]] в вашем загрузчике:<br />
<br />
{{Tip|Расширение {{ic|.target}} можно опустить.}}<br />
<br />
* {{ic|1=systemd.unit=multi-user.target}} (что примерно соответствует прежнему уровню выполнения 3),<br />
* {{ic|1=systemd.unit=rescue.target}} (что примерно соответствует прежнему уровню выполнения 1).<br />
<br />
Другой путь заключается в том, чтобы оставить загрузчик без изменений и изменить целевой юнит по умолчанию - {{ic|default.target}}, что достигается командой {{ic|systemctl}}:<br />
<br />
# systemctl enable multi-user.target<br />
<br />
Эффект от применения данной команды выводится через {{ic|systemctl}}; символическая ссылка на новый целевой юнит по умолчанию создается в директории {{ic|/etc/systemd/system/default.target}}. Это сработает в том случае (и только в том случае), если имеется следующая секция:<br />
<br />
[Install]<br />
Alias=default.target<br />
<br />
в конфигурационном файле целевого юнита. В настоящий момент как {{ic|multi-user.target}}, так и {{ic|graphical.target}} оба имеют данную секцию.<br />
<br />
== Журнал ==<br />
С версии 38 systemd имеет собственную систему ведения логов - журнал (journal). По умолчанию, более не требуется запуск демона syslog. Для чтения логов используйте команду:<br />
<br />
# journalctl<br />
<br />
По умолчанию (когда в конфигурационном файле {{ic|/etc/systemd/journald.conf}} параметр {{ic|Storage&#61;}} имеет значение {{ic|auto}}) журнал записывается в директорию {{ic|/run/systemd/journal}}. Директория {{ic|/var/log/journal/}} создается при установке {{ic|core/systemd}}. В случае, если вы или какая-либо программа удалили ее), systemd '''не''' воссоздаст ее автоматически , но при следующем обновлении systemd эта директория будет восстановлена. До восстановления данной директории, логи будут записываться в директорию {{ic|/run/systemd/journal}}. Это означает, что логи будут потеряны при перезагрузке.<br />
<br />
=== Фильтрация вывода ===<br />
<br />
{{ic|journalctl}} позволяет фильтровать вывод по особым полям.<br />
<br />
Примеры:<br />
<br />
Показать все сообщения с момента текущей загрузки системы:<br />
<br />
# journalctl -b<br />
<br />
Однако часто интерес представляют сообщения, выданные во время не текущей, а предыдущей загрузки системы (например, если произошел неустраненный аварийный отказ системы). В настоящее время данная функция еще не реализована, хотя прошла дискуссия на [http://comments.gmane.org/gmane.comp.sysutils.systemd.devel/6608 systemd-devel@lists.freedesktop.org] (сентябрь/октябрь 2012).<br />
<br />
В качестве решения проблемы в настоящее время можно использовать следующую команду:<br />
<br />
# journalctl --since=today | tac | sed -n '/-- Reboot --/{n;:r;/-- Reboot --/q;p;n;b r}' | tac<br />
<br />
при условии, что предыдущая загрузка системы прошла сегодня. Имейте в виду, что, если на данный день имеется много сообщений, вывод данной команды произойдет с определенной задержкой.}}<br />
<br />
Последние сообщения:<br />
<br />
# journalctl -f<br />
<br />
Показать все сообщения определенной программы:<br />
<br />
# journalctl /usr/lib/systemd/systemd<br />
<br />
Показать все сообщения определенного процесса:<br />
<br />
# journalctl _PID=1<br />
<br />
Показать все сообщения определенного юнита:<br />
<br />
# journalctl -u netcfg<br />
<br />
Обратитесь к {{ic|man journalctl}} и {{ic|systemd.journal-fields}} или [http://0pointer.de/blog/projects/journalctl.html блог Леннерта (англ.)] для получения детальной информации.<br />
<br />
=== Ограничение размера журнала ===<br />
<br />
Если журнал сохраняется при перезагрузке, размер его по умолчанию ограничен значением в 10% от объема соответствующей файловой системы. Например, для директории {{ic|/var/log/journal}}, расположенной на корневом разделе в 50 Гбайт, максимальный размер журналируемых данных составит до 5 Гбайт. Максимальный объем постоянного журнала можно контролировать при помощи значения {{ic|SystemMaxUse}} в конфигурационном файле {{ic|/etc/systemd/journald.conf}}, поэтому для ограничения его объемом в 50 Mбайт раскомментируйте и отредактируйте соответствующую строку:<br />
<br />
SystemMaxUse=50M<br />
<br />
Обратитесь к {{ic|man journald.conf}} для получения дальнейшей информации.<br />
<br />
=== Journald в связке с классическим демоном syslog ===<br />
<br />
Совместимость с классической реализацией syslog обеспечивается сокетом {{ic|/run/systemd/journal/syslog}}, в который перенаправляются все сообщения. Чтобы дать возможность демону syslog работать вместе с журналом systemd, следует привязать данный демон к указанному сокету вместо {{ic|/dev/log}} ([http://lwn.net/Articles/474968/ официальное сообщение]). Пакетом {{pkg|syslog-ng}} в репозиториях автоматически предоставляется необходимая конфигурация.<br />
<br />
# systemctl enable syslog-ng<br />
<br />
Хорошее руководство по {{ic|journalctl}} находится [http://0pointer.de/blog/projects/journalctl.html здесь (англ.)]<br />
<br />
== Сеть ==<br />
<br />
{{Warning|Данный раздел в английской версии включен в состав статьи [[Configuring Network]]; в русской версии временно оставлен из-за того, что русский вариант [[Configuring Network (Русский)]] устарел в сравнении с английским.}}<br />
<br />
=== Динамическое подключение (DHCP) с использованием dhcpcd ===<br />
<br />
Если хотите использовать только DHCP для своего соединения Ethernet, вы можете воспользоваться сервисом {{ic|dhcpcd@.service}} (который поставляется пакетом {{Pkg|dhcpcd}}).<br />
<br />
Чтобы подключить DHCP для {{ic|eth0}}, просто выполните команду:<br />
<br />
# systemctl start dhcpcd@eth0.service<br />
<br />
Вы можете включить этот сервис, и он будет автоматически запускаться при загрузке. Это делается командой:<br />
<br />
# systemctl enable dhcpcd@eth0.service<br />
<br />
Иногда сервис dhcpd запускается до загрузки модуля вашей сетевой карты ({{bug|30235}}), в этом случае вручную добавьте вашу сетевую карту в конфигурационный файл {{ic|/etc/modules-load.d/*.conf}}. Например, для карты Realtek необходима загрузка модуля {{ic|r8169}}, поэтому создайте такой конфигурационный файл:<br />
<br />
{{hc|/etc/modules-load.d/realtek.conf|2=<br />
r8169}}<br />
<br />
=== Другие конфигурации ===<br />
<br />
Для статического подключения, беспроводной сети или сложной конфигурации сети наподобие сетевого моста, вы можете использовать [[Netcfg#systemd_support|netcfg]] или [[NetworkManager#Enable_NetworkManager_under_Native_systemd_system|NetworkManager]], для обоих этих инструментов управления сетью имеются сервис-файлы для systemd.<br />
<br />
{{Note|Если вы хотите использовать netcfg, NetworkManager или другие программы управления сетью, вам не надо в этом случае запускать или включать сервис dhcpcd как показано в предыдущем параграфе.}}<br />
<br />
== Оптимизация ==<br />
<br />
{{Warning| Данный раздел в оригинальной английской вики предлагается перенести в статью [[Improve Boot Performance]].}}<br />
<br />
=== Анализ процесса загрузки ===<br />
<br />
==== Использование systemd-analyze ====<br />
<br />
Systemd предоставляет инструмент под названием {{ic|systemd-analyze}}, позволяющий проанализировать процесс загрузки вашей системы, чтобы можно было увидеть, какие файлы юнитов тормозят загрузку. Соответственно, вы можете оптимизировать вашу систему. Для использования данного инструмента вам потребуется установить пакеты {{Pkg|python2-cairo}} и {{Pkg|python2-gobject}}.<br />
<br />
Чтобы увидеть, сколько времени было потрачено на подготовку пространства ядра и пространства пользователя во время загрузки, просто выполните команду:<br />
<br />
$ systemd-analyze<br />
<br />
{{Tip|<br />
<br />
* Если вы дополните хуком {{ic|timestamp}} ваш массивr {{ic|HOOKS}} в конфигурационном файле {{ic|/etc/[[mkinitcpio]].conf}} и пересоберете ваш образ initramfs командой {{ic|mkinitcpio -p linux}}, systemd-analyze сколько времени затрачивается на initramfs.<br />
<br />
* Если вы загружаетесь при помощи [[UEFI]] и используете загрузчик, в который имплементирова [http://www.freedesktop.org/wiki/Software/systemd/BootLoaderInterface Boot Loader Interface] от systemd (что в настоящий момент применено только в [[Gummiboot]] ), systemd-analyze дополнительно сможет показать, сколько времени затрачено на прошивку EFI сам загрузчик.}}<br />
<br />
Чтобы увидеть список запускаемых файлов юнитов, отсортированный по потраченному каждым из них на загрузку времени, выполните команду:<br />
<br />
$ systemd-analyze blame<br />
<br />
Вы также можете создать файл SVG, показывающий процесс загрузки в графическом виде, наподобие [[Bootchart]]:<br />
<br />
$ systemd-analyze plot > plot.svg<br />
<br />
==== Использование systemd-bootchart ====<br />
<br />
Bootchart объединен с systemd с 17 октября 2012 года и вы можете использовать его для загрузки также, как и оригинальный bootchart. Добавьте следующие команду к строке инициализации ядра:<br />
<br />
initcall_debug printk.time=y init=/usr/lib/systemd/systemd-bootchart<br />
<br />
==== Использование bootchart2 ====<br />
<br />
Вы также можете использовать версию bootchart для визуализации последовательности при загрузке системы.<br />
Из-за невозможности использовать стандартные установки bootchart (так как нельзя добавить в командную строку ядра вторую запись init), вам придется воспользоваться пакетом {{AUR|bootchart2}} из [[AUR]], поставляемым с недокументированным сервисом systemd. После установки bootchart2 выполните команду:<br />
<br />
# systemctl enable bootchart<br />
<br />
Обратитесь к [https://github.com/mmeeks/bootchart документации bootchart (англ.)] за дальнейшей и детализированной информацией об использовании данной версии bootchart.<br />
<br />
=== Readahead ===<br />
<br />
systemd поставляется со свой реализации технологии readahead, что в принципе должно усовершенствовать процесс загрузки системы. Однако, в зависимости от версии вашего ядра и типа жесткого диска, скорость обращения к данным может разниться (например, может быть медленнее). Чтобы включить данный сервис, выполните:<br />
<br />
# systemctl enable systemd-readahead-collect systemd-readahead-replay<br />
<br />
Не забудьте, что волшебство технологии readahead подействует только после нескольких перезапусков системы<br />
<br />
== Устранение неполадок ==<br />
<br />
=== Выключение/перезагрузка происходят ужасно долго ===<br />
<br />
Если процесс выключения занимает очень долгое время (или, по-видимому, зависает), то, вероятно, виноват сервис, который не завершает свою работу. systemd ожидает некоторое время, пока каждый сервис завершит свою работу самостоятельно, и только потом пытается принудительно завершить (kill) его. Если вы столкнулись с такой проблемой, обратитесь к [http://freedesktop.org/wiki/Software/systemd/Debugging#Shutdown_Completes_Eventually данной статье (англ.)].<br />
<br />
=== По-видимому, процессы с кратким сроком жизни не оставляют записей в протоколах ===<br />
<br />
Если команда {{ic|journalctl -u foounit.service}} не показывает выхода для сервиса с коротким сроком жизни, вместо нее обратитесь к PID. Например, если загрузка сервиса systemd-modules-load.service завершилась неудачно и команда {{ic|systemctl status systemd-modules-load}} показывает, что он был запущен с PID 123, то вы сможете посмотреть выход процесса в журнале под данным PID, то есть командой {{ic|journalctl -b _PID&#61;123}}. Такие поля метаданных для журнала, как _SYSTEMD_UNIT и _COMM собираются асинхронно и зависят от директории {{ic|/proc}} в случае с действующими процессами. Исправление этой ситуации требует внесения исправлений в ядро для обеспечения этих данных через сокет, наподобие SCM_CREDENTIALS.<br />
<br />
=== Диагностика проблем при загрузке ===<br />
<br />
Загрузитесь с указанными ниже параметрами командной строки ядра:<br />
<br />
{{ic|<nowiki>systemd.log_level=debug systemd.log_target=kmsg log_buf_len=1M</nowiki>}}<br />
<br />
Для получения дополнительной информации обратитесь к странице проекта systemd [http://freedesktop.org/wiki/Software/systemd/Debugging More Debugging Information (англ.)].<br />
<br />
== Полезные ссылки ==<br />
<br />
*[http://www.freedesktop.org/wiki/Software/systemd Официальный веб-сайт (англ.)]<br />
*[http://0pointer.de/public/systemd-man/ Страницы руководств (англ.)]<br />
*[http://freedesktop.org/wiki/Software/systemd/Optimizations systemd Optimizations (англ.)]<br />
*[http://www.freedesktop.org/wiki/Software/systemd/FrequentlyAskedQuestions FAQ (англ.)]<br />
*[http://www.freedesktop.org/wiki/Software/systemd/TipsAndTricks Tips And Tricks (англ.)]<br />
*[http://0pointer.de/blog/projects/the-biggest-myths.html The Biggest Myths (англ.)]<br />
*[http://www2.kangran.su/%7Ennz/pub/s4a/s4a_latest.pdf systemd для администраторов (PDF)] - перевод [http://0pointer.de/blog/projects цикла статей] Леннарта Поттеринга (Lennart Poettering)<br />
*[http://0pointer.de/blog/projects/systemd.html Блог Lennart'а (англ.)]<br />
*[http://www.h-online.com/open/features/Control-Centre-The-systemd-Linux-init-system-1565543.html часть 1] и [http://www.h-online.com/open/features/Booting-up-Tools-and-tips-for-systemd-1570630.html часть 2] вводной статьи в журнале ''The H Open'' (англ.)<br />
*[http://archlinux.org.ru/forum/topic/1301/ systemd mini FAQ]<br />
*[http://fedoraproject.org/wiki/Systemd Fedora Linux Wiki: Systemd (англ.)]<br />
*[http://fedoraproject.org/wiki/SysVinit_to_Systemd_Cheatsheet Fedora's SysVinit to systemd cheatsheet (англ.)]<br />
*[http://wiki.russianfedora.ru/index.php/Systemd systemd - база знаний проекта Fedora]<br />
*[http://wiki.debian.org/ru/Systemd Debian Wiki: systemd - менеджер системы и сервисов]<br />
*[http://wiki.ubuntu.com/systemd Ubuntu Wiki: systemd (англ.)]</div>Klayhttps://wiki.archlinux.org/index.php?title=MariaDB_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=253766MariaDB (Русский)2013-04-11T17:43:19Z<p>Klay: /* Настройка */</p>
<hr />
<div>[[Category:Русский]]<br />
[[Category:Database management systems (Русский)]]<br />
[[en:MariaDB]]<br />
[[fr:MariaDB]]<br />
[http://ru.wikipedia.org/wiki/MariaDB MariaDB] - это свободный, надежный, высокопроизводительный и полнофункциональный сервер реляционных баз данных, являющийся форком сервера [[MySQL (Русский)| MySQL]]. MariaDB внешне совместим с MySQL, однако внутренние механизмы MariaDB во многом устроены иначе и превосходят аналогичные механизмы MySQL. MariaDB лицензирован на условиях GPLv2.<br />
<br />
Инициатором и ведущим разработчиком MariaDB является Ульф Майкл Видениус, который в свое время создал проект MySQL. MariaDB развивается усилиями компании Monty Program Ab, в которой работают большинство основных разработчиков MySQL.<br />
<br />
== Установка ==<br />
Установите пакет {{Pkg|mariadb}} из [[Official Repositories|репозиториев Community]].<br />
<br />
Ежели [[MySQL (Русский)| MySQL]] был уже установлен на вашей системе, то менеджер пакетов pacman удалит {{Pkg|mysql}}, {{Pkg|mysql-clients}} и {{Pkg|libmysqlclient}} перед установкой {{Pkg|mariadb}}.<br />
<br />
После инсталляции системные таблицы MySQL будут установлены автоматически. Ежели этого не произошло, то переустановите их вручную:<br />
# /usr/bin/mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql<br />
<br />
{{Note| Если у вас возникли ошибки на этом этапе или вы хотите узнать о нем больше, то прочтите официальную [http://kb.askmonty.org/v/installing-system-tables-mysql_install_db документацию] по этому вопросу.}}<br />
<br />
Запустите демон mariadb:<br />
<br />
# systemctl start mysqld.service<br />
<br />
Для автоматического запуска этого демона при загрузке операционной системы выполните:<br />
<br />
# systemctl enable mysqld.service<br />
<br />
== Настройка ==<br />
<br />
'''Настоятельно рекомендуется''' позаботиться о безопасности сервера после запуска демона. Для этого выполните команду:<br />
# mysql_secure_installation<br />
<br />
Ежели вы новичок в MySQL, прочтите, пожалуйста, страницу [[MySQL (Русский)| MySQL]] на ArchWiki для получения дополнительной информации.</div>Klayhttps://wiki.archlinux.org/index.php?title=MariaDB_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=253764MariaDB (Русский)2013-04-11T17:40:42Z<p>Klay: /* Установка */</p>
<hr />
<div>[[Category:Русский]]<br />
[[Category:Database management systems (Русский)]]<br />
[[en:MariaDB]]<br />
[[fr:MariaDB]]<br />
[http://ru.wikipedia.org/wiki/MariaDB MariaDB] - это свободный, надежный, высокопроизводительный и полнофункциональный сервер реляционных баз данных, являющийся форком сервера [[MySQL (Русский)| MySQL]]. MariaDB внешне совместим с MySQL, однако внутренние механизмы MariaDB во многом устроены иначе и превосходят аналогичные механизмы MySQL. MariaDB лицензирован на условиях GPLv2.<br />
<br />
Инициатором и ведущим разработчиком MariaDB является Ульф Майкл Видениус, который в свое время создал проект MySQL. MariaDB развивается усилиями компании Monty Program Ab, в которой работают большинство основных разработчиков MySQL.<br />
<br />
== Установка ==<br />
Установите пакет {{Pkg|mariadb}} из [[Official Repositories|репозиториев Community]].<br />
<br />
Ежели [[MySQL (Русский)| MySQL]] был уже установлен на вашей системе, то менеджер пакетов pacman удалит {{Pkg|mysql}}, {{Pkg|mysql-clients}} и {{Pkg|libmysqlclient}} перед установкой {{Pkg|mariadb}}.<br />
<br />
После инсталляции системные таблицы MySQL будут установлены автоматически. Ежели этого не произошло, то переустановите их вручную:<br />
# /usr/bin/mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql<br />
<br />
{{Note| Если у вас возникли ошибки на этом этапе или вы хотите узнать о нем больше, то прочтите официальную [http://kb.askmonty.org/v/installing-system-tables-mysql_install_db документацию] по этому вопросу.}}<br />
<br />
Запустите демон mariadb:<br />
<br />
# systemctl start mysqld.service<br />
<br />
Для автоматического запуска этого демона при загрузке операционной системы выполните:<br />
<br />
# systemctl enable mysqld.service<br />
<br />
== Настройка ==<br />
<br />
'''Настоятельно рекомендуется''' позаботиться о безопасности сервера после запуска демона. Для этого выполните команду:<br />
# mysql_secure_installation<br />
<br />
Ежели вы новичек в MySQL, прочтите, пожалуйста, страницу [[MySQL (Русский)| MySQL]] на ArchWiki для получения дополнительной информации.</div>Klayhttps://wiki.archlinux.org/index.php?title=User:Klay&diff=253075User:Klay2013-04-06T02:51:06Z<p>Klay: /* Experience Using Distributions */</p>
<hr />
<div>__NOTOC__<br />
{{Article summary start}}<br />
{{Article summary text|This is the user page for '''Klay'''. Feel free to leave a question or comment on my [[User talk:Klay|Talk page]].}}<br />
{{Article summary end}}<br />
<br />
Russian Federation, Murom<br />
<br />
<br />
== Contacts ==<br />
Use my [[User talk:Klay|talk]] page for public comments. <br />
Use my [[Special:EmailUser/Klay|email]] for private comments.<br />
<br />
<br />
== Languages ==<br />
* Russian<br />
* English<br />
<br />
<br />
== Experience Using Distributions ==<br />
<br />
* Fedora - 1.5 Years<br />
* Ubuntu - 6 Month<br />
* Debian - 6 Month<br />
* Red Hat - 1 Year<br />
* Arch - From April 2012 to March 2013<br />
* Linux Mint - From March 2013 to now<br />
<br />
<br />
<br />
{{Note|This layout was borrowed from [[User:Filam]].}}</div>Klayhttps://wiki.archlinux.org/index.php?title=MongoDB&diff=252511MongoDB2013-04-01T02:29:23Z<p>Klay: Amended description</p>
<hr />
<div>[[Category:Database management systems]]<br />
MongoDB (from hu'''mongo'''us) is an open source document-oriented database system developed and supported by [http://www.10gen.com/ 10gen]. It is part of the NoSQL family of database systems. Instead of storing data in tables as is done in a "classical" relational database, MongoDB stores structured data as JSON-like documents with dynamic schemas (MongoDB calls the format BSON), making the integration of data in certain types of applications easier and faster.<br />
<br />
==Installing MongoDB==<br />
Install {{Pkg|mongodb}}<br />
# pacman -S mongodb<br />
Start MongoDB<br />
# systemctl start mongodb<br />
(Optional) Add MongoDB to the list of daemons that start on system startup<br />
# systemctl enable mongodb<br />
<br />
==Access the database shell==<br />
To access the Database shell you have type in your terminal<br />
# mongo<br />
<br />
==Troubleshooting==<br />
===MongoDB won't more to start===<br />
Check for the lock file<br />
# ls -lisa /var/lib/mongodb<br />
If the are there stop the mongodb daemon delete the file after it star the daemon again<br />
# rm /var/lib/mongodb/mongod.lock<br />
<br />
If still problems are there please check with the repair parameter (/var/lib/mongodb/ is the default --dbpath from Arch Linux)<br />
# mongod --dbpath /var/lib/mongodb/ --repair<br />
<br />
Sometimes it can happen that you can't start mongodb if the user and group policy wrong. You can check it with ls -al<br />
<br />
# cd /var/log/mongod<br />
# sudo chown -R mongodb:mongodb .<br />
# cd /var/lib/mongodb<br />
# sudo chown -R mongodb:mongodb .</div>Klayhttps://wiki.archlinux.org/index.php?title=Talk:MongoDB&diff=252510Talk:MongoDB2013-04-01T02:25:18Z<p>Klay: </p>
<hr />
<div><br />
'''This action (and check/condition) should be in systemd service:'''<br />
<br />
''If the are there stop the mongodb daemon delete the file after it star the daemon again''<br />
# rm /var/lib/mongodb/mongod.lock<br />
<br />
--[[User:Klay|Klay]] ([[User talk:Klay|talk]]) 02:25, 1 April 2013 (UTC)</div>Klayhttps://wiki.archlinux.org/index.php?title=User:Klay&diff=252509User:Klay2013-04-01T02:21:08Z<p>Klay: /* Experience Using Distributions */</p>
<hr />
<div>__NOTOC__<br />
{{Article summary start}}<br />
{{Article summary text|This is the user page for '''Klay'''. Feel free to leave a question or comment on my [[User talk:Klay|Talk page]].}}<br />
{{Article summary end}}<br />
<br />
Russian Federation, Murom<br />
<br />
<br />
== Contacts ==<br />
Use my [[User talk:Klay|talk]] page for public comments. <br />
Use my [[Special:EmailUser/Klay|email]] for private comments.<br />
<br />
<br />
== Languages ==<br />
* Russian<br />
* English<br />
<br />
<br />
== Experience Using Distributions ==<br />
<br />
* Fedora - 1.5 Years<br />
* Ubuntu - 6 Month<br />
* Debian - 6 Month<br />
* Red Hat - 1 Year<br />
* Arch - From April 2012 to now<br />
<br />
<br />
{{Note|This layout was borrowed from [[User:Filam]].}}</div>Klayhttps://wiki.archlinux.org/index.php?title=Talk:MongoDB&diff=252508Talk:MongoDB2013-04-01T02:20:35Z<p>Klay: MongoDB won't more to start</p>
<hr />
<div>''If the are there stop the mongodb daemon delete the file after it star the daemon again''<br />
<br />
''# rm /var/lib/mongodb/mongod.lock''<br />
<br />
This action (and check/condition) should be in systemd service</div>Klayhttps://wiki.archlinux.org/index.php?title=Systemd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=235148Systemd (Русский)2012-11-13T01:51:48Z<p>Klay: /* Полезные ссылки */</p>
<hr />
<div>[[Category:Русский]]<br />
[[Category:Процесс Загрузки (Русский)]]<br />
[[en:systemd]]<br />
[[es:systemd]]<br />
[[fr:systemd]]<br />
[[it:systemd]]<br />
[[ja:Systemd]]<br />
[[zh-CN:systemd]]<br />
{{Article summary start|Сводка}}<br />
{{Article summary text|Статья охватывает установку и настройку systemd.}}<br />
{{Article summary heading|Связанные статьи}}<br />
{{Article summary wiki|systemd/User}}<br />
{{Article summary wiki|systemd/Services}}<br />
{{Article summary wiki|systemd FAQ}}<br />
{{Article summary wiki|init Rosetta (Русский)}}<br />
{{Article summary wiki|udev (Русский)}}<br />
{{Article summary end}}<br />
Цитата с [http://freedesktop.org/wiki/Software/systemd веб-страницы проекта]:<br />
<br />
''"'''systemd''' - система [инициализации] и менеджер служб для Linux, совместимые со скриптами инициализации SysV и LSB. '''systemd''' обеспечивает возможности агрессивной параллелизации, использует сокеты и активацию [[D-Bus]] для запускаемых служб, предлагает запуск демонов по необходимости, отслеживает процессы при помощи [[cgroups|контрольных групп]] Linux, поддерживает мгновенные снимки и восстановление состояния системы, монтирование и точки монтирования, а также внедряет основанную на зависимостях логику контроля процессов сложных транзакций. Эта система может выступать заменой [[SysVinit|sysvinit]]."''.<br />
<br />
{{Note|1=За детальным объяснением причин происходящего перехода Arch'а на systemd обратитесь к [https://bbs.archlinux.org/viewtopic.php?pid&#61;1149530#p1149530 сообщению на англоязычном форуме].}}<br />
<br />
Смотрите также [[Wikipedia:Systemd|статью в Википедии]].<br />
<br />
== Соображения перед началом миграции ==<br />
<br />
* Настоятельно рекомендуется перейти на новую конфигурацию '''initscripts''', описанную в статье [[rc.conf (Русский)|rc.conf]]. Сконфигурировав таким образом свою систему, вы проделаете бóльшую часть работы, необходимую для миграции на systemd.<br />
* Почитайте про systemd на [http://freedesktop.org/wiki/Software/systemd/ сайте разработчиков].<br />
* Обратите внимание, что systemd имеет собственный '''журнал (journal)''', заменяющий '''syslog''', хотя оба варианта ведения логов могут сосуществовать. Обратитесь к приведенному ниже [[#Журнал|разделу, посвященному журналу]].<br />
* Хотя systemd вполне способна заменить определенную функциональность таких демонов, как '''cron''', '''acpid''' или '''xinetd''', но если вы не хотите, можете не отказываться от использования традиционных демонов.<br />
* Интерактивные загрузочные скрипты (initscripts) не работают с systemd. В частности, '''netcfg-menu''' [https://bugs.archlinux.org/task/31377 не может] использоваться при загрузке системы.<br />
<br />
== Установка ==<br />
<br />
{{Note|Оба пакета - {{pkg|systemd}} и {{pkg|systemd-sysvcompat}} - ставаятся по умолчанию при установке с носителя новее, чем [https://www.archlinux.org/news/systemd-is-now-the-default-on-new-installations/ 2012-10-13].}}<br />
<br />
Следующий раздел предназначен для тех установок Arch Linux, которые всеще зависят от пакетов {{pkg|sysvinit}} и {{pkg|initscripts}} и не перешли на использование {{pkg|systemd}}.<br />
<br />
# Установите пакет {{pkg|systemd}} и добавьте следующую запись к командной строке загрузки ядра: {{ic|1=init=/usr/lib/systemd/systemd}}<br />
<br />
# выполнив это, вы сможете включать или отключать любой необходимый сервис путем применения команды {{ic|systemctl enable <service_name>}} (это примерно соответствует тому, что включалось в массив {{ic|DAEMONS}}).<br />
<br />
# Перезагрузите свою систему и убедитесь, что {{ic|systemd}} в настоящее время активен, выполнив слудующую команду: {{ic|$ cat /proc/1/comm}}. Данная команда должна вернуть строку {{ic|systemd}}.<br />
<br />
# Удалите {{pkg|initscripts}} и {{pkg|sysvinit}} из вашей системы и установите {{pkg|systemd-sysvcompat}}.<br />
<br />
# В последнюю очередь удалите параметр {{ic|1=init=/usr/lib/systemd/systemd}}, поскольку необходимости в нем более нет. parameter as it is no longer requir<br />
<br />
=== Дополнительная информация ===<br />
<br />
* Если в параметрах ядра имеется значение {{ic|quiet}}, вероятно, вам стоит удалить его для нескольких первых загрузок systemd, чтобы видеть возникающие во время загрузке проблемы.<br />
<br />
* Теперь добавлять вашего пользователя в [[Users and Groups|группы]] ({{ic|optical}}, {{ic|audio}}, {{ic|scanner}}, ...) в большинстве случаев '''нет''' необходимости при использовании systemd. Это даже может нарушить работоспособность системы. Например, добавление в группу audio может привести к невозможности быстрого переключения между пользователями и позволит приложениям заблокировать программное микширование. Каждый вход PAM предоставляет сессию login, которое дает вам разрешения для локальной сессии посредством [[Wikipedia:Access control list|POSIX ACLs]] на аудио/видео устройства и позволяет выполнять некоторые операции, такие, как как монтирование съемных носителей через [[udisks]]. <br />
<br />
{{Note|Systemd-logind заменил [[ConsoleKit]], удаленный из репозиториев, поэтому для полной функциональности теперь система должна загружаться с использованием systemd. Смотрите [http://archlinux.org.ru/node/352/ новость] для получения дальнейшей информации.}<br />
<br />
Ранее ConsoleKit обеспечивал подобные разрешения для устройств на основе ACL и разрешения polkit для локальных сессий.}}<br />
<br />
== Родные системные файлы ==<br />
<br />
{{Note|Возможно, вам придется создать эти файлы. Установите для всех файлов права доступа 644 и владельца root:root.}}<br />
<br />
=== Имя компьютера (hostname) ===<br />
<br />
Имя компьютера настраивается в файле {{ic|/etc/hostname}}. Этот файл не должен содержать системный домен (если таковой имеется). Для установки имени компьютера выполните:<br />
<br />
# hostnamectl set-hostname '''myhostname'''<br />
<br />
Обратитесь к руководствам {{ic|man 5 hostname}} и {{ic|man hostnamectl}} для получения более подробной информации.<br />
<br />
Вот примерный файл:<br />
<br />
{{hc|/etc/hostname|<br />
myhostname<br />
}}<br />
<br />
=== Локаль ===<br />
<br />
Системная локаль по умолчанию настраивается в конфигурационном файле {{ic|/etc/locale.conf}}. Для установки локали по умолчанию выполните:<br />
<br />
# localectl set-locale LANG="ru_RU.UTF-8"<br />
<br />
{{Note|Перед установкой локали по умолчанию вам сперва необходимо сделать локали доступными системе, раскомментировав их в файле {{ic|/etc/locale.gen}} и затем выполнив команду {{ic|locale-gen}} от суперпользователя root. Локаль, установленная командой {{ic|localectl}}, должна быть одной из '''раскомментированных''' локалей в файле {{ic|/etc/locale.gen}}.}}<br />
<br />
Для получения подробной информации о вариантах настройки обратитесь к руководствам {{ic|man 1 localectl}} и {{ic|man 5 locale.conf}}.<br />
* Дальнейшая информация содержится в статье [[Locale]].<br />
<br />
Вот примерный файл:<br />
<br />
{{hc|/etc/locale.conf|2=<br />
LANG=ru_RU.utf8}}<br />
<br />
=== Консоль и раскладка клавиатуры ===<br />
<br />
Файл {{ic|/etc/vconsole.conf}} устанавливает настройки виртуальной консоли (раскладку клавиатуры и консольный шрифт).<br />
<br />
{{hc|/etc/vconsole.conf|2=<br />
KEYMAP=ru<br />
FONT=cyr-sun16<br />
FONT_MAP=}}<br />
<br />
{{Note|С версии {{Pkg|systemd}}-194 используются шрифт ядра и раскладку по умолчанию (т.е. американскую английскую). Нет более необходимости (для тех, кто использует американскую английскую раскладку) настраивать в конфигурационном файле строки {{ic|1=KEYMAP=}} и {{ic|1=FONT=}}, их можно оставить пустыми.}}<br />
<br />
Другой способ настройки раскладки клавиатуры в консоли состоит в использовании команды:<br />
<br />
# localectl set-keymap ru<br />
<br />
Преимущество такого подхода - в том, что он также установит указанную раскладку клавиатуры и для X11.<br />
<br />
Для получения подробной информации о вариантах настройки обратитесь к руководствам {{ic|man 1 localectl}} и {{ic|man 5 vconsole.conf}}.<br />
* Для получения детальной информации обратитесь к разделам [[Fonts#Console_fonts|консольные шрифты (англ.)]] и [[KEYMAP|раскладка клавиатуры (англ.)]].<br />
<br />
=== Временная зона ===<br />
<br />
Временная зона настраивается путем создания соответствующей символической ссылки {{ic|/etc/localtime}} на файл временной зоны в директории {{ic|/usr/share/zoneinfo/}}. Чтобы сделать это автоматически, выполните команду:<br />
<br />
# timedatectl set-timezone Europe/Moscow<br />
<br />
Для получения подробной информации о вариантах настройки обратитесь к руководствам {{ic|man 1 timedatectl}} и {{ic|man 5 localtime}}.<br />
<br />
{{Note|Прежний конфигурационный файл {{ic|/etc/timezone}} объявлен устаревшим с выходом {{pkg|systemd}}-190 и должен быть удален.}}<br />
<br />
Альтернативный метод - создание символической ссылки вручную:<br />
<br />
# ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime<br />
<br />
=== Аппаратные часы ===<br />
<br />
Systemd будет использовать UTC для аппаратных часов по умолчанию.<br />
{{Tip|Обычно рекомендуется запускать [[NTP|демон Network Time Protocol]] для поддержания синхронизации аппаратных часов с системным временем.}}<br />
<br />
==== Аппаратные часы по localtime ====<br />
<br />
Если вы собираетесь выставить аппаратные часы по localtime (местному времени, что '''КАТЕГОРИЧЕСКИ НЕ РЕКОМЕНДУЕТСЯ'''), выполните команду:<br />
<br />
# timedatectl set-local-rtc true<br />
<br />
Если же захотите вернуть ваши аппаратные часы к использованию временного формата UTC, выполните:<br />
<br />
# timedatectl set-local-rtc false<br />
<br />
Помните, что настройка перехода на зимнее/летнее время - неблагодарное занятие. Если переход на зимнее/летнее время происходит в тот момент, когда ваш компьютер выключен, то при следующей загрузке ваши часы будут показывать ошибочное время ([http://www.cl.cam.ac.uk/~mgk25/mswish/ut-rtc.html здесь об этом чуть подробнее (англ.)]). Последние версии ядра устанавливают системное время из RTC (часов реального времени) непосредственно во время загрузки без использования {{ic|hwclock}}, при этом ядро всегда считает, что RTC выставлено по UTC. Это означает, что если RTC выставлено по местному времени (local time), системное время будет изначально установлено ошибочно и затем корректироваться вскоре после этого при каждой загрузке. Это является причиной некоторых досадных багов (идущие назад часы редко являются нужной вещью).<br />
<br />
Причиной, позволяющей RTC быть выставленными по местному времени, является двойная загрузка системы с Windows, ([http://blogs.msdn.com/b/oldnewthing/archive/2004/09/02/224672.aspx которая использует localtime (англ.)]). Windows воспринимает RTC, выставленные по UTC при помощи простого [[Time#UTC in Windows|исправления реестра (англ.)]]. Если вы столкнетесь с подобными проблемами при двойной загрузке с Windows, вы можете установить аппаратные часы на использование местного времени. <br />
<br />
Если вы настроите Windows на использование UTC, также не забудьте отключить функцию "Обновление времени по Интернету" ("Internet Time Update"), иначе для Windows возникнет проблема с аппаратными часами, поскольку система будет пытаться синхронизировать их с временем через Интернет. Вместо этого следует оставить время в формате RTC и синхронизовать через Интернет в Linux посредством демона [[NTP]], как это предлагалось выше.<br />
<br />
* За дальнейшей информацией обратитесь к статье [[Time]].<br />
<br />
=== Подгружаемые модули ядра ===<br />
<br />
Сегодня все необходимые модули для загрузки подгружаются автоматически с помощью [[Udev]], так что, если вам не надо (или же вы не должны) использовать какой-нибудь модуль не из дерева ядра , нет необходимости дополнительно помещать какие-либо модули в какой-то файл конфигурации загрузки. Тем не менее, бывают случаи, когда вы можете подгрузить дополнительный модуль в процессе загрузки или поместить какой-то модуль в черный список, чтобы ваш компьютер работал правильно.<br />
<br />
==== Дополнительно подгружаемые при загрузке модули ====<br />
<br />
Необходимые для загрузки дополнительные модули оформляются в статический список файлов в директории {{ic|/etc/modules-load.d/}}. Каждый из конфигурационных файлов имеет наименование вида {{ic|/etc/modules-load.d/<program>.conf}} (где <program> - имя подгружаемого модуля) и содержит список имен подгружаемых модулей ядра, каждое из которых начинается с новой строки. При этом игнорируются как пустые строки конфигурационных файлов, так и строки, у которых первым символом, отличным о пробела, является символ {{ic|#}} и {{ic|;}}. Например:<br />
<br />
{{hc|/etc/modules-load.d/virtio-net.conf|<br />
# Load virtio-net.ko at boot<br />
virtio-net}}<br />
<br />
Более подробная информация содержится в руководстве {{ic|man 5 modules-load.d}}.<br />
<br />
==== Черный список ====<br />
<br />
Добавление модулей в черный список работает также, как и в случае с {{Pkg|initscripts}}, поскольку в действительности эта функция выполняется таким инструментом, как {{Pkg|kmod}}. Обратитесь к разделу [[Kernel_modules#Blacklisting|Module Blacklisting]] за более подробной информацией.<br />
<br />
=== Монтирование файловых систем ===<br />
<br />
Установка по умолчанию автоматически проверяет файловые системы командой fsck и монтирует файловые системы перед запуском тех сервисов, котрым необходимо иметь эти системы примонтированными. Например, systemd позволяет в автоматическом режиме добиться, что удаленные файловые системы наподобие [[NFS]] и [[Samba]] подключаются после поднятия сети. Поэтому монтирование как локальных, так и удаленных файловых систем, прописанных в {{ic|/etc/fstab}} должно работать "из коробки".<br />
<br />
Обратитесь к руководству {{ic|man 5 systemd.mount}} для получения более подробной информации.<br />
<br />
==== Автомонтирование ====<br />
<br />
* Если ваш раздел {{ic|/home}} занимает большой объем, лучшим вариантом было бы позволить сервисам не зависеть от подключения {{ic|/home}} и запускать данные сервисы, когда {{ic|/home}} еще подвергается проверке при загрузке системы. Добиться такого результата можно добавлением следующих параметров в запись файла {{ic|/etc/fstab}}, касающуюся раздела {{ic|/home}}:<br />
<br />
noauto,x-systemd.automount<br />
<br />
Такие параметры вызовут команду fsck и примонтируют {{ic|/home}} при первом обращении к данному разделу, и ядро будет буферизовать все файлы доступа к {{ic|/home}} до готовности данного раздела.<br />
<br />
* То же самое применимо и к удаленным файловым системам. Если вы хотите, чтобы монтирование данных систем происходило только по мере доступа к ним, вы можете использовать параметр {{ic|1=x-systemd.device-timeout=#}} в файле {{ic|/etc/fstab}} для определения таймаута в том случае, кода сетевые ресурсы оказываются недоступны.<br />
<br />
* В случае использования зашифрованных файловых систем с ключами доступа, вам также Iследует добавить параметр {{ic|noauto}} в соответствующие записи файла {{ic|/etc/crypttab}}. systemd не будет подключать зашифрованные устройства при загрузке, но, вместо этого, дождется реального обращения к ним и автоматически откроет к ним доступ с использованием определенных ключей перед тем, как они будут примонтированы. Это сэкономит несколько секунд при загрузке системы, например, в случае использования зашифрованного устройства RAID, потому что systemd не будет дожидаться от устройства, когда оно станет доступным. Например:<br />
<br />
{{hc|/etc/crypttab|<br />
data /dev/md0 /root/key noauto}}<br />
<br />
=== LVM ===<br />
<br />
Если у вас имеются тома LVM, не активированные посредством [[Mkinitcpio|initramfs]], включите сервис {{ic|lvm.service}} (предоставляемый пакетом {{pkg|lvm2}}):<br />
<br />
# systemctl enable lvm<br />
<br />
Точно так же, если у вас LVM на устройствах с шифрованием, монтируемым позже в процессе загрузки (например, из {{ic|/etc/crypttab}}), вам необходимо включить сервис {{ic|lvm-on-crypt.service}} (также предоставляемый пакетом {{pkg|lvm2}}):<br />
<br />
# systemctl enable lvm-on-crypt<br />
<br />
=== Управлением питанием ACPI ===<br />
<br />
Systemd обрабатывает некоторые события, связанные с [http://кru.wikipedia.org/wiki/ACPI ACPI], что настраивается при помощи параметров в конфигурационном файле {{ic|/etc/systemd/logind.conf}}:<br />
<br />
* {{ic|HandlePowerKey}}: определяет действия системы при нажатии кнопки питания (вкл./выкл.).<br />
* {{ic|HandleSuspendKey}}: определяет действия системы при нажатии кнопки спящего режима.<br />
* {{ic|HandleHibernateKey}}: определяет действия системы при нажатии кнопки ждущего режимаs.<br />
* {{ic|HandleLidSwitch}}: определяет действия системы при закрытии крышки компьютера.<br />
<br />
Для соответствующих действий могут использоваться значения {{ic|ignore}} (пропустить), {{ic|poweroff}} (отключить питание), {{ic|reboot}} (перезагрузить), {{ic|halt}} (выключить), {{ic|suspend}} (включить спящий режим), {{ic|hibernate}} (включить ждущий режим) или {{ic|kexec}} (системный вызов позволяющий оперативно переключиться в другое ядро).<br />
<br />
Если данные параметры не определены, по умолчанию systemd будет использовать следующие: {{ic|1=HandlePowerKey=poweroff}}, {{ic|1=HandleSuspendKey=suspend}}, {{ic|1=HandleHibernateKey=hibernate}}, и {{ic|1=HandleLidSwitch=suspend}}.<br />
<br />
В системах без графического интерфейса или использующих простые оконные менеджеры наподобие like [[i3]] или [[awesome]], так можно заменить демон [[acpid]], который обычно используется для реагирования на данные события ACPI.<br />
<br />
В текущей версии systemd параметры {{ic|Handle}} будут применены ко всей системе, если только они не "подавляются (временно отключены) другой программой, такой, как менеджер питания данного окружения рабочего стола. Если эти ограничений нет, вы можете столкнуться с ситуацией, когда systemd приводит вашу систему в спящий режим, а затем, когда система пробуждается менеджером управлением питания, снова "усыпляет" ее.<br />
<br />
{{Warning|В настоящее время менеджеры управления питанием в новейших версиях сред [[KDE]] и [[GNOME]] являются единственными, которые использюет такие команды "подавления". До тех пор, пока их не будут применять другие менеджеры, вам надо выставить в параметрах {{ic|Handle}} значение {{ic|ignore}}, если вы хотите, чтобы события ACPI обрабатывались в случае использования [[Xfce]], [[acpid]] или других программ. Но на подходе новые версии, которые включат данную функциональность.}}<br />
<br />
{{Note|Systemd также может использовать для перевода системы в спящий/ждущий режим другие движки (такие, как [[Uswsusp]] или [[TuxOnIce]]), в дополнение к движку ''ядра''.}}<br />
<br />
==== Хуки спящего режима ====<br />
<br />
Systemd в своих командах {{ic|systemctl suspend}} или {{ic|systemctl hibernate}} не использует [[pm-utils]] для "усыпления" машины; хуки [[pm-utils]], включая любые [[Pm-utils#Creating_your_own_hooks|пользовательские хуки]] не будут работать. Тем не менее, systemd предоставляет схожий механизм запуска пользовательских скриптов для данных событий. Systemd запускает все исполняемые файлы в директории {{ic|/usr/lib/systemd/system-sleep/}}, передавая каждому из них два аргумента:<br />
<br />
* Аргумент 1: или {{ic|pre}}, или {{ic|post}}, в зависимости от которых машина либо "уснет", либо будет "пробуждена";<br />
* Аргумент 2: или {{ic|suspend}}, или {{ic|hibernate}}, в зависимости от того, что было вызвано.<br />
<br />
В отличие от [[pm-utils]], systemd запустит данные скрипты одновременно, а не один после другого.<br />
<br />
Вывод любого пользовательского скрипта будет записан сервисом {{ic|systemd-suspend.service}} или {{ic|systemd-hibernate.service}}. Вы вы можете увидеть данный выход в [[#Журнал systemd|журнале]] systemd:<br />
<br />
# journalctl -b -u systemd-suspend<br />
<br />
Обратите внимание, что вместо использования скриптов вы также можете использовать специальные целевые юниты - {{ic|sleep.target}}, {{ic|suspend.target}} или {{ic|hibernate.target}} для того, чтобы подключить к другим юнитам возможности перехода в спящий режима.<br />
<br />
Пример пример пользовательского скрипта по переходу в спящий режим:<br />
<br />
{{hc|/usr/lib/systemd/system-sleep/example.sh|<br />
#!/bin/sh<br />
case $1/$2 in<br />
pre/*)<br />
echo "Going to $2..."<br />
;;<br />
post/*)<br />
echo "Waking up from $2..."<br />
;;<br />
esac}}<br />
<br />
Обратитесь к руководствам {{ic|man 7 systemd.special}} и {{ic|man 8 systemd-sleep}} для получения дальнейшей информации.<br />
<br />
=== Временные файлы ===<br />
<br />
Systemd-tmpfiles использует конфигурационные файлы в директориях {{ic|/usr/lib/tmpfiles.d/}} и {{ic|/etc/tmpfiles.d/}} для определения действий с временными файлами и директориями (создание, очистка и удаление их), обычно расположенные в {{ic|/run}} or {{ic|/tmp}}. Каждый файл с настройками имеет название вида {{ic|/etc/tmpfiles.d/<program>.conf}}. Данные конфигурационные файлы имеют приоритет по сравнению с любыми файлами с таким же названием, расположенными в директории {{ic|/usr/lib/tmpfiles.d/}}.<br />
<br />
Временные файлы tmpfiles обычно поставляются вместе с сервис-файлами для создания директорийк. которые, как ожидается, будут использоваться определенными демонами. Например, демон [[Samba]] предполагает наличие директории {{ic|/var/run/samba}} с соответствующими правами доступа. В данном случае tmpfile выглядит следующим образом:<br />
<br />
{{hc|/usr/lib/tmpfiles.d/samba.conf|<br />
D /var/run/samba 0755 root root}}<br />
<br />
Тем не менее, tmpfiles также могут использоваться для записи значений в определенные файлы во врем загрузки. К примеру, если вы используете {{ic|/etc/rc.local}} для того, чтобы отключить пробуждение системы USB-устройствами, при помощи команды {{ic|echo USBE > /proc/acpi/wakeup}}, вы можете вместо этого использовать следующий tmpfile:<br />
<br />
{{hc|/etc/tmpfiles.d/disable-usb-wake.conf|<br />
w /proc/acpi/wakeup - - - - USBE}}<br />
<br />
Метод с использованием tmpfiles в данном случае рекомендуется, поскольку systemd в действительности не поддерживает {{ic|/etc/rc.local}}.<br />
<br />
Обратитесь к руководству {{ic|man 5 tmpfiles.d}} за более подробной информацией.<br />
<br />
=== Юнит ===<br />
<br />
Юнит (англ. unit) - конфигурационный файл, содержащий информацию о сервисе (службе), сокете, устройстве, точке монирования/автомонирования, файле подкачке или разделе, определяемом для загрузки уровне запуска, пути в файловой системе или таймере, которые контролируются и управляются при помощи systemd. Синтаксис юнитов навеян спецификацией .desktop-файлов (XDG Desktop Entry Specification), которая, в свою очередь, вдохновлялась .ini-файлами от Microsoft Windows. <br />
<br />
Обратитесь к руководству {{ic|man 5 systemd.unit}} для получения дальнейшей информации.<br />
<br />
== Переход от initscripts к использованию systemd ==<br />
<br />
=== Эмуляция initscripts ===<br />
<br />
Интеграция с классической конфигурацией Arch'а обеспечивается пакетом {{Pkg|initscripts}}. В том случае, если {{Pkg|initscripts}} установлен параллельно с systemd и система загружена с использованием systemd, systemd будет выполнять следующую последовательность действий:<br />
<br />
# # Проводить синтаксический разбор массива {{ic|DAEMONS}} в файле {{ic|/etc/rc.conf}} и запускать при загрузке все находящиеся там демоны (см. ниже)<br />
# Выполнять при загрузке {{ic|/etc/rc.local}}<br />
# Выполнять при завершении работы системы {{ic|/etc/rc.local.shutdown}}<br />
<br />
Эмуляция initscripts рассматривается как просто переходная мера для легкой миграции пользователей на systemd и '''в конечном итоге будет отброшена'''. Система с "родной" systemd не зависит от централизованной конфигурации в {{ic|rc.conf}}, поэтому рекомендуется использовать [[#Родные системные файлы|родные конфигурационные файлы systemd]], которые имеют приоритет над настройками из {{ic|/etc/rc.conf}}.<br />
<br />
{{Note|Рекомендуемый путь по замене {{ic|/etc/rc.local}} состоит в написании пользовательского сервис-файла для всего того, что вы хотите запускать при загрузке системы. Обратитесь к соответствующему [[#Написание_пользовательского_.service_файла|разделу]] данной статьи.}}<br />
<br />
{{Note|Если вы отключали использование сочетания клавиш для перезагрузки системы {{keypress|Ctrl+Alt+Del}} в файле {{ic|/etc/inittab}}, теперь вам надо заново сделать это для systemd командой {{ic|systemctl mask ctrl-alt-del.target}}, выполняемой от суперпользователя root.}}<br />
<br />
==== Отказ от массива DAEMONS ====<br />
<br />
Для "чистой" установки systemd, вы можете полностью удалить файл {{ic|/etc/rc.conf}} и включать сервисы только посредством systemd. Для каждого сервиса с именем {{ic|<service_name>}} в массиве {{ic|DAEMONS}} из файла {{ic|/etc/rc.conf}} выполните команду:<br />
<br />
# systemctl enable <service_name><br />
<br />
{{Tip|Для получения списка обычно используемых демонов с их эквивалентами в initscripts и systemd, обратитесь к [[Daemons List|данной таблице]].}}<br />
<br />
Если сервис-файл {{ic|<service_name>.service}} отсутствует:<br />
<br />
* сервис-файл может быть недоступен для systemd. В этом случае вам нужно сохранить конфигурационный файл {{ic|rc.conf}} для запуска этих сервисов во время загрузки системы.<br />
* Systemd может использовать для сервисов другие имена, например, {{ic|cronie.service}} заменяет демон {{ic|crond}}; {{ic|alsa-store.service}} и {{ic|alsa-restore.service}} заменяют демон {{ic|alsa}}. Другой важный пример - демон {{ic|network}}, которого сменил целый набор сервис-файлов (обратитесь к статье [[Configuring Network]] для получения дальнейшей информации.)<br />
<br />
{{Tip|Вы можете заглянуть вовнутрь пакета, содержащего стартовые скрипты демона, чтобы узнать имена его сервис-файла. К примеру:<br />
$ pacman -Ql cronie<br />
[...]<br />
cronie /etc/rc.d/crond #Демон initscript, указываемый в массиве {{ic|DAEMONS}} (не используется при "чистой" настройке systemd)<br />
[...]<br />
cronie /usr/lib/systemd/system/cronie.service #Соответствующий сервис systemd<br />
[...]<br />
}}<br />
<br />
* Наконец, пользователю не нужно включать некоторые сервисы явным образом. Например, {{ic|dbus.service}} будет включен автоматическики при установке {{ic|dbus-core}}. {{ic|alsa-store.service}} и {{ic|alsa-restore.service}} также включены systemd автоматически. Проверьте список доступных сервисов и их состояние при помощи команды {{ic|systemctl}}, например: {{ic|systemctl status <service_name>}} (где <service_name> - имя сервиса).<br />
<br />
=== Сравнительная таблица устаревшей и "родной" конфигураций ===<br />
<br />
{{Warning|Данный раздел оставлен в русской версии временно, до полной миграции пользователей на использование "чистого" systemd.}}<br />
<br />
{| class="wikitable"<br />
|-<br />
! scope="col"| Настройка<br />
! scope="col"| Конфигурационный файл (файлы)<br />
! scope="col"| Устаревшая секция [https://projects.archlinux.org/initscripts.git/tree/rc.conf?id=97f0cd6751e8d22c14d7492cdc2186cf41157ba6 rc.conf]<br />
|-<br />
| align="center"|Имя компьютера (Hostname)<br />
| align="left"|{{ic|/etc/hostname}}<br />
{{ic|/etc/hosts}}<br />
| align="center"|{{ic|NETWORKING}}<br />
|-<br />
| align="center"|Консоль и раскладка клавиатуры<br />
| align="left"|{{ic|/etc/vconsole.conf}}<br />
| align="center"|{{ic|LOCALIZATION}}<br />
|-<br />
| align="center"|Локаль<br />
| align="left"|{{ic|/etc/locale.conf}}<br />
{{ic|/etc/locale.gen}}<br />
| align="center"|{{ic|LOCALIZATION}}<br />
|-<br />
| align="center"|Временная зона<br />
| align="left"|{{ic|/etc/localtime}}<br />
| align="center"|{{ic|LOCALIZATION}}<br />
|-<br />
| align="center"|Аппаратные часы<br />
| align="left"|{{ic|/etc/adjtime}}<br />
| align="center"|{{ic|LOCALIZATION}}<br />
|-<br />
| align="center"|Модули ядра<br />
| align="left"|{{ic|/etc/modules-load.d/}}<br />
| align="center"|{{ic|HARDWARE}}<br />
|}<br />
<br />
=== Эмуляция /etc/rc.local ===<br />
<br />
{{Warning|Данный раздел оставлен в русской версии временно, до полной миграции пользователей на использование "чистого" systemd.}}<br />
<br />
Если вы хотите при использовании systemd сохранить простоту {{ic|/etc/rc.local}} , вам нужно создать следующий сервис-файл и включить его. Просто добавьте строки {{ic|1=ExecStart=}} для тех команд, которые вы хотите запустить. Если же вам в данном случае требуется более сложная функциональность (например, циклы с {{ic|for}}), то вы можете создать скрипт Bash и выполнять его из сервис-файла. Удалите {{ic|1=ExecStart=/bin/true}}, если вы здесь действительно добавляете команду.<br />
<br />
{{hc|/etc/systemd/system/rc-local.service|<nowiki><br />
[Unit]<br />
Description=/etc/rc.local compatibility<br />
<br />
[Service]<br />
Type=oneshot<br />
ExecStart=/bin/true<br />
RemainAfterExit=yes<br />
<br />
[Install]<br />
WantedBy=multi-user.target<br />
</nowiki>}}<br />
<br />
== Основы использования systemctl ==<br />
<br />
Главная команда для наблюдения и контроля за состоянием systemd - команда {{ic|systemctl}}. Некоторые из вариантов ее использования связаны с изучением состояния системы и управлением сервисами. Обратитесь к странцам руководства {{ic|man 1 systemctl}} для получения более детальной информации.<br />
<br />
{{Tip|Вы можете использовать приведенные ниже команды {{ic|systemctl}} с ключом {{ic|-H <user>@<host>}} для того, чтобы контролировать systemd на удаленной машине. В этом случае для соединения с удаленным процессом systemd будет использовать [[SSH]].}}<br />
<br />
{{Note|{{ic|systemadm}} - официальная графическая оболочка для {{ic|systemctl}}. Она доступна в виде пакета {{AUR|systemd-ui-git}} из [[AUR]].}}<br />
<br />
=== Анализ состояния системы ===<br />
<br />
Список запущенных юнитов:<br />
<br />
$ systemctl<br />
<br />
или:<br />
<br />
$ systemctl list-units<br />
<br />
Список юнитов, попытка запуска которых завершилась неудачей:<br />
<br />
$ systemctl --failed<br />
<br />
Доступные юниты можно посмотреть в директориях {{ic|/usr/lib/systemd/system/}} и {{ic|/etc/systemd/system/}} (последняя директория имеет приоритет). Вы можете увидеть список установленных юнитов командой:<br />
<br />
$ systemctl list-unit-files<br />
<br />
=== Использование юнитов ===<br />
<br />
Юниты могут быть сервисами ({{ic|.service}}), точками монтирования ({{ic|.mount}}) или сокетами ({{ic|.sockets}}). При использовании команды {{ic|systemctl}} необходимо всегда указывать полное имя файла, включая расширение. Однако, есть несколько сокращений при определении юнита следующими командами{{ic|systemctl}}:<br />
<br />
* Ели вы не указали суффикс, systemctl предполагает, что это {{ic|.service}}. Например, {{ic|netcfg}} и {{ic|netcfg.service}} будут трактоваться одинаково.<br />
* Точки монтирования будут автоматически преобразованы в соответствующий юнит {{ic|.mount}}. Например, указание {{ic|/home}} равнозначно {{ic|home.mount}}.<br />
* Аналогично точкам монтирования, имена устройств автоматически преобразуются в соответствующий юнит {{ic|.device}}, поэтому указание {{ic|/dev/sda2}} полностью соответствует юниту {{ic|dev-sda2.device}}.<br />
<br />
Обратитесь к руководству {{ic|man systemd.unit}} для получения детальной информации.<br />
<br />
{{Note|При использовании юнитов следует обращать внимание на регистр букв в наименовании сервис-файлов: так, необходимо использовать ''NetworkManager.'''service''' '' (запомните употребление в данном названии букв в верхнем регистре) для включения сервиса NetworkManager'а, в противном случае вы получите сообщение об ошибке и сервис во время загрузки системы не запустится.}}<br />
<br />
Незамедлительно запустить юнит:<br />
<br />
# systemctl start <unit><br />
<br />
Незамедлительно остановить юнит:<br />
<br />
# systemctl stop <unit><br />
<br />
Перезапустить юнит:<br />
<br />
# systemctl restart <unit><br />
<br />
Запросить у юнита перезагрузку его настроек:<br />
<br />
# systemctl reload <unit><br />
<br />
Показать статус юнита, а также запущен он или нет:<br />
<br />
$ systemctl status <unit><br />
<br />
Проверить включение юнита (т.е. разрешен ли юниту запуск при загрузке системы):<br />
<br />
$ systemctl is-enabled <unit><br />
<br />
Включить юнит (разрешить юниту запуск при загрузке системы):<br />
<br />
# systemctl enable <unit><br />
<br />
{{Note| Если сервис-файлы не имеют раздела {{ic|Install}}, это обычно означает, что данные сервисы вызываются автоматически другими сервисами. Но если вам требуется установить их вручную, используйте следующую команду, заменив {{ic|foo}} именем вашего сервиса.<br />
# ln -s /usr/lib/systemd/system/''foo''.service /etc/systemd/system/graphical.target.wants/<br />
}}<br />
<br />
Выключить юнит (запретить юниту запуск при загрузке системы):<br />
<br />
# systemctl disable <unit>}}<br />
<br />
Показать страницу помощи для юнита (необходима поддержка этой функции в указанном файле юнита):<br />
<br />
$ systemctl help <unit><br />
<br />
=== Управление питанием ===<br />
<br />
Если у вас локальная пользовательская сессия {{ic|systemd-logind}} и нет других активных сессий, приведенные ниже команды сработают и без привилегий суперпользователя root. В противном случае (например, вследствие того, что пользователь залогинился в tty), systemd автоматически запросит у вас пароль root.<br />
<br />
Завершить работу и перезагрузить систему:<br />
<br />
$ systemctl reboot<br />
<br />
Завершить работу и выключить компьютер (с отключением питания):<br />
<br />
$ systemctl poweroff<br />
<br />
Завершить работу и остановить систему:<br />
<br />
$ systemctl halt<br />
<br />
Перевести систему в спящий режим:<br />
<br />
$ systemctl suspend<br />
<br />
Перевести систему в ждущий режим:<br />
<br />
$ systemctl hibernate<br />
<br />
== Запуск окружения рабочего стола из systemd ==<br />
<br />
Чтобы включить графический вход в систему, запустите выбранный вами демон [[Display Manager (Русский)|экранного менеджера]] (например, [[KDM]]). В настоящий момент доступны сервис-файлы для [[GDM]], [[KDM]], [[SLiM]], [[XDM]], [[LXDM]] и [[LightDM]].<br />
<br />
# systemctl enable kdm<br />
<br />
Эта команда должна работать "из коробки". Если вдруг она не сработала, то, возможно, у вас {{ic|default.target}} установлен вручную или остался с прежней установки:<br />
<br />
{{hc|# ls -l /etc/systemd/system/default.target|<br />
/etc/systemd/system/default.target -> /usr/lib/systemd/system/graphical.target}}<br />
<br />
Просто удалите символическую ссылку и systemd будет использовать целевой юнит по умолчанию - {{ic|default.target}} (т.е. {{ic|graphical.target}}).<br />
<br />
# rm /etc/systemd/system/default.target<br />
<br />
=== Использование systemd-logind ===<br />
<br />
{{Note|С 30.10.2012 [[ConsoleKit]] был [http://archlinux.org.ru/node/352/ заменен на systemd-logind] как механизм входа в окружение рабочего стола по умолчанию.}}<br />
<br />
Для того, чтобы проверить статус вашей пользовательской сессии, вы можете использовать команду {{ic|loginctl}}. Все действия [[PolicyKit]] наподобие перевода системы в спящий режим или монтирования внешних носителей с помощью [[Udisks]] должны работать автоматически.<br />
<br />
$ loginctl show-session $XDG_SESSION_ID<br />
<br />
== Написание пользовательского .service файла ==<br />
<br />
=== Обработка зависимостей ===<br />
<br />
В случае использования systemd зависимости могут быть разрешены правильным построением файлов юнитов. ,Наиболее частый случай -- когда юниту {{ic|A}} требуется, чтобы юнит {{ic|B}} был запущен перед тем, как запустится сам юнит {{ic|A}}. В этом случае добавьте строки {{ic|1=Requires=B}} и {{ic|1=After=B}} в секцию {{ic|[Unit]}} сервис-файла юнита {{ic|A}}. Если подобная зависимость не является обязательной, добавьте соответственно взамен указанных выше строки {{ic|1=Wants=B}} и {{ic|1=After=B}}. Обратите внимание, что {{ic|1=Wants=}} и {{ic|1=Requires=}} не подразумевают {{ic|1=After=}}, что означает, что если {{ic|1=After=}} не определено, два юнита будут запущены параллельно друг другу.<br />
<br />
Обычно зависимости указываются в сервис-файлах, а не в целевых юнитах. Например, {{ic|network.target}} потребуется любому сервису, который связан с настройкой ваших сетевых интерфейсов, поэтому в любом случае определите загрузку вашего пользовательского юнита после запуска {{ic|network.target}}.<br />
<br />
=== Тип ===<br />
<br />
Существует несколько различных типов запуска служб, которые надо иметь в виду при написании пользовательского сервис-файла. Тип запуска определяется параметром {{ic|1=Type=}} в секции {{ic|[Service]}}. Обратитесь к руководству {{ic|man systemd.service}} для получения более детального объяснения.<br />
<br />
* {{ic|1=Type=simple}}: systemd предполагает, что сервис будет запущен незамедлительно. Процесс при этом не должен форкнуться. Не используйте этот тип, если другим сервисы зависят от очередности при запуске данного сервиса, за исключением активации сокета.<br />
* {{ic|1=Type=forking}}: systemd предполагает, что сервис запускается однократно, процесс форкается и родительский процесс завершается. Используйте данный тип для запуска классических демонов за исключением тех случаев, когда, как вам известно, в таком поведении процесса нет необходимости. Вам следует также определить {{ic|1=PIDFile=}}, чтобы systemd могла отслеживать основной процесс.<br />
* {{ic|1=Type=oneshot}}: Полезен для скриптов, которые выполняют одну работу, а потом завершаются. Вам может понадобиться также установить параметр {{ic|1=RemainAfterExit=}}, чтобы systemd по-прежнему считала процесс активным, даже после его завершения<br />
* {{ic|1=Type=notify}}: Идентичен параметру {{ic|1=Type=simple}}, но с той оговоркой, что демон пошлет systemd сигнал о своей готовности. Эталонная реализация данного уведомления обеспечивается библиотекой {{ic|libsystemd-daemon.so}}.<br />
* {{ic|1=Type=dbus}}: Сервис считается находящимся в состоянии готовности, когда определенное {{ic|BusName}} появляется в системной шине DBus.<br />
<br />
=== Замена предоставленных пакетами файлов юнитов ===<br />
<br />
Файлы юнитов в директории {{ic|/etc/systemd/system/}} имеют приоритет над такими же файлами в директории {{ic|/usr/lib/systemd/system/}}.<br />
Для создания собственной версии юнита (который не будет затерт при обновлении), скопируйте старый юнит из директории {{ic|/usr/lib/}} в директорию {{ic|/etc/}} и внесите в эту копию свои изменения. Альтернативным вариантом является использование {{ic|.include}} для парсинга существующего сервис-файла и затем переопределения или добавления новых опций. Например, если вы просто хотите добавить в сервис-файл дополнительную зависимость, вы можете использовать такую команду в юните:<br />
<br />
{{hc|/etc/systemd/system/<service-name>.service|2=<br />
.include /usr/lib/systemd/system/<service-name>.service<br />
<br />
[Unit]<br />
Requires=<new dependency><br />
After=<new dependency>}}<br />
<br />
Затем выполните следующие команды для того, чтобы изменения вступили в силу:<br />
<br />
# systemctl reenable <unit><br />
# systemctl restart <unit><br />
<br />
{{Tip|Вы можете использовать команду {{ic|systemd-delta}}, чтобы увидеть, какие файлы юнитов были переопределены и что в точности было изменено.}}<br />
<br />
=== Подсветка синтаксиса файлов юнитов в Vim ===<br />
<br />
подсветка синтаксиса файлов юнитов для systemd в редакторе [[Vim]] может быть осуществлена путем установки пакета {{AUR|vim-systemd}} из [[Arch User Repository|AUR]].<br />
<br />
== Уровни запуска/цели ==<br />
<br />
Уровни запуска (по-английски уровень запуска - runlevel) для systemd являются устаревшей концепцией. Systemd использует ''цели'' (англ. target), которые выполняют ту же задачу, что и уровни запуска, но действуют немного по-другому. Каждая ''цель'' поименована (т.е. имеет собственное имя, а не номер) и, как предполагается, предназначена для конкретных задач; возможно иметь в одно и то же время активными несколько таких целей. Некоторые ''цели'' реализованы так, что наследуют все сервисы других ''целей'' и добавляют к ним свои сервисы. В systemd имеются также ''цели'', которые имитируют общие уровни запуска SystemVinit, поэтому вы можете переключаться между целевыми юнитами с использованием привычной команды {{ic|telinit RUNLEVEL}}. <br />
<br />
=== Получение информации о текущем уровне запуска/цели ===<br />
<br />
При использовании systemd для этого предназначена следующая команда (заменяющая {{ic|runlevel}}):<br />
<br />
$ systemctl list-units --type=target<br />
<br />
=== Создание пользовательской цели ===<br />
<br />
Уровни загрузки, по которым расписаны конкретные задачи на установке дистрибутива Fedora по умолчанию - 0, 1, 3, 5 и 6; есть маппинг 1:1 с помощью конкретной цели systemd. К сожалению, не существует хорошего способа сделать то же самое для определяемых пользователем уровней, таких, как 2 и 4. Использование их предполагает, что вы создаете новый именованный '' целевой юнит''systemd наподобие {{ic|/etc/systemd/system/<your target>}}, который берет за основу один из существующих уровней запуска (взгляните, например, на {{ic|/usr/lib/systemd/system/graphical.target}}), создаете также директорию {{ic|/etc/systemd/system/<your target>.wants}} и затем символические ссылки на те дополнительные сервисы из директории {{ic|/usr/lib/systemd/system/}}, которые вы хотите включить при загрузке.<br />
<br />
== Таблица уровней запуска и их аналогов в Systemd ==<br />
<br />
{| class="wikitable" border="1" cellpadding="5" cellspacing="0"<br />
! Уровнень запуска SysV !! systemd Target !! Примечание<br />
|-<br />
| 0 || runlevel0.target, poweroff.target || Выключить систему.<br />
|-<br />
| 1, s, single || runlevel1.target, rescue.target || Однопользовательский уровень запуска.<br />
|-<br />
| 2, 4 || runlevel2.target, runlevel4.target, multi-user.target || Уровень запуска, определенный пользователем/специфичный для узла. По умолчанию соответствует уровню запуска 3.<br />
|-<br />
| 3 || runlevel3.target, multi-user.target || Многопользовательский режим без графики. Пользователи, как правило, входят с помощью множества консолей или через сеть.<br />
|-<br />
| 5 || runlevel5.target, graphical.target || Многопользовательский режим с графикой. Обычно эквивалентен запуску всех сервисов уровня 3 и графическому менеджеру входа.<br />
|-<br />
| 6 || runlevel6.target, reboot.target || Перезагрузка.<br />
|-<br />
| emergency || emergency.target || Аварийная оболочка.<br />
|-<br />
|}<br />
<br />
=== Изменение текущей цели ===<br />
<br />
В systemd цели доступны посредством " целевых юнитов". Вы можете изменить их командой:<br />
<br />
# systemctl isolate graphical.target<br />
<br />
Данная команда изменит только лишь текущую цель и не повлияет на следующую загрузку системы. Она соответствует командам наподобие {{ic|telinit 3}} или {{ic|telinit 5}} для Sysvinit.<br />
<br />
=== Изменение цели для загрузки ===<br />
<br />
Стандартная цель - {{ic|default.target}}, которая по умолчанию является псевдонимом юнита {{ic|graphical.target}} (примерно соответствующего прежнему уровню выполнения 5). Для изменения цели при загрузке по умолчанию, добавьте следующий дополнительный [[kernel parameters|параметр ядра]] в вашем загрузчике:<br />
<br />
{{Tip|Расширение {{ic|.target}} можно опустить.}}<br />
<br />
* {{ic|1=systemd.unit=multi-user.target}} (что примерно соответствует прежнему уровню выполнения 3),<br />
* {{ic|1=systemd.unit=rescue.target}} (что примерно соответствует прежнему уровню выполнения 1).<br />
<br />
Другой путь заключается в том, чтобы оставить загрузчик без изменений и изменить целевой юнит по умолчанию - {{ic|default.target}}, что достигается командой {{ic|systemctl}}:<br />
<br />
# systemctl enable multi-user.target<br />
<br />
Эффект от применения данной команды выводится через {{ic|systemctl}}; символическая ссылка на новый целевой юнит по умолчанию создается в директории {{ic|/etc/systemd/system/default.target}}. Это сработает в том случае (и только в том случае), если имеется следующая секция:<br />
<br />
[Install]<br />
Alias=default.target<br />
<br />
в конфигурационном файле целевого юнита. В настоящий момент как {{ic|multi-user.target}}, так и {{ic|graphical.target}} оба имеют данную секцию.<br />
<br />
== Журнал ==<br />
С версии 38 systemd имеет собственную систему ведения логов - журнал (journal). По умолчанию, более не требуется запуск демона syslog. Для чтения логов используйте команду:<br />
<br />
# journalctl<br />
<br />
По умолчанию (когда в конфигурационном файле {{ic|/etc/systemd/journald.conf}} параметр {{ic|Storage&#61;}} имеет значение {{ic|auto}}) журнал записывается в директорию {{ic|/run/systemd/journal}}. Если директория {{ic|/var/log/journal/}} не существует (например, вы или какая-либо программа удалили ее), systemd '''не''' создаст ее автоматически, но вместо этого запишет свои логи в директорию {{ic|/run/systemd/journal}}. Это означает, что логи будут потеряны при перезагрузке.<br />
<br />
=== Фильтрация вывода ===<br />
<br />
{{ic|journalctl}} позволяет фильтровать вывод по особым полям.<br />
<br />
Примеры:<br />
<br />
Показать все сообщения с момента текущей загрузки системы:<br />
<br />
# journalctl -b<br />
<br />
Последние сообщения:<br />
<br />
# journalctl -f<br />
<br />
Показать все сообщения определенной программы:<br />
<br />
# journalctl /usr/lib/systemd/systemd<br />
<br />
Показать все сообщения определенного процесса:<br />
<br />
# journalctl _PID=1<br />
<br />
Показать все сообщения определенного юнита:<br />
<br />
# journalctl -u netcfg<br />
<br />
Обратитесь к {{ic|man journalctl}} и {{ic|systemd.journal-fields}} или [http://0pointer.de/blog/projects/journalctl.html блог Леннерта (англ.)] для получения детальной информации.<br />
<br />
=== Ограничение размера журнала ===<br />
<br />
Если журнал сохраняется при перезагрузке, размер его по умолчанию ограничен значением в 10% от объема соответствующей файловой системы. Например, для директории {{ic|/var/log/journal}}, расположенной на корневом разделе в 50 Гбайт, максимальный размер журналируемых данных составит до 5 Гбайт. Максимальный объем постоянного журнала можно контролировать при помощи значения {{ic|SystemMaxUse}} в конфигурационном файле {{ic|/etc/systemd/journald.conf}}, поэтому для ограничения его объемом в 50 Mбайт раскомментируйте и отредактируйте соответствующую строку:<br />
<br />
SystemMaxUse=50M<br />
<br />
Обратитесь к {{ic|man journald.conf}} для получения дальнейшей информации.<br />
<br />
=== Journald в связке с классическим демоном syslog ===<br />
<br />
Совместимость с классической реализацией syslog обеспечивается сокетом {{ic|/run/systemd/journal/syslog}}, в который перенаправляются все сообщения. Чтобы дать возможность демону syslog работать вместе с журналом systemd, следует привязать данный демон к указанному сокету вместо {{ic|/dev/log}} ([http://lwn.net/Articles/474968/ официальное сообщение]). Пакетом {{pkg|syslog-ng}} в репозиториях автоматически предоставляется необходимая конфигурация.<br />
<br />
# systemctl enable syslog-ng<br />
<br />
== Сеть ==<br />
<br />
{{Warning|Данный раздел в английской версии включен в состав статьи [[Configuring Network]]; в русской версии временно оставлен из-за того, что русский вариант [[Configuring Network (Русский)]] устарел в сравнении с английским.}}<br />
<br />
=== Динамическое подключение (DHCP) с использованием dhcpcd ===<br />
<br />
Если хотите использовать только DHCP для своего соединения Ethernet, вы можете воспользоваться сервисом {{ic|dhcpcd@.service}} (который поставляется пакетом {{Pkg|dhcpcd}}).<br />
<br />
Чтобы подключить DHCP для {{ic|eth0}}, просто выполните команду:<br />
<br />
# systemctl start dhcpcd@eth0.service<br />
<br />
Вы можете включить этот сервис, и он будет автоматически запускаться при загрузке. Это делается командой:<br />
<br />
# systemctl enable dhcpcd@eth0.service<br />
<br />
Иногда сервис dhcpd запускается до загрузки модуля вашей сетевой карты ({{bug|30235}}), в этом случае вручную добавьте вашу сетевую карту в конфигурационный файл {{ic|/etc/modules-load.d/*.conf}}. Например, для карты Realtek необходима загрузка модуля {{ic|r8169}}, поэтому создайте такой конфигурационный файл:<br />
<br />
{{hc|/etc/modules-load.d/realtek.conf|2=<br />
r8169}}<br />
<br />
=== Другие конфигурации ===<br />
<br />
Для статического подключения, беспроводной сети или сложной конфигурации сети наподобие сетевого моста, вы можете использовать [[Netcfg#systemd_support|netcfg]] или [[NetworkManager#Enable_NetworkManager_under_Native_systemd_system|NetworkManager]], для обоих этих инструментов управления сетью имеются сервис-файлы для systemd.<br />
<br />
{{Note|Если вы хотите использовать netcfg, NetworkManager или другие программы управления сетью, вам не надо в этом случае запускать или включать сервис dhcpcd как показано в предыдущем параграфе.}}<br />
<br />
== Оптимизация ==<br />
<br />
=== Анализ процесса загрузки ===<br />
<br />
==== Использование systemd-analyze ====<br />
<br />
Systemd предоставляет инструмент под названием {{ic|systemd-analyze}}, позволяющий проанализировать процесс загрузки вашей системы, чтобы можно было увидеть, какие файлы юнитов тормозят загрузку. Соответственно, вы можете оптимизировать вашу систему. Для использования данного инструмента вам потребуется установить пакеты {{Pkg|python2-dbus}} и {{Pkg|python2-cairo}}.<br />
<br />
Чтобы увидеть, сколько времени было потрачено на подготовку пространства ядра и пространства пользователя во время загрузки, просто выполните команду:<br />
<br />
$ systemd-analyze<br />
<br />
{{Tip|Чтобы увидеть, сколько времени ушло на загрузку образа initramfs, дополните хуком {{ic|timestamp}} ваш массив {{ic|HOOKS}} из конфигурационного файла {{ic|/etc/[[mkinitcpio]].conf}} и от суперпользователя root пересоберите ваш образ initramfs командой {{ic|mkinitcpio -p linux}} }}<br />
<br />
Чтобы увидеть список запускаемых файлов юнитов, отсортированный по потраченному каждым из них на загрузку времени, выполните команду:<br />
<br />
$ systemd-analyze blame<br />
<br />
Вы также можете создать файл SVG, показывающий процесс загрузки в графическом виде, наподобие [[Bootchart]]:<br />
<br />
$ systemd-analyze plot > plot.svg<br />
<br />
==== Использование bootchart ====<br />
<br />
Вы можете использовать версию bootchart для визуализации последовательности при загрузке системы.<br />
Из-за невозможности использовать стандартные установки bootchart (так как нельзя добавить в командную строку ядра вторую запись init), вам придется воспользоваться пакетом {{AUR|bootchart2}} из [[AUR]], поставляемым с недокументированным сервисом systemd. После установки bootchart2 выполните команду:<br />
<br />
# systemctl enable bootchart<br />
<br />
Обратитесь к [https://github.com/mmeeks/bootchart документации bootchart (англ.)] за дальнейшей и детализированной информацией об использовании данной версии bootchart.<br />
<br />
=== Readahead ===<br />
<br />
systemd поставляется со свой реализации технологии readahead, что в принципе должно усовершенствовать процесс загрузки системы. Однако, в зависимости от версии вашего ядра и типа жесткого диска, скорость обращения к данным может разниться (например, может быть медленнее). Чтобы включить данный сервис, выполните:<br />
<br />
# systemctl enable systemd-readahead-collect systemd-readahead-replay<br />
<br />
Не забудьте, что волшебство технологии readahead подействует только после нескольких перезапусков системы<br />
<br />
=== Ранний старт сервисов ===<br />
<br />
Одним из центральных элементов systemd является [[D-Bus]] и активация сокетов, что требует запуска сервисов при первой потребности в них. Обычно такой подход является удачным, но, если вы знаете, что какой-то сервис (вроде [[UPower]]) должен всегда запускаться во время загрузки системы, то вы можете сократить общее время загрузки, запуская его так рано, как это вообще возможно. Этого можно добиться (если сервис-файл устроен соответствующим образом, что верно в большинстве случаев) путем выполнения команды:<br />
<br />
# systemctl enable upower<br />
<br />
Это заставит systemd запустить UPower так рано, как это возможно, не устраивая перегонки данного сервиса с активацией сокета или D-Bus.<br />
<br />
=== Уменьшение вывода во время загрузки ===<br />
<br />
Измените параметр {{ic|verbose}} на {{ic|quiet}} в строке загрузки ядра вашего загрузчика. Для некоторых систем, в частности с SSD, узким местом является низкая производительность TTY, поэтому уменьшение вывода информации означает прирост скорости загрузки.<br />
<br />
== Устранение неполадок ==<br />
<br />
=== Выключение/перезагрузка происходят ужасно долго ===<br />
<br />
Если процесс выключения занимает очень долгое время (или, по-видимому, зависает), то, вероятно, виноват сервис, который не завершает свою работу. systemd ожидает некоторое время, пока каждый сервис завершит свою работу самостоятельно, и только потом пытается принудительно завершить (kill) его. Если вы столкнулись с такой проблемой, обратитесь к [http://freedesktop.org/wiki/Software/systemd/Debugging#Shutdown_Completes_Eventually данной статье (англ.)].<br />
<br />
== Полезные ссылки ==<br />
<br />
*[http://www.freedesktop.org/wiki/Software/systemd Официальный веб-сайт (англ.)]<br />
*[http://0pointer.de/public/systemd-man/ Страницы руководств (англ.)]<br />
*[http://freedesktop.org/wiki/Software/systemd/Optimizations systemd Optimizations (англ.)]<br />
*[http://www.freedesktop.org/wiki/Software/systemd/FrequentlyAskedQuestions FAQ (англ.)]<br />
*[http://www.freedesktop.org/wiki/Software/systemd/TipsAndTricks Tips And Tricks (англ.)]<br />
*[http://0pointer.de/public/systemd-ebook-psankar.pdf systemd для администраторов (PDF) - перевод цикла статей Леннарта Поттеринга (Lennart Poettering) (англ.)]<br />
*[http://0pointer.de/blog/projects/systemd.html Блог Lennart'а (англ.)]<br />
*[http://archlinux.org.ru/forum/viewtopic.php?f=9&t=9581 systemd mini FAQ]<br />
*[http://fedoraproject.org/wiki/Systemd Fedora Linux Wiki: Systemd (англ.)]<br />
*[http://fedoraproject.org/wiki/SysVinit_to_Systemd_Cheatsheet Fedora's SysVinit to systemd cheatsheet (англ.)]<br />
*[http://wiki.russianfedora.ru/index.php/Systemd systemd - база знаний проекта Fedora]<br />
*[http://wiki.debian.org/ru/Systemd Debian Wiki: systemd - менеджер системы и сервисов]<br />
*[http://wiki.ubuntu.com/systemd Ubuntu Wiki: systemd (англ.)]</div>Klayhttps://wiki.archlinux.org/index.php?title=User:Klay&diff=234945User:Klay2012-11-11T19:53:11Z<p>Klay: </p>
<hr />
<div>__NOTOC__<br />
{{Article summary start}}<br />
{{Article summary text|This is the user page for '''Klay'''. Feel free to leave a question or comment on my [[User talk:Klay|Talk page]].}}<br />
{{Article summary end}}<br />
<br />
Russian Federation, Murom<br />
<br />
<br />
== Contacts ==<br />
Use my [[User talk:Klay|talk]] page for public comments. <br />
Use my [[Special:EmailUser/Klay|email]] for private comments.<br />
<br />
<br />
== Languages ==<br />
* Russian<br />
* English<br />
<br />
<br />
== Experience Using Distributions ==<br />
* Fedora - 1 Year<br />
* Fedora - 1.5 Years<br />
* Ubuntu - 6 Month<br />
* Debian - 6 Month<br />
* Red Hat - 1 Year<br />
* Arch - From April 2012 to now<br />
<br />
<br />
{{Note|This layout was borrowed from [[User:Filam]].}}</div>Klayhttps://wiki.archlinux.org/index.php?title=Category:Boot_process&diff=234942Category:Boot process2012-11-11T19:42:36Z<p>Klay: Russian localization</p>
<hr />
<div>[[cs:Category:Boot process]]<br />
[[es:Category:Boot process]]<br />
[[it:Category:Boot process]]<br />
[[nl:Category:Boot process]]<br />
[[pt:Category:Boot process]]<br />
[[ru:Category:Процесс Загрузки]]<br />
[[sk:Category:Boot process]]<br />
[[sr:Category:Boot process]]<br />
[[uk:Category:Boot process]]<br />
[[zh-CN:Category:Boot process]]<br />
[[Category:System administration]]</div>Klayhttps://wiki.archlinux.org/index.php?title=Systemd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=234941Systemd (Русский)2012-11-11T19:35:47Z<p>Klay: Включил статью в категорию 'Процесс Загрузки' по аналогии с английской вики</p>
<hr />
<div>[[Category:Русский]]<br />
[[Category:Процесс Загрузки (Русский)]]<br />
[[en:systemd]]<br />
[[es:systemd]]<br />
[[fr:systemd]]<br />
[[it:systemd]]<br />
[[zh-CN:systemd]]<br />
{{Article summary start|Сводка}}<br />
{{Article summary text|Статья охватывает установку и настройку systemd.}}<br />
{{Article summary heading|Связанные статьи}}<br />
{{Article summary wiki|systemd/User}}<br />
{{Article summary wiki|systemd/Services}}<br />
{{Article summary wiki|systemd FAQ}}<br />
{{Article summary wiki|init Rosetta (Русский)}}<br />
{{Article summary wiki|udev (Русский)}}<br />
{{Article summary end}}<br />
Цитата с [http://freedesktop.org/wiki/Software/systemd веб-страницы проекта]:<br />
<br />
''"'''systemd''' - система [инициализации] и менеджер служб для Linux, совместимые со скриптами инициализации SysV и LSB. '''systemd''' обеспечивает возможности агрессивной параллелизации, использует сокеты и активацию [[D-Bus]] для запускаемых служб, предлагает запуск демонов по необходимости, отслеживает процессы при помощи [[cgroups|контрольных групп]] Linux, поддерживает мгновенные снимки и восстановление состояния системы, монтирование и точки монтирования, а также внедряет основанную на зависимостях логику контроля процессов сложных транзакций. Эта система может выступать заменой [[SysVinit|sysvinit]]."''.<br />
<br />
{{Note|1=За детальным объяснением причин происходящего перехода Arch'а на systemd обратитесь к [https://bbs.archlinux.org/viewtopic.php?pid&#61;1149530#p1149530 сообщению на англоязычном форуме].}}<br />
<br />
Смотрите также [[Wikipedia:Systemd|статью в Википедии]].<br />
<br />
== Соображения перед началом миграции ==<br />
<br />
* Настоятельно рекомендуется перейти на новую конфигурацию '''initscripts''', описанную в статье [[rc.conf (Русский)|rc.conf]]. Сконфигурировав таким образом свою систему, вы проделаете бóльшую часть работы, необходимую для миграции на systemd.<br />
* Почитайте про systemd на [http://freedesktop.org/wiki/Software/systemd/ сайте разработчиков].<br />
* Обратите внимание, что systemd имеет собственный '''журнал (journal)''', заменяющий '''syslog''', хотя оба варианта ведения логов могут сосуществовать. Обратитесь к приведенному ниже [[#Журнал|разделу, посвященному журналу]].<br />
* Хотя systemd вполне способна заменить определенную функциональность таких демонов, как '''cron''', '''acpid''' или '''xinetd''', но если вы не хотите, можете не отказываться от использования традиционных демонов.<br />
<br />
== Установка ==<br />
<br />
{{Note|Оба пакета - {{pkg|systemd}} и {{pkg|systemd-sysvcompat}} - ставаятся по умолчанию при установке с носителя новее, чем [https://www.archlinux.org/news/systemd-is-now-the-default-on-new-installations/ 2012-10-13].}}<br />
<br />
Следующий раздел предназначен для тех установок Arch Linux, которые всеще зависят от пакетов {{pkg|sysvinit}} и {{pkg|initscripts}} и не перешли на использование {{pkg|systemd}}.<br />
<br />
# Установите пакет {{pkg|systemd}} и добавьте следующую запись к командной строке загрузки ядра: {{ic|1=init=/usr/lib/systemd/systemd}}<br />
<br />
# выполнив это, вы сможете включать или отключать любой необходимый сервис путем применения команды {{ic|systemctl enable <service_name>}} (это примерно соответствует тому, что включалось в массив {{ic|DAEMONS}}).<br />
<br />
# Перезагрузите свою систему и убедитесь, что {{ic|systemd}} в настоящее время активен, выполнив слудующую команду: {{ic|$ cat /proc/1/comm}}. Данная команда должна вернуть строку {{ic|systemd}}.<br />
<br />
# Удалите {{pkg|initscripts}} и {{pkg|sysvinit}} из вашей системы и установите {{pkg|systemd-sysvcompat}}.<br />
<br />
# В последнюю очередь удалите параметр {{ic|1=init=/usr/lib/systemd/systemd}}, поскольку необходимости в нем более нет. parameter as it is no longer requir<br />
<br />
=== Дополнительная информация ===<br />
<br />
* Если в параметрах ядра имеется значение {{ic|quiet}}, вероятно, вам стоит удалить его для нескольких первых загрузок systemd, чтобы видеть возникающие во время загрузке проблемы.<br />
<br />
* Теперь добавлять вашего пользователя в [[Users and Groups|группы]] ({{ic|optical}}, {{ic|audio}}, {{ic|scanner}}, ...) в большинстве случаев '''нет''' необходимости при использовании systemd. Это даже может нарушить работоспособность системы. Например, добавление в группу audio может привести к невозможности быстрого переключения между пользователями и позволит приложениям заблокировать программное микширование. Каждый вход PAM предоставляет сессию login, которое дает вам разрешения для локальной сессии посредством [[Wikipedia:Access control list|POSIX ACLs]] на аудио/видео устройства и позволяет выполнять некоторые операции, такие, как как монтирование съемных носителей через [[udisks]]. <br />
<br />
{{Note|Systemd-logind заменил [[ConsoleKit]], удаленный из репозиториев, поэтому для полной функциональности теперь система должна загружаться с использованием systemd. Смотрите [http://archlinux.org.ru/node/352/ новость] для получения дальнейшей информации.}<br />
<br />
Ранее ConsoleKit обеспечивал подобные разрешения для устройств на основе ACL и разрешения polkit для локальных сессий.}}<br />
<br />
== Родные системные файлы ==<br />
<br />
{{Note|Возможно, вам придется создать эти файлы. Установите для всех файлов права доступа 644 и владельца root:root.}}<br />
<br />
=== Имя компьютера (hostname) ===<br />
<br />
Имя компьютера настраивается в файле {{ic|/etc/hostname}}. Этот файл не должен содержать системный домен (если таковой имеется). Для установки имени компьютера выполните:<br />
<br />
# hostnamectl set-hostname '''myhostname'''<br />
<br />
Обратитесь к руководствам {{ic|man 5 hostname}} и {{ic|man hostnamectl}} для получения более подробной информации.<br />
<br />
Вот примерный файл:<br />
<br />
{{hc|/etc/hostname|<br />
myhostname<br />
}}<br />
<br />
=== Локаль ===<br />
<br />
Системная локаль по умолчанию настраивается в конфигурационном файле {{ic|/etc/locale.conf}}. Для установки локали по умолчанию выполните:<br />
<br />
# localectl set-locale LANG="ru_RU.UTF-8"<br />
<br />
{{Note|Перед установкой локали по умолчанию вам сперва необходимо сделать локали доступными системе, раскомментировав их в файле {{ic|/etc/locale.gen}} и затем выполнив команду {{ic|locale-gen}} от суперпользователя root. Локаль, установленная командой {{ic|localectl}}, должна быть одной из '''раскомментированных''' локалей в файле {{ic|/etc/locale.gen}}.}}<br />
<br />
Для получения подробной информации о вариантах настройки обратитесь к руководствам {{ic|man 1 localectl}} и {{ic|man 5 locale.conf}}.<br />
* Дальнейшая информация содержится в статье [[Locale]].<br />
<br />
Вот примерный файл:<br />
<br />
{{hc|/etc/locale.conf|2=<br />
LANG=ru_RU.utf8}}<br />
<br />
=== Консоль и раскладка клавиатуры ===<br />
<br />
Файл {{ic|/etc/vconsole.conf}} устанавливает настройки виртуальной консоли (раскладку клавиатуры и консольный шрифт).<br />
<br />
{{hc|/etc/vconsole.conf|2=<br />
KEYMAP=ru<br />
FONT=cyr-sun16<br />
FONT_MAP=}}<br />
<br />
{{Note|С версии {{Pkg|systemd}}-194 используются шрифт ядра и раскладку по умолчанию (т.е. американскую английскую). Нет более необходимости (для тех, кто использует американскую английскую раскладку) настраивать в конфигурационном файле строки {{ic|1=KEYMAP=}} и {{ic|1=FONT=}}, их можно оставить пустыми.}}<br />
<br />
Другой способ настройки раскладки клавиатуры в консоли состоит в использовании команды:<br />
<br />
# localectl set-keymap ru<br />
<br />
Преимущество такого подхода - в том, что он также установит указанную раскладку клавиатуры и для X11.<br />
<br />
Для получения подробной информации о вариантах настройки обратитесь к руководствам {{ic|man 1 localectl}} и {{ic|man 5 vconsole.conf}}.<br />
* Для получения детальной информации обратитесь к разделам [[Fonts#Console_fonts|консольные шрифты (англ.)]] и [[KEYMAP|раскладка клавиатуры (англ.)]].<br />
<br />
=== Временная зона ===<br />
<br />
Временная зона настраивается путем создания соответствующей символической ссылки {{ic|/etc/localtime}} на файл временной зоны в директории {{ic|/usr/share/zoneinfo/}}. Чтобы сделать это автоматически, выполните команду:<br />
<br />
# timedatectl set-timezone Europe/Moscow<br />
<br />
Для получения подробной информации о вариантах настройки обратитесь к руководствам {{ic|man 1 timedatectl}} и {{ic|man 5 localtime}}.<br />
<br />
{{Note|Прежний конфигурационный файл {{ic|/etc/timezone}} объявлен устаревшим с выходом {{pkg|systemd}}-190 и должен быть удален.}}<br />
<br />
Альтернативный метод - создание символической ссылки вручную:<br />
<br />
# ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime<br />
<br />
=== Аппаратные часы ===<br />
<br />
Systemd будет использовать UTC для аппаратных часов по умолчанию.<br />
{{Tip|Обычно рекомендуется запускать [[NTP|демон Network Time Protocol]] для поддержания синхронизации аппаратных часов с системным временем.}}<br />
<br />
==== Аппаратные часы по localtime ====<br />
<br />
Если вы собираетесь выставить аппаратные часы по localtime (местному времени, что '''КАТЕГОРИЧЕСКИ НЕ РЕКОМЕНДУЕТСЯ'''), выполните команду:<br />
<br />
# timedatectl set-local-rtc true<br />
<br />
Если же захотите вернуть ваши аппаратные часы к использованию временного формата UTC, выполните:<br />
<br />
# timedatectl set-local-rtc false<br />
<br />
Помните, что настройка перехода на зимнее/летнее время - неблагодарное занятие. Если переход на зимнее/летнее время происходит в тот момент, когда ваш компьютер выключен, то при следующей загрузке ваши часы будут показывать ошибочное время ([http://www.cl.cam.ac.uk/~mgk25/mswish/ut-rtc.html здесь об этом чуть подробнее (англ.)]). Последние версии ядра устанавливают системное время из RTC (часов реального времени) непосредственно во время загрузки без использования {{ic|hwclock}}, при этом ядро всегда считает, что RTC выставлено по UTC. Это означает, что если RTC выставлено по местному времени (local time), системное время будет изначально установлено ошибочно и затем корректироваться вскоре после этого при каждой загрузке. Это является причиной некоторых досадных багов (идущие назад часы редко являются нужной вещью).<br />
<br />
Причиной, позволяющей RTC быть выставленными по местному времени, является двойная загрузка системы с Windows, ([http://blogs.msdn.com/b/oldnewthing/archive/2004/09/02/224672.aspx которая использует localtime (англ.)]). Windows воспринимает RTC, выставленные по UTC при помощи простого [[Time#UTC in Windows|исправления реестра (англ.)]]. Если вы столкнетесь с подобными проблемами при двойной загрузке с Windows, вы можете установить аппаратные часы на использование местного времени. <br />
<br />
Если вы настроите Windows на использование UTC, также не забудьте отключить функцию "Обновление времени по Интернету" ("Internet Time Update"), иначе для Windows возникнет проблема с аппаратными часами, поскольку система будет пытаться синхронизировать их с временем через Интернет. Вместо этого следует оставить время в формате RTC и синхронизовать через Интернет в Linux посредством демона [[NTP]], как это предлагалось выше.<br />
<br />
* За дальнейшей информацией обратитесь к статье [[Time]].<br />
<br />
=== Подгружаемые модули ядра ===<br />
<br />
Сегодня все необходимые модули для загрузки подгружаются автоматически с помощью [[Udev]], так что, если вам не надо (или же вы не должны) использовать какой-нибудь модуль не из дерева ядра , нет необходимости дополнительно помещать какие-либо модули в какой-то файл конфигурации загрузки. Тем не менее, бывают случаи, когда вы можете подгрузить дополнительный модуль в процессе загрузки или поместить какой-то модуль в черный список, чтобы ваш компьютер работал правильно.<br />
<br />
==== Дополнительно подгружаемые при загрузке модули ====<br />
<br />
Необходимые для загрузки дополнительные модули оформляются в статический список файлов в директории {{ic|/etc/modules-load.d/}}. Каждый из конфигурационных файлов имеет наименование вида {{ic|/etc/modules-load.d/<program>.conf}} (где <program> - имя подгружаемого модуля) и содержит список имен подгружаемых модулей ядра, каждое из которых начинается с новой строки. При этом игнорируются как пустые строки конфигурационных файлов, так и строки, у которых первым символом, отличным о пробела, является символ {{ic|#}} и {{ic|;}}. Например:<br />
<br />
{{hc|/etc/modules-load.d/virtio-net.conf|<br />
# Load virtio-net.ko at boot<br />
virtio-net}}<br />
<br />
Более подробная информация содержится в руководстве {{ic|man 5 modules-load.d}}.<br />
<br />
==== Черный список ====<br />
<br />
Добавление модулей в черный список работает также, как и в случае с {{Pkg|initscripts}}, поскольку в действительности эта функция выполняется таким инструментом, как {{Pkg|kmod}}. Обратитесь к разделу [[Kernel_modules#Blacklisting|Module Blacklisting]] за более подробной информацией.<br />
<br />
=== Монтирование файловых систем ===<br />
<br />
Установка по умолчанию автоматически проверяет файловые системы командой fsck и монтирует файловые системы перед запуском тех сервисов, котрым необходимо иметь эти системы примонтированными. Например, systemd позволяет в автоматическом режиме добиться, что удаленные файловые системы наподобие [[NFS]] и [[Samba]] подключаются после поднятия сети. Поэтому монтирование как локальных, так и удаленных файловых систем, прописанных в {{ic|/etc/fstab}} должно работать "из коробки".<br />
<br />
Обратитесь к руководству {{ic|man 5 systemd.mount}} для получения более подробной информации.<br />
<br />
==== Автомонтирование ====<br />
<br />
* Если ваш раздел {{ic|/home}} занимает большой объем, лучшим вариантом было бы позволить сервисам не зависеть от подключения {{ic|/home}} и запускать данные сервисы, когда {{ic|/home}} еще подвергается проверке при загрузке системы. Добиться такого результата можно добавлением следующих параметров в запись файла {{ic|/etc/fstab}}, касающуюся раздела {{ic|/home}}:<br />
<br />
noauto,x-systemd.automount<br />
<br />
Такие параметры вызовут команду fsck и примонтируют {{ic|/home}} при первом обращении к данному разделу, и ядро будет буферизовать все файлы доступа к {{ic|/home}} до готовности данного раздела.<br />
<br />
* То же самое применимо и к удаленным файловым системам. Если вы хотите, чтобы монтирование данных систем происходило только по мере доступа к ним, вы можете использовать параметр {{ic|1=x-systemd.device-timeout=#}} в файле {{ic|/etc/fstab}} для определения таймаута в том случае, кода сетевые ресурсы оказываются недоступны.<br />
<br />
* В случае использования зашифрованных файловых систем с ключами доступа, вам также Iследует добавить параметр {{ic|noauto}} в соответствующие записи файла {{ic|/etc/crypttab}}. systemd не будет подключать зашифрованные устройства при загрузке, но, вместо этого, дождется реального обращения к ним и автоматически откроет к ним доступ с использованием определенных ключей перед тем, как они будут примонтированы. Это сэкономит несколько секунд при загрузке системы, например, в случае использования зашифрованного устройства RAID, потому что systemd не будет дожидаться от устройства, когда оно станет доступным. Например:<br />
<br />
{{hc|/etc/crypttab|<br />
data /dev/md0 /root/key noauto}}<br />
<br />
=== LVM ===<br />
<br />
Если у вас имеются тома LVM, не активированные посредством [[Mkinitcpio|initramfs]], включите сервис {{ic|lvm.service}} (предоставляемый пакетом {{pkg|lvm2}}):<br />
<br />
# systemctl enable lvm<br />
<br />
Точно так же, если у вас LVM на устройствах с шифрованием, монтируемым позже в процессе загрузки (например, из {{ic|/etc/crypttab}}), вам необходимо включить сервис {{ic|lvm-on-crypt.service}} (также предоставляемый пакетом {{pkg|lvm2}}):<br />
<br />
# systemctl enable lvm-on-crypt<br />
<br />
=== Управлением питанием ACPI ===<br />
<br />
Systemd обрабатывает некоторые события, связанные с [http://кru.wikipedia.org/wiki/ACPI ACPI], что настраивается при помощи параметров в конфигурационном файле {{ic|/etc/systemd/logind.conf}}:<br />
<br />
* {{ic|HandlePowerKey}}: определяет действия системы при нажатии кнопки питания (вкл./выкл.).<br />
* {{ic|HandleSuspendKey}}: определяет действия системы при нажатии кнопки спящего режима.<br />
* {{ic|HandleHibernateKey}}: определяет действия системы при нажатии кнопки ждущего режимаs.<br />
* {{ic|HandleLidSwitch}}: определяет действия системы при закрытии крышки компьютера.<br />
<br />
Для соответствующих действий могут использоваться значения {{ic|ignore}} (пропустить), {{ic|poweroff}} (отключить питание), {{ic|reboot}} (перезагрузить), {{ic|halt}} (выключить), {{ic|suspend}} (включить спящий режим), {{ic|hibernate}} (включить ждущий режим) или {{ic|kexec}} (системный вызов позволяющий оперативно переключиться в другое ядро).<br />
<br />
Если данные параметры не определены, по умолчанию systemd будет использовать следующие: {{ic|1=HandlePowerKey=poweroff}}, {{ic|1=HandleSuspendKey=suspend}}, {{ic|1=HandleHibernateKey=hibernate}}, и {{ic|1=HandleLidSwitch=suspend}}.<br />
<br />
В системах без графического интерфейса или использующих простые оконные менеджеры наподобие like [[i3]] или [[awesome]], так можно заменить демон [[acpid]], который обычно используется для реагирования на данные события ACPI.<br />
<br />
В текущей версии systemd параметры {{ic|Handle}} будут применены ко всей системе, если только они не "подавляются (временно отключены) другой программой, такой, как менеджер питания данного окружения рабочего стола. Если эти ограничений нет, вы можете столкнуться с ситуацией, когда systemd приводит вашу систему в спящий режим, а затем, когда система пробуждается менеджером управлением питания, снова "усыпляет" ее.<br />
<br />
{{Warning|В настоящее время менеджеры управления питанием в новейших версиях сред [[KDE]] и [[GNOME]] являются единственными, которые использюет такие команды "подавления". До тех пор, пока их не будут применять другие менеджеры, вам надо выставить в параметрах {{ic|Handle}} значение {{ic|ignore}}, если вы хотите, чтобы события ACPI обрабатывались в случае использования [[Xfce]], [[acpid]] или других программ. Но на подходе новые версии, которые включат данную функциональность.}}<br />
<br />
{{Note|Systemd также может использовать для перевода системы в спящий/ждущий режим другие движки (такие, как [[Uswsusp]] или [[TuxOnIce]]), в дополнение к движку ''ядра''.}}<br />
<br />
==== Хуки спящего режима ====<br />
<br />
Systemd в своих командах {{ic|systemctl suspend}} или {{ic|systemctl hibernate}} не использует [[pm-utils]] для "усыпления" машины; хуки [[pm-utils]], включая любые [[Pm-utils#Creating_your_own_hooks|пользовательские хуки]] не будут работать. Тем не менее, systemd предоставляет схожий механизм запуска пользовательских скриптов для данных событий. Systemd запускает все исполняемые файлы в директории {{ic|/usr/lib/systemd/system-sleep/}}, передавая каждому из них два аргумента:<br />
<br />
* Аргумент 1: или {{ic|pre}}, или {{ic|post}}, в зависимости от которых машина либо "уснет", либо будет "пробуждена";<br />
* Аргумент 2: или {{ic|suspend}}, или {{ic|hibernate}}, в зависимости от того, что было вызвано.<br />
<br />
В отличие от [[pm-utils]], systemd запустит данные скрипты одновременно, а не один после другого.<br />
<br />
Вывод любого пользовательского скрипта будет записан сервисом {{ic|systemd-suspend.service}} или {{ic|systemd-hibernate.service}}. Вы вы можете увидеть данный выход в [[#Журнал systemd|журнале]] systemd:<br />
<br />
# journalctl -b -u systemd-suspend<br />
<br />
Обратите внимание, что вместо использования скриптов вы также можете использовать специальные целевые юниты - {{ic|sleep.target}}, {{ic|suspend.target}} или {{ic|hibernate.target}} для того, чтобы подключить к другим юнитам возможности перехода в спящий режима.<br />
<br />
Пример пример пользовательского скрипта по переходу в спящий режим:<br />
<br />
{{hc|/usr/lib/systemd/system-sleep/example.sh|<br />
#!/bin/sh<br />
case $1/$2 in<br />
pre/*)<br />
echo "Going to $2..."<br />
;;<br />
post/*)<br />
echo "Waking up from $2..."<br />
;;<br />
esac}}<br />
<br />
Обратитесь к руководствам {{ic|man 7 systemd.special}} и {{ic|man 8 systemd-sleep}} для получения дальнейшей информации.<br />
<br />
=== Временные файлы ===<br />
<br />
Systemd-tmpfiles использует конфигурационные файлы в директориях {{ic|/usr/lib/tmpfiles.d/}} и {{ic|/etc/tmpfiles.d/}} для определения действий с временными файлами и директориями (создание, очистка и удаление их), обычно расположенные в {{ic|/run}} or {{ic|/tmp}}. Каждый файл с настройками имеет название вида {{ic|/etc/tmpfiles.d/<program>.conf}}. Данные конфигурационные файлы имеют приоритет по сравнению с любыми файлами с таким же названием, расположенными в директории {{ic|/usr/lib/tmpfiles.d/}}.<br />
<br />
Временные файлы tmpfiles обычно поставляются вместе с сервис-файлами для создания директорийк. которые, как ожидается, будут использоваться определенными демонами. Например, демон [[Samba]] предполагает наличие директории {{ic|/var/run/samba}} с соответствующими правами доступа. В данном случае tmpfile выглядит следующим образом:<br />
<br />
{{hc|/usr/lib/tmpfiles.d/samba.conf|<br />
D /var/run/samba 0755 root root}}<br />
<br />
Тем не менее, tmpfiles также могут использоваться для записи значений в определенные файлы во врем загрузки. К примеру, если вы используете {{ic|/etc/rc.local}} для того, чтобы отключить пробуждение системы USB-устройствами, при помощи команды {{ic|echo USBE > /proc/acpi/wakeup}}, вы можете вместо этого использовать следующий tmpfile:<br />
<br />
{{hc|/etc/tmpfiles.d/disable-usb-wake.conf|<br />
w /proc/acpi/wakeup - - - - USBE}}<br />
<br />
Метод с использованием tmpfiles в данном случае рекомендуется, поскольку systemd в действительности не поддерживает {{ic|/etc/rc.local}}.<br />
<br />
Обратитесь к руководству {{ic|man 5 tmpfiles.d}} за более подробной информацией.<br />
<br />
=== Юнит ===<br />
<br />
Юнит (англ. unit) - конфигурационный файл, содержащий информацию о сервисе (службе), сокете, устройстве, точке монирования/автомонирования, файле подкачке или разделе, определяемом для загрузки уровне запуска, пути в файловой системе или таймере, которые контролируются и управляются при помощи systemd. Синтаксис юнитов навеян спецификацией .desktop-файлов (XDG Desktop Entry Specification), которая, в свою очередь, вдохновлялась .ini-файлами от Microsoft Windows. <br />
<br />
Обратитесь к руководству {{ic|man 5 systemd.unit}} для получения дальнейшей информации.<br />
<br />
== Переход от initscripts к использованию systemd ==<br />
<br />
=== Эмуляция initscripts ===<br />
<br />
Интеграция с классической конфигурацией Arch'а обеспечивается пакетом {{Pkg|initscripts}}. В том случае, если {{Pkg|initscripts}} установлен параллельно с systemd и система загружена с использованием systemd, systemd будет выполнять следующую последовательность действий:<br />
<br />
# # Проводить синтаксический разбор массива {{ic|DAEMONS}} в файле {{ic|/etc/rc.conf}} и запускать при загрузке все находящиеся там демоны (см. ниже)<br />
# Выполнять при загрузке {{ic|/etc/rc.local}}<br />
# Выполнять при завершении работы системы {{ic|/etc/rc.local.shutdown}}<br />
<br />
Эмуляция initscripts рассматривается как просто переходная мера для легкой миграции пользователей на systemd и '''в конечном итоге будет отброшена'''. Система с "родной" systemd не зависит от централизованной конфигурации в {{ic|rc.conf}}, поэтому рекомендуется использовать [[#Родные системные файлы|родные конфигурационные файлы systemd]], которые имеют приоритет над настройками из {{ic|/etc/rc.conf}}.<br />
<br />
{{Note|Рекомендуемый путь по замене {{ic|/etc/rc.local}} состоит в написании пользовательского сервис-файла для всего того, что вы хотите запускать при загрузке системы. Обратитесь к соответствующему [[#Написание_пользовательского_.service_файла|разделу]] данной статьи.}}<br />
<br />
{{Note|Если вы отключали использование сочетания клавиш для перезагрузки системы {{keypress|Ctrl+Alt+Del}} в файле {{ic|/etc/inittab}}, теперь вам надо заново сделать это для systemd командой {{ic|systemctl mask ctrl-alt-del.target}}, выполняемой от суперпользователя root.}}<br />
<br />
==== Отказ от массива DAEMONS ====<br />
<br />
Для "чистой" установки systemd, вы можете полностью удалить файл {{ic|/etc/rc.conf}} и включать сервисы только посредством systemd. Для каждого сервиса с именем {{ic|<service_name>}} в массиве {{ic|DAEMONS}} из файла {{ic|/etc/rc.conf}} выполните команду:<br />
<br />
# systemctl enable <service_name><br />
<br />
{{Tip|Для получения списка обычно используемых демонов с их эквивалентами в initscripts и systemd, обратитесь к [[Daemons List|данной таблице]].}}<br />
<br />
Если сервис-файл {{ic|<service_name>.service}} отсутствует:<br />
<br />
* сервис-файл может быть недоступен для systemd. В этом случае вам нужно сохранить конфигурационный файл {{ic|rc.conf}} для запуска этих сервисов во время загрузки системы.<br />
* Systemd может использовать для сервисов другие имена, например, {{ic|cronie.service}} заменяет демон {{ic|crond}}; {{ic|alsa-store.service}} и {{ic|alsa-restore.service}} заменяют демон {{ic|alsa}}. Другой важный пример - демон {{ic|network}}, которого сменил целый набор сервис-файлов (обратитесь к статье [[Configuring Network]] для получения дальнейшей информации.)<br />
<br />
{{Tip|Вы можете заглянуть вовнутрь пакета, содержащего стартовые скрипты демона, чтобы узнать имена его сервис-файла. К примеру:<br />
$ pacman -Ql cronie<br />
[...]<br />
cronie /etc/rc.d/crond #Демон initscript, указываемый в массиве {{ic|DAEMONS}} (не используется при "чистой" настройке systemd)<br />
[...]<br />
cronie /usr/lib/systemd/system/cronie.service #Соответствующий сервис systemd<br />
[...]<br />
}}<br />
<br />
* Наконец, пользователю не нужно включать некоторые сервисы явным образом. Например, {{ic|dbus.service}} будет включен автоматическики при установке {{ic|dbus-core}}. {{ic|alsa-store.service}} и {{ic|alsa-restore.service}} также включены systemd автоматически. Проверьте список доступных сервисов и их состояние при помощи команды {{ic|systemctl}}, например: {{ic|systemctl status <service_name>}} (где <service_name> - имя сервиса).<br />
<br />
=== Сравнительная таблица устаревшей и "родной" конфигураций ===<br />
<br />
{{Warning|Данный раздел оставлен в русской версии временно, до полной миграции пользователей на использование "чистого" systemd.}}<br />
<br />
{| class="wikitable"<br />
|-<br />
! scope="col"| Настройка<br />
! scope="col"| Конфигурационный файл (файлы)<br />
! scope="col"| Устаревшая секция [https://projects.archlinux.org/initscripts.git/tree/rc.conf?id=97f0cd6751e8d22c14d7492cdc2186cf41157ba6 rc.conf]<br />
|-<br />
| align="center"|Имя компьютера (Hostname)<br />
| align="left"|{{ic|/etc/hostname}}<br />
{{ic|/etc/hosts}}<br />
| align="center"|{{ic|NETWORKING}}<br />
|-<br />
| align="center"|Консоль и раскладка клавиатуры<br />
| align="left"|{{ic|/etc/vconsole.conf}}<br />
| align="center"|{{ic|LOCALIZATION}}<br />
|-<br />
| align="center"|Локаль<br />
| align="left"|{{ic|/etc/locale.conf}}<br />
{{ic|/etc/locale.gen}}<br />
| align="center"|{{ic|LOCALIZATION}}<br />
|-<br />
| align="center"|Временная зона<br />
| align="left"|{{ic|/etc/localtime}}<br />
| align="center"|{{ic|LOCALIZATION}}<br />
|-<br />
| align="center"|Аппаратные часы<br />
| align="left"|{{ic|/etc/adjtime}}<br />
| align="center"|{{ic|LOCALIZATION}}<br />
|-<br />
| align="center"|Модули ядра<br />
| align="left"|{{ic|/etc/modules-load.d/}}<br />
| align="center"|{{ic|HARDWARE}}<br />
|}<br />
<br />
=== Эмуляция /etc/rc.local ===<br />
<br />
{{Warning|Данный раздел оставлен в русской версии временно, до полной миграции пользователей на использование "чистого" systemd.}}<br />
<br />
Если вы хотите при использовании systemd сохранить простоту {{ic|/etc/rc.local}} , вам нужно создать следующий сервис-файл и включить его. Просто добавьте строки {{ic|1=ExecStart=}} для тех команд, которые вы хотите запустить. Если же вам в данном случае требуется более сложная функциональность (например, циклы с {{ic|for}}), то вы можете создать скрипт Bash и выполнять его из сервис-файла. Удалите {{ic|1=ExecStart=/bin/true}}, если вы здесь действительно добавляете команду.<br />
<br />
{{hc|/etc/systemd/system/rc-local.service|<nowiki><br />
[Unit]<br />
Description=/etc/rc.local compatibility<br />
<br />
[Service]<br />
Type=oneshot<br />
ExecStart=/bin/true<br />
RemainAfterExit=yes<br />
<br />
[Install]<br />
WantedBy=multi-user.target<br />
</nowiki>}}<br />
<br />
== Основы использования systemctl ==<br />
<br />
Главная команда для наблюдения и контроля за состоянием systemd - команда {{ic|systemctl}}. Некоторые из вариантов ее использования связаны с изучением состояния системы и управлением сервисами. Обратитесь к странцам руководства {{ic|man 1 systemctl}} для получения более детальной информации.<br />
<br />
{{Tip|Вы можете использовать приведенные ниже команды {{ic|systemctl}} с ключом {{ic|-H <user>@<host>}} для того, чтобы контролировать systemd на удаленной машине. В этом случае для соединения с удаленным процессом systemd будет использовать [[SSH]].}}<br />
<br />
{{Note|{{ic|systemadm}} - официальная графическая оболочка для {{ic|systemctl}}. Она доступна в виде пакета {{AUR|systemd-ui-git}} из [[AUR]].}}<br />
<br />
=== Анализ состояния системы ===<br />
<br />
Список запущенных юнитов:<br />
<br />
$ systemctl<br />
<br />
или:<br />
<br />
$ systemctl list-units<br />
<br />
Список юнитов, попытка запуска которых завершилась неудачей:<br />
<br />
$ systemctl --failed<br />
<br />
Доступные юниты можно посмотреть в директориях {{ic|/usr/lib/systemd/system/}} и {{ic|/etc/systemd/system/}} (последняя директория имеет приоритет). Вы можете увидеть список установленных юнитов командой:<br />
<br />
$ systemctl list-unit-files<br />
<br />
=== Использование юнитов ===<br />
<br />
Юниты могут быть сервисами ({{ic|.service}}), точками монтирования ({{ic|.mount}}) или сокетами ({{ic|.sockets}}). При использовании команды {{ic|systemctl}} необходимо всегда указывать полное имя файла, включая расширение. Однако, есть несколько сокращений при определении юнита следующими командами{{ic|systemctl}}:<br />
<br />
* Ели вы не указали суффикс, systemctl предполагает, что это {{ic|.service}}. Например, {{ic|netcfg}} и {{ic|netcfg.service}} будут трактоваться одинаково.<br />
* Точки монтирования будут автоматически преобразованы в соответствующий юнит {{ic|.mount}}. Например, указание {{ic|/home}} равнозначно {{ic|home.mount}}.<br />
* Аналогично точкам монтирования, имена устройств автоматически преобразуются в соответствующий юнит {{ic|.device}}, поэтому указание {{ic|/dev/sda2}} полностью соответствует юниту {{ic|dev-sda2.device}}.<br />
<br />
Обратитесь к руководству {{ic|man systemd.unit}} для получения детальной информации.<br />
<br />
{{Note|При использовании юнитов следует обращать внимание на регистр букв в наименовании сервис-файлов: так, необходимо использовать ''NetworkManager.'''service''' '' (запомните употребление в данном названии букв в верхнем регистре) для включения сервиса NetworkManager'а, в противном случае вы получите сообщение об ошибке и сервис во время загрузки системы не запустится.}}<br />
<br />
Незамедлительно запустить юнит:<br />
<br />
# systemctl start <unit><br />
<br />
Незамедлительно остановить юнит:<br />
<br />
# systemctl stop <unit><br />
<br />
Перезапустить юнит:<br />
<br />
# systemctl restart <unit><br />
<br />
Запросить у юнита перезагрузку его настроек:<br />
<br />
# systemctl reload <unit><br />
<br />
Показать статус юнита, а также запущен он или нет:<br />
<br />
$ systemctl status <unit><br />
<br />
Проверить включение юнита (т.е. разрешен ли юниту запуск при загрузке системы):<br />
<br />
$ systemctl is-enabled <unit><br />
<br />
Включить юнит (разрешить юниту запуск при загрузке системы):<br />
<br />
# systemctl enable <unit><br />
<br />
{{Note| Если сервис-файлы не имеют раздела {{ic|Install}}, это обычно означает, что данные сервисы вызываются автоматически другими сервисами. Но если вам требуется установить их вручную, используйте следующую команду, заменив {{ic|foo}} именем вашего сервиса.<br />
# ln -s /usr/lib/systemd/system/''foo''.service /etc/systemd/system/graphical.target.wants/<br />
}}<br />
<br />
Выключить юнит (запретить юниту запуск при загрузке системы):<br />
<br />
# systemctl disable <unit>}}<br />
<br />
Показать страницу помощи для юнита (необходима поддержка этой функции в указанном файле юнита):<br />
<br />
$ systemctl help <unit><br />
<br />
=== Управление питанием ===<br />
<br />
Если у вас локальная пользовательская сессия {{ic|systemd-logind}} и нет других активных сессий, приведенные ниже команды сработают и без привилегий суперпользователя root. В противном случае (например, вследствие того, что пользователь залогинился в tty), systemd автоматически запросит у вас пароль root.<br />
<br />
Завершить работу и перезагрузить систему:<br />
<br />
$ systemctl reboot<br />
<br />
Завершить работу и выключить компьютер (с отключением питания):<br />
<br />
$ systemctl poweroff<br />
<br />
Завершить работу и остановить систему:<br />
<br />
$ systemctl halt<br />
<br />
Перевести систему в спящий режим:<br />
<br />
$ systemctl suspend<br />
<br />
Перевести систему в ждущий режим:<br />
<br />
$ systemctl hibernate<br />
<br />
== Запуск окружения рабочего стола из systemd ==<br />
<br />
Чтобы включить графический вход в систему, запустите выбранный вами демон [[Display Manager (Русский)|экранного менеджера]] (например, [[KDM]]). В настоящий момент доступны сервис-файлы для [[GDM]], [[KDM]], [[SLiM]], [[XDM]], [[LXDM]] и [[LightDM]].<br />
<br />
# systemctl enable kdm<br />
<br />
Эта команда должна работать "из коробки". Если вдруг она не сработала, то, возможно, у вас {{ic|default.target}} установлен вручную или остался с прежней установки:<br />
<br />
{{hc|# ls -l /etc/systemd/system/default.target|<br />
/etc/systemd/system/default.target -> /usr/lib/systemd/system/graphical.target}}<br />
<br />
Просто удалите символическую ссылку и systemd будет использовать целевой юнит по умолчанию - {{ic|default.target}} (т.е. {{ic|graphical.target}}).<br />
<br />
# rm /etc/systemd/system/default.target<br />
<br />
=== Использование systemd-logind ===<br />
<br />
{{Note|С 30.10.2012 [[ConsoleKit]] был [http://archlinux.org.ru/node/352/ заменен на systemd-logind] как механизм входа в окружение рабочего стола по умолчанию.}}<br />
<br />
Для того, чтобы проверить статус вашей пользовательской сессии, вы можете использовать команду {{ic|loginctl}}. Все действия [[PolicyKit]] наподобие перевода системы в спящий режим или монтирования внешних носителей с помощью [[Udisks]] должны работать автоматически.<br />
<br />
$ loginctl show-session $XDG_SESSION_ID<br />
<br />
== Написание пользовательского .service файла ==<br />
<br />
=== Обработка зависимостей ===<br />
<br />
В случае использования systemd зависимости могут быть разрешены правильным построением файлов юнитов. ,Наиболее частый случай -- когда юниту {{ic|A}} требуется, чтобы юнит {{ic|B}} был запущен перед тем, как запустится сам юнит {{ic|A}}. В этом случае добавьте строки {{ic|1=Requires=B}} и {{ic|1=After=B}} в секцию {{ic|[Unit]}} сервис-файла юнита {{ic|A}}. Если подобная зависимость не является обязательной, добавьте соответственно взамен указанных выше строки {{ic|1=Wants=B}} и {{ic|1=After=B}}. Обратите внимание, что {{ic|1=Wants=}} и {{ic|1=Requires=}} не подразумевают {{ic|1=After=}}, что означает, что если {{ic|1=After=}} не определено, два юнита будут запущены параллельно друг другу.<br />
<br />
Обычно зависимости указываются в сервис-файлах, а не в целевых юнитах. Например, {{ic|network.target}} потребуется любому сервису, который связан с настройкой ваших сетевых интерфейсов, поэтому в любом случае определите загрузку вашего пользовательского юнита после запуска {{ic|network.target}}.<br />
<br />
=== Тип ===<br />
<br />
Существует несколько различных типов запуска служб, которые надо иметь в виду при написании пользовательского сервис-файла. Тип запуска определяется параметром {{ic|1=Type=}} в секции {{ic|[Service]}}. Обратитесь к руководству {{ic|man systemd.service}} для получения более детального объяснения.<br />
<br />
* {{ic|1=Type=simple}}: systemd предполагает, что сервис будет запущен незамедлительно. Процесс при этом не должен форкнуться. Не используйте этот тип, если другим сервисы зависят от очередности при запуске данного сервиса, за исключением активации сокета.<br />
* {{ic|1=Type=forking}}: systemd предполагает, что сервис запускается однократно, процесс форкается и родительский процесс завершается. Используйте данный тип для запуска классических демонов за исключением тех случаев, когда, как вам известно, в таком поведении процесса нет необходимости. Вам следует также определить {{ic|1=PIDFile=}}, чтобы systemd могла отслеживать основной процесс.<br />
* {{ic|1=Type=oneshot}}: Полезен для скриптов, которые выполняют одну работу, а потом завершаются. Вам может понадобиться также установить параметр {{ic|1=RemainAfterExit=}}, чтобы systemd по-прежнему считала процесс активным, даже после его завершения<br />
* {{ic|1=Type=notify}}: Идентичен параметру {{ic|1=Type=simple}}, но с той оговоркой, что демон пошлет systemd сигнал о своей готовности. Эталонная реализация данного уведомления обеспечивается библиотекой {{ic|libsystemd-daemon.so}}.<br />
* {{ic|1=Type=dbus}}: Сервис считается находящимся в состоянии готовности, когда определенное {{ic|BusName}} появляется в системной шине DBus.<br />
<br />
=== Замена предоставленных пакетами файлов юнитов ===<br />
<br />
Файлы юнитов в директории {{ic|/etc/systemd/system/}} имеют приоритет над такими же файлами в директории {{ic|/usr/lib/systemd/system/}}.<br />
Для создания собственной версии юнита (который не будет затерт при обновлении), скопируйте старый юнит из директории {{ic|/usr/lib/}} в директорию {{ic|/etc/}} и внесите в эту копию свои изменения. Альтернативным вариантом является использование {{ic|.include}} для парсинга существующего сервис-файла и затем переопределения или добавления новых опций. Например, если вы просто хотите добавить в сервис-файл дополнительную зависимость, вы можете использовать такую команду в юните:<br />
<br />
{{hc|/etc/systemd/system/<service-name>.service|2=<br />
.include /usr/lib/systemd/system/<service-name>.service<br />
<br />
[Unit]<br />
Requires=<new dependency><br />
After=<new dependency>}}<br />
<br />
Затем выполните следующие команды для того, чтобы изменения вступили в силу:<br />
<br />
# systemctl reenable <unit><br />
# systemctl restart <unit><br />
<br />
{{Tip|Вы можете использовать команду {{ic|systemd-delta}}, чтобы увидеть, какие файлы юнитов были переопределены и что в точности было изменено.}}<br />
<br />
=== Подсветка синтаксиса файлов юнитов в Vim ===<br />
<br />
подсветка синтаксиса файлов юнитов для systemd в редакторе [[Vim]] может быть осуществлена путем установки пакета {{AUR|vim-systemd}} из [[Arch User Repository|AUR]].<br />
<br />
== Уровни запуска/цели ==<br />
<br />
Уровни запуска (по-английски уровень запуска - runlevel) для systemd являются устаревшей концепцией. Systemd использует ''цели'' (англ. target), которые выполняют ту же задачу, что и уровни запуска, но действуют немного по-другому. Каждая ''цель'' поименована (т.е. имеет собственное имя, а не номер) и, как предполагается, предназначена для конкретных задач; возможно иметь в одно и то же время активными несколько таких целей. Некоторые ''цели'' реализованы так, что наследуют все сервисы других ''целей'' и добавляют к ним свои сервисы. В systemd имеются также ''цели'', которые имитируют общие уровни запуска SystemVinit, поэтому вы можете переключаться между целевыми юнитами с использованием привычной команды {{ic|telinit RUNLEVEL}}. <br />
<br />
=== Получение информации о текущем уровне запуска/цели ===<br />
<br />
При использовании systemd для этого предназначена следующая команда (заменяющая {{ic|runlevel}}):<br />
<br />
$ systemctl list-units --type=target<br />
<br />
=== Создание пользовательской цели ===<br />
<br />
Уровни загрузки, по которым расписаны конкретные задачи на установке дистрибутива Fedora по умолчанию - 0, 1, 3, 5 и 6; есть маппинг 1:1 с помощью конкретной цели systemd. К сожалению, не существует хорошего способа сделать то же самое для определяемых пользователем уровней, таких, как 2 и 4. Использование их предполагает, что вы создаете новый именованный '' целевой юнит''systemd наподобие {{ic|/etc/systemd/system/<your target>}}, который берет за основу один из существующих уровней запуска (взгляните, например, на {{ic|/usr/lib/systemd/system/graphical.target}}), создаете также директорию {{ic|/etc/systemd/system/<your target>.wants}} и затем символические ссылки на те дополнительные сервисы из директории {{ic|/usr/lib/systemd/system/}}, которые вы хотите включить при загрузке.<br />
<br />
== Таблица уровней запуска и их аналогов в Systemd ==<br />
<br />
{| class="wikitable" border="1" cellpadding="5" cellspacing="0"<br />
! Уровнень запуска SysV !! systemd Target !! Примечание<br />
|-<br />
| 0 || runlevel0.target, poweroff.target || Выключить систему.<br />
|-<br />
| 1, s, single || runlevel1.target, rescue.target || Однопользовательский уровень запуска.<br />
|-<br />
| 2, 4 || runlevel2.target, runlevel4.target, multi-user.target || Уровень запуска, определенный пользователем/специфичный для узла. По умолчанию соответствует уровню запуска 3.<br />
|-<br />
| 3 || runlevel3.target, multi-user.target || Многопользовательский режим без графики. Пользователи, как правило, входят с помощью множества консолей или через сеть.<br />
|-<br />
| 5 || runlevel5.target, graphical.target || Многопользовательский режим с графикой. Обычно эквивалентен запуску всех сервисов уровня 3 и графическому менеджеру входа.<br />
|-<br />
| 6 || runlevel6.target, reboot.target || Перезагрузка.<br />
|-<br />
| emergency || emergency.target || Аварийная оболочка.<br />
|-<br />
|}<br />
<br />
=== Изменение текущей цели ===<br />
<br />
В systemd цели доступны посредством " целевых юнитов". Вы можете изменить их командой:<br />
<br />
# systemctl isolate graphical.target<br />
<br />
Данная команда изменит только лишь текущую цель и не повлияет на следующую загрузку системы. Она соответствует командам наподобие {{ic|telinit 3}} или {{ic|telinit 5}} для Sysvinit.<br />
<br />
=== Изменение цели для загрузки ===<br />
<br />
Стандартная цель - {{ic|default.target}}, которая по умолчанию является псевдонимом юнита {{ic|graphical.target}} (примерно соответствующего прежнему уровню выполнения 5). Для изменения цели при загрузке по умолчанию, добавьте следующий дополнительный [[kernel parameters|параметр ядра]] в вашем загрузчике:<br />
<br />
{{Tip|Расширение {{ic|.target}} можно опустить.}}<br />
<br />
* {{ic|1=systemd.unit=multi-user.target}} (что примерно соответствует прежнему уровню выполнения 3),<br />
* {{ic|1=systemd.unit=rescue.target}} (что примерно соответствует прежнему уровню выполнения 1).<br />
<br />
Другой путь заключается в том, чтобы оставить загрузчик без изменений и изменить целевой юнит по умолчанию - {{ic|default.target}}, что достигается командой {{ic|systemctl}}:<br />
<br />
# systemctl enable multi-user.target<br />
<br />
Эффект от применения данной команды выводится через {{ic|systemctl}}; символическая ссылка на новый целевой юнит по умолчанию создается в директории {{ic|/etc/systemd/system/default.target}}. Это сработает в том случае (и только в том случае), если имеется следующая секция:<br />
<br />
[Install]<br />
Alias=default.target<br />
<br />
в конфигурационном файле целевого юнита. В настоящий момент как {{ic|multi-user.target}}, так и {{ic|graphical.target}} оба имеют данную секцию.<br />
<br />
== Журнал ==<br />
С версии 38 systemd имеет собственную систему ведения логов - журнал (journal). По умолчанию, более не требуется запуск демона syslog. Для чтения логов используйте команду:<br />
<br />
# journalctl<br />
<br />
По умолчанию (когда в конфигурационном файле {{ic|/etc/systemd/journald.conf}} параметр {{ic|Storage&#61;}} имеет значение {{ic|auto}}) журнал записывается в директорию {{ic|/run/systemd/journal}}. Если директория {{ic|/var/log/journal/}} не существует (например, вы или какая-либо программа удалили ее), systemd '''не''' создаст ее автоматически, но вместо этого запишет свои логи в директорию {{ic|/run/systemd/journal}}. Это означает, что логи будут потеряны при перезагрузке.<br />
<br />
=== Фильтрация вывода ===<br />
<br />
{{ic|journalctl}} позволяет фильтровать вывод по особым полям.<br />
<br />
Примеры:<br />
<br />
Показать все сообщения с момента текущей загрузки системы:<br />
<br />
# journalctl -b<br />
<br />
Последние сообщения:<br />
<br />
# journalctl -f<br />
<br />
Показать все сообщения определенной программы:<br />
<br />
# journalctl /usr/lib/systemd/systemd<br />
<br />
Показать все сообщения определенного процесса:<br />
<br />
# journalctl _PID=1<br />
<br />
Показать все сообщения определенного юнита:<br />
<br />
# journalctl -u netcfg<br />
<br />
Обратитесь к {{ic|man journalctl}} и {{ic|systemd.journal-fields}} или [http://0pointer.de/blog/projects/journalctl.html блог Леннерта (англ.)] для получения детальной информации.<br />
<br />
=== Ограничение размера журнала ===<br />
<br />
Если журнал сохраняется при перезагрузке, размер его по умолчанию ограничен значением в 10% от объема соответствующей файловой системы. Например, для директории {{ic|/var/log/journal}}, расположенной на корневом разделе в 50 Гбайт, максимальный размер журналируемых данных составит до 5 Гбайт. Максимальный объем постоянного журнала можно контролировать при помощи значения {{ic|SystemMaxUse}} в конфигурационном файле {{ic|/etc/systemd/journald.conf}}, поэтому для ограничения его объемом в 50 Mбайт раскомментируйте и отредактируйте соответствующую строку:<br />
<br />
SystemMaxUse=50M<br />
<br />
Обратитесь к {{ic|man journald.conf}} для получения дальнейшей информации.<br />
<br />
=== Journald в связке с классическим демоном syslog ===<br />
<br />
Совместимость с классической реализацией syslog обеспечивается сокетом {{ic|/run/systemd/journal/syslog}}, в который перенаправляются все сообщения. Чтобы дать возможность демону syslog работать вместе с журналом systemd, следует привязать данный демон к указанному сокету вместо {{ic|/dev/log}} ([http://lwn.net/Articles/474968/ официальное сообщение]). Пакетом {{pkg|syslog-ng}} в репозиториях автоматически предоставляется необходимая конфигурация.<br />
<br />
# systemctl enable syslog-ng<br />
<br />
== Сеть ==<br />
<br />
{{Warning|Данный раздел в английской версии включен в состав статьи [[Configuring Network]]; в русской версии временно оставлен из-за того, что русский вариант [[Configuring Network (Русский)]] устарел в сравнении с английским.}}<br />
<br />
=== Динамическое подключение (DHCP) с использованием dhcpcd ===<br />
<br />
Если хотите использовать только DHCP для своего соединения Ethernet, вы можете воспользоваться сервисом {{ic|dhcpcd@.service}} (который поставляется пакетом {{Pkg|dhcpcd}}).<br />
<br />
Чтобы подключить DHCP для {{ic|eth0}}, просто выполните команду:<br />
<br />
# systemctl start dhcpcd@eth0.service<br />
<br />
Вы можете включить этот сервис, и он будет автоматически запускаться при загрузке. Это делается командой:<br />
<br />
# systemctl enable dhcpcd@eth0.service<br />
<br />
Иногда сервис dhcpd запускается до загрузки модуля вашей сетевой карты ({{bug|30235}}), в этом случае вручную добавьте вашу сетевую карту в конфигурационный файл {{ic|/etc/modules-load.d/*.conf}}. Например, для карты Realtek необходима загрузка модуля {{ic|r8169}}, поэтому создайте такой конфигурационный файл:<br />
<br />
{{hc|/etc/modules-load.d/realtek.conf|2=<br />
r8169}}<br />
<br />
=== Другие конфигурации ===<br />
<br />
Для статического подключения, беспроводной сети или сложной конфигурации сети наподобие сетевого моста, вы можете использовать [[Netcfg#systemd_support|netcfg]] или [[NetworkManager#Enable_NetworkManager_under_Native_systemd_system|NetworkManager]], для обоих этих инструментов управления сетью имеются сервис-файлы для systemd.<br />
<br />
{{Note|Если вы хотите использовать netcfg, NetworkManager или другие программы управления сетью, вам не надо в этом случае запускать или включать сервис dhcpcd как показано в предыдущем параграфе.}}<br />
<br />
== Оптимизация ==<br />
<br />
=== Анализ процесса загрузки ===<br />
<br />
==== Использование systemd-analyze ====<br />
<br />
Systemd предоставляет инструмент под названием {{ic|systemd-analyze}}, позволяющий проанализировать процесс загрузки вашей системы, чтобы можно было увидеть, какие файлы юнитов тормозят загрузку. Соответственно, вы можете оптимизировать вашу систему. Для использования данного инструмента вам потребуется установить пакеты {{Pkg|python2-dbus}} и {{Pkg|python2-cairo}}.<br />
<br />
Чтобы увидеть, сколько времени было потрачено на подготовку пространства ядра и пространства пользователя во время загрузки, просто выполните команду:<br />
<br />
$ systemd-analyze<br />
<br />
{{Tip|Чтобы увидеть, сколько времени ушло на загрузку образа initramfs, дополните хуком {{ic|timestamp}} ваш массив {{ic|HOOKS}} из конфигурационного файла {{ic|/etc/[[mkinitcpio]].conf}} и от суперпользователя root пересоберите ваш образ initramfs командой {{ic|mkinitcpio -p linux}} }}<br />
<br />
Чтобы увидеть список запускаемых файлов юнитов, отсортированный по потраченному каждым из них на загрузку времени, выполните команду:<br />
<br />
$ systemd-analyze blame<br />
<br />
Вы также можете создать файл SVG, показывающий процесс загрузки в графическом виде, наподобие [[Bootchart]]:<br />
<br />
$ systemd-analyze plot > plot.svg<br />
<br />
==== Использование bootchart ====<br />
<br />
Вы можете использовать версию bootchart для визуализации последовательности при загрузке системы.<br />
Из-за невозможности использовать стандартные установки bootchart (так как нельзя добавить в командную строку ядра вторую запись init), вам придется воспользоваться пакетом {{AUR|bootchart2}} из [[AUR]], поставляемым с недокументированным сервисом systemd. После установки bootchart2 выполните команду:<br />
<br />
# systemctl enable bootchart<br />
<br />
Обратитесь к [https://github.com/mmeeks/bootchart документации bootchart (англ.)] за дальнейшей и детализированной информацией об использовании данной версии bootchart.<br />
<br />
=== Readahead ===<br />
<br />
systemd поставляется со свой реализации технологии readahead, что в принципе должно усовершенствовать процесс загрузки системы. Однако, в зависимости от версии вашего ядра и типа жесткого диска, скорость обращения к данным может разниться (например, может быть медленнее). Чтобы включить данный сервис, выполните:<br />
<br />
# systemctl enable systemd-readahead-collect systemd-readahead-replay<br />
<br />
Не забудьте, что волшебство технологии readahead подействует только после нескольких перезапусков системы<br />
<br />
=== Ранний старт сервисов ===<br />
<br />
Одним из центральных элементов systemd является [[D-Bus]] и активация сокетов, что требует запуска сервисов при первой потребности в них. Обычно такой подход является удачным, но, если вы знаете, что какой-то сервис (вроде [[UPower]]) должен всегда запускаться во время загрузки системы, то вы можете сократить общее время загрузки, запуская его так рано, как это вообще возможно. Этого можно добиться (если сервис-файл устроен соответствующим образом, что верно в большинстве случаев) путем выполнения команды:<br />
<br />
# systemctl enable upower<br />
<br />
Это заставит systemd запустить UPower так рано, как это возможно, не устраивая перегонки данного сервиса с активацией сокета или D-Bus.<br />
<br />
=== Уменьшение вывода во время загрузки ===<br />
<br />
Измените параметр {{ic|verbose}} на {{ic|quiet}} в строке загрузки ядра вашего загрузчика. Для некоторых систем, в частности с SSD, узким местом является низкая производительность TTY, поэтому уменьшение вывода информации означает прирост скорости загрузки.<br />
<br />
== Устранение неполадок ==<br />
<br />
=== Выключение/перезагрузка происходят ужасно долго ===<br />
<br />
Если процесс выключения занимает очень долгое время (или, по-видимому, зависает), то, вероятно, виноват сервис, который не завершает свою работу. systemd ожидает некоторое время, пока каждый сервис завершит свою работу самостоятельно, и только потом пытается принудительно завершить (kill) его. Если вы столкнулись с такой проблемой, обратитесь к [http://freedesktop.org/wiki/Software/systemd/Debugging#Shutdown_Completes_Eventually данной статье (англ.)].<br />
<br />
== Полезные ссылки ==<br />
<br />
*[http://www.freedesktop.org/wiki/Software/systemd Официальный веб-сайт (англ.)]<br />
*[http://0pointer.de/public/systemd-man/ Страницы руководств (англ.)]<br />
*[http://freedesktop.org/wiki/Software/systemd/Optimizations systemd Optimizations (англ.)]<br />
*[http://www.freedesktop.org/wiki/Software/systemd/FrequentlyAskedQuestions FAQ (англ.)]<br />
*[http://www.freedesktop.org/wiki/Software/systemd/TipsAndTricks Tips And Tricks (англ.)]<br />
*[http://0pointer.de/public/systemd-ebook-psankar.pdf systemd для администраторов (PDF) - перевод цикла статей Леннарта Поттеринга (Lennart Poettering) ]<br />
*[http://0pointer.de/blog/projects/systemd.html Блог Lennart'а (англ.)]<br />
*[http://archlinux.org.ru/forum/viewtopic.php?f=9&t=9581 systemd mini FAQ]<br />
*[http://fedoraproject.org/wiki/Systemd Fedora Linux Wiki: Systemd (англ.)]<br />
*[http://fedoraproject.org/wiki/SysVinit_to_Systemd_Cheatsheet Fedora's SysVinit to systemd cheatsheet (англ.)]<br />
*[http://wiki.russianfedora.ru/index.php/Systemd systemd - база знаний проекта Fedora]<br />
*[http://wiki.debian.org/ru/Systemd Debian Wiki: systemd - менеджер системы и сервисов]<br />
*[http://wiki.ubuntu.com/systemd Ubuntu Wiki: systemd (англ.)]</div>Klayhttps://wiki.archlinux.org/index.php?title=Talk:Systemd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=230553Talk:Systemd (Русский)2012-10-22T01:48:12Z<p>Klay: /* Имя сервис */</p>
<hr />
<div>== Названия ==<br />
<br />
Надо бы определиться как называть введённые systemd сущности.<br />
<br />
unit files - файлы юнитов? тогда<br />
<br />
tmpfile - tmp файл, временный файл<br />
<br />
service - сервис, служба, демон<br />
<br />
service файл - файл сервиса<br />
<br />
target - цель, "целевая точка", план?<br />
<br />
<br />
Под-разбери Поттеринга и его план.<br />
<br />
<br />
----<br />
<br />
Думаю unit нужно оставить юнитом, как это используется везде, tmpfile - временным файлом, service - сервисом. А вот <br />
target и самому не понятно, но уж точно не "план". Возможно ''target'' это ''цель''<br />
<br />
--[[User:Klay|Klay]] ([[User talk:Klay|talk]]) 09:11, 21 October 2012 (UTC)<br />
<br />
== Initscripts ==<br />
<br />
Думается можно начинать удалять информацию по initscripts. По крайней мере, из секции по установке уже можно сейчас. <br />
<br />
--[[User:Unikum|Unikum]] ([[User talk:Unikum|talk]]) 09:35, 20 October 2012 (UTC)<br />
<br />
:Согласен<br />
<br />
:--[[User:Klay|Klay]] ([[User talk:Klay|talk]]) 09:11, 21 October 2012 (UTC)<br />
<br />
== Имя сервиса ==<br />
Возможно стоит написать вот так<br />
<br />
<pre>pacman -Ql cronie | grep service</pre><br />
<br />
<br />
что даст лаконичнее ответ<br />
<pre><br />
cronie /usr/lib/systemd/system/crond.service<br />
<br />
cronie /usr/lib/systemd/system/cronie.service<br />
</pre><br />
--[[User:Klay|Klay]] ([[User talk:Klay|talk]]) 01:48, 22 October 2012 (UTC)</div>Klayhttps://wiki.archlinux.org/index.php?title=Systemd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=230548Systemd (Русский)2012-10-22T01:44:38Z<p>Klay: Undo revision 230540 by Klay (talk)</p>
<hr />
<div>[[Category:Русский]]<br />
[[Category:Демоны и системные сервисы (Русский)]]<br />
[[Category:Процесс Загрузки (Русский)]]<br />
[[en:systemd]]<br />
[[es:systemd]]<br />
[[fr:systemd]]<br />
[[it:systemd]]<br />
[[zh-CN:systemd]]<br />
{{Article summary start|Сводка}}<br />
{{Article summary text|Статья охватывает установку и настройку systemd.}}<br />
{{Article summary heading|Связанные статьи}}<br />
{{Article summary wiki|Systemd/Services}}<br />
{{Article summary wiki|Init_Rosetta_(Русский)}}<br />
{{Article summary wiki|Udev_(Русский)}}<br />
{{Article summary end}}<br />
Цитата с [http://freedesktop.org/wiki/Software/systemd веб-страницы проекта]:<br />
<br />
''"'''systemd''' - система [инициализации] и менеджер служб для Linux, совместимые со скриптами инициализации SysV и LSB. systemd обеспечивает возможности агрессивной параллелизации, использует сокеты и активацию [[D-Bus]] для запускаемых служб, предлагает запуск демонов по необходимости, отслеживает процессы при помощи [[cgroups|контрольных групп]] Linux, поддерживает мгновенные снимки и восстановление состояния системы, монтирование и точки монтирования, а также внедряет основанную на зависимостях логику контроля процессов сложных транзакций. Эта система может выступать заменой sysvinit."''.<br />
<br />
{{Note|За детальным объяснением причин перехода Arch'а на systemd обратитесь к [https://bbs.archlinux.org/viewtopic.php?pid&#61;1149530#p1149530 сообщению на англоязычном форуме].}}<br />
<br />
Смотрите также [[Wikipedia:Systemd|статью в Википедии]].<br />
== Что надо усвоить до начала миграции на данную систему ==<br />
<br />
* Настоятельно рекомендуется перейти на новую конфигурацию '''initscripts''', описанную в статье [[rc.conf (Русский)|rc.conf]]. Сконфигурировав таким образом свою систему, вы проделаете бóльшую часть работы, необходимую для миграции на systemd.<br />
* Почитайте про systemd на [http://freedesktop.org/wiki/Software/systemd/ сайте разработчиков].<br />
* Обратите внимание, что systemd имеет собственный '''журнал (journal)''', заменяющий '''syslog''', хотя оба варианта ведения логов могут сосуществовать. Обратитесь к приведенному ниже разделу [[#Journald_в_связке_с_классическим_демоном _syslog|разделу, посвященному журналу]].<br />
* Хотя systemd вполне способна заменить определенную функциональность таких демонов, как '''cron''', '''acpid''' или '''xinetd''', но если вы не хотите, можете не отказываться от использования традиционных демонов.<br />
<br />
== Установка ==<br />
systemd может быть установлен параллельно со стандартным пакетом инициализации {{Pkg|initscripts}}, и между ними можно будет переключаться путем добавления/удаления [[kernel parameters|параметров ядра]] {{ic|1=init=/usr/lib/systemd/systemd}}. <br />
<br />
=== Смешанная установка systemd/sysvinit/initscripts ===<br />
<br />
Возможно иметь в своей системе одновременно установленными systemd и sysvinit и использовать одну и те же конфигурационные файлы, что позволит вам свободно переключаться между ним туда и обратно:<br />
<br />
# Откажитесь от устаревших форматов конфигурации initscripts (о них сообщается при загрузке системы) в пользу [[#Родные системные файлы в systemd|родных системных файлов systemd]] и перезагрузитесь для проверки работоспособности данных установок при использовании initscripts.<br />
# Установите пакет {{Pkg|systemd}} из [[Official Repositories (Русский)|официальных репозиториев]].<br />
# Добавьте запись {{ic|1=init=/usr/lib/systemd/systemd}} к [[Kernel parameters|параметрам ядра]] в вашем загрузчике.<br />
# Перезагрузите систему.<br />
<br />
Systemd запустит демоны, перечисленные в {{ic|/etc/rc.conf}}, выполнит {{ic|/etc/rc.local}} и {{ic|/etc/rc.local.shutdown}} соответственно при загрузке/выключении системы. Если поддержка совместимости с массивом DAEMONS в конфигурационном файле {{ic|rc.conf}} или же скриптов в {{ic|rc.local}} вам не нужна, соответствующие сервис-файлы могут быть заблокированы (замаскированы) для их отключения.<br />
<br />
{{Warning|В случае, когда у вас в массиве DAEMONS перечислены демоны, для которых имеются родные сервис-файлы systemd, автоматически будут использоваться родные сервис-файлы. Тем не менее, если имена скриптов rc и сервисов systemd (так далее будут именоваться службы данной системы инициализации) не соответствуют друг другу, данное правило не сработает и вам следует убедиться, что только включен только один из них двух (предпочтительно родной сервис-файл).}}<br />
<br />
{{Warning|Systemd - процесс асинхронной загрузки по сравнению сравнении с последовательным запуском демонов из массива DAEMONS. В частности, "network", будучи поддерживаемым для совместимости сервисом, может запуститься слишком поздно для включения интерфейсов, которые требуются другим сервисам. Рекомендуется переключиться на использование netcfg или NetworkManager до перехода на systemd.}}<br />
<br />
=== Смешанная установка systemd/initscripts ===<br />
<br />
Возможно заменить sysvinit на systemd, но сохранить initscripts в случае использования некоторых скриптов rc scripts, для которых пока не имеется эквивалентов в systemd.<br />
<br />
# Следуйте инструкциям для смешанной установки systemd/sysvinit/initscripts.<br />
# [[#Использование_юнитов|Включите демоны]], ранее перечисленные в {{ic|/etc/rc.conf}} с помощью команды {{ic|systemctl enable ''daemonname.'''service''' ''}}. Для переноса демонов из {{ic|/etc/rc.conf}} в разряд сервисов systemd, смотрите разделы: [[Daemon#List_of_Daemons|List of Daemons]] и [[Systemd/Services|Services]]. Демоны, для которых не имеется соответствующих сервис-файлов systemd, следует оставить в массиве DAEMONS, поскольку systemd запустит устаревшие скрипты rc.<br />
# Установите пакет {{Pkg|systemd-sysvcompat}}. Данный пакет конфликтует с {{Pkg|sysvinit}} и вам будет предложено удалить последний.<br />
# Удалите запись {{ic|1=init=...}}, поскольку {{ic|/sbin/init}} теперь является символической ссылкой на systemd.<br />
# Перезагрузите систему.<br />
<br />
Единственная разница между этим вариантом и вариантом с сохранением sysvinit состоит в том, что все бинарные файлы sysvinit заменены символическими ссылками на systemctl. Тем не менее, функциональность должна остаться неизменной.<br />
<br />
=== Чистая установка systemd ===<br />
<br />
Напоследок, возможно вовсе удалить initscripts и sysvinit и использовать только лишь systemd.<br />
<br />
# Следуйте инструкциям для смешанной установки systemd/initscripts.<br />
# Убедитесь, что более не имеется каких-либо демонов для запуска из массива DAEMONS в конфигурационном файле {{ic|/etc/rc.conf}} и оба файла {{ic|/etc/rc.local}} и {{ic|/etc/rc.local.shutdown}} пусты.<br />
# Удалите пакет initscripts из вашей системы.<br />
<br />
=== Дополнительная информация ===<br />
<br />
{{Tip|Если в параметрах ядра имеется значение {{ic|quiet}}, вероятно, вам стоит удалить его для нескольких первых загрузок systemd, чтобы видеть возникающие во время загрузке проблемы.}}<br />
<br />
== Родные системные файлы в systemd ==<br />
<br />
{{Note|Возможно, вам придется создать эти файлы. Установите для них права доступа 644 и владельца root:root.}}<br />
<br />
{{Pkg|systemd}} будет использовать {{ic|/etc/rc.conf}}, если эти конфигурационные файлы отсутствуют. Обратите внимание, что такое использование может быть только временным решением. Настоятельно рекомендуется для любой системы использовать конфигурационные файлы systemd.<br />
<br />
=== Имя компьютера (hostname) ===<br />
<br />
{{hc|/etc/hostname|<br />
myhostname}}<br />
<br />
=== Консоль и раскладка клавиатуры ===<br />
<br />
Файл {{ic|/etc/vconsole.conf}} устанавливает настройки виртуальной консоли: раскладку клавиатуры и консольный шрифт.<br />
<br />
{{hc|/etc/vconsole.conf|2=<br />
KEYMAP=ru<br />
FONT=cyr-sun16<br />
FONT_MAP=}}<br />
<br />
Для получения детальной информации обратитесь к разделам [[Fonts#Console_fonts|Console fonts]] and [[KEYMAP#Keyboard_layouts|Keymap]]. <br />
<br />
{{Note|{{ic|{{Pkg|systemd}}-194}} использует шрифт ядра и раскладку по умолчанию (т.е. американскую английскую). Нет более необходимости (для тех, кто использует данную раскладку) иметь в конфигурационном файле строки {{ic|1=KEYMAP=}} и {{ic|1=FONT=}} с пустыми значениями.}}<br />
<br />
=== Локаль ===<br />
Для получения подробной информации о вариантах настройки обратитесь к руководству {{ic|man locale.conf}}<br />
<br />
{{hc|/etc/locale.conf|2=<br />
LANG=ru_RU.UTF-8}}<br />
<br />
Дальнейшая информация содержится в статье [[Locale]].<br />
<br />
=== Временная зона ===<br />
<br />
Для получения подробной информации о вариантах настройки обратитесь к руководству {{ic|man 5 localtime}}.<br />
<br />
# ln -sf /usr/share/zoneinfo/America/Chicago /etc/localtime<br />
<br />
{{Note|Прежний конфигурационный файл {{ic|/etc/timezone}} объявлен устаревшим с выходом {{ic|systemd-190}} и может/должен быть удален.}}<br />
<br />
=== Аппаратные часы ===<br />
<br />
Systemd будет использовать UTC для аппаратных часов, именно такой вариант рекомендуется. Настройка зимнего/летнего времени - неблагодарное занятие. Если переход на зимнее/летнее время происходит в тот момент, когда ваш компьютер выключен, то при следующей загрузке ваши часы будут показывать ошибочное время ([http://www.cl.cam.ac.uk/~mgk25/mswish/ut-rtc.html здесь об этом чуть подробнее (англ.)]). Последние версии ядра устанавливают системное время из RTC (часов реального времени) непосредственно во время загрузки без использования {{ic|hwclock}}, при этом ядро всегда считает, что RTC выставлено по UTC. Это означает, что если RTC выставлено по местному времени (local time), системное время будет изначально установлено ошибочно и затем корректироваться вскоре после этого при каждой загрузке. Это является причиной некоторых досадных багов (идущие назад часы редко являются нужной вещью).<br />
<br />
Причиной, позволяющей RTC быть выставленными по местному времени, является двойная загрузка системы с Windows, ([http://blogs.msdn.com/b/oldnewthing/archive/2004/09/02/224672.aspx которая использует localtime (англ.)]). Windows воспринимает RTC, выставленные по UTC при помощи простого [[Time#UTC_in_Windows|исправления реестра]]. Если вы столкнетесь с подобными проблемами при двойной загрузке с Windows, вы можете установить аппаратные часы на использование местного времени.<br />
<br />
{{hc|/etc/adjtime|<br />
0.0 0.0 0.0<br />
0<br />
LOCAL}}<br />
<br />
Другие параметры по-прежнему нужны, но они игнорируются systemd.<br />
<br />
Обычно рекомендуется запускать [[NTP|демон Network Time Protocol]] для поддержания синхронизации аппаратных часов с системным временем.<br />
<br />
=== Подгружаемые модули ядра ===<br />
<br />
systemd использует конфигурационные файлы из директории {{ic|/etc/modules-load.d/}} для определения модулей ядра, подгружаемых во время загрузки системы. Каждый из конфигурационных файлов имеет наименование вида {{ic|/etc/modules-load.d/<program>.conf}} (где <program> - имя подгружаемого модуля). При этом игнорируются как пустые строки конфигурационных файлов, так и строки, у которых первым символом, отличным о пробела, является символ {{ic|#}} и {{ic|;}}. Например:<br />
<br />
{{hc|/etc/modules-load.d/virtio-net.conf|<br />
# Load virtio-net.ko at boot<br />
virtio-net}}<br />
<br />
Также смотрите раздел [[Modprobe#Options]].<br />
<br />
=== Черный список модулей ядра ===<br />
<br />
Добавление модулей в черный список работает также, как и в случае с {{Pkg|initscripts}}, поскольку в действительности эта функция выполняется таким инструментом, как {{Pkg|kmod}}. Обратитесь к разделу [[Kernel_modules#Blacklisting|Module Blacklisting]] за более подробной информацией.<br />
<br />
=== Временные файлы ===<br />
<br />
Systemd-tmpfiles использует конфигурационные файлы в директориях {{ic|/usr/lib/tmpfiles.d/}} и {{ic|/etc/tmpfiles.d/}} для определения действий с временными файлами и директориями (создание, очистка и удаление их), обычно расположенные в {{ic|/run}} or {{ic|/tmp}}. Каждый файл с настройками имеет название вида {{ic|/etc/tmpfiles.d/<program>.conf}}. Данные конфигурационные файлы имеют приоритет по сравнению с любыми файлами с таким же названием, расположенными в директории {{ic|/usr/lib/tmpfiles.d/}}.<br />
<br />
Временные файлы tmpfiles обычно поставляются вместе с сервис-файлами для создания директорийк. которые, как ожидается, будут использоваться определенными демонами. Например, демон [[Samba]] предполагает наличие директории {{ic|/var/run/samba}} с соответствующими правами доступа. В данном случае tmpfile выглядит следующим образом:<br />
<br />
{{hc|/usr/lib/tmpfiles.d/samba.conf|<br />
D /var/run/samba 0755 root root}}<br />
<br />
Тем не менее, tmpfiles также могут использоваться для записи значений в определенные файлы во врем загрузки. К примеру, если вы используете {{ic|/etc/rc.local}} для того, чтобы отключить пробуждение системы USB-устройствами, при помощи команды {{ic|echo USBE > /proc/acpi/wakeup}}, вы можете вместо этого использовать следующий tmpfile:<br />
<br />
{{hc|/etc/tmpfiles.d/disable-usb-wake.conf|<br />
w /proc/acpi/wakeup - - - - USBE}}<br />
<br />
Метод с использованием tmpfiles в данном случае рекомендуется, поскольку systemd в действительности не поддерживает {{ic|/etc/rc.local}}.<br />
<br />
Обратитесь к руководству {{ic|man tmpfiles.d}} за более подробной информацией.<br />
<br />
=== Монтирование удаленных файловых систем ===<br />
<br />
<br />
Systemd позволяет в автоматическом режиме добиться, что удаленные файловые системы наподобие [[NFS]] и [[Samba]] подключаются после поднятия сети. are only started after the network has been set up. Поэтому монтирование удаленных файловых систем, прописанных в {{ic|/etc/fstab}} должно работать "из коробки".<br />
<br />
Однако, по желанию вы можете использовать [[#Automount|автомонтирование]] для монирования удаленных файловых систем, чтобы монтирование данных систем происходило только по мере доступа к ним. Кроме того, вы можете использовать параметр {{ic|1=x-systemd.device-timeout=#}} в файле {{ic|/etc/fstab}} для определения таймаута в том случае, кода сетевые ресурсы оказываются недоступны.<br />
<br />
Обратитесь к руководству {{ic|man systemd.mount}} для получения более подробной информации.<br />
<br />
=== Управлением питанием ACPI при помощи systemd ===<br />
<br />
Systemd обрабатывает некоторые события, связанные с ACPI, что настраивается при помощи параметров в конфигурационном файле {{ic|/etc/systemd/logind.conf}}:<br />
<br />
* {{ic|HandlePowerKey}}: определяет действия системы при нажатии кнопки питания (вкл./выкл.).<br />
* {{ic|HandleSuspendKey}}: определяет действия системы при нажатии кнопки спящего режима.<br />
* {{ic|HandleHibernateKey}}: определяет действия системы при нажатии кнопки ждущего режимаs.<br />
* {{ic|HandleLidSwitch}}: определяет действия системы при закрытии крышки компьютера.<br />
<br />
Для соответствующих действий могут использоваться значения {{ic|ignore}} (пропустить), {{ic|poweroff}} (отключить питание), {{ic|reboot}} (перезагрузить), {{ic|halt}} (выключить), {{ic|suspend}} (включить спящий режим), {{ic|hibernate}} (включить ждущий режим) или {{ic|kexec}} (системный вызов позволяющий оперативно переключиться в другое ядро).<br />
<br />
Если данные параметры не определены, по умолчанию systemd будет использовать следующие: {{ic|1=HandlePowerKey=poweroff}}, {{ic|1=HandleSuspendKey=suspend}}, {{ic|1=HandleHibernateKey=hibernate}}, и {{ic|1=HandleLidSwitch=suspend}}.<br />
<br />
В системах без графического интерфейса или использующих простые оконные менеджеры наподобие like [[i3]] или [[awesome]], так можно заменить демон [[acpid]], который обычно используется для реагирования на данные события ACPI.<br />
<br />
В текущей версии systemd параметры {{ic|Handle}} будут применены ко всей системе, если только они не "подавляются (временно отключены) другой программой, такой, как менеджер питания данного окружения рабочего стола. Если эти ограничений нет, вы можете столкнуться с ситуацией, когда systemd приводит вашу систему в спящий режим, а затем, когда система пробуждается менеджером управлением питания, снова "усыпляет" ее.<br />
<br />
{{Note|В настоящее время менеджер управления питанием новейшей версии в [[KDE]] является единственным, который использует такие команды "подавления". До тех пор, пока их не будут применять другие менеджеры, вам надо выставить в параметрах {{ic|Handle}} значение {{ic|ignore}}, если вы хотите, чтобы события ACPI обрабатывались в случае использования [[GNOME]], [[Xfce]], [[acpid]] или других программ. Но на подходе новые версии, которые включат данную функциональность.}}<br />
<br />
=== Хуки спящего режима ===<br />
<br />
Systemd в своих командах {{ic|systemctl suspend}} или {{ic|systemctl hibernate}} не использует [[pm-utils]] для "усыпления" машины, поэтому хуки [[pm-utils]], включая любые [[Pm-utils#Creating_your_own_hooks|пользовательские хуки]] не будут работать. Тем не менее, systemd предоставляет схожий механизм запуска пользовательских скриптов для данных событий. Systemd запускает все исполняемые файлы в директории {{ic|/usr/lib/systemd/system-sleep/}} и передает каждому из них два аргумента:<br />
<br />
* Аргумент 1: или {{ic|pre}}, или {{ic|post}}, в зависимости от которых машина либо "уснет", либо будет "пробуждена";<br />
* Аргумент 2: или {{ic|suspend}}, или {{ic|hibernate}}, в зависимости от того, что было вызвано.<br />
<br />
В отличие от [[pm-utils]], systemd запустит данные скрипты одновременно, а не один после другого.<br />
<br />
Вывод вашего скрипта будет записан сервисом {{ic|systemd-suspend.service}} или {{ic|systemd-hibernate.service}}, поэтому вы вы можете увидеть данный выход в [[Systemd (Русский)#Журнал systemd|журнале]].<br />
<br />
Обратите внимание, что вместо использования скриптов вы также можете использовать специальные целевые юниты - {{ic|sleep.target}}, {{ic|suspend.target}} или {{ic|hibernate.target}} для того, чтобы подключить к другим юнитам возможности перехода в спящий режима.<br />
<br />
Обратитесь к руководствам {{ic|man systemd.special}} и {{ic|man systemd-sleep}} для получения дальнейшей информации.<br />
<br />
==== Пример ====<br />
<br />
{{hc|/usr/lib/systemd/system-sleep/example.sh|<nowiki><br />
#!/bin/sh<br />
case $1/$2 in<br />
pre/*)<br />
echo "Going to $2..."<br />
;;<br />
post/*)<br />
echo "Waking up from $2..."<br />
;;<br />
esac</nowiki>}}<br />
<br />
=== Ждущий режим ===<br />
<br />
Смотрите [[systemd#Hibernation|английскую версию вики]].<br />
<br />
=== Юнит ===<br />
<br />
Юнит (англ. unit) - конфигурационный файл, содержащий информацию о сервисе (службе), сокете, устройстве, точке монирования/автомонирования, файле подкачке или разделе, определяемом для загрузки уровне запуска, пути в файловой системе или таймере, которые контролируются и управляются при помощи systemd. Синтаксис юнитов навеян спецификацией .desktop-файлов (XDG Desktop Entry Specification), которая, в свою очередь, вдохновлялась .ini-файлами от Microsoft Windows. Обратитесь к руководству {{ic|man systemd.unit}} для получения дальнейшей информации.<br />
<br />
== Команды systemd ==<br />
<br />
*{{ic|systemctl}}: используется для наблюдения и контроля за состоянием менеджера системы и сервисов systemd.<br />
*{{ic|systemd-cgls}}: рекурсивно показывает содержимое иерархии избранной контрольной группы (cgroup) Linux в виде дерева.<br />
*{{ic|systemadm}}: графическая оболочка для менеджера системы и сервисов systemd , позволяющая наблюдать и контролировать systemd (доступна в виде пакета {{AUR|systemd-ui-git}} из [[AUR]]).<br />
<br />
Обратитесь к страницам руководств для получения дальнейшей информации. <br />
<br />
{{Tip|Вы можете использовать приведенные ниже команды {{ic|systemctl}} с ключом {{ic|-H <user>@<host>}} для того, чтобы контролировать systemd на удаленной машине. В этом случае для соединения с удаленным процессом systemd будет использовать [[SSH]].}}<br />
<br />
=== Анализ состояния системы ===<br />
<br />
Список запущенных юнитов:<br />
<br />
$ systemctl<br />
<br />
или:<br />
<br />
$ systemctl list-units<br />
<br />
Список юнитов, попытка запуска которых завершилась неудачей:<br />
<br />
$ systemctl --failed<br />
<br />
Доступные юниты можно посмотреть в директориях {{ic|/usr/lib/systemd/system/}} и {{ic|/etc/systemd/system/}} (последняя директория имеет приоритет). Вы можете увидеть список установленных юнитов командой:<br />
<br />
$ systemctl list-unit-files<br />
<br />
=== Использование юнитов ===<br />
<br />
Юниты могут быть сервисами ({{ic|.service}}), точками монтирования ({{ic|.mount}}) или сокетами ({{ic|.sockets}}). При использовании команды {{ic|systemctl}} необходимо всегда указывать полное имя файла, включая расширение. Однако, есть несколько сокращений при определении юнита следующими командами{{ic|systemctl}}:<br />
<br />
* Ели вы не указали суффикс, systemctl предполагает, что это {{ic|.service}}. Например, {{ic|netcfg}} и {{ic|netcfg.service}} будут трактоваться одинаково.<br />
* Точки монтирования будут автоматически преобразованы в соответствующий юнит {{ic|.mount}}. Например, указание {{ic|/home}} равнозначно {{ic|home.mount}}.<br />
* Аналогично точкам монтирования, имена устройств автоматически преобразуются в соответствующий юнит {{ic|.device}}, поэтому указание {{ic|/dev/sda2}} полностью соответствует юниту {{ic|dev-sda2.device}}.<br />
<br />
Обратитесь к руководству {{ic|man systemd.unit}} для получения детальной информации.<br />
<br />
Незамедлительно запустить юнит:<br />
<br />
# systemctl start <unit><br />
<br />
Незамедлительно остановить юнит:<br />
<br />
# systemctl stop <unit><br />
<br />
Перезапустить юнит:<br />
<br />
# systemctl restart <unit><br />
<br />
Запросить у юнита перезагрузку его настроек:<br />
<br />
# systemctl reload <unit><br />
<br />
Показать статус юнита, а также запущен он или нет:<br />
<br />
$ systemctl status <unit><br />
<br />
Проверить включение юнита (т.е. разрешен ли юниту запуск при загрузке системы):<br />
<br />
$ systemctl is-enabled <unit><br />
<br />
Включить юнит (разрешить юниту запуск при загрузке системы):<br />
<br />
# systemctl enable <unit><br />
<br />
{{Note| Если сервис-файлы не имеют раздела {{ic|Install}}, это обычно означает, что данные сервисы вызываются автоматически другими сервисами. Но если вам требуется установить их вручную, используйте следующую команду, заменив {{ic|foo}} именем вашего сервиса.<br />
# ln -s /usr/lib/systemd/system/''foo''.service /etc/systemd/system/graphical.target.wants/<br />
}}<br />
<br />
Выключить юнит (запретить юниту запуск при загрузке системы):<br />
<br />
# systemctl disable <unit>}}<br />
<br />
Показать страницу помощи для юнита (необходима поддержка этой функции в указанном файле юнита):<br />
<br />
$ systemctl help <unit><br />
<br />
=== Управление питанием ===<br />
<br />
Если у вас локальная пользовательская сессия {{ic|systemd-logind}} или [[ConsoleKit]] и нет других активных сессий, приведенные ниже команды сработают и без привилегий суперпользователя root. В противном случае (например, вследствие того, что пользователь залогинился в tty), systemd автоматически запросит у вас пароль root (также обратитесь к разделу [[#Замена_ConsoleKit_на_systemd-logind|замена ConsoleKit на systemd-logind]]).<br />
<br />
Завершить работу и перезагрузить систему:<br />
<br />
$ systemctl reboot<br />
<br />
Завершить работу и выключить компьютер:<br />
<br />
$ systemctl halt<br />
<br />
Перевести систему в спящий режим:<br />
<br />
$ systemctl suspend<br />
<br />
Перевести систему в ждущий режим:<br />
<br />
$ systemctl hibernate<br />
<br />
== Уровни запуска/target-юниты ==<br />
<br />
Уровни запуска (по-английски уровень запуска - runlevel) для systemd являются устаревшей концепцией. Systemd использует ''target-юниты'' (буквально ''целевые юниты''), которые выполняют ту же задачу, что и уровни запуска, но действуют немного по-другому. Каждый ''target'' поименован (т.е. имеет собственное имя, а не номер) и, как предполагается, предназначен для использования в конкретных целях; возможно иметь в одно и то же время активными несколько таких целевых юнитов. Некоторые ''target-юниты'' реализованы так, что наследуют все сервисы других ''target-юнитов'' и добавляют к ним свои сервисы. В systemd имеются также ''target-юниты'', которые имитируют общие уровни запуска SystemVinit, поэтому вы можете переключаться между целевыми юнитами с использованием привычной команды {{ic|telinit RUNLEVEL}}. <br />
<br />
=== Получение информации о текущем уровне запуска/target-юнитах ===<br />
<br />
При использовании systemd для этого предназначена следующая команда (заменяющая {{ic|runlevel}}):<br />
<br />
# systemctl list-units --type=target<br />
<br />
=== Создание пользовательского target-юнита ===<br />
<br />
Уровни, которым расписаны конкретные цели на установке дистрибутива Fedora по умолчанию - 0, 1, 3, 5 и 6; есть маппинг 1:1 с помощью конкретного ''target-юнита'' systemd. К сожалению, не существует хорошего способа сделать то же самое для определяемых пользователем уровней, таких, как 2 и 4. Использование их предполагает, что вы создаете новый именованный ''target-юнит''systemd наподобие {{ic|/etc/systemd/system/<your target>}}, который берет за основу один из существующих уровней запуска (взгляните, например, на {{ic|/usr/lib/systemd/system/graphical.target}}), создаете также директорию {{ic|/etc/systemd/system/<your target>.wants}} и затем символические ссылки на те дополнительные сервисы из директории {{ic|/usr/lib/systemd/system/}}, которые вы хотите включить при загрузке.<br />
<br />
== Таблица уровней запуска и их аналогов в Systemd ==<br />
<br />
{| class="wikitable" border="1" cellpadding="5" cellspacing="0"<br />
! Уровнень запуска SysV !! Systemd Target !! Примечание<br />
|-<br />
| 0 || runlevel0.target, poweroff.target || Выключить систему.<br />
|-<br />
| 1, s, single || runlevel1.target, rescue.target || Однопользовательский уровень запуска.<br />
|-<br />
| 2, 4 || runlevel2.target, runlevel4.target, multi-user.target || Уровень запуска, определенный пользователем/специфичный для узла. По умолчанию соответствует уровню запуска 3.<br />
|-<br />
| 3 || runlevel3.target, multi-user.target || Многопользовательский режим без графики. Пользователи, как правило, входят с помощью множества консолей или через сеть.<br />
|-<br />
| 5 || runlevel5.target, graphical.target || Многопользовательский режим с графикой. Обычно эквивалентен запуску всех сервисов уровня 3 и графическому менеджеру входа.<br />
|-<br />
| 6 || runlevel6.target, reboot.target || Перезагрузка.<br />
|-<br />
| emergency || emergency.target || Аварийная оболочка.<br />
|-<br />
|}<br />
<br />
=== Изменение текущего уровня запуска ===<br />
<br />
В systemd уровни запуска доступны посредством "target-юнитов". Вы можете изменить их командой:<br />
<br />
# systemctl isolate graphical.target<br />
<br />
Данная команда изменит только лишь текущий уровень запуска и не повлияет на следующую загрузку системы. Она соответствует командам наподобие {{ic|telinit 3}} или {{ic|telinit 5}} для Sysvinit.<br />
<br />
=== Изменение уровня запуска по умолчанию/target-юнита для загрузки ===<br />
<br />
Стандартный target-юнит - {{ic|default.target}}, который по умолчанию является псевдонимом юнита {{ic|graphical.target}} (примерно соответствующего прежнему уровню выполнения 5). Для изменения уровня выполнения, выполняемого при загрузке по умолчанию, добавьте следующий дополнительный [[kernel parameters|параметр ядра]] в вашем загрузчике:<br />
<br />
{{Tip|Расширение {{ic|.target}} можно опустить.}}<br />
<br />
* {{ic|1=systemd.unit=multi-user.target}} (что примерно соответствует прежнему уровню выполнения 3),<br />
* {{ic|1=systemd.unit=rescue.target}} (что примерно соответствует прежнему уровню выполнения 1).<br />
<br />
Другой путь заключается в том, чтобы оставить загрузчик без изменений и изменить целевой юнит по умолчанию - {{ic|default.target}}, что достигается командой {{ic|systemctl}}:<br />
<br />
# systemctl enable multi-user.target<br />
<br />
Эффект от применения данной команды выводится через {{ic|systemctl}}; символическая ссылка на новый target-юнит по умолчанию создается в директории {{ic|/etc/systemd/system/default.target}}. Это сработает в том случае (и только в том случае), если имеется следующая секция:<br />
<br />
[Install]<br />
Alias=default.target<br />
<br />
в конфигурационном файле target-юнита. В настоящий момент как {{ic|multi-user.target}}, так и {{ic|graphical.target}} оба имеют данную секцию.<br />
<br />
== Запуск окружения рабочего стола из systemd ==<br />
<br />
=== Использование экранного менеджера ===<br />
<br />
Чтобы ключить графический вход в систему, запустите выбранный вами демон [[Display Manager (Русский)|экранного менеджера]] (например, [[KDM]]). В настоящий момент доступны сервис-файлы для [[GDM]], [[KDM]], [[SLiM]], [[XDM]], [[LXDM]] и [[LightDM]].<br />
<br />
# systemctl enable kdm.service<br />
<br />
Эта команда должна работать "из коробки". Если вдруг она не сработала, то, возможно, у вас {{ic|default.target}} установлен вручную или остался с прежней установки:<br />
<br />
{{hc|# ls -l /etc/systemd/system/default.target|<br />
/etc/systemd/system/default.target -> /usr/lib/systemd/system/graphical.target}}<br />
<br />
Просто удалите символическую ссылку и systemd будет использовать целевой юнит по умолчанию - {{ic|default.target}} (т.е. {{ic|graphical.target}}).<br />
<br />
# rm /etc/systemd/system/default.target<br />
<br />
=== Запуск через файл сервиса ===<br />
<br />
<br />
{{Note|При использовании данного метода для вашего пользователя не будет создана PAM-сессия, поэтому ConsoleKit (предоставляющий допуск к выключению/перезагрузке системы, аудиоустройствам и т.д.) не будет корректно работать. Рекомендуемый путь описан в разделах: [[#Замена_ConsoleKit_на_systemd-logind|Замена ConsoleKit на systemd-logind]] и [[Automatic_login_to_virtual_console#With_systemd|Автоматический вход в виртуальную консоль с помощью systemd]].}}<br />
<br />
если вам нужен простой путь запуска X напрямую, без использования экранного менеджера входа в систему, вы можете создать сервис-файл наподобие приведенного ниже:<br />
<br />
{{hc|/etc/systemd/system/graphical.target.wants/xinit.service|2=<br />
[Unit]<br />
Description=Direct login to X<br />
After=systemd-user-sessions.service<br />
<br />
[Service]<br />
ExecStart=/bin/su <username> -l -c "/bin/bash --login -c xinit"<br />
<br />
[Install]<br />
WantedBy=graphical.target}}<br />
<br />
== Журнал systemd ==<br />
<br />
С версии 38 systemd имеет собственную систему ведения логов - журнал (journal).<br />
<br />
По умолчанию, более не требуется запуск демона syslog. Для чтения логов используйте команду:<br />
<br />
# journalctl<br />
<br />
Журнал записывается в директорию {{ic|/run/systemd/journal}}, поэтому логи будут потеряны при перезагрузке. Для сохранения логов создайте директорию {{ic|/var/log/journal/}}:<br />
<br />
# mkdir /var/log/journal/<br />
<br />
=== Фильтрация вывода ===<br />
<br />
{{ic|journalctl}} позволяет фильтровать вывод по особым полям.<br />
<br />
Примеры:<br />
<br />
Показать все сообщения определенной программы:<br />
<br />
# journalctl /usr/lib/systemd/systemd<br />
<br />
Показать все сообщения определенного процесса:<br />
<br />
# journalctl _PID=1<br />
<br />
Показать все сообщения определенного юнита:<br />
<br />
# journalctl _SYSTEMD_UNIT=netcfg.service<br />
<br />
Обратитесь к {{ic|man journalctl}} и {{ic|systemd.journal-fields}} для получения детальной информации.<br />
<br />
=== Ограничение размера журнала ===<br />
<br />
Если журнал сохраняется при перезагрузке, размер его по умолчанию ограничен значением в 10% от объема соответствующей файловой системы. Например, для директории {{ic|/var/log/journal}}, расположенной на корневом разделе в 50 Гбайт, максимальный размер журналируемых данных составит до 5 Гбайт. Максимальный объем постоянного журнала можно контролировать при помощи значения {{ic|SystemMaxUse}} в конфигурационном файле {{ic|/etc/systemd/journald.conf}}, поэтому для ограничения его объемом в 50 Mбайт раскомментируйте и отредактируйте соответствующую строку:<br />
<br />
SystemMaxUse=50M<br />
<br />
Обратитесь к {{ic|man journald.conf}} для получения дальнейшей информации.<br />
<br />
=== Journald в связке с классическим демоном syslog ===<br />
<br />
Совместимость с классической реализацией syslog обеспечивается сокетом {{ic|/run/systemd/journal/syslog}}, в который перенаправляются все сообщения. Чтобы дать созможность демону syslog работать вместе с журналом systemd, следует привязать данный демон к указанному сокету вместо {{ic|/dev/log}} ([http://lwn.net/Articles/474968/ официальное сообщение]). В случае с syslog-ng, измените раздел {{ic|source src}} в конфигурационном файле {{ic|/etc/syslog-ng/syslog-ng.conf}} по следующем образцу:<br />
<br />
source src {<br />
unix-dgram("/run/systemd/journal/syslog");<br />
internal();<br />
file("/proc/kmsg");<br />
};<br />
<br />
и включите syslog-ng:<br />
<br />
# systemctl enable syslog-ng.service<br />
<br />
== Сеть ==<br />
<br />
{{Merge|Configuring Network (Русский)|Данный раздел в английской версии включен в состав статьи [[Configuring Network]]; в русской версии временно оставлен из-за того, что русский вариант [[Configuring Network (Русский)]] устарел в сравнении с английским.}}<br />
<br />
=== Динамическое подключение (DHCP) с использованием dhcpcd ===<br />
<br />
Если хотите использовать только DHCP для своего соединения Ethernet, вы можете воспользоваться сервисом {{ic|dhcpcd@.service}} (который поставляется пакетом {{Pkg|dhcpcd}}).<br />
<br />
Чтобы подключить DHCP для {{ic|eth0}}, просто выполните команду:<br />
<br />
# systemctl start dhcpcd@eth0.service<br />
<br />
Вы можете включить этот сервис, и он будет автоматически запускаться при загрузке. Это делается командой:<br />
<br />
# systemctl enable dhcpcd@eth0.service<br />
<br />
Иногда сервис dhcpd запускается до загрузки модуля вашей сетевой карты ({{bug|30235}}), в этом случае вручную добавьте вашу сетевую карту в конфигурационный файл {{ic|/etc/modules-load.d/*.conf}}. Например, для карты Realtek необходима загрузка модуля {{ic|r8169}}, поэтому создайте такой конфигурационный файл:<br />
<br />
{{hc|/etc/modules-load.d/realtek.conf|2=<br />
r8169}}<br />
<br />
=== Другие конфигурации ===<br />
<br />
Для статического подключения, беспроводной сети или сложной конфигурации сети наподобие сетевого моста, вы можете использовать [[Netcfg#systemd_support|netcfg]] или [[NetworkManager#Enable_NetworkManager_under_Native_systemd_system|NetworkManager]], для обеих этих инструментов управления сетью имеются сервис-файлы для systemd.<br />
<br />
{{Note|Если вы хотите использовать netcfg, networkmanager или другие программы управления сетью, вам не надо в этом случае запускать или включать сервис dhcpcd как показано в предыдущем параграфе.}}<br />
<br />
==Интеграция с Arch==<br />
<br />
=== Эмуляция initscripts ===<br />
<br />
Интеграция с классической конфигурацией Arch Linux обеспечивается пакетом {{Pkg|initscripts}}. Данная интеграция рассматривается как просто переходная мера для легкой миграции пользователей на systemd.<br />
<br />
{{Note|Файл {{ic|/etc/inittab}} вообще не используется.}}<br />
<br />
Если вы отключали использование сочетания клавиш для перезагрузки системы {{keypress|Ctrl+Alt+Del}} в файле {{ic|/etc/inittab}}, теперь вам надо заново сделать это для systemd командой {{ic|systemctl mask ctrl-alt-del.target}}, выполняемой от суперпользователя root.<br />
<br />
==== rc.conf ====<br />
<br />
Некоторые переменные в прежнем основном конфигурационном файле {{ic|/etc/rc.conf}} предположительно не будут корректно работать. Для чистой установки systemd setup рекомендуется использовать [[Systemd (Русский)#Родные системные файлы в systemd|родные системные файлы]], которые имеют приоритет над установками в {{ic|/etc/rc.conf}}.<br />
<br />
Поддерживаются (но не рекомендуются):<br />
<br />
* {{ic|CONSOLEFONT}}<br />
* {{ic|CONSOLEMAP}}<br />
* {{ic|DAEMONS}}<br />
* {{ic|HOSTNAME}}<br />
* {{ic|KEYMAP}}<br />
* {{ic|LOCALE}}<br />
<br />
Не поддерживаются:<br />
<br />
* {{ic|HARDWARECLOCK}}: обратитесь к разделу [[Systemd (Русский)#Аппаратные часы|Аппаратные часы]].<br />
* {{ic|MODULES}}: используйте взамен конфигурационные файлы в директории {{ic|modules-load.d}}.<br />
* {{ic|TIMEZONE}}: вручную сделайте символическую ссылку {{ic|/etc/localtime}} на файл вашей временной зоны.<br />
* {{ic|USELVM}}: взамен используйте {{ic|lvm.service}}, поставляемый пакетом {{pkg|lvm2}}.<br />
* {{ic|USECOLOR}}<br />
<br />
=== Полный переход к конфигурационным файлам systemd ===<br />
<br />
{{Note|Этот метод является предпочтительным, при его использовании система более не зависит от централизованной настройки в файле {{ic|rc.conf}}, а использует родные системные файлы systemd.}}<br />
<br />
Последуйте настройке конфигурационных файлов как показано в разделе [[Systemd (Русский)#Родные системные файлы в systemd|Родные системные файлы в systemd]]. Каждый файл заменяет одну из секций в {{ic|/etc/rc.conf}}, как показано в данной таблице:<br />
<br />
{| class="wikitable"<br />
|-<br />
! scope="col"| Настройка<br />
! scope="col"| Конфигурационный файл (файлы)<br />
! scope="col"| Устаревшая секция [https://projects.archlinux.org/initscripts.git/tree/rc.conf?id=97f0cd6751e8d22c14d7492cdc2186cf41157ba6 rc.conf]<br />
|-<br />
| align="center"|Имя компьютера (Hostname)<br />
| align="left"|{{ic|/etc/hostname}}<br />
{{ic|/etc/hosts}}<br />
| align="center"|{{ic|NETWORKING}}<br />
|-<br />
| align="center"|Консоль и раскладка клавиатуры<br />
| align="left"|{{ic|/etc/vconsole.conf}}<br />
| align="center"|{{ic|LOCALIZATION}}<br />
|-<br />
| align="center"|Локаль<br />
| align="left"|{{ic|/etc/locale.conf}}<br />
{{ic|/etc/locale.gen}}<br />
| align="center"|{{ic|LOCALIZATION}}<br />
|-<br />
| align="center"|Временная зона<br />
| align="left"|{{ic|/etc/localtime}}<br />
| align="center"|{{ic|LOCALIZATION}}<br />
|-<br />
| align="center"|Аппаратные часы<br />
| align="left"|{{ic|/etc/adjtime}}<br />
| align="center"|{{ic|LOCALIZATION}}<br />
|-<br />
| align="center"|Модули ядра<br />
| align="left"|{{ic|/etc/modules-load.d/}}<br />
| align="center"|{{ic|HARDWARE}}<br />
|}<br />
<br />
Для целей совместимости секция {{ic|DAEMONS}} в {{ic|/etc/rc.conf}} еще может использоваться вместе с systemd для запуска сервисов при загрузке системы, даже при "чистой" установке менеджера служб systemd. Взамен этого вы можете полностью удалить файл {{ic|/etc/rc.conf}} и включить сервисы в systemd. Для каждого сервиса с именем {{ic|<service_name>}} в массиве {{ic|DAEMONS}} из файла {{ic|/etc/rc.conf}} выполните команду:<br />
<br />
# systemctl enable <service_name>.service<br />
<br />
{{Tip|Для получения списка обычно используемых демонов с их эквивалентами в initscripts и systemd, обратитесь к [[Daemon#List_of_Daemons|данной таблице]].}}<br />
<br />
Если сервис-файл {{ic|<service_name>.service}} отсутствует:<br />
<br />
* сервис-файл может быть недоступен для systemd. В этом случае вам нужно сохранить конфигурационный файл {{ic|rc.conf}} для запуска этих сервисов во время загрузки системы.<br />
* systemd может называть сервисы другими именами, например, {{ic|cronie.service}} заменяет демон {{ic|crond}}; {{ic|alsa-store.service}} и {{ic|alsa-restore.service}} заменяют демон {{ic|alsa}}. Другой важный пример - демон {{ic|network}}, которого сменил целый набор сервис-файлов (обратитесь к разделу [[#Сеть]] для получения дальнейшей информации.)<br />
<br />
{{Tip|Вы можете заглянуть вовнутрь пакета, содержащего стартовые скрипты демона, чтобы узнать имена его сервис-файла. К примеру:<br />
$ pacman -Ql cronie<br />
[...]<br />
cronie /etc/rc.d/crond #демон initscript, указываемый в массивеe DAEMONS (не используется при "чистой" настройке systemd)<br />
[...]<br />
cronie /usr/lib/systemd/system/cronie.service #Соответствующий сервис systemd<br />
[...]<br />
}}<br />
<br />
== Написание пользовательского .service файла ==<br />
<br />
=== Обработка зависимостей ===<br />
<br />
В случае использования systemd зависимости могут быть разрешены правильным построением файлов юнитов. ,Наиболее частый случай -- когда юниту {{ic|A}} требуется, чтобы юнит {{ic|B}} был запущен перед тем, как запустится сам юнит {{ic|A}}. В этом случае добавьте строки {{ic|1=Requires=B}} и {{ic|1=After=B}} в секцию {{ic|[Unit]}} сервис-файла юнита {{ic|A}}. Если подобная зависимость не является обязательной, добавьте соответственно взамен указанных выше строки {{ic|1=Wants=B}} и {{ic|1=After=B}}. Обратите внимание, что {{ic|1=Wants=}} и {{ic|1=Requires=}} не подразумевают {{ic|1=After=}}, что означает, что если {{ic|1=After=}} не определено, два юнита будут запущены параллельно друг другу.<br />
<br />
Обычно зависимости указываются в сервис-файлах, а не в целевых (target) файлах. Например, {{ic|network.target}} потребуется любому сервису, который связан с настройкой ваших сетевых интерфейсов, поэтому в любом случае определите загрузку вашего пользовательского юнита после запуска {{ic|network.target}}.<br />
<br />
=== Тип ===<br />
<br />
Существует несколько различных типов запуска служб, которые надо иметь в виду при написании пользовательского сервис-файла. Тип запуска определяется параметром {{ic|1=Type=}} в секции {{ic|[Service]}}. Обратитесь к руководству {{ic|man systemd.service}} для получения более детального объяснения.<br />
<br />
* {{ic|1=Type=simple}}: systemd предполагает, что сервис будет запущен незамедлительно. Процесс при этом не должен форкнуться. Не используйте этот тип, если другим сервисы зависят от очередности при запуске данного сервиса, за исключением активации сокета.<br />
* {{ic|1=Type=forking}}: systemd предполагает, что сервис запускается однократно, процесс форкается и родительский процесс завершается. Используйте данный тип для запуска классических демонов за исключением тех случаев, когда, как вам известно, в таком поведении процесса нет необходимости. Вам следует также определить {{ic|1=PIDFile=}}, чтобы systemd могла отслеживать основной процесс.<br />
* {{ic|1=Type=oneshot}}: Полезен для скриптов, которые выполняют одну работу, а потом завершаются. Вам может понадобиться также установить параметр {{ic|1=RemainAfterExit=}}, чтобы systemd по-прежнему считала процесс активным, даже после его завершения<br />
* {{ic|1=Type=notify}}: Идентичен параметру {{ic|1=Type=simple}}, но с той оговоркой, что демон пошлет systemd сигнал о своей готовности. Эталонная реализация данного уведомления обеспечивается библиотекой {{ic|libsystemd-daemon.so}}.<br />
* {{ic|1=Type=dbus}}: Сервис считается находящимся в состоянии готовности, когда определенное {{ic|BusName}} появляется в системной шине DBus.<br />
<br />
=== Замена предоставленных пакетами файлов юнитов ===<br />
<br />
Файлы юнитов в директории {{ic|/etc/systemd/system/}} имеют приоритет над такими же файлами в директории {{ic|/usr/lib/systemd/system/}}.<br />
Для создания собственной версии юнита (который не будет затерт при обновлении), скопируйте старый юнит из директории {{ic|/usr/lib/}} в директорию {{ic|/etc/}} и внесите в эту копию свои изменения. Альтернативным вариантом является использование {{ic|.include}} для парсинга существующего сервис-файла и затем переопределения или добавления новых опций. Например, если вы просто хотите добавить в сервис-файл дополнительную зависимость, вы можете использовать такую команду в юните:<br />
<br />
{{hc|/etc/systemd/system/<service-name>.service|2=<br />
.include /usr/lib/systemd/system/<service-name>.service<br />
<br />
[Unit]<br />
Requires=<new dependency><br />
After=<new dependency>}}<br />
<br />
Затем выполните следующие команды для того, чтобы изменения вступили в силу:<br />
<br />
# systemctl reenable <unit><br />
# systemctl restart <unit><br />
<br />
{{Tip|Вы можете использовать команду {{ic|systemd-delta}}, чтобы увидеть, какие файлы юнитов были переопределены и что в точности было изменено.}}<br />
<br />
=== Подсветка синтаксиса файлов юнитов systemd в Vim ===<br />
<br />
подсветка синтаксиса файлов юнитов для systemd в редакторе [[Vim]] может быть осуществлена путем установки пакета {{AUR|vim-systemd}} из [[Arch User Repository|AUR]].<br />
<br />
== Оптимизация ==<br />
<br />
=== systemd-analyze ===<br />
<br />
Systemd предоставляет инструмент под названием {{ic|systemd-analyze}}, позволяющий проанализировать процесс загрузки вашей системы, чтобы можно было увидеть, какие файлы юнитов тормозят загрузку. Соответственно, вы можете оптимизировать вашу систему. Для использования данного инструмента вам потребуется установить пакеты {{Pkg|python2-dbus}} и {{Pkg|python2-cairo}}.<br />
<br />
Чтобы увидеть, сколько времени было потрачено на подготовку пространства ядра и пространства пользователя во время загрузки, просто выполните команду:<br />
<br />
$ systemd-analyze<br />
<br />
{{Tip|Чтобы увидеть, сколько времени ушло на загрузку образа initramfs, добавьте хук {{ic|timestamp}} в ваш массив {{ic|HOOKS}} из конфигурационного файла {{ic|/etc/[[mkinitcpio]].conf}} и от суперпользователя root пересоберите ваш образ initramfs командой {{ic|mkinitcpio -p linux}} }}<br />
<br />
Чтобы увидеть список запускаемых файлов юнитов, отсортированный по потраченному каждым из них на загрузку времени, выполните команду:<br />
<br />
$ systemd-analyze blame<br />
<br />
Вы также можете создать файл SVG, показывающий процесс загрузки в графическом виде, наподобие [[Bootchart]]:<br />
<br />
$ systemd-analyze plot > plot.svg<br />
<br />
==== Включение bootchart в связке с systemd ====<br />
<br />
Вы можете использовать версию bootchart для визуализации последовательности при загрузке системы.<br />
Из-за невозможности использовать стандартные установки bootchart (так как нельзя добавить в командную строку ядра вторую запись init), вам придется воспользоваться пакетом {{AUR|bootchart2}} из [[AUR]], поставляемым с недокументированным сервисом systemd. После установки bootchart2 выполните команду:<br />
<br />
# systemctl enable bootchart.service<br />
<br />
Обратитесь к [https://github.com/mmeeks/bootchart документации bootchart (англ.)] за дальнейшей и детализированной информацией об использовании данной версии bootchart.<br />
<br />
=== Сокращения командной оболочки ===<br />
<br />
Демон управления systemd требует ввода достаточно большого объема текста команд для выполнения таких процессов, как запуск, остано, включение, проверка статуса сервисов и т.д. Добавление в ваш конфигурационный файл {{ic|~/.bashrc}} следующих функций поможет уппростить взаимодействие с systemd и усовершенствовать опыт ее использования.<br />
<br />
{{bc|# упростим команду systemd, например, "sudo systemctl stop xxx.service" - > "0.stop xxx"<br />
if ! systemd-notify --booted;<br />
then # for not systemd<br />
0.start() {<br />
sudo rc.d start $1<br />
}<br />
<br />
0.restart() {<br />
sudo rc.d restart $1<br />
}<br />
<br />
0.stop() {<br />
sudo rc.d stop $1<br />
}<br />
else<br />
# запустить сервис systemd<br />
0.start() {<br />
sudo systemctl start $1.service<br />
}<br />
# перезапустить сервис systemd<br />
0.restart() {<br />
sudo systemctl restart $1.service<br />
}<br />
# stop systemd service<br />
0.stop() {<br />
sudo systemctl stop $1.service<br />
}<br />
# включить сервис systemd<br />
0.enable() {<br />
sudo systemctl enable $1.service<br />
}<br />
# выключить сервис systemd<br />
0.disable() {<br />
sudo systemctl disable $1.service<br />
}<br />
# показать статус сервиса<br />
0.status() {<br />
systemctl status $1.service<br />
}<br />
# прерзагрузить конфигурацию сервиса<br />
0.reload() {<br />
sudo systemctl reload $1.service<br />
}<br />
# показать все запущенные сервисы<br />
0.list() {<br />
systemctl<br />
}<br />
# показать все сервисы, запуск которых завершился неудачей<br />
0.failed () {<br />
systemctl --failed<br />
}<br />
# показать все доступные файлы юнитов<br />
0.list-files() {<br />
systemctl list-unit-files<br />
}<br />
# проверить лог<br />
0.log() {<br />
sudo journalctl<br />
}<br />
# показать необязательные зависимости<br />
0.wants() {<br />
systemctl show -p "Wants" $1.target<br />
}<br />
# анализ системы<br />
0.analyze() {<br />
systemd-analyze $1<br />
}<br />
fi<br />
}}<br />
<br />
{{Warning|Скопируйте в свой {{ic|~/.bashrc}} [[Systemd#Shell_Shortcuts|английскую версию]] данных сокращений, чтобы избежать проблем с командной оболочкой. }}<br />
<br />
=== Сокращение вывода ===<br />
<br />
Измените параметр {{ic|verbose}} на {{ic|quiet}} в строке загрузки ядра вашего загрузчика. Для некоторых систем, в частности с SSD, узким местом является низкая производительность TTY, поэтому сокращение вывода означает прирост скорости загрузки.<br />
<br />
=== Ранний старт ===<br />
<br />
Одним из центральных элементов systemd является [[D-Bus]] и активация сокетов, что требует запуска сервисов при первой потребности в них. Обычно такой подход является удачным, но, если вы знаете, что какой-то сервис (вроде [[ConsoleKit]])должен всегда запускаться во время загрузки системы, то вы можете сократить общее время загрузки, запуская его так рано, как это вообще возможно. Этого можно добиться (если сервис-файл устроен соответствующим образом, что верно в большинстве случаев) путем выполнения команды:<br />
<br />
# systemctl enable console-kit-daemon.service<br />
<br />
Это заставит systemd запустить ConsoleKit как рано, как это возможно, не устраивая перегонки данного сервиса с активацией сокета или D-Bus.<br />
<br />
=== Автомонитрование ===<br />
<br />
Установка по умолчанию запускает fsck и монтирует все файловые системы перед запуском большинства демонов и сервисов. Если ваш раздел {{ic|/home}} занимает большой объем, лучшим вариантом было бы позволить сервисам не зависеть от подключения {{ic|/home}} и запускать данные сервисы, когда {{ic|/home}} еще подвергается проверке при загрузке системы. Добиться такого результата можно добавлением следующих параметров в запись файла fstab, касающуюся раздела {{ic|/home}}:<br />
<br />
noauto,x-systemd.automount<br />
<br />
Такие параметры вызовут fsck и примонтируют {{ic|/home}} при первом обращении к данному разделу, и ядро будет буферизовать все файлы доступа к {{ic|/home}} до готовности данного раздела.<br />
<br />
В случае использования зашифрованных файловых систем с ключами доступа, вам также Iследует добавить параметр {{ic|noauto}} в соответствующие записи файла {{ic|/etc/crypttab}}. systemd не будет подключать зашифрованные устройства при загрузке, но, вместо этого, дождется реального обращения к ним и автоматически откроет к ним доступ с использованием определенных ключей перед тем, как они будут примонтированы. Это сэкономит несколько секунд при загрузке системы, например, в случае использования зашифрованного устройства RAID, потому что systemd не будет дожидаться от устройства, когда оно станет доступным. Например:<br />
<br />
{{hc|/etc/crypttab|<br />
data /dev/md0 /root/key noauto}}<br />
<br />
=== Readahead ===<br />
<br />
systemd поставляется со свой реализации технологии readahead, что в принципе должно усовершенствовать процесс загрузки системы. Однако, в зависимости от версии вашего ядра и типа жесткого диска, скорость обращения к данным может разниться (например, может быть медленнее). Чтобы включить данный сервис, выполните:<br />
<br />
# systemctl enable systemd-readahead-collect.service systemd-readahead-replay.service<br />
<br />
Не забудьте, что волшебство технологии readahead подействует только после нескольких перезапусков системы<br />
<br />
=== Замена ConsoleKit на systemd-logind ===<br />
<br />
Начиная с {{Pkg|polkit}} 0.107 (в настоящее время в репозитории [testing]), [[ConsoleKit]] можно полностью заменить на {{ic|systemd-logind}}. Самый легкий метод удаления [[ConsoleKit]] заключается в [[Automatic_login_to_virtual_console#With_systemd|автоматическом входе в виртуальную консоль]] и [[Start_X_at_Boot|запуска X оттуда]]. Важно понять, что, как указано в последней статье, сервер X запускается в той же виртуальной консоли, в которую вы загрузились, в противном случае systemd не сможет следить за пользовательской сессией. Затем можно просто удалить {{ic|ck-launch-session}} из вашего файла {{ic|~/.xinitrc}}.<br />
<br />
Для того, чтобы проверить статус вашей пользовательской сессии, вы можете использовать команду {{ic|loginctl}}. Чтобы убедиться, что ваша пользовательская сессия правильно установлена, проверьте, содержит ли следующая команда {{ic|1=Active=yes}}. Все действия {{Pkg|polkit}} actions наподобие перевода системы в спящий режим или монтирования внешних носителей с помощью [[Udisks]] должны работать автоматически.<br />
<br />
$ loginctl show-session <session-id><br />
<br />
{{Note|При использовании [[NetworkManager]] вам необходимо перекомпилировать данный пакет с поддержкой systemd из [[ABS]] путем записи опции {{ic|1=--with-session-tracking=systemd}} в [[PKGBUILD]].}}<br />
<br />
== Устранение неполадок ==<br />
<br />
=== Выключение/перезагрузка происходят ужасно долго ===<br />
<br />
Если процесс выключения занимает очень долгое время (или, по-видимому, зависает), то, вероятно, виноват сервис, который не завершает свою работу. systemd ожидает некоторое время, пока каждый сервис завершит свою работу самостоятельно, и только потом пытается принудительно завершить (kill) его. Если вы столкнулись с такой проблемой, обратитесь к [http://freedesktop.org/wiki/Software/systemd/Debugging#Shutdown_Completes_Eventually данной статье (англ.)].<br />
<br />
== Полезные ссылки ==<br />
<br />
*[http://www.freedesktop.org/wiki/Software/systemd Официальный веб-сайт (англ.)]<br />
*[http://0pointer.de/public/systemd-man/ Страницы руководств (англ.)]<br />
*[http://freedesktop.org/wiki/Software/systemd/Optimizations systemd Optimizations (англ.)]<br />
*[http://www.freedesktop.org/wiki/Software/systemd/FrequentlyAskedQuestions FAQ (англ.)]<br />
*[http://www.freedesktop.org/wiki/Software/systemd/TipsAndTricks Tips And Tricks (англ.)]<br />
*[http://0pointer.de/public/systemd-ebook-psankar.pdf systemd для администраторов (PDF) - перевод цикла статей Леннарта Поттеринга (Lennart Poettering) ]<br />
*[http://0pointer.de/blog/projects/systemd.html Блог Lennart'а (англ.)]<br />
*[http://archlinux.org.ru/forum/viewtopic.php?f=9&t=9581 systemd mini FAQ]<br />
*[http://wiki.russianfedora.ru/index.php?title=Systemd systemd - база знаний проекта Fedora]<br />
*[http://fedoraproject.org/wiki/Systemd Fedora Linux Wiki: Systemd (англ.)]<br />
*[http://wiki.debian.org/ru/Systemd Debian Wiki: systemd - менеджер системы и сервисов]<br />
*[http://wiki.ubuntu.com/systemd Ubuntu Wiki: systemd (англ.)]<br />
*[http://fedoraproject.org/wiki/Systemd OpenSuse Wiki: SDB:Systemd]</div>Klayhttps://wiki.archlinux.org/index.php?title=Systemd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=230547Systemd (Русский)2012-10-22T01:44:13Z<p>Klay: Undo revision 230541 by Klay (talk)</p>
<hr />
<div>[[Category:Русский]]<br />
[[Category:Демоны и системные сервисы (Русский)]]<br />
[[Category:Процесс Загрузки (Русский)]]<br />
[[en:systemd]]<br />
[[es:systemd]]<br />
[[fr:systemd]]<br />
[[it:systemd]]<br />
[[zh-CN:systemd]]<br />
{{Article summary start|Сводка}}<br />
{{Article summary text|Статья охватывает установку и настройку systemd.}}<br />
{{Article summary heading|Связанные статьи}}<br />
{{Article summary wiki|Systemd/Services}}<br />
{{Article summary wiki|Init_Rosetta_(Русский)}}<br />
{{Article summary wiki|Udev_(Русский)}}<br />
{{Article summary end}}<br />
Цитата с [http://freedesktop.org/wiki/Software/systemd веб-страницы проекта]:<br />
<br />
''"'''systemd''' - система [инициализации] и менеджер служб для Linux, совместимые со скриптами инициализации SysV и LSB. systemd обеспечивает возможности агрессивной параллелизации, использует сокеты и активацию [[D-Bus]] для запускаемых служб, предлагает запуск демонов по необходимости, отслеживает процессы при помощи [[cgroups|контрольных групп]] Linux, поддерживает мгновенные снимки и восстановление состояния системы, монтирование и точки монтирования, а также внедряет основанную на зависимостях логику контроля процессов сложных транзакций. Эта система может выступать заменой sysvinit."''.<br />
<br />
{{Note|За детальным объяснением причин перехода Arch'а на systemd обратитесь к [https://bbs.archlinux.org/viewtopic.php?pid&#61;1149530#p1149530 сообщению на англоязычном форуме].}}<br />
<br />
Смотрите также [[Wikipedia:Systemd|статью в Википедии]].<br />
== Что надо усвоить до начала миграции на данную систему ==<br />
<br />
* Настоятельно рекомендуется перейти на новую конфигурацию '''initscripts''', описанную в статье [[rc.conf (Русский)|rc.conf]]. Сконфигурировав таким образом свою систему, вы проделаете бóльшую часть работы, необходимую для миграции на systemd.<br />
* Почитайте про systemd на [http://freedesktop.org/wiki/Software/systemd/ сайте разработчиков].<br />
* Обратите внимание, что systemd имеет собственный '''журнал (journal)''', заменяющий '''syslog''', хотя оба варианта ведения логов могут сосуществовать. Обратитесь к приведенному ниже разделу [[#Journald_в_связке_с_классическим_демоном _syslog|разделу, посвященному журналу]].<br />
* Хотя systemd вполне способна заменить определенную функциональность таких демонов, как '''cron''', '''acpid''' или '''xinetd''', но если вы не хотите, можете не отказываться от использования традиционных демонов.<br />
<br />
== Установка ==<br />
systemd может быть установлен параллельно со стандартным пакетом инициализации {{Pkg|initscripts}}, и между ними можно будет переключаться путем добавления/удаления [[kernel parameters|параметров ядра]] {{ic|1=init=/usr/lib/systemd/systemd}}. <br />
<br />
=== Смешанная установка systemd/sysvinit/initscripts ===<br />
<br />
Возможно иметь в своей системе одновременно установленными systemd и sysvinit и использовать одну и те же конфигурационные файлы, что позволит вам свободно переключаться между ним туда и обратно:<br />
<br />
# Откажитесь от устаревших форматов конфигурации initscripts (о них сообщается при загрузке системы) в пользу [[#Родные системные файлы в systemd|родных системных файлов systemd]] и перезагрузитесь для проверки работоспособности данных установок при использовании initscripts.<br />
# Установите пакет {{Pkg|systemd}} из [[Official Repositories (Русский)|официальных репозиториев]].<br />
# Добавьте запись {{ic|1=init=/usr/lib/systemd/systemd}} к [[Kernel parameters|параметрам ядра]] в вашем загрузчике.<br />
# Перезагрузите систему.<br />
<br />
Systemd запустит демоны, перечисленные в {{ic|/etc/rc.conf}}, выполнит {{ic|/etc/rc.local}} и {{ic|/etc/rc.local.shutdown}} соответственно при загрузке/выключении системы. Если поддержка совместимости с массивом DAEMONS в конфигурационном файле {{ic|rc.conf}} или же скриптов в {{ic|rc.local}} вам не нужна, соответствующие сервис-файлы могут быть заблокированы (замаскированы) для их отключения.<br />
<br />
{{Warning|В случае, когда у вас в массиве DAEMONS перечислены демоны, для которых имеются родные сервис-файлы systemd, автоматически будут использоваться родные сервис-файлы. Тем не менее, если имена скриптов rc и сервисов systemd (так далее будут именоваться службы данной системы инициализации) не соответствуют друг другу, данное правило не сработает и вам следует убедиться, что только включен только один из них двух (предпочтительно родной сервис-файл).}}<br />
<br />
{{Warning|Systemd - процесс асинхронной загрузки по сравнению сравнении с последовательным запуском демонов из массива DAEMONS. В частности, "network", будучи поддерживаемым для совместимости сервисом, может запуститься слишком поздно для включения интерфейсов, которые требуются другим сервисам. Рекомендуется переключиться на использование netcfg или NetworkManager до перехода на systemd.}}<br />
<br />
=== Смешанная установка systemd/initscripts ===<br />
<br />
Возможно заменить sysvinit на systemd, но сохранить initscripts в случае использования некоторых скриптов rc scripts, для которых пока не имеется эквивалентов в systemd.<br />
<br />
# Следуйте инструкциям для смешанной установки systemd/sysvinit/initscripts.<br />
# [[#Использование_юнитов|Включите демоны]], ранее перечисленные в {{ic|/etc/rc.conf}} с помощью команды {{ic|systemctl enable ''daemonname.'''service''' ''}}. Для переноса демонов из {{ic|/etc/rc.conf}} в разряд сервисов systemd, смотрите разделы: [[Daemon#List_of_Daemons|List of Daemons]] и [[Systemd/Services|Services]]. Демоны, для которых не имеется соответствующих сервис-файлов systemd, следует оставить в массиве DAEMONS, поскольку systemd запустит устаревшие скрипты rc.<br />
# Установите пакет {{Pkg|systemd-sysvcompat}}. Данный пакет конфликтует с {{Pkg|sysvinit}} и вам будет предложено удалить последний.<br />
# Удалите запись {{ic|1=init=...}}, поскольку {{ic|/sbin/init}} теперь является символической ссылкой на systemd.<br />
# Перезагрузите систему.<br />
<br />
Единственная разница между этим вариантом и вариантом с сохранением sysvinit состоит в том, что все бинарные файлы sysvinit заменены символическими ссылками на systemctl. Тем не менее, функциональность должна остаться неизменной.<br />
<br />
=== Чистая установка systemd ===<br />
<br />
Напоследок, возможно вовсе удалить initscripts и sysvinit и использовать только лишь systemd.<br />
<br />
# Следуйте инструкциям для смешанной установки systemd/initscripts.<br />
# Убедитесь, что более не имеется каких-либо демонов для запуска из массива DAEMONS в конфигурационном файле {{ic|/etc/rc.conf}} и оба файла {{ic|/etc/rc.local}} и {{ic|/etc/rc.local.shutdown}} пусты.<br />
# Удалите пакет initscripts из вашей системы.<br />
<br />
=== Дополнительная информация ===<br />
<br />
{{Tip|Если в параметрах ядра имеется значение {{ic|quiet}}, вероятно, вам стоит удалить его для нескольких первых загрузок systemd, чтобы видеть возникающие во время загрузке проблемы.}}<br />
<br />
== Родные системные файлы в systemd ==<br />
<br />
{{Note|Возможно, вам придется создать эти файлы. Установите для них права доступа 644 и владельца root:root.}}<br />
<br />
{{Pkg|systemd}} будет использовать {{ic|/etc/rc.conf}}, если эти конфигурационные файлы отсутствуют. Обратите внимание, что такое использование может быть только временным решением. Настоятельно рекомендуется для любой системы использовать конфигурационные файлы systemd.<br />
<br />
=== Имя компьютера (hostname) ===<br />
<br />
{{hc|/etc/hostname|<br />
myhostname}}<br />
<br />
=== Консоль и раскладка клавиатуры ===<br />
<br />
Файл {{ic|/etc/vconsole.conf}} устанавливает настройки виртуальной консоли: раскладку клавиатуры и консольный шрифт.<br />
<br />
{{hc|/etc/vconsole.conf|2=<br />
KEYMAP=ru<br />
FONT=cyr-sun16<br />
FONT_MAP=}}<br />
<br />
Для получения детальной информации обратитесь к разделам [[Fonts#Console_fonts|Console fonts]] and [[KEYMAP#Keyboard_layouts|Keymap]]. <br />
<br />
{{Note|{{ic|{{Pkg|systemd}}-194}} использует шрифт ядра и раскладку по умолчанию (т.е. американскую английскую). Нет более необходимости (для тех, кто использует данную раскладку) иметь в конфигурационном файле строки {{ic|1=KEYMAP=}} и {{ic|1=FONT=}} с пустыми значениями.}}<br />
<br />
=== Локаль ===<br />
Для получения подробной информации о вариантах настройки обратитесь к руководству {{ic|man locale.conf}}<br />
<br />
{{hc|/etc/locale.conf|2=<br />
LANG=ru_RU.UTF-8}}<br />
<br />
Дальнейшая информация содержится в статье [[Locale]].<br />
<br />
=== Временная зона ===<br />
<br />
Для получения подробной информации о вариантах настройки обратитесь к руководству {{ic|man 5 localtime}}.<br />
<br />
# ln -sf /usr/share/zoneinfo/America/Chicago /etc/localtime<br />
<br />
{{Note|Прежний конфигурационный файл {{ic|/etc/timezone}} объявлен устаревшим с выходом {{ic|systemd-190}} и может/должен быть удален.}}<br />
<br />
=== Аппаратные часы ===<br />
<br />
Systemd будет использовать UTC для аппаратных часов, именно такой вариант рекомендуется. Настройка зимнего/летнего времени - неблагодарное занятие. Если переход на зимнее/летнее время происходит в тот момент, когда ваш компьютер выключен, то при следующей загрузке ваши часы будут показывать ошибочное время ([http://www.cl.cam.ac.uk/~mgk25/mswish/ut-rtc.html здесь об этом чуть подробнее (англ.)]). Последние версии ядра устанавливают системное время из RTC (часов реального времени) непосредственно во время загрузки без использования {{ic|hwclock}}, при этом ядро всегда считает, что RTC выставлено по UTC. Это означает, что если RTC выставлено по местному времени (local time), системное время будет изначально установлено ошибочно и затем корректироваться вскоре после этого при каждой загрузке. Это является причиной некоторых досадных багов (идущие назад часы редко являются нужной вещью).<br />
<br />
Причиной, позволяющей RTC быть выставленными по местному времени, является двойная загрузка системы с Windows, ([http://blogs.msdn.com/b/oldnewthing/archive/2004/09/02/224672.aspx которая использует localtime (англ.)]). Windows воспринимает RTC, выставленные по UTC при помощи простого [[Time#UTC_in_Windows|исправления реестра]]. Если вы столкнетесь с подобными проблемами при двойной загрузке с Windows, вы можете установить аппаратные часы на использование местного времени.<br />
<br />
{{hc|/etc/adjtime|<br />
0.0 0.0 0.0<br />
0<br />
LOCAL}}<br />
<br />
Другие параметры по-прежнему нужны, но они игнорируются systemd.<br />
<br />
Обычно рекомендуется запускать [[NTP|демон Network Time Protocol]] для поддержания синхронизации аппаратных часов с системным временем.<br />
<br />
=== Подгружаемые модули ядра ===<br />
<br />
systemd использует конфигурационные файлы из директории {{ic|/etc/modules-load.d/}} для определения модулей ядра, подгружаемых во время загрузки системы. Каждый из конфигурационных файлов имеет наименование вида {{ic|/etc/modules-load.d/<program>.conf}} (где <program> - имя подгружаемого модуля). При этом игнорируются как пустые строки конфигурационных файлов, так и строки, у которых первым символом, отличным о пробела, является символ {{ic|#}} и {{ic|;}}. Например:<br />
<br />
{{hc|/etc/modules-load.d/virtio-net.conf|<br />
# Load virtio-net.ko at boot<br />
virtio-net}}<br />
<br />
Также смотрите раздел [[Modprobe#Options]].<br />
<br />
=== Черный список модулей ядра ===<br />
<br />
Добавление модулей в черный список работает также, как и в случае с {{Pkg|initscripts}}, поскольку в действительности эта функция выполняется таким инструментом, как {{Pkg|kmod}}. Обратитесь к разделу [[Kernel_modules#Blacklisting|Module Blacklisting]] за более подробной информацией.<br />
<br />
=== Временные файлы ===<br />
<br />
Systemd-tmpfiles использует конфигурационные файлы в директориях {{ic|/usr/lib/tmpfiles.d/}} и {{ic|/etc/tmpfiles.d/}} для определения действий с временными файлами и директориями (создание, очистка и удаление их), обычно расположенные в {{ic|/run}} or {{ic|/tmp}}. Каждый файл с настройками имеет название вида {{ic|/etc/tmpfiles.d/<program>.conf}}. Данные конфигурационные файлы имеют приоритет по сравнению с любыми файлами с таким же названием, расположенными в директории {{ic|/usr/lib/tmpfiles.d/}}.<br />
<br />
Временные файлы tmpfiles обычно поставляются вместе с сервис-файлами для создания директорийк. которые, как ожидается, будут использоваться определенными демонами. Например, демон [[Samba]] предполагает наличие директории {{ic|/var/run/samba}} с соответствующими правами доступа. В данном случае tmpfile выглядит следующим образом:<br />
<br />
{{hc|/usr/lib/tmpfiles.d/samba.conf|<br />
D /var/run/samba 0755 root root}}<br />
<br />
Тем не менее, tmpfiles также могут использоваться для записи значений в определенные файлы во врем загрузки. К примеру, если вы используете {{ic|/etc/rc.local}} для того, чтобы отключить пробуждение системы USB-устройствами, при помощи команды {{ic|echo USBE > /proc/acpi/wakeup}}, вы можете вместо этого использовать следующий tmpfile:<br />
<br />
{{hc|/etc/tmpfiles.d/disable-usb-wake.conf|<br />
w /proc/acpi/wakeup - - - - USBE}}<br />
<br />
Метод с использованием tmpfiles в данном случае рекомендуется, поскольку systemd в действительности не поддерживает {{ic|/etc/rc.local}}.<br />
<br />
Обратитесь к руководству {{ic|man tmpfiles.d}} за более подробной информацией.<br />
<br />
=== Монтирование удаленных файловых систем ===<br />
<br />
<br />
Systemd позволяет в автоматическом режиме добиться, что удаленные файловые системы наподобие [[NFS]] и [[Samba]] подключаются после поднятия сети. are only started after the network has been set up. Поэтому монтирование удаленных файловых систем, прописанных в {{ic|/etc/fstab}} должно работать "из коробки".<br />
<br />
Однако, по желанию вы можете использовать [[#Automount|автомонтирование]] для монирования удаленных файловых систем, чтобы монтирование данных систем происходило только по мере доступа к ним. Кроме того, вы можете использовать параметр {{ic|1=x-systemd.device-timeout=#}} в файле {{ic|/etc/fstab}} для определения таймаута в том случае, кода сетевые ресурсы оказываются недоступны.<br />
<br />
Обратитесь к руководству {{ic|man systemd.mount}} для получения более подробной информации.<br />
<br />
=== Управлением питанием ACPI при помощи systemd ===<br />
<br />
Systemd обрабатывает некоторые события, связанные с ACPI, что настраивается при помощи параметров в конфигурационном файле {{ic|/etc/systemd/logind.conf}}:<br />
<br />
* {{ic|HandlePowerKey}}: определяет действия системы при нажатии кнопки питания (вкл./выкл.).<br />
* {{ic|HandleSuspendKey}}: определяет действия системы при нажатии кнопки спящего режима.<br />
* {{ic|HandleHibernateKey}}: определяет действия системы при нажатии кнопки ждущего режимаs.<br />
* {{ic|HandleLidSwitch}}: определяет действия системы при закрытии крышки компьютера.<br />
<br />
Для соответствующих действий могут использоваться значения {{ic|ignore}} (пропустить), {{ic|poweroff}} (отключить питание), {{ic|reboot}} (перезагрузить), {{ic|halt}} (выключить), {{ic|suspend}} (включить спящий режим), {{ic|hibernate}} (включить ждущий режим) или {{ic|kexec}} (системный вызов позволяющий оперативно переключиться в другое ядро).<br />
<br />
Если данные параметры не определены, по умолчанию systemd будет использовать следующие: {{ic|1=HandlePowerKey=poweroff}}, {{ic|1=HandleSuspendKey=suspend}}, {{ic|1=HandleHibernateKey=hibernate}}, и {{ic|1=HandleLidSwitch=suspend}}.<br />
<br />
В системах без графического интерфейса или использующих простые оконные менеджеры наподобие like [[i3]] или [[awesome]], так можно заменить демон [[acpid]], который обычно используется для реагирования на данные события ACPI.<br />
<br />
В текущей версии systemd параметры {{ic|Handle}} будут применены ко всей системе, если только они не "подавляются (временно отключены) другой программой, такой, как менеджер питания данного окружения рабочего стола. Если эти ограничений нет, вы можете столкнуться с ситуацией, когда systemd приводит вашу систему в спящий режим, а затем, когда система пробуждается менеджером управлением питания, снова "усыпляет" ее.<br />
<br />
{{Note|В настоящее время менеджер управления питанием новейшей версии в [[KDE]] является единственным, который использует такие команды "подавления". До тех пор, пока их не будут применять другие менеджеры, вам надо выставить в параметрах {{ic|Handle}} значение {{ic|ignore}}, если вы хотите, чтобы события ACPI обрабатывались в случае использования [[GNOME]], [[Xfce]], [[acpid]] или других программ. Но на подходе новые версии, которые включат данную функциональность.}}<br />
<br />
=== Хуки спящего режима ===<br />
<br />
Systemd в своих командах {{ic|systemctl suspend}} или {{ic|systemctl hibernate}} не использует [[pm-utils]] для "усыпления" машины, поэтому хуки [[pm-utils]], включая любые [[Pm-utils#Creating_your_own_hooks|пользовательские хуки]] не будут работать. Тем не менее, systemd предоставляет схожий механизм запуска пользовательских скриптов для данных событий. Systemd запускает все исполняемые файлы в директории {{ic|/usr/lib/systemd/system-sleep/}} и передает каждому из них два аргумента:<br />
<br />
* Аргумент 1: или {{ic|pre}}, или {{ic|post}}, в зависимости от которых машина либо "уснет", либо будет "пробуждена";<br />
* Аргумент 2: или {{ic|suspend}}, или {{ic|hibernate}}, в зависимости от того, что было вызвано.<br />
<br />
В отличие от [[pm-utils]], systemd запустит данные скрипты одновременно, а не один после другого.<br />
<br />
Вывод вашего скрипта будет записан сервисом {{ic|systemd-suspend.service}} или {{ic|systemd-hibernate.service}}, поэтому вы вы можете увидеть данный выход в [[Systemd (Русский)#Журнал systemd|журнале]].<br />
<br />
Обратите внимание, что вместо использования скриптов вы также можете использовать специальные целевые юниты - {{ic|sleep.target}}, {{ic|suspend.target}} или {{ic|hibernate.target}} для того, чтобы подключить к другим юнитам возможности перехода в спящий режима.<br />
<br />
Обратитесь к руководствам {{ic|man systemd.special}} и {{ic|man systemd-sleep}} для получения дальнейшей информации.<br />
<br />
==== Пример ====<br />
<br />
{{hc|/usr/lib/systemd/system-sleep/example.sh|<nowiki><br />
#!/bin/sh<br />
case $1/$2 in<br />
pre/*)<br />
echo "Going to $2..."<br />
;;<br />
post/*)<br />
echo "Waking up from $2..."<br />
;;<br />
esac</nowiki>}}<br />
<br />
=== Ждущий режим ===<br />
<br />
Смотрите [[systemd#Hibernation|английскую версию вики]].<br />
<br />
=== Юнит ===<br />
<br />
Юнит (англ. unit) - конфигурационный файл, содержащий информацию о сервисе (службе), сокете, устройстве, точке монирования/автомонирования, файле подкачке или разделе, определяемом для загрузки уровне запуска, пути в файловой системе или таймере, которые контролируются и управляются при помощи systemd. Синтаксис юнитов навеян спецификацией .desktop-файлов (XDG Desktop Entry Specification), которая, в свою очередь, вдохновлялась .ini-файлами от Microsoft Windows. Обратитесь к руководству {{ic|man systemd.unit}} для получения дальнейшей информации.<br />
<br />
== Команды systemd ==<br />
<br />
*{{ic|systemctl}}: используется для наблюдения и контроля за состоянием менеджера системы и сервисов systemd.<br />
*{{ic|systemd-cgls}}: рекурсивно показывает содержимое иерархии избранной контрольной группы (cgroup) Linux в виде дерева.<br />
*{{ic|systemadm}}: графическая оболочка для менеджера системы и сервисов systemd , позволяющая наблюдать и контролировать systemd (доступна в виде пакета {{AUR|systemd-ui-git}} из [[AUR]]).<br />
<br />
Обратитесь к страницам руководств для получения дальнейшей информации. <br />
<br />
{{Tip|Вы можете использовать приведенные ниже команды {{ic|systemctl}} с ключом {{ic|-H <user>@<host>}} для того, чтобы контролировать systemd на удаленной машине. В этом случае для соединения с удаленным процессом systemd будет использовать [[SSH]].}}<br />
<br />
=== Анализ состояния системы ===<br />
<br />
Список запущенных юнитов:<br />
<br />
$ systemctl<br />
<br />
или:<br />
<br />
$ systemctl list-units<br />
<br />
Список юнитов, попытка запуска которых завершилась неудачей:<br />
<br />
$ systemctl --failed<br />
<br />
Доступные юниты можно посмотреть в директориях {{ic|/usr/lib/systemd/system/}} и {{ic|/etc/systemd/system/}} (последняя директория имеет приоритет). Вы можете увидеть список установленных юнитов командой:<br />
<br />
$ systemctl list-unit-files<br />
<br />
=== Использование юнитов ===<br />
<br />
Юниты могут быть сервисами ({{ic|.service}}), точками монтирования ({{ic|.mount}}) или сокетами ({{ic|.sockets}}). При использовании команды {{ic|systemctl}} необходимо всегда указывать полное имя файла, включая расширение. Однако, есть несколько сокращений при определении юнита следующими командами{{ic|systemctl}}:<br />
<br />
* Ели вы не указали суффикс, systemctl предполагает, что это {{ic|.service}}. Например, {{ic|netcfg}} и {{ic|netcfg.service}} будут трактоваться одинаково.<br />
* Точки монтирования будут автоматически преобразованы в соответствующий юнит {{ic|.mount}}. Например, указание {{ic|/home}} равнозначно {{ic|home.mount}}.<br />
* Аналогично точкам монтирования, имена устройств автоматически преобразуются в соответствующий юнит {{ic|.device}}, поэтому указание {{ic|/dev/sda2}} полностью соответствует юниту {{ic|dev-sda2.device}}.<br />
<br />
Обратитесь к руководству {{ic|man systemd.unit}} для получения детальной информации.<br />
<br />
Незамедлительно запустить юнит:<br />
<br />
# systemctl start <unit><br />
<br />
Незамедлительно остановить юнит:<br />
<br />
# systemctl stop <unit><br />
<br />
Перезапустить юнит:<br />
<br />
# systemctl restart <unit><br />
<br />
Запросить у юнита перезагрузку его настроек:<br />
<br />
# systemctl reload <unit><br />
<br />
Показать статус юнита, а также запущен он или нет:<br />
<br />
$ systemctl status <unit><br />
<br />
Проверить включение юнита (т.е. разрешен ли юниту запуск при загрузке системы):<br />
<br />
$ systemctl is-enabled <unit><br />
<br />
Включить юнит (разрешить юниту запуск при загрузке системы):<br />
<br />
# systemctl enable <unit><br />
<br />
{{Note| Если сервис-файлы не имеют раздела {{ic|Install}}, это обычно означает, что данные сервисы вызываются автоматически другими сервисами. Но если вам требуется установить их вручную, используйте следующую команду, заменив {{ic|foo}} именем вашего сервиса.<br />
# ln -s /usr/lib/systemd/system/''foo''.service /etc/systemd/system/graphical.target.wants/<br />
}}<br />
<br />
Выключить юнит (запретить юниту запуск при загрузке системы):<br />
<br />
# systemctl disable <unit>}}<br />
<br />
Показать страницу помощи для юнита (необходима поддержка этой функции в указанном файле юнита):<br />
<br />
$ systemctl help <unit><br />
<br />
=== Управление питанием ===<br />
<br />
Если у вас локальная пользовательская сессия {{ic|systemd-logind}} или [[ConsoleKit]] и нет других активных сессий, приведенные ниже команды сработают и без привилегий суперпользователя root. В противном случае (например, вследствие того, что пользователь залогинился в tty), systemd автоматически запросит у вас пароль root (также обратитесь к разделу [[#Замена_ConsoleKit_на_systemd-logind|замена ConsoleKit на systemd-logind]]).<br />
<br />
Завершить работу и перезагрузить систему:<br />
<br />
$ systemctl reboot<br />
<br />
Завершить работу и выключить компьютер:<br />
<br />
$ systemctl halt<br />
<br />
Перевести систему в спящий режим:<br />
<br />
$ systemctl suspend<br />
<br />
Перевести систему в ждущий режим:<br />
<br />
$ systemctl hibernate<br />
<br />
== Уровни запуска/target-юниты ==<br />
<br />
Уровни запуска (по-английски уровень запуска - runlevel) для systemd являются устаревшей концепцией. Systemd использует ''target-юниты'' (буквально ''целевые юниты''), которые выполняют ту же задачу, что и уровни запуска, но действуют немного по-другому. Каждый ''target'' поименован (т.е. имеет собственное имя, а не номер) и, как предполагается, предназначен для использования в конкретных целях; возможно иметь в одно и то же время активными несколько таких целевых юнитов. Некоторые ''target-юниты'' реализованы так, что наследуют все сервисы других ''target-юнитов'' и добавляют к ним свои сервисы. В systemd имеются также ''target-юниты'', которые имитируют общие уровни запуска SystemVinit, поэтому вы можете переключаться между целевыми юнитами с использованием привычной команды {{ic|telinit RUNLEVEL}}. <br />
<br />
=== Получение информации о текущем уровне запуска/target-юнитах ===<br />
<br />
При использовании systemd для этого предназначена следующая команда (заменяющая {{ic|runlevel}}):<br />
<br />
# systemctl list-units --type=target<br />
<br />
=== Создание пользовательского target-юнита ===<br />
<br />
Уровни, которым расписаны конкретные цели на установке дистрибутива Fedora по умолчанию - 0, 1, 3, 5 и 6; есть маппинг 1:1 с помощью конкретного ''target-юнита'' systemd. К сожалению, не существует хорошего способа сделать то же самое для определяемых пользователем уровней, таких, как 2 и 4. Использование их предполагает, что вы создаете новый именованный ''target-юнит''systemd наподобие {{ic|/etc/systemd/system/<your target>}}, который берет за основу один из существующих уровней запуска (взгляните, например, на {{ic|/usr/lib/systemd/system/graphical.target}}), создаете также директорию {{ic|/etc/systemd/system/<your target>.wants}} и затем символические ссылки на те дополнительные сервисы из директории {{ic|/usr/lib/systemd/system/}}, которые вы хотите включить при загрузке.<br />
<br />
== Таблица уровней запуска и их аналогов в Systemd ==<br />
<br />
{| class="wikitable" border="1" cellpadding="5" cellspacing="0"<br />
! Уровнень запуска SysV !! Systemd Target !! Примечание<br />
|-<br />
| 0 || runlevel0.target, poweroff.target || Выключить систему.<br />
|-<br />
| 1, s, single || runlevel1.target, rescue.target || Однопользовательский уровень запуска.<br />
|-<br />
| 2, 4 || runlevel2.target, runlevel4.target, multi-user.target || Уровень запуска, определенный пользователем/специфичный для узла. По умолчанию соответствует уровню запуска 3.<br />
|-<br />
| 3 || runlevel3.target, multi-user.target || Многопользовательский режим без графики. Пользователи, как правило, входят с помощью множества консолей или через сеть.<br />
|-<br />
| 5 || runlevel5.target, graphical.target || Многопользовательский режим с графикой. Обычно эквивалентен запуску всех сервисов уровня 3 и графическому менеджеру входа.<br />
|-<br />
| 6 || runlevel6.target, reboot.target || Перезагрузка.<br />
|-<br />
| emergency || emergency.target || Аварийная оболочка.<br />
|-<br />
|}<br />
<br />
=== Изменение текущего уровня запуска ===<br />
<br />
В systemd уровни запуска доступны посредством "target-юнитов". Вы можете изменить их командой:<br />
<br />
# systemctl isolate graphical.target<br />
<br />
Данная команда изменит только лишь текущий уровень запуска и не повлияет на следующую загрузку системы. Она соответствует командам наподобие {{ic|telinit 3}} или {{ic|telinit 5}} для Sysvinit.<br />
<br />
=== Изменение уровня запуска по умолчанию/target-юнита для загрузки ===<br />
<br />
Стандартный target-юнит - {{ic|default.target}}, который по умолчанию является псевдонимом юнита {{ic|graphical.target}} (примерно соответствующего прежнему уровню выполнения 5). Для изменения уровня выполнения, выполняемого при загрузке по умолчанию, добавьте следующий дополнительный [[kernel parameters|параметр ядра]] в вашем загрузчике:<br />
<br />
{{Tip|Расширение {{ic|.target}} можно опустить.}}<br />
<br />
* {{ic|1=systemd.unit=multi-user.target}} (что примерно соответствует прежнему уровню выполнения 3),<br />
* {{ic|1=systemd.unit=rescue.target}} (что примерно соответствует прежнему уровню выполнения 1).<br />
<br />
Другой путь заключается в том, чтобы оставить загрузчик без изменений и изменить целевой юнит по умолчанию - {{ic|default.target}}, что достигается командой {{ic|systemctl}}:<br />
<br />
# systemctl enable multi-user.target<br />
<br />
Эффект от применения данной команды выводится через {{ic|systemctl}}; символическая ссылка на новый target-юнит по умолчанию создается в директории {{ic|/etc/systemd/system/default.target}}. Это сработает в том случае (и только в том случае), если имеется следующая секция:<br />
<br />
[Install]<br />
Alias=default.target<br />
<br />
в конфигурационном файле target-юнита. В настоящий момент как {{ic|multi-user.target}}, так и {{ic|graphical.target}} оба имеют данную секцию.<br />
<br />
== Запуск окружения рабочего стола из systemd ==<br />
<br />
=== Использование экранного менеджера ===<br />
<br />
Чтобы ключить графический вход в систему, запустите выбранный вами демон [[Display Manager (Русский)|экранного менеджера]] (например, [[KDM]]). В настоящий момент доступны сервис-файлы для [[GDM]], [[KDM]], [[SLiM]], [[XDM]], [[LXDM]] и [[LightDM]].<br />
<br />
# systemctl enable kdm.service<br />
<br />
Эта команда должна работать "из коробки". Если вдруг она не сработала, то, возможно, у вас {{ic|default.target}} установлен вручную или остался с прежней установки:<br />
<br />
{{hc|# ls -l /etc/systemd/system/default.target|<br />
/etc/systemd/system/default.target -> /usr/lib/systemd/system/graphical.target}}<br />
<br />
Просто удалите символическую ссылку и systemd будет использовать целевой юнит по умолчанию - {{ic|default.target}} (т.е. {{ic|graphical.target}}).<br />
<br />
# rm /etc/systemd/system/default.target<br />
<br />
=== Запуск через файл сервиса ===<br />
<br />
<br />
{{Note|При использовании данного метода для вашего пользователя не будет создана PAM-сессия, поэтому ConsoleKit (предоставляющий допуск к выключению/перезагрузке системы, аудиоустройствам и т.д.) не будет корректно работать. Рекомендуемый путь описан в разделах: [[#Замена_ConsoleKit_на_systemd-logind|Замена ConsoleKit на systemd-logind]] и [[Automatic_login_to_virtual_console#With_systemd|Автоматический вход в виртуальную консоль с помощью systemd]].}}<br />
<br />
если вам нужен простой путь запуска X напрямую, без использования экранного менеджера входа в систему, вы можете создать сервис-файл наподобие приведенного ниже:<br />
<br />
{{hc|/etc/systemd/system/graphical.target.wants/xinit.service|2=<br />
[Unit]<br />
Description=Direct login to X<br />
After=systemd-user-sessions.service<br />
<br />
[Service]<br />
ExecStart=/bin/su <username> -l -c "/bin/bash --login -c xinit"<br />
<br />
[Install]<br />
WantedBy=graphical.target}}<br />
<br />
== Журнал systemd ==<br />
<br />
С версии 38 systemd имеет собственную систему ведения логов - журнал (journal).<br />
<br />
По умолчанию, более не требуется запуск демона syslog. Для чтения логов используйте команду:<br />
<br />
# journalctl<br />
<br />
Журнал записывается в директорию {{ic|/run/systemd/journal}}, поэтому логи будут потеряны при перезагрузке. Для сохранения логов создайте директорию {{ic|/var/log/journal/}}:<br />
<br />
# mkdir /var/log/journal/<br />
<br />
=== Фильтрация вывода ===<br />
<br />
{{ic|journalctl}} позволяет фильтровать вывод по особым полям.<br />
<br />
Примеры:<br />
<br />
Показать все сообщения определенной программы:<br />
<br />
# journalctl /usr/lib/systemd/systemd<br />
<br />
Показать все сообщения определенного процесса:<br />
<br />
# journalctl _PID=1<br />
<br />
Показать все сообщения определенного юнита:<br />
<br />
# journalctl _SYSTEMD_UNIT=netcfg.service<br />
<br />
Обратитесь к {{ic|man journalctl}} и {{ic|systemd.journal-fields}} для получения детальной информации.<br />
<br />
=== Ограничение размера журнала ===<br />
<br />
Если журнал сохраняется при перезагрузке, размер его по умолчанию ограничен значением в 10% от объема соответствующей файловой системы. Например, для директории {{ic|/var/log/journal}}, расположенной на корневом разделе в 50 Гбайт, максимальный размер журналируемых данных составит до 5 Гбайт. Максимальный объем постоянного журнала можно контролировать при помощи значения {{ic|SystemMaxUse}} в конфигурационном файле {{ic|/etc/systemd/journald.conf}}, поэтому для ограничения его объемом в 50 Mбайт раскомментируйте и отредактируйте соответствующую строку:<br />
<br />
SystemMaxUse=50M<br />
<br />
Обратитесь к {{ic|man journald.conf}} для получения дальнейшей информации.<br />
<br />
=== Journald в связке с классическим демоном syslog ===<br />
<br />
Совместимость с классической реализацией syslog обеспечивается сокетом {{ic|/run/systemd/journal/syslog}}, в который перенаправляются все сообщения. Чтобы дать созможность демону syslog работать вместе с журналом systemd, следует привязать данный демон к указанному сокету вместо {{ic|/dev/log}} ([http://lwn.net/Articles/474968/ официальное сообщение]). В случае с syslog-ng, измените раздел {{ic|source src}} в конфигурационном файле {{ic|/etc/syslog-ng/syslog-ng.conf}} по следующем образцу:<br />
<br />
source src {<br />
unix-dgram("/run/systemd/journal/syslog");<br />
internal();<br />
file("/proc/kmsg");<br />
};<br />
<br />
и включите syslog-ng:<br />
<br />
# systemctl enable syslog-ng.service<br />
<br />
== Сеть ==<br />
<br />
{{Merge|Configuring Network (Русский)|Данный раздел в английской версии включен в состав статьи [[Configuring Network]]; в русской версии временно оставлен из-за того, что русский вариант [[Configuring Network (Русский)]] устарел в сравнении с английским.}}<br />
<br />
=== Динамическое подключение (DHCP) с использованием dhcpcd ===<br />
<br />
Если хотите использовать только DHCP для своего соединения Ethernet, вы можете воспользоваться сервисом {{ic|dhcpcd@.service}} (который поставляется пакетом {{Pkg|dhcpcd}}).<br />
<br />
Чтобы подключить DHCP для {{ic|eth0}}, просто выполните команду:<br />
<br />
# systemctl start dhcpcd@eth0.service<br />
<br />
Вы можете включить этот сервис, и он будет автоматически запускаться при загрузке. Это делается командой:<br />
<br />
# systemctl enable dhcpcd@eth0.service<br />
<br />
Иногда сервис dhcpd запускается до загрузки модуля вашей сетевой карты ({{bug|30235}}), в этом случае вручную добавьте вашу сетевую карту в конфигурационный файл {{ic|/etc/modules-load.d/*.conf}}. Например, для карты Realtek необходима загрузка модуля {{ic|r8169}}, поэтому создайте такой конфигурационный файл:<br />
<br />
{{hc|/etc/modules-load.d/realtek.conf|2=<br />
r8169}}<br />
<br />
=== Другие конфигурации ===<br />
<br />
Для статического подключения, беспроводной сети или сложной конфигурации сети наподобие сетевого моста, вы можете использовать [[Netcfg#systemd_support|netcfg]] или [[NetworkManager#Enable_NetworkManager_under_Native_systemd_system|NetworkManager]], для обеих этих инструментов управления сетью имеются сервис-файлы для systemd.<br />
<br />
{{Note|Если вы хотите использовать netcfg, networkmanager или другие программы управления сетью, вам не надо в этом случае запускать или включать сервис dhcpcd как показано в предыдущем параграфе.}}<br />
<br />
==Интеграция с Arch==<br />
<br />
=== Эмуляция initscripts ===<br />
<br />
Интеграция с классической конфигурацией Arch Linux обеспечивается пакетом {{Pkg|initscripts}}. Данная интеграция рассматривается как просто переходная мера для легкой миграции пользователей на systemd.<br />
<br />
{{Note|Файл {{ic|/etc/inittab}} вообще не используется.}}<br />
<br />
Если вы отключали использование сочетания клавиш для перезагрузки системы {{keypress|Ctrl+Alt+Del}} в файле {{ic|/etc/inittab}}, теперь вам надо заново сделать это для systemd командой {{ic|systemctl mask ctrl-alt-del.target}}, выполняемой от суперпользователя root.<br />
<br />
==== rc.conf ====<br />
<br />
Некоторые переменные в прежнем основном конфигурационном файле {{ic|/etc/rc.conf}} предположительно не будут корректно работать. Для чистой установки systemd setup рекомендуется использовать [[Systemd (Русский)#Родные системные файлы в systemd|родные системные файлы]], которые имеют приоритет над установками в {{ic|/etc/rc.conf}}.<br />
<br />
Поддерживаются (но не рекомендуются):<br />
<br />
* {{ic|CONSOLEFONT}}<br />
* {{ic|CONSOLEMAP}}<br />
* {{ic|DAEMONS}}<br />
* {{ic|HOSTNAME}}<br />
* {{ic|KEYMAP}}<br />
* {{ic|LOCALE}}<br />
<br />
Не поддерживаются:<br />
<br />
* {{ic|HARDWARECLOCK}}: обратитесь к разделу [[Systemd (Русский)#Аппаратные часы|Аппаратные часы]].<br />
* {{ic|MODULES}}: используйте взамен конфигурационные файлы в директории {{ic|modules-load.d}}.<br />
* {{ic|TIMEZONE}}: вручную сделайте символическую ссылку {{ic|/etc/localtime}} на файл вашей временной зоны.<br />
* {{ic|USELVM}}: взамен используйте {{ic|lvm.service}}, поставляемый пакетом {{pkg|lvm2}}.<br />
* {{ic|USECOLOR}}<br />
<br />
=== Полный переход к конфигурационным файлам systemd ===<br />
<br />
{{Note|Этот метод является предпочтительным, при его использовании система более не зависит от централизованной настройки в файле {{ic|rc.conf}}, а использует родные системные файлы systemd.}}<br />
<br />
Последуйте настройке конфигурационных файлов как показано в разделе [[Systemd (Русский)#Родные системные файлы в systemd|Родные системные файлы в systemd]]. Каждый файл заменяет одну из секций в {{ic|/etc/rc.conf}}, как показано в данной таблице:<br />
<br />
{| class="wikitable"<br />
|-<br />
! scope="col"| Настройка<br />
! scope="col"| Конфигурационный файл (файлы)<br />
! scope="col"| Устаревшая секция [https://projects.archlinux.org/initscripts.git/tree/rc.conf?id=97f0cd6751e8d22c14d7492cdc2186cf41157ba6 rc.conf]<br />
|-<br />
| align="center"|Имя компьютера (Hostname)<br />
| align="left"|{{ic|/etc/hostname}}<br />
{{ic|/etc/hosts}}<br />
| align="center"|{{ic|NETWORKING}}<br />
|-<br />
| align="center"|Консоль и раскладка клавиатуры<br />
| align="left"|{{ic|/etc/vconsole.conf}}<br />
| align="center"|{{ic|LOCALIZATION}}<br />
|-<br />
| align="center"|Локаль<br />
| align="left"|{{ic|/etc/locale.conf}}<br />
{{ic|/etc/locale.gen}}<br />
| align="center"|{{ic|LOCALIZATION}}<br />
|-<br />
| align="center"|Временная зона<br />
| align="left"|{{ic|/etc/localtime}}<br />
| align="center"|{{ic|LOCALIZATION}}<br />
|-<br />
| align="center"|Аппаратные часы<br />
| align="left"|{{ic|/etc/adjtime}}<br />
| align="center"|{{ic|LOCALIZATION}}<br />
|-<br />
| align="center"|Модули ядра<br />
| align="left"|{{ic|/etc/modules-load.d/}}<br />
| align="center"|{{ic|HARDWARE}}<br />
|}<br />
<br />
Для целей совместимости секция {{ic|DAEMONS}} в {{ic|/etc/rc.conf}} еще может использоваться вместе с systemd для запуска сервисов при загрузке системы, даже при "чистой" установке менеджера служб systemd. Взамен этого вы можете полностью удалить файл {{ic|/etc/rc.conf}} и включить сервисы в systemd. Для каждого сервиса с именем {{ic|<service_name>}} в массиве {{ic|DAEMONS}} из файла {{ic|/etc/rc.conf}} выполните команду:<br />
<br />
# systemctl enable <service_name>.service<br />
<br />
{{Tip|Для получения списка обычно используемых демонов с их эквивалентами в initscripts и systemd, обратитесь к [[Daemon#List_of_Daemons|данной таблице]].}}<br />
<br />
Если сервис-файл {{ic|<service_name>.service}} отсутствует:<br />
<br />
* сервис-файл может быть недоступен для systemd. В этом случае вам нужно сохранить конфигурационный файл {{ic|rc.conf}} для запуска этих сервисов во время загрузки системы.<br />
* systemd может называть сервисы другими именами, например, {{ic|cronie.service}} заменяет демон {{ic|crond}}; {{ic|alsa-store.service}} и {{ic|alsa-restore.service}} заменяют демон {{ic|alsa}}. Другой важный пример - демон {{ic|network}}, которого сменил целый набор сервис-файлов (обратитесь к разделу [[#Сеть]] для получения дальнейшей информации.)<br />
<br />
{{Tip|Вы можете заглянуть вовнутрь пакета, содержащего стартовые скрипты демона, чтобы узнать имена его сервис-файла. К примеру:<br />
$ pacman -Ql cronie | grep service<br />
cronie /usr/lib/systemd/system/crond.service<br />
cronie /usr/lib/systemd/system/cronie.service<br />
}}<br />
<br />
== Написание пользовательского .service файла ==<br />
<br />
=== Обработка зависимостей ===<br />
<br />
В случае использования systemd зависимости могут быть разрешены правильным построением файлов юнитов. ,Наиболее частый случай -- когда юниту {{ic|A}} требуется, чтобы юнит {{ic|B}} был запущен перед тем, как запустится сам юнит {{ic|A}}. В этом случае добавьте строки {{ic|1=Requires=B}} и {{ic|1=After=B}} в секцию {{ic|[Unit]}} сервис-файла юнита {{ic|A}}. Если подобная зависимость не является обязательной, добавьте соответственно взамен указанных выше строки {{ic|1=Wants=B}} и {{ic|1=After=B}}. Обратите внимание, что {{ic|1=Wants=}} и {{ic|1=Requires=}} не подразумевают {{ic|1=After=}}, что означает, что если {{ic|1=After=}} не определено, два юнита будут запущены параллельно друг другу.<br />
<br />
Обычно зависимости указываются в сервис-файлах, а не в целевых (target) файлах. Например, {{ic|network.target}} потребуется любому сервису, который связан с настройкой ваших сетевых интерфейсов, поэтому в любом случае определите загрузку вашего пользовательского юнита после запуска {{ic|network.target}}.<br />
<br />
=== Тип ===<br />
<br />
Существует несколько различных типов запуска служб, которые надо иметь в виду при написании пользовательского сервис-файла. Тип запуска определяется параметром {{ic|1=Type=}} в секции {{ic|[Service]}}. Обратитесь к руководству {{ic|man systemd.service}} для получения более детального объяснения.<br />
<br />
* {{ic|1=Type=simple}}: systemd предполагает, что сервис будет запущен незамедлительно. Процесс при этом не должен форкнуться. Не используйте этот тип, если другим сервисы зависят от очередности при запуске данного сервиса, за исключением активации сокета.<br />
* {{ic|1=Type=forking}}: systemd предполагает, что сервис запускается однократно, процесс форкается и родительский процесс завершается. Используйте данный тип для запуска классических демонов за исключением тех случаев, когда, как вам известно, в таком поведении процесса нет необходимости. Вам следует также определить {{ic|1=PIDFile=}}, чтобы systemd могла отслеживать основной процесс.<br />
* {{ic|1=Type=oneshot}}: Полезен для скриптов, которые выполняют одну работу, а потом завершаются. Вам может понадобиться также установить параметр {{ic|1=RemainAfterExit=}}, чтобы systemd по-прежнему считала процесс активным, даже после его завершения<br />
* {{ic|1=Type=notify}}: Идентичен параметру {{ic|1=Type=simple}}, но с той оговоркой, что демон пошлет systemd сигнал о своей готовности. Эталонная реализация данного уведомления обеспечивается библиотекой {{ic|libsystemd-daemon.so}}.<br />
* {{ic|1=Type=dbus}}: Сервис считается находящимся в состоянии готовности, когда определенное {{ic|BusName}} появляется в системной шине DBus.<br />
<br />
=== Замена предоставленных пакетами файлов юнитов ===<br />
<br />
Файлы юнитов в директории {{ic|/etc/systemd/system/}} имеют приоритет над такими же файлами в директории {{ic|/usr/lib/systemd/system/}}.<br />
Для создания собственной версии юнита (который не будет затерт при обновлении), скопируйте старый юнит из директории {{ic|/usr/lib/}} в директорию {{ic|/etc/}} и внесите в эту копию свои изменения. Альтернативным вариантом является использование {{ic|.include}} для парсинга существующего сервис-файла и затем переопределения или добавления новых опций. Например, если вы просто хотите добавить в сервис-файл дополнительную зависимость, вы можете использовать такую команду в юните:<br />
<br />
{{hc|/etc/systemd/system/<service-name>.service|2=<br />
.include /usr/lib/systemd/system/<service-name>.service<br />
<br />
[Unit]<br />
Requires=<new dependency><br />
After=<new dependency>}}<br />
<br />
Затем выполните следующие команды для того, чтобы изменения вступили в силу:<br />
<br />
# systemctl reenable <unit><br />
# systemctl restart <unit><br />
<br />
{{Tip|Вы можете использовать команду {{ic|systemd-delta}}, чтобы увидеть, какие файлы юнитов были переопределены и что в точности было изменено.}}<br />
<br />
=== Подсветка синтаксиса файлов юнитов systemd в Vim ===<br />
<br />
подсветка синтаксиса файлов юнитов для systemd в редакторе [[Vim]] может быть осуществлена путем установки пакета {{AUR|vim-systemd}} из [[Arch User Repository|AUR]].<br />
<br />
== Оптимизация ==<br />
<br />
=== systemd-analyze ===<br />
<br />
Systemd предоставляет инструмент под названием {{ic|systemd-analyze}}, позволяющий проанализировать процесс загрузки вашей системы, чтобы можно было увидеть, какие файлы юнитов тормозят загрузку. Соответственно, вы можете оптимизировать вашу систему. Для использования данного инструмента вам потребуется установить пакеты {{Pkg|python2-dbus}} и {{Pkg|python2-cairo}}.<br />
<br />
Чтобы увидеть, сколько времени было потрачено на подготовку пространства ядра и пространства пользователя во время загрузки, просто выполните команду:<br />
<br />
$ systemd-analyze<br />
<br />
{{Tip|Чтобы увидеть, сколько времени ушло на загрузку образа initramfs, добавьте хук {{ic|timestamp}} в ваш массив {{ic|HOOKS}} из конфигурационного файла {{ic|/etc/[[mkinitcpio]].conf}} и от суперпользователя root пересоберите ваш образ initramfs командой {{ic|mkinitcpio -p linux}} }}<br />
<br />
Чтобы увидеть список запускаемых файлов юнитов, отсортированный по потраченному каждым из них на загрузку времени, выполните команду:<br />
<br />
$ systemd-analyze blame<br />
<br />
Вы также можете создать файл SVG, показывающий процесс загрузки в графическом виде, наподобие [[Bootchart]]:<br />
<br />
$ systemd-analyze plot > plot.svg<br />
<br />
==== Включение bootchart в связке с systemd ====<br />
<br />
Вы можете использовать версию bootchart для визуализации последовательности при загрузке системы.<br />
Из-за невозможности использовать стандартные установки bootchart (так как нельзя добавить в командную строку ядра вторую запись init), вам придется воспользоваться пакетом {{AUR|bootchart2}} из [[AUR]], поставляемым с недокументированным сервисом systemd. После установки bootchart2 выполните команду:<br />
<br />
# systemctl enable bootchart.service<br />
<br />
Обратитесь к [https://github.com/mmeeks/bootchart документации bootchart (англ.)] за дальнейшей и детализированной информацией об использовании данной версии bootchart.<br />
<br />
=== Сокращения командной оболочки ===<br />
<br />
Демон управления systemd требует ввода достаточно большого объема текста команд для выполнения таких процессов, как запуск, остано, включение, проверка статуса сервисов и т.д. Добавление в ваш конфигурационный файл {{ic|~/.bashrc}} следующих функций поможет уппростить взаимодействие с systemd и усовершенствовать опыт ее использования.<br />
<br />
{{bc|# упростим команду systemd, например, "sudo systemctl stop xxx.service" - > "0.stop xxx"<br />
if ! systemd-notify --booted;<br />
then # for not systemd<br />
0.start() {<br />
sudo rc.d start $1<br />
}<br />
<br />
0.restart() {<br />
sudo rc.d restart $1<br />
}<br />
<br />
0.stop() {<br />
sudo rc.d stop $1<br />
}<br />
else<br />
# запустить сервис systemd<br />
0.start() {<br />
sudo systemctl start $1.service<br />
}<br />
# перезапустить сервис systemd<br />
0.restart() {<br />
sudo systemctl restart $1.service<br />
}<br />
# stop systemd service<br />
0.stop() {<br />
sudo systemctl stop $1.service<br />
}<br />
# включить сервис systemd<br />
0.enable() {<br />
sudo systemctl enable $1.service<br />
}<br />
# выключить сервис systemd<br />
0.disable() {<br />
sudo systemctl disable $1.service<br />
}<br />
# показать статус сервиса<br />
0.status() {<br />
systemctl status $1.service<br />
}<br />
# прерзагрузить конфигурацию сервиса<br />
0.reload() {<br />
sudo systemctl reload $1.service<br />
}<br />
# показать все запущенные сервисы<br />
0.list() {<br />
systemctl<br />
}<br />
# показать все сервисы, запуск которых завершился неудачей<br />
0.failed () {<br />
systemctl --failed<br />
}<br />
# показать все доступные файлы юнитов<br />
0.list-files() {<br />
systemctl list-unit-files<br />
}<br />
# проверить лог<br />
0.log() {<br />
sudo journalctl<br />
}<br />
# показать необязательные зависимости<br />
0.wants() {<br />
systemctl show -p "Wants" $1.target<br />
}<br />
# анализ системы<br />
0.analyze() {<br />
systemd-analyze $1<br />
}<br />
fi<br />
}}<br />
<br />
{{Warning|Скопируйте в свой {{ic|~/.bashrc}} [[Systemd#Shell_Shortcuts|английскую версию]] данных сокращений, чтобы избежать проблем с командной оболочкой. }}<br />
<br />
=== Сокращение вывода ===<br />
<br />
Измените параметр {{ic|verbose}} на {{ic|quiet}} в строке загрузки ядра вашего загрузчика. Для некоторых систем, в частности с SSD, узким местом является низкая производительность TTY, поэтому сокращение вывода означает прирост скорости загрузки.<br />
<br />
=== Ранний старт ===<br />
<br />
Одним из центральных элементов systemd является [[D-Bus]] и активация сокетов, что требует запуска сервисов при первой потребности в них. Обычно такой подход является удачным, но, если вы знаете, что какой-то сервис (вроде [[ConsoleKit]])должен всегда запускаться во время загрузки системы, то вы можете сократить общее время загрузки, запуская его так рано, как это вообще возможно. Этого можно добиться (если сервис-файл устроен соответствующим образом, что верно в большинстве случаев) путем выполнения команды:<br />
<br />
# systemctl enable console-kit-daemon.service<br />
<br />
Это заставит systemd запустить ConsoleKit как рано, как это возможно, не устраивая перегонки данного сервиса с активацией сокета или D-Bus.<br />
<br />
=== Автомонитрование ===<br />
<br />
Установка по умолчанию запускает fsck и монтирует все файловые системы перед запуском большинства демонов и сервисов. Если ваш раздел {{ic|/home}} занимает большой объем, лучшим вариантом было бы позволить сервисам не зависеть от подключения {{ic|/home}} и запускать данные сервисы, когда {{ic|/home}} еще подвергается проверке при загрузке системы. Добиться такого результата можно добавлением следующих параметров в запись файла fstab, касающуюся раздела {{ic|/home}}:<br />
<br />
noauto,x-systemd.automount<br />
<br />
Такие параметры вызовут fsck и примонтируют {{ic|/home}} при первом обращении к данному разделу, и ядро будет буферизовать все файлы доступа к {{ic|/home}} до готовности данного раздела.<br />
<br />
В случае использования зашифрованных файловых систем с ключами доступа, вам также Iследует добавить параметр {{ic|noauto}} в соответствующие записи файла {{ic|/etc/crypttab}}. systemd не будет подключать зашифрованные устройства при загрузке, но, вместо этого, дождется реального обращения к ним и автоматически откроет к ним доступ с использованием определенных ключей перед тем, как они будут примонтированы. Это сэкономит несколько секунд при загрузке системы, например, в случае использования зашифрованного устройства RAID, потому что systemd не будет дожидаться от устройства, когда оно станет доступным. Например:<br />
<br />
{{hc|/etc/crypttab|<br />
data /dev/md0 /root/key noauto}}<br />
<br />
=== Readahead ===<br />
<br />
systemd поставляется со свой реализации технологии readahead, что в принципе должно усовершенствовать процесс загрузки системы. Однако, в зависимости от версии вашего ядра и типа жесткого диска, скорость обращения к данным может разниться (например, может быть медленнее). Чтобы включить данный сервис, выполните:<br />
<br />
# systemctl enable systemd-readahead-collect.service systemd-readahead-replay.service<br />
<br />
Не забудьте, что волшебство технологии readahead подействует только после нескольких перезапусков системы<br />
<br />
=== Замена ConsoleKit на systemd-logind ===<br />
<br />
Начиная с {{Pkg|polkit}} 0.107 (в настоящее время в репозитории [testing]), [[ConsoleKit]] можно полностью заменить на {{ic|systemd-logind}}. Самый легкий метод удаления [[ConsoleKit]] заключается в [[Automatic_login_to_virtual_console#With_systemd|автоматическом входе в виртуальную консоль]] и [[Start_X_at_Boot|запуска X оттуда]]. Важно понять, что, как указано в последней статье, сервер X запускается в той же виртуальной консоли, в которую вы загрузились, в противном случае systemd не сможет следить за пользовательской сессией. Затем можно просто удалить {{ic|ck-launch-session}} из вашего файла {{ic|~/.xinitrc}}.<br />
<br />
Для того, чтобы проверить статус вашей пользовательской сессии, вы можете использовать команду {{ic|loginctl}}. Чтобы убедиться, что ваша пользовательская сессия правильно установлена, проверьте, содержит ли следующая команда {{ic|1=Active=yes}}. Все действия {{Pkg|polkit}} actions наподобие перевода системы в спящий режим или монтирования внешних носителей с помощью [[Udisks]] должны работать автоматически.<br />
<br />
$ loginctl show-session <session-id><br />
<br />
{{Note|При использовании [[NetworkManager]] вам необходимо перекомпилировать данный пакет с поддержкой systemd из [[ABS]] путем записи опции {{ic|1=--with-session-tracking=systemd}} в [[PKGBUILD]].}}<br />
<br />
== Устранение неполадок ==<br />
<br />
=== Выключение/перезагрузка происходят ужасно долго ===<br />
<br />
Если процесс выключения занимает очень долгое время (или, по-видимому, зависает), то, вероятно, виноват сервис, который не завершает свою работу. systemd ожидает некоторое время, пока каждый сервис завершит свою работу самостоятельно, и только потом пытается принудительно завершить (kill) его. Если вы столкнулись с такой проблемой, обратитесь к [http://freedesktop.org/wiki/Software/systemd/Debugging#Shutdown_Completes_Eventually данной статье (англ.)].<br />
<br />
== Полезные ссылки ==<br />
<br />
*[http://www.freedesktop.org/wiki/Software/systemd Официальный веб-сайт (англ.)]<br />
*[http://0pointer.de/public/systemd-man/ Страницы руководств (англ.)]<br />
*[http://freedesktop.org/wiki/Software/systemd/Optimizations systemd Optimizations (англ.)]<br />
*[http://www.freedesktop.org/wiki/Software/systemd/FrequentlyAskedQuestions FAQ (англ.)]<br />
*[http://www.freedesktop.org/wiki/Software/systemd/TipsAndTricks Tips And Tricks (англ.)]<br />
*[http://0pointer.de/public/systemd-ebook-psankar.pdf systemd для администраторов (PDF) - перевод цикла статей Леннарта Поттеринга (Lennart Poettering) ]<br />
*[http://0pointer.de/blog/projects/systemd.html Блог Lennart'а (англ.)]<br />
*[http://archlinux.org.ru/forum/viewtopic.php?f=9&t=9581 systemd mini FAQ]<br />
*[http://wiki.russianfedora.ru/index.php?title=Systemd systemd - база знаний проекта Fedora]<br />
*[http://fedoraproject.org/wiki/Systemd Fedora Linux Wiki: Systemd (англ.)]<br />
*[http://wiki.debian.org/ru/Systemd Debian Wiki: systemd - менеджер системы и сервисов]<br />
*[http://wiki.ubuntu.com/systemd Ubuntu Wiki: systemd (англ.)]<br />
*[http://fedoraproject.org/wiki/Systemd OpenSuse Wiki: SDB:Systemd]</div>Klayhttps://wiki.archlinux.org/index.php?title=Systemd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=230541Systemd (Русский)2012-10-22T01:29:56Z<p>Klay: /* Полный переход к конфигурационным файлам systemd */</p>
<hr />
<div>[[Category:Русский]]<br />
[[Category:Демоны и системные сервисы (Русский)]]<br />
[[Category:Процесс Загрузки (Русский)]]<br />
[[en:systemd]]<br />
[[es:systemd]]<br />
[[fr:systemd]]<br />
[[it:systemd]]<br />
[[zh-CN:systemd]]<br />
{{Article summary start|Сводка}}<br />
{{Article summary text|Статья охватывает установку и настройку systemd.}}<br />
{{Article summary heading|Связанные статьи}}<br />
{{Article summary wiki|Systemd/Services}}<br />
{{Article summary wiki|Init_Rosetta_(Русский)}}<br />
{{Article summary wiki|Udev_(Русский)}}<br />
{{Article summary end}}<br />
Цитата с [http://freedesktop.org/wiki/Software/systemd веб-страницы проекта]:<br />
<br />
''"'''systemd''' - система [инициализации] и менеджер служб для Linux, совместимые со скриптами инициализации SysV и LSB. systemd обеспечивает возможности агрессивной параллелизации, использует сокеты и активацию [[D-Bus]] для запускаемых служб, предлагает запуск демонов по необходимости, отслеживает процессы при помощи [[cgroups|контрольных групп]] Linux, поддерживает мгновенные снимки и восстановление состояния системы, монтирование и точки монтирования, а также внедряет основанную на зависимостях логику контроля процессов сложных транзакций. Эта система может выступать заменой sysvinit."''.<br />
<br />
{{Note|За детальным объяснением причин перехода Arch'а на systemd обратитесь к [https://bbs.archlinux.org/viewtopic.php?pid&#61;1149530#p1149530 сообщению на англоязычном форуме].}}<br />
<br />
Смотрите также [[Wikipedia:Systemd|статью в Википедии]].<br />
== Что надо усвоить до начала миграции на данную систему ==<br />
<br />
* Настоятельно рекомендуется перейти на новую конфигурацию '''initscripts''', описанную в статье [[rc.conf (Русский)|rc.conf]]. Сконфигурировав таким образом свою систему, вы проделаете бóльшую часть работы, необходимую для миграции на systemd.<br />
* Почитайте про systemd на [http://freedesktop.org/wiki/Software/systemd/ сайте разработчиков].<br />
* Обратите внимание, что systemd имеет собственный '''журнал (journal)''', заменяющий '''syslog''', хотя оба варианта ведения логов могут сосуществовать. Обратитесь к приведенному ниже разделу [[#Journald_в_связке_с_классическим_демоном _syslog|разделу, посвященному журналу]].<br />
* Хотя systemd вполне способна заменить определенную функциональность таких демонов, как '''cron''', '''acpid''' или '''xinetd''', но если вы не хотите, можете не отказываться от использования традиционных демонов.<br />
<br />
== Установка ==<br />
systemd может быть установлен параллельно со стандартным пакетом инициализации {{Pkg|initscripts}}, и между ними можно будет переключаться путем добавления/удаления [[kernel parameters|параметров ядра]] {{ic|1=init=/usr/lib/systemd/systemd}}. <br />
<br />
=== Смешанная установка systemd/sysvinit/initscripts ===<br />
<br />
Возможно иметь в своей системе одновременно установленными systemd и sysvinit и использовать одну и те же конфигурационные файлы, что позволит вам свободно переключаться между ним туда и обратно:<br />
<br />
# Откажитесь от устаревших форматов конфигурации initscripts (о них сообщается при загрузке системы) в пользу [[#Родные системные файлы в systemd|родных системных файлов systemd]] и перезагрузитесь для проверки работоспособности данных установок при использовании initscripts.<br />
# Установите пакет {{Pkg|systemd}} из [[Official Repositories (Русский)|официальных репозиториев]].<br />
# Добавьте запись {{ic|1=init=/usr/lib/systemd/systemd}} к [[Kernel parameters|параметрам ядра]] в вашем загрузчике.<br />
# Перезагрузите систему.<br />
<br />
Systemd запустит демоны, перечисленные в {{ic|/etc/rc.conf}}, выполнит {{ic|/etc/rc.local}} и {{ic|/etc/rc.local.shutdown}} соответственно при загрузке/выключении системы. Если поддержка совместимости с массивом DAEMONS в конфигурационном файле {{ic|rc.conf}} или же скриптов в {{ic|rc.local}} вам не нужна, соответствующие сервис-файлы могут быть заблокированы (замаскированы) для их отключения.<br />
<br />
{{Warning|В случае, когда у вас в массиве DAEMONS перечислены демоны, для которых имеются родные сервис-файлы systemd, автоматически будут использоваться родные сервис-файлы. Тем не менее, если имена скриптов rc и сервисов systemd (так далее будут именоваться службы данной системы инициализации) не соответствуют друг другу, данное правило не сработает и вам следует убедиться, что только включен только один из них двух (предпочтительно родной сервис-файл).}}<br />
<br />
{{Warning|Systemd - процесс асинхронной загрузки по сравнению сравнении с последовательным запуском демонов из массива DAEMONS. В частности, "network", будучи поддерживаемым для совместимости сервисом, может запуститься слишком поздно для включения интерфейсов, которые требуются другим сервисам. Рекомендуется переключиться на использование netcfg или NetworkManager до перехода на systemd.}}<br />
<br />
=== Смешанная установка systemd/initscripts ===<br />
<br />
Возможно заменить sysvinit на systemd, но сохранить initscripts в случае использования некоторых скриптов rc scripts, для которых пока не имеется эквивалентов в systemd.<br />
<br />
# Следуйте инструкциям для смешанной установки systemd/sysvinit/initscripts.<br />
# [[#Использование_юнитов|Включите демоны]], ранее перечисленные в {{ic|/etc/rc.conf}} с помощью команды {{ic|systemctl enable ''daemonname.'''service''' ''}}. Для переноса демонов из {{ic|/etc/rc.conf}} в разряд сервисов systemd, смотрите разделы: [[Daemon#List_of_Daemons|List of Daemons]] и [[Systemd/Services|Services]]. Демоны, для которых не имеется соответствующих сервис-файлов systemd, следует оставить в массиве DAEMONS, поскольку systemd запустит устаревшие скрипты rc.<br />
# Установите пакет {{Pkg|systemd-sysvcompat}}. Данный пакет конфликтует с {{Pkg|sysvinit}} и вам будет предложено удалить последний.<br />
# Удалите запись {{ic|1=init=...}}, поскольку {{ic|/sbin/init}} теперь является символической ссылкой на systemd.<br />
# Перезагрузите систему.<br />
<br />
Единственная разница между этим вариантом и вариантом с сохранением sysvinit состоит в том, что все бинарные файлы sysvinit заменены символическими ссылками на systemctl. Тем не менее, функциональность должна остаться неизменной.<br />
<br />
=== Чистая установка systemd ===<br />
<br />
Напоследок, возможно вовсе удалить initscripts и sysvinit и использовать только лишь systemd.<br />
<br />
# Следуйте инструкциям для смешанной установки systemd/initscripts.<br />
# Убедитесь, что более не имеется каких-либо демонов для запуска из массива DAEMONS в конфигурационном файле {{ic|/etc/rc.conf}} и оба файла {{ic|/etc/rc.local}} и {{ic|/etc/rc.local.shutdown}} пусты.<br />
# Удалите пакет initscripts из вашей системы.<br />
<br />
=== Дополнительная информация ===<br />
<br />
{{Tip|Если в параметрах ядра имеется значение {{ic|quiet}}, вероятно, вам стоит удалить его для нескольких первых загрузок systemd, чтобы видеть возникающие во время загрузке проблемы.}}<br />
<br />
== Родные системные файлы в systemd ==<br />
<br />
{{Note|Возможно, вам придется создать эти файлы. Установите для них права доступа 644 и владельца root:root.}}<br />
<br />
{{Pkg|systemd}} будет использовать {{ic|/etc/rc.conf}}, если эти конфигурационные файлы отсутствуют. Обратите внимание, что такое использование может быть только временным решением. Настоятельно рекомендуется для любой системы использовать конфигурационные файлы systemd.<br />
<br />
=== Имя компьютера (hostname) ===<br />
<br />
{{hc|/etc/hostname|<br />
myhostname}}<br />
<br />
=== Консоль и раскладка клавиатуры ===<br />
<br />
Файл {{ic|/etc/vconsole.conf}} устанавливает настройки виртуальной консоли: раскладку клавиатуры и консольный шрифт.<br />
<br />
{{hc|/etc/vconsole.conf|2=<br />
KEYMAP=ru<br />
FONT=cyr-sun16<br />
FONT_MAP=}}<br />
<br />
Для получения детальной информации обратитесь к разделам [[Fonts#Console_fonts|Console fonts]] and [[KEYMAP#Keyboard_layouts|Keymap]]. <br />
<br />
{{Note|{{ic|{{Pkg|systemd}}-194}} использует шрифт ядра и раскладку по умолчанию (т.е. американскую английскую). Нет более необходимости (для тех, кто использует данную раскладку) иметь в конфигурационном файле строки {{ic|1=KEYMAP=}} и {{ic|1=FONT=}} с пустыми значениями.}}<br />
<br />
=== Локаль ===<br />
Для получения подробной информации о вариантах настройки обратитесь к руководству {{ic|man locale.conf}}<br />
<br />
{{hc|/etc/locale.conf|2=<br />
LANG=ru_RU.UTF-8}}<br />
<br />
Дальнейшая информация содержится в статье [[Locale]].<br />
<br />
=== Временная зона ===<br />
<br />
Для получения подробной информации о вариантах настройки обратитесь к руководству {{ic|man 5 localtime}}.<br />
<br />
# ln -sf /usr/share/zoneinfo/America/Chicago /etc/localtime<br />
<br />
{{Note|Прежний конфигурационный файл {{ic|/etc/timezone}} объявлен устаревшим с выходом {{ic|systemd-190}} и может/должен быть удален.}}<br />
<br />
=== Аппаратные часы ===<br />
<br />
Systemd будет использовать UTC для аппаратных часов, именно такой вариант рекомендуется. Настройка зимнего/летнего времени - неблагодарное занятие. Если переход на зимнее/летнее время происходит в тот момент, когда ваш компьютер выключен, то при следующей загрузке ваши часы будут показывать ошибочное время ([http://www.cl.cam.ac.uk/~mgk25/mswish/ut-rtc.html здесь об этом чуть подробнее (англ.)]). Последние версии ядра устанавливают системное время из RTC (часов реального времени) непосредственно во время загрузки без использования {{ic|hwclock}}, при этом ядро всегда считает, что RTC выставлено по UTC. Это означает, что если RTC выставлено по местному времени (local time), системное время будет изначально установлено ошибочно и затем корректироваться вскоре после этого при каждой загрузке. Это является причиной некоторых досадных багов (идущие назад часы редко являются нужной вещью).<br />
<br />
Причиной, позволяющей RTC быть выставленными по местному времени, является двойная загрузка системы с Windows, ([http://blogs.msdn.com/b/oldnewthing/archive/2004/09/02/224672.aspx которая использует localtime (англ.)]). Windows воспринимает RTC, выставленные по UTC при помощи простого [[Time#UTC_in_Windows|исправления реестра]]. Если вы столкнетесь с подобными проблемами при двойной загрузке с Windows, вы можете установить аппаратные часы на использование местного времени.<br />
<br />
{{hc|/etc/adjtime|<br />
0.0 0.0 0.0<br />
0<br />
LOCAL}}<br />
<br />
Другие параметры по-прежнему нужны, но они игнорируются systemd.<br />
<br />
Обычно рекомендуется запускать [[NTP|демон Network Time Protocol]] для поддержания синхронизации аппаратных часов с системным временем.<br />
<br />
=== Подгружаемые модули ядра ===<br />
<br />
systemd использует конфигурационные файлы из директории {{ic|/etc/modules-load.d/}} для определения модулей ядра, подгружаемых во время загрузки системы. Каждый из конфигурационных файлов имеет наименование вида {{ic|/etc/modules-load.d/<program>.conf}} (где <program> - имя подгружаемого модуля). При этом игнорируются как пустые строки конфигурационных файлов, так и строки, у которых первым символом, отличным о пробела, является символ {{ic|#}} и {{ic|;}}. Например:<br />
<br />
{{hc|/etc/modules-load.d/virtio-net.conf|<br />
# Load virtio-net.ko at boot<br />
virtio-net}}<br />
<br />
Также смотрите раздел [[Modprobe#Options]].<br />
<br />
=== Черный список модулей ядра ===<br />
<br />
Добавление модулей в черный список работает также, как и в случае с {{Pkg|initscripts}}, поскольку в действительности эта функция выполняется таким инструментом, как {{Pkg|kmod}}. Обратитесь к разделу [[Kernel_modules#Blacklisting|Module Blacklisting]] за более подробной информацией.<br />
<br />
=== Временные файлы ===<br />
<br />
Systemd-tmpfiles использует конфигурационные файлы в директориях {{ic|/usr/lib/tmpfiles.d/}} и {{ic|/etc/tmpfiles.d/}} для определения действий с временными файлами и директориями (создание, очистка и удаление их), обычно расположенные в {{ic|/run}} or {{ic|/tmp}}. Каждый файл с настройками имеет название вида {{ic|/etc/tmpfiles.d/<program>.conf}}. Данные конфигурационные файлы имеют приоритет по сравнению с любыми файлами с таким же названием, расположенными в директории {{ic|/usr/lib/tmpfiles.d/}}.<br />
<br />
Временные файлы tmpfiles обычно поставляются вместе с сервис-файлами для создания директорийк. которые, как ожидается, будут использоваться определенными демонами. Например, демон [[Samba]] предполагает наличие директории {{ic|/var/run/samba}} с соответствующими правами доступа. В данном случае tmpfile выглядит следующим образом:<br />
<br />
{{hc|/usr/lib/tmpfiles.d/samba.conf|<br />
D /var/run/samba 0755 root root}}<br />
<br />
Тем не менее, tmpfiles также могут использоваться для записи значений в определенные файлы во врем загрузки. К примеру, если вы используете {{ic|/etc/rc.local}} для того, чтобы отключить пробуждение системы USB-устройствами, при помощи команды {{ic|echo USBE > /proc/acpi/wakeup}}, вы можете вместо этого использовать следующий tmpfile:<br />
<br />
{{hc|/etc/tmpfiles.d/disable-usb-wake.conf|<br />
w /proc/acpi/wakeup - - - - USBE}}<br />
<br />
Метод с использованием tmpfiles в данном случае рекомендуется, поскольку systemd в действительности не поддерживает {{ic|/etc/rc.local}}.<br />
<br />
Обратитесь к руководству {{ic|man tmpfiles.d}} за более подробной информацией.<br />
<br />
=== Монтирование удаленных файловых систем ===<br />
<br />
<br />
Systemd позволяет в автоматическом режиме добиться, что удаленные файловые системы наподобие [[NFS]] и [[Samba]] подключаются после поднятия сети. are only started after the network has been set up. Поэтому монтирование удаленных файловых систем, прописанных в {{ic|/etc/fstab}} должно работать "из коробки".<br />
<br />
Однако, по желанию вы можете использовать [[#Automount|автомонтирование]] для монирования удаленных файловых систем, чтобы монтирование данных систем происходило только по мере доступа к ним. Кроме того, вы можете использовать параметр {{ic|1=x-systemd.device-timeout=#}} в файле {{ic|/etc/fstab}} для определения таймаута в том случае, кода сетевые ресурсы оказываются недоступны.<br />
<br />
Обратитесь к руководству {{ic|man systemd.mount}} для получения более подробной информации.<br />
<br />
=== Управлением питанием ACPI при помощи systemd ===<br />
<br />
Systemd обрабатывает некоторые события, связанные с ACPI, что настраивается при помощи параметров в конфигурационном файле {{ic|/etc/systemd/logind.conf}}:<br />
<br />
* {{ic|HandlePowerKey}}: определяет действия системы при нажатии кнопки питания (вкл./выкл.).<br />
* {{ic|HandleSuspendKey}}: определяет действия системы при нажатии кнопки спящего режима.<br />
* {{ic|HandleHibernateKey}}: определяет действия системы при нажатии кнопки ждущего режимаs.<br />
* {{ic|HandleLidSwitch}}: определяет действия системы при закрытии крышки компьютера.<br />
<br />
Для соответствующих действий могут использоваться значения {{ic|ignore}} (пропустить), {{ic|poweroff}} (отключить питание), {{ic|reboot}} (перезагрузить), {{ic|halt}} (выключить), {{ic|suspend}} (включить спящий режим), {{ic|hibernate}} (включить ждущий режим) или {{ic|kexec}} (системный вызов позволяющий оперативно переключиться в другое ядро).<br />
<br />
Если данные параметры не определены, по умолчанию systemd будет использовать следующие: {{ic|1=HandlePowerKey=poweroff}}, {{ic|1=HandleSuspendKey=suspend}}, {{ic|1=HandleHibernateKey=hibernate}}, и {{ic|1=HandleLidSwitch=suspend}}.<br />
<br />
В системах без графического интерфейса или использующих простые оконные менеджеры наподобие like [[i3]] или [[awesome]], так можно заменить демон [[acpid]], который обычно используется для реагирования на данные события ACPI.<br />
<br />
В текущей версии systemd параметры {{ic|Handle}} будут применены ко всей системе, если только они не "подавляются (временно отключены) другой программой, такой, как менеджер питания данного окружения рабочего стола. Если эти ограничений нет, вы можете столкнуться с ситуацией, когда systemd приводит вашу систему в спящий режим, а затем, когда система пробуждается менеджером управлением питания, снова "усыпляет" ее.<br />
<br />
{{Note|В настоящее время менеджер управления питанием новейшей версии в [[KDE]] является единственным, который использует такие команды "подавления". До тех пор, пока их не будут применять другие менеджеры, вам надо выставить в параметрах {{ic|Handle}} значение {{ic|ignore}}, если вы хотите, чтобы события ACPI обрабатывались в случае использования [[GNOME]], [[Xfce]], [[acpid]] или других программ. Но на подходе новые версии, которые включат данную функциональность.}}<br />
<br />
=== Хуки спящего режима ===<br />
<br />
Systemd в своих командах {{ic|systemctl suspend}} или {{ic|systemctl hibernate}} не использует [[pm-utils]] для "усыпления" машины, поэтому хуки [[pm-utils]], включая любые [[Pm-utils#Creating_your_own_hooks|пользовательские хуки]] не будут работать. Тем не менее, systemd предоставляет схожий механизм запуска пользовательских скриптов для данных событий. Systemd запускает все исполняемые файлы в директории {{ic|/usr/lib/systemd/system-sleep/}} и передает каждому из них два аргумента:<br />
<br />
* Аргумент 1: или {{ic|pre}}, или {{ic|post}}, в зависимости от которых машина либо "уснет", либо будет "пробуждена";<br />
* Аргумент 2: или {{ic|suspend}}, или {{ic|hibernate}}, в зависимости от того, что было вызвано.<br />
<br />
В отличие от [[pm-utils]], systemd запустит данные скрипты одновременно, а не один после другого.<br />
<br />
Вывод вашего скрипта будет записан сервисом {{ic|systemd-suspend.service}} или {{ic|systemd-hibernate.service}}, поэтому вы вы можете увидеть данный выход в [[Systemd (Русский)#Журнал systemd|журнале]].<br />
<br />
Обратите внимание, что вместо использования скриптов вы также можете использовать специальные целевые юниты - {{ic|sleep.target}}, {{ic|suspend.target}} или {{ic|hibernate.target}} для того, чтобы подключить к другим юнитам возможности перехода в спящий режима.<br />
<br />
Обратитесь к руководствам {{ic|man systemd.special}} и {{ic|man systemd-sleep}} для получения дальнейшей информации.<br />
<br />
==== Пример ====<br />
<br />
{{hc|/usr/lib/systemd/system-sleep/example.sh|<nowiki><br />
#!/bin/sh<br />
case $1/$2 in<br />
pre/*)<br />
echo "Going to $2..."<br />
;;<br />
post/*)<br />
echo "Waking up from $2..."<br />
;;<br />
esac</nowiki>}}<br />
<br />
=== Ждущий режим ===<br />
<br />
Смотрите [[systemd#Hibernation|английскую версию вики]].<br />
<br />
=== Юнит ===<br />
<br />
Юнит (англ. unit) - конфигурационный файл, содержащий информацию о сервисе (службе), сокете, устройстве, точке монирования/автомонирования, файле подкачке или разделе, определяемом для загрузки уровне запуска, пути в файловой системе или таймере, которые контролируются и управляются при помощи systemd. Синтаксис юнитов навеян спецификацией .desktop-файлов (XDG Desktop Entry Specification), которая, в свою очередь, вдохновлялась .ini-файлами от Microsoft Windows. Обратитесь к руководству {{ic|man systemd.unit}} для получения дальнейшей информации.<br />
<br />
== Команды systemd ==<br />
<br />
*{{ic|systemctl}}: используется для наблюдения и контроля за состоянием менеджера системы и сервисов systemd.<br />
*{{ic|systemd-cgls}}: рекурсивно показывает содержимое иерархии избранной контрольной группы (cgroup) Linux в виде дерева.<br />
*{{ic|systemadm}}: графическая оболочка для менеджера системы и сервисов systemd , позволяющая наблюдать и контролировать systemd (доступна в виде пакета {{AUR|systemd-ui-git}} из [[AUR]]).<br />
<br />
Обратитесь к страницам руководств для получения дальнейшей информации. <br />
<br />
{{Tip|Вы можете использовать приведенные ниже команды {{ic|systemctl}} с ключом {{ic|-H <user>@<host>}} для того, чтобы контролировать systemd на удаленной машине. В этом случае для соединения с удаленным процессом systemd будет использовать [[SSH]].}}<br />
<br />
=== Анализ состояния системы ===<br />
<br />
Список запущенных юнитов:<br />
<br />
$ systemctl<br />
<br />
или:<br />
<br />
$ systemctl list-units<br />
<br />
Список юнитов, попытка запуска которых завершилась неудачей:<br />
<br />
$ systemctl --failed<br />
<br />
Доступные юниты можно посмотреть в директориях {{ic|/usr/lib/systemd/system/}} и {{ic|/etc/systemd/system/}} (последняя директория имеет приоритет). Вы можете увидеть список установленных юнитов командой:<br />
<br />
$ systemctl list-unit-files<br />
<br />
=== Использование юнитов ===<br />
<br />
Юниты могут быть сервисами ({{ic|.service}}), точками монтирования ({{ic|.mount}}) или сокетами ({{ic|.sockets}}). При использовании команды {{ic|systemctl}} необходимо всегда указывать полное имя файла, включая расширение. Однако, есть несколько сокращений при определении юнита следующими командами{{ic|systemctl}}:<br />
<br />
* Ели вы не указали суффикс, systemctl предполагает, что это {{ic|.service}}. Например, {{ic|netcfg}} и {{ic|netcfg.service}} будут трактоваться одинаково.<br />
* Точки монтирования будут автоматически преобразованы в соответствующий юнит {{ic|.mount}}. Например, указание {{ic|/home}} равнозначно {{ic|home.mount}}.<br />
* Аналогично точкам монтирования, имена устройств автоматически преобразуются в соответствующий юнит {{ic|.device}}, поэтому указание {{ic|/dev/sda2}} полностью соответствует юниту {{ic|dev-sda2.device}}.<br />
<br />
Обратитесь к руководству {{ic|man systemd.unit}} для получения детальной информации.<br />
<br />
Незамедлительно запустить юнит:<br />
<br />
# systemctl start <unit><br />
<br />
Незамедлительно остановить юнит:<br />
<br />
# systemctl stop <unit><br />
<br />
Перезапустить юнит:<br />
<br />
# systemctl restart <unit><br />
<br />
Запросить у юнита перезагрузку его настроек:<br />
<br />
# systemctl reload <unit><br />
<br />
Показать статус юнита, а также запущен он или нет:<br />
<br />
$ systemctl status <unit><br />
<br />
Проверить включение юнита (т.е. разрешен ли юниту запуск при загрузке системы):<br />
<br />
$ systemctl is-enabled <unit><br />
<br />
Включить юнит (разрешить юниту запуск при загрузке системы):<br />
<br />
# systemctl enable <unit><br />
<br />
{{Note| Если сервис-файлы не имеют раздела {{ic|Install}}, это обычно означает, что данные сервисы вызываются автоматически другими сервисами. Но если вам требуется установить их вручную, используйте следующую команду, заменив {{ic|foo}} именем вашего сервиса.<br />
# ln -s /usr/lib/systemd/system/''foo''.service /etc/systemd/system/graphical.target.wants/<br />
}}<br />
<br />
Выключить юнит (запретить юниту запуск при загрузке системы):<br />
<br />
# systemctl disable <unit>}}<br />
<br />
Показать страницу помощи для юнита (необходима поддержка этой функции в указанном файле юнита):<br />
<br />
$ systemctl help <unit><br />
<br />
=== Управление питанием ===<br />
<br />
Если у вас локальная пользовательская сессия {{ic|systemd-logind}} или [[ConsoleKit]] и нет других активных сессий, приведенные ниже команды сработают и без привилегий суперпользователя root. В противном случае (например, вследствие того, что пользователь залогинился в tty), systemd автоматически запросит у вас пароль root (также обратитесь к разделу [[#Замена_ConsoleKit_на_systemd-logind|замена ConsoleKit на systemd-logind]]).<br />
<br />
Завершить работу и перезагрузить систему:<br />
<br />
$ systemctl reboot<br />
<br />
Завершить работу и выключить компьютер:<br />
<br />
$ systemctl halt<br />
<br />
Перевести систему в спящий режим:<br />
<br />
$ systemctl suspend<br />
<br />
Перевести систему в ждущий режим:<br />
<br />
$ systemctl hibernate<br />
<br />
== Уровни запуска/target-юниты ==<br />
<br />
Уровни запуска (по-английски уровень запуска - runlevel) для systemd являются устаревшей концепцией. Systemd использует ''target-юниты'' (буквально ''целевые юниты''), которые выполняют ту же задачу, что и уровни запуска, но действуют немного по-другому. Каждый ''target'' поименован (т.е. имеет собственное имя, а не номер) и, как предполагается, предназначен для использования в конкретных целях; возможно иметь в одно и то же время активными несколько таких целевых юнитов. Некоторые ''target-юниты'' реализованы так, что наследуют все сервисы других ''target-юнитов'' и добавляют к ним свои сервисы. В systemd имеются также ''target-юниты'', которые имитируют общие уровни запуска SystemVinit, поэтому вы можете переключаться между целевыми юнитами с использованием привычной команды {{ic|telinit RUNLEVEL}}. <br />
<br />
=== Получение информации о текущем уровне запуска/target-юнитах ===<br />
<br />
При использовании systemd для этого предназначена следующая команда (заменяющая {{ic|runlevel}}):<br />
<br />
# systemctl list-units --type=target<br />
<br />
=== Создание пользовательского target-юнита ===<br />
<br />
Уровни, которым расписаны конкретные цели на установке дистрибутива Fedora по умолчанию - 0, 1, 3, 5 и 6; есть маппинг 1:1 с помощью конкретного ''target-юнита'' systemd. К сожалению, не существует хорошего способа сделать то же самое для определяемых пользователем уровней, таких, как 2 и 4. Использование их предполагает, что вы создаете новый именованный ''target-юнит''systemd наподобие {{ic|/etc/systemd/system/<your target>}}, который берет за основу один из существующих уровней запуска (взгляните, например, на {{ic|/usr/lib/systemd/system/graphical.target}}), создаете также директорию {{ic|/etc/systemd/system/<your target>.wants}} и затем символические ссылки на те дополнительные сервисы из директории {{ic|/usr/lib/systemd/system/}}, которые вы хотите включить при загрузке.<br />
<br />
== Таблица уровней запуска и их аналогов в Systemd ==<br />
<br />
{| class="wikitable" border="1" cellpadding="5" cellspacing="0"<br />
! Уровнень запуска SysV !! Systemd Target !! Примечание<br />
|-<br />
| 0 || runlevel0.target, poweroff.target || Выключить систему.<br />
|-<br />
| 1, s, single || runlevel1.target, rescue.target || Однопользовательский уровень запуска.<br />
|-<br />
| 2, 4 || runlevel2.target, runlevel4.target, multi-user.target || Уровень запуска, определенный пользователем/специфичный для узла. По умолчанию соответствует уровню запуска 3.<br />
|-<br />
| 3 || runlevel3.target, multi-user.target || Многопользовательский режим без графики. Пользователи, как правило, входят с помощью множества консолей или через сеть.<br />
|-<br />
| 5 || runlevel5.target, graphical.target || Многопользовательский режим с графикой. Обычно эквивалентен запуску всех сервисов уровня 3 и графическому менеджеру входа.<br />
|-<br />
| 6 || runlevel6.target, reboot.target || Перезагрузка.<br />
|-<br />
| emergency || emergency.target || Аварийная оболочка.<br />
|-<br />
|}<br />
<br />
=== Изменение текущего уровня запуска ===<br />
<br />
В systemd уровни запуска доступны посредством "target-юнитов". Вы можете изменить их командой:<br />
<br />
# systemctl isolate graphical.target<br />
<br />
Данная команда изменит только лишь текущий уровень запуска и не повлияет на следующую загрузку системы. Она соответствует командам наподобие {{ic|telinit 3}} или {{ic|telinit 5}} для Sysvinit.<br />
<br />
=== Изменение уровня запуска по умолчанию/target-юнита для загрузки ===<br />
<br />
Стандартный target-юнит - {{ic|default.target}}, который по умолчанию является псевдонимом юнита {{ic|graphical.target}} (примерно соответствующего прежнему уровню выполнения 5). Для изменения уровня выполнения, выполняемого при загрузке по умолчанию, добавьте следующий дополнительный [[kernel parameters|параметр ядра]] в вашем загрузчике:<br />
<br />
{{Tip|Расширение {{ic|.target}} можно опустить.}}<br />
<br />
* {{ic|1=systemd.unit=multi-user.target}} (что примерно соответствует прежнему уровню выполнения 3),<br />
* {{ic|1=systemd.unit=rescue.target}} (что примерно соответствует прежнему уровню выполнения 1).<br />
<br />
Другой путь заключается в том, чтобы оставить загрузчик без изменений и изменить целевой юнит по умолчанию - {{ic|default.target}}, что достигается командой {{ic|systemctl}}:<br />
<br />
# systemctl enable multi-user.target<br />
<br />
Эффект от применения данной команды выводится через {{ic|systemctl}}; символическая ссылка на новый target-юнит по умолчанию создается в директории {{ic|/etc/systemd/system/default.target}}. Это сработает в том случае (и только в том случае), если имеется следующая секция:<br />
<br />
[Install]<br />
Alias=default.target<br />
<br />
в конфигурационном файле target-юнита. В настоящий момент как {{ic|multi-user.target}}, так и {{ic|graphical.target}} оба имеют данную секцию.<br />
<br />
== Запуск окружения рабочего стола из systemd ==<br />
<br />
=== Использование экранного менеджера ===<br />
<br />
Чтобы ключить графический вход в систему, запустите выбранный вами демон [[Display Manager (Русский)|экранного менеджера]] (например, [[KDM]]). В настоящий момент доступны сервис-файлы для [[GDM]], [[KDM]], [[SLiM]], [[XDM]], [[LXDM]] и [[LightDM]].<br />
<br />
# systemctl enable kdm.service<br />
<br />
Эта команда должна работать "из коробки". Если вдруг она не сработала, то, возможно, у вас {{ic|default.target}} установлен вручную или остался с прежней установки:<br />
<br />
{{hc|# ls -l /etc/systemd/system/default.target|<br />
/etc/systemd/system/default.target -> /usr/lib/systemd/system/graphical.target}}<br />
<br />
Просто удалите символическую ссылку и systemd будет использовать целевой юнит по умолчанию - {{ic|default.target}} (т.е. {{ic|graphical.target}}).<br />
<br />
# rm /etc/systemd/system/default.target<br />
<br />
=== Запуск через файл сервиса ===<br />
<br />
<br />
{{Note|При использовании данного метода для вашего пользователя не будет создана PAM-сессия, поэтому ConsoleKit (предоставляющий допуск к выключению/перезагрузке системы, аудиоустройствам и т.д.) не будет корректно работать. Рекомендуемый путь описан в разделах: [[#Замена_ConsoleKit_на_systemd-logind|Замена ConsoleKit на systemd-logind]] и [[Automatic_login_to_virtual_console#With_systemd|Автоматический вход в виртуальную консоль с помощью systemd]].}}<br />
<br />
если вам нужен простой путь запуска X напрямую, без использования экранного менеджера входа в систему, вы можете создать сервис-файл наподобие приведенного ниже:<br />
<br />
{{hc|/etc/systemd/system/graphical.target.wants/xinit.service|2=<br />
[Unit]<br />
Description=Direct login to X<br />
After=systemd-user-sessions.service<br />
<br />
[Service]<br />
ExecStart=/bin/su <username> -l -c "/bin/bash --login -c xinit"<br />
<br />
[Install]<br />
WantedBy=graphical.target}}<br />
<br />
== Журнал systemd ==<br />
<br />
С версии 38 systemd имеет собственную систему ведения логов - журнал (journal).<br />
<br />
По умолчанию, более не требуется запуск демона syslog. Для чтения логов используйте команду:<br />
<br />
# journalctl<br />
<br />
Журнал записывается в директорию {{ic|/run/systemd/journal}}, поэтому логи будут потеряны при перезагрузке. Для сохранения логов создайте директорию {{ic|/var/log/journal/}}:<br />
<br />
# mkdir /var/log/journal/<br />
<br />
=== Фильтрация вывода ===<br />
<br />
{{ic|journalctl}} позволяет фильтровать вывод по особым полям.<br />
<br />
Примеры:<br />
<br />
Показать все сообщения определенной программы:<br />
<br />
# journalctl /usr/lib/systemd/systemd<br />
<br />
Показать все сообщения определенного процесса:<br />
<br />
# journalctl _PID=1<br />
<br />
Показать все сообщения определенного юнита:<br />
<br />
# journalctl _SYSTEMD_UNIT=netcfg.service<br />
<br />
Обратитесь к {{ic|man journalctl}} и {{ic|systemd.journal-fields}} для получения детальной информации.<br />
<br />
=== Ограничение размера журнала ===<br />
<br />
Если журнал сохраняется при перезагрузке, размер его по умолчанию ограничен значением в 10% от объема соответствующей файловой системы. Например, для директории {{ic|/var/log/journal}}, расположенной на корневом разделе в 50 Гбайт, максимальный размер журналируемых данных составит до 5 Гбайт. Максимальный объем постоянного журнала можно контролировать при помощи значения {{ic|SystemMaxUse}} в конфигурационном файле {{ic|/etc/systemd/journald.conf}}, поэтому для ограничения его объемом в 50 Mбайт раскомментируйте и отредактируйте соответствующую строку:<br />
<br />
SystemMaxUse=50M<br />
<br />
Обратитесь к {{ic|man journald.conf}} для получения дальнейшей информации.<br />
<br />
=== Journald в связке с классическим демоном syslog ===<br />
<br />
Совместимость с классической реализацией syslog обеспечивается сокетом {{ic|/run/systemd/journal/syslog}}, в который перенаправляются все сообщения. Чтобы дать созможность демону syslog работать вместе с журналом systemd, следует привязать данный демон к указанному сокету вместо {{ic|/dev/log}} ([http://lwn.net/Articles/474968/ официальное сообщение]). В случае с syslog-ng, измените раздел {{ic|source src}} в конфигурационном файле {{ic|/etc/syslog-ng/syslog-ng.conf}} по следующем образцу:<br />
<br />
source src {<br />
unix-dgram("/run/systemd/journal/syslog");<br />
internal();<br />
file("/proc/kmsg");<br />
};<br />
<br />
и включите syslog-ng:<br />
<br />
# systemctl enable syslog-ng.service<br />
<br />
== Сеть ==<br />
<br />
{{Merge|Configuring Network (Русский)|Данный раздел в английской версии включен в состав статьи [[Configuring Network]]; в русской версии временно оставлен из-за того, что русский вариант [[Configuring Network (Русский)]] устарел в сравнении с английским.}}<br />
<br />
=== Динамическое подключение (DHCP) с использованием dhcpcd ===<br />
<br />
Если хотите использовать только DHCP для своего соединения Ethernet, вы можете воспользоваться сервисом {{ic|dhcpcd@.service}} (который поставляется пакетом {{Pkg|dhcpcd}}).<br />
<br />
Чтобы подключить DHCP для {{ic|eth0}}, просто выполните команду:<br />
<br />
# systemctl start dhcpcd@eth0.service<br />
<br />
Вы можете включить этот сервис, и он будет автоматически запускаться при загрузке. Это делается командой:<br />
<br />
# systemctl enable dhcpcd@eth0.service<br />
<br />
Иногда сервис dhcpd запускается до загрузки модуля вашей сетевой карты ({{bug|30235}}), в этом случае вручную добавьте вашу сетевую карту в конфигурационный файл {{ic|/etc/modules-load.d/*.conf}}. Например, для карты Realtek необходима загрузка модуля {{ic|r8169}}, поэтому создайте такой конфигурационный файл:<br />
<br />
{{hc|/etc/modules-load.d/realtek.conf|2=<br />
r8169}}<br />
<br />
=== Другие конфигурации ===<br />
<br />
Для статического подключения, беспроводной сети или сложной конфигурации сети наподобие сетевого моста, вы можете использовать [[Netcfg#systemd_support|netcfg]] или [[NetworkManager#Enable_NetworkManager_under_Native_systemd_system|NetworkManager]], для обеих этих инструментов управления сетью имеются сервис-файлы для systemd.<br />
<br />
{{Note|Если вы хотите использовать netcfg, networkmanager или другие программы управления сетью, вам не надо в этом случае запускать или включать сервис dhcpcd как показано в предыдущем параграфе.}}<br />
<br />
==Интеграция с Arch==<br />
<br />
=== Эмуляция initscripts ===<br />
<br />
Интеграция с классической конфигурацией Arch Linux обеспечивается пакетом {{Pkg|initscripts}}. Данная интеграция рассматривается как просто переходная мера для легкой миграции пользователей на systemd.<br />
<br />
{{Note|Файл {{ic|/etc/inittab}} вообще не используется.}}<br />
<br />
Если вы отключали использование сочетания клавиш для перезагрузки системы {{keypress|Ctrl+Alt+Del}} в файле {{ic|/etc/inittab}}, теперь вам надо заново сделать это для systemd командой {{ic|systemctl mask ctrl-alt-del.target}}, выполняемой от суперпользователя root.<br />
<br />
==== rc.conf ====<br />
<br />
Некоторые переменные в прежнем основном конфигурационном файле {{ic|/etc/rc.conf}} предположительно не будут корректно работать. Для чистой установки systemd setup рекомендуется использовать [[Systemd (Русский)#Родные системные файлы в systemd|родные системные файлы]], которые имеют приоритет над установками в {{ic|/etc/rc.conf}}.<br />
<br />
Поддерживаются (но не рекомендуются):<br />
<br />
* {{ic|CONSOLEFONT}}<br />
* {{ic|CONSOLEMAP}}<br />
* {{ic|DAEMONS}}<br />
* {{ic|HOSTNAME}}<br />
* {{ic|KEYMAP}}<br />
* {{ic|LOCALE}}<br />
<br />
Не поддерживаются:<br />
<br />
* {{ic|HARDWARECLOCK}}: обратитесь к разделу [[Systemd (Русский)#Аппаратные часы|Аппаратные часы]].<br />
* {{ic|MODULES}}: используйте взамен конфигурационные файлы в директории {{ic|modules-load.d}}.<br />
* {{ic|TIMEZONE}}: вручную сделайте символическую ссылку {{ic|/etc/localtime}} на файл вашей временной зоны.<br />
* {{ic|USELVM}}: взамен используйте {{ic|lvm.service}}, поставляемый пакетом {{pkg|lvm2}}.<br />
* {{ic|USECOLOR}}<br />
<br />
=== Полный переход к конфигурационным файлам systemd ===<br />
<br />
{{Note|Этот метод является предпочтительным, при его использовании система более не зависит от централизованной настройки в файле {{ic|rc.conf}}, а использует родные системные файлы systemd.}}<br />
<br />
Последуйте настройке конфигурационных файлов как показано в разделе [[Systemd (Русский)#Родные системные файлы в systemd|Родные системные файлы в systemd]]. Каждый файл заменяет одну из секций в {{ic|/etc/rc.conf}}, как показано в данной таблице:<br />
<br />
{| class="wikitable"<br />
|-<br />
! scope="col"| Настройка<br />
! scope="col"| Конфигурационный файл (файлы)<br />
! scope="col"| Устаревшая секция [https://projects.archlinux.org/initscripts.git/tree/rc.conf?id=97f0cd6751e8d22c14d7492cdc2186cf41157ba6 rc.conf]<br />
|-<br />
| align="center"|Имя компьютера (Hostname)<br />
| align="left"|{{ic|/etc/hostname}}<br />
{{ic|/etc/hosts}}<br />
| align="center"|{{ic|NETWORKING}}<br />
|-<br />
| align="center"|Консоль и раскладка клавиатуры<br />
| align="left"|{{ic|/etc/vconsole.conf}}<br />
| align="center"|{{ic|LOCALIZATION}}<br />
|-<br />
| align="center"|Локаль<br />
| align="left"|{{ic|/etc/locale.conf}}<br />
{{ic|/etc/locale.gen}}<br />
| align="center"|{{ic|LOCALIZATION}}<br />
|-<br />
| align="center"|Временная зона<br />
| align="left"|{{ic|/etc/localtime}}<br />
| align="center"|{{ic|LOCALIZATION}}<br />
|-<br />
| align="center"|Аппаратные часы<br />
| align="left"|{{ic|/etc/adjtime}}<br />
| align="center"|{{ic|LOCALIZATION}}<br />
|-<br />
| align="center"|Модули ядра<br />
| align="left"|{{ic|/etc/modules-load.d/}}<br />
| align="center"|{{ic|HARDWARE}}<br />
|}<br />
<br />
Для целей совместимости секция {{ic|DAEMONS}} в {{ic|/etc/rc.conf}} еще может использоваться вместе с systemd для запуска сервисов при загрузке системы, даже при "чистой" установке менеджера служб systemd. Взамен этого вы можете полностью удалить файл {{ic|/etc/rc.conf}} и включить сервисы в systemd. Для каждого сервиса с именем {{ic|<service_name>}} в массиве {{ic|DAEMONS}} из файла {{ic|/etc/rc.conf}} выполните команду:<br />
<br />
# systemctl enable <service_name>.service<br />
<br />
{{Tip|Для получения списка обычно используемых демонов с их эквивалентами в initscripts и systemd, обратитесь к [[Daemon#List_of_Daemons|данной таблице]].}}<br />
<br />
Если сервис-файл {{ic|<service_name>.service}} отсутствует:<br />
<br />
* сервис-файл может быть недоступен для systemd. В этом случае вам нужно сохранить конфигурационный файл {{ic|rc.conf}} для запуска этих сервисов во время загрузки системы.<br />
* systemd может называть сервисы другими именами, например, {{ic|cronie.service}} заменяет демон {{ic|crond}}; {{ic|alsa-store.service}} и {{ic|alsa-restore.service}} заменяют демон {{ic|alsa}}. Другой важный пример - демон {{ic|network}}, которого сменил целый набор сервис-файлов (обратитесь к разделу [[#Сеть]] для получения дальнейшей информации.)<br />
<br />
{{Tip|Вы можете заглянуть вовнутрь пакета, содержащего стартовые скрипты демона, чтобы узнать имена его сервис-файла. К примеру:<br />
$ pacman -Ql cronie | grep service<br />
<br />
cronie /usr/lib/systemd/system/crond.service<br />
<br />
cronie /usr/lib/systemd/system/cronie.service<br />
}}<br />
<br />
== Написание пользовательского .service файла ==<br />
<br />
=== Обработка зависимостей ===<br />
<br />
В случае использования systemd зависимости могут быть разрешены правильным построением файлов юнитов. ,Наиболее частый случай -- когда юниту {{ic|A}} требуется, чтобы юнит {{ic|B}} был запущен перед тем, как запустится сам юнит {{ic|A}}. В этом случае добавьте строки {{ic|1=Requires=B}} и {{ic|1=After=B}} в секцию {{ic|[Unit]}} сервис-файла юнита {{ic|A}}. Если подобная зависимость не является обязательной, добавьте соответственно взамен указанных выше строки {{ic|1=Wants=B}} и {{ic|1=After=B}}. Обратите внимание, что {{ic|1=Wants=}} и {{ic|1=Requires=}} не подразумевают {{ic|1=After=}}, что означает, что если {{ic|1=After=}} не определено, два юнита будут запущены параллельно друг другу.<br />
<br />
Обычно зависимости указываются в сервис-файлах, а не в целевых (target) файлах. Например, {{ic|network.target}} потребуется любому сервису, который связан с настройкой ваших сетевых интерфейсов, поэтому в любом случае определите загрузку вашего пользовательского юнита после запуска {{ic|network.target}}.<br />
<br />
=== Тип ===<br />
<br />
Существует несколько различных типов запуска служб, которые надо иметь в виду при написании пользовательского сервис-файла. Тип запуска определяется параметром {{ic|1=Type=}} в секции {{ic|[Service]}}. Обратитесь к руководству {{ic|man systemd.service}} для получения более детального объяснения.<br />
<br />
* {{ic|1=Type=simple}}: systemd предполагает, что сервис будет запущен незамедлительно. Процесс при этом не должен форкнуться. Не используйте этот тип, если другим сервисы зависят от очередности при запуске данного сервиса, за исключением активации сокета.<br />
* {{ic|1=Type=forking}}: systemd предполагает, что сервис запускается однократно, процесс форкается и родительский процесс завершается. Используйте данный тип для запуска классических демонов за исключением тех случаев, когда, как вам известно, в таком поведении процесса нет необходимости. Вам следует также определить {{ic|1=PIDFile=}}, чтобы systemd могла отслеживать основной процесс.<br />
* {{ic|1=Type=oneshot}}: Полезен для скриптов, которые выполняют одну работу, а потом завершаются. Вам может понадобиться также установить параметр {{ic|1=RemainAfterExit=}}, чтобы systemd по-прежнему считала процесс активным, даже после его завершения<br />
* {{ic|1=Type=notify}}: Идентичен параметру {{ic|1=Type=simple}}, но с той оговоркой, что демон пошлет systemd сигнал о своей готовности. Эталонная реализация данного уведомления обеспечивается библиотекой {{ic|libsystemd-daemon.so}}.<br />
* {{ic|1=Type=dbus}}: Сервис считается находящимся в состоянии готовности, когда определенное {{ic|BusName}} появляется в системной шине DBus.<br />
<br />
=== Замена предоставленных пакетами файлов юнитов ===<br />
<br />
Файлы юнитов в директории {{ic|/etc/systemd/system/}} имеют приоритет над такими же файлами в директории {{ic|/usr/lib/systemd/system/}}.<br />
Для создания собственной версии юнита (который не будет затерт при обновлении), скопируйте старый юнит из директории {{ic|/usr/lib/}} в директорию {{ic|/etc/}} и внесите в эту копию свои изменения. Альтернативным вариантом является использование {{ic|.include}} для парсинга существующего сервис-файла и затем переопределения или добавления новых опций. Например, если вы просто хотите добавить в сервис-файл дополнительную зависимость, вы можете использовать такую команду в юните:<br />
<br />
{{hc|/etc/systemd/system/<service-name>.service|2=<br />
.include /usr/lib/systemd/system/<service-name>.service<br />
<br />
[Unit]<br />
Requires=<new dependency><br />
After=<new dependency>}}<br />
<br />
Затем выполните следующие команды для того, чтобы изменения вступили в силу:<br />
<br />
# systemctl reenable <unit><br />
# systemctl restart <unit><br />
<br />
{{Tip|Вы можете использовать команду {{ic|systemd-delta}}, чтобы увидеть, какие файлы юнитов были переопределены и что в точности было изменено.}}<br />
<br />
=== Подсветка синтаксиса файлов юнитов systemd в Vim ===<br />
<br />
подсветка синтаксиса файлов юнитов для systemd в редакторе [[Vim]] может быть осуществлена путем установки пакета {{AUR|vim-systemd}} из [[Arch User Repository|AUR]].<br />
<br />
== Оптимизация ==<br />
<br />
=== systemd-analyze ===<br />
<br />
Systemd предоставляет инструмент под названием {{ic|systemd-analyze}}, позволяющий проанализировать процесс загрузки вашей системы, чтобы можно было увидеть, какие файлы юнитов тормозят загрузку. Соответственно, вы можете оптимизировать вашу систему. Для использования данного инструмента вам потребуется установить пакеты {{Pkg|python2-dbus}} и {{Pkg|python2-cairo}}.<br />
<br />
Чтобы увидеть, сколько времени было потрачено на подготовку пространства ядра и пространства пользователя во время загрузки, просто выполните команду:<br />
<br />
$ systemd-analyze<br />
<br />
{{Tip|Чтобы увидеть, сколько времени ушло на загрузку образа initramfs, добавьте хук {{ic|timestamp}} в ваш массив {{ic|HOOKS}} из конфигурационного файла {{ic|/etc/[[mkinitcpio]].conf}} и от суперпользователя root пересоберите ваш образ initramfs командой {{ic|mkinitcpio -p linux}} }}<br />
<br />
Чтобы увидеть список запускаемых файлов юнитов, отсортированный по потраченному каждым из них на загрузку времени, выполните команду:<br />
<br />
$ systemd-analyze blame<br />
<br />
Вы также можете создать файл SVG, показывающий процесс загрузки в графическом виде, наподобие [[Bootchart]]:<br />
<br />
$ systemd-analyze plot > plot.svg<br />
<br />
==== Включение bootchart в связке с systemd ====<br />
<br />
Вы можете использовать версию bootchart для визуализации последовательности при загрузке системы.<br />
Из-за невозможности использовать стандартные установки bootchart (так как нельзя добавить в командную строку ядра вторую запись init), вам придется воспользоваться пакетом {{AUR|bootchart2}} из [[AUR]], поставляемым с недокументированным сервисом systemd. После установки bootchart2 выполните команду:<br />
<br />
# systemctl enable bootchart.service<br />
<br />
Обратитесь к [https://github.com/mmeeks/bootchart документации bootchart (англ.)] за дальнейшей и детализированной информацией об использовании данной версии bootchart.<br />
<br />
=== Сокращения командной оболочки ===<br />
<br />
Демон управления systemd требует ввода достаточно большого объема текста команд для выполнения таких процессов, как запуск, остано, включение, проверка статуса сервисов и т.д. Добавление в ваш конфигурационный файл {{ic|~/.bashrc}} следующих функций поможет уппростить взаимодействие с systemd и усовершенствовать опыт ее использования.<br />
<br />
{{bc|# упростим команду systemd, например, "sudo systemctl stop xxx.service" - > "0.stop xxx"<br />
if ! systemd-notify --booted;<br />
then # for not systemd<br />
0.start() {<br />
sudo rc.d start $1<br />
}<br />
<br />
0.restart() {<br />
sudo rc.d restart $1<br />
}<br />
<br />
0.stop() {<br />
sudo rc.d stop $1<br />
}<br />
else<br />
# запустить сервис systemd<br />
0.start() {<br />
sudo systemctl start $1.service<br />
}<br />
# перезапустить сервис systemd<br />
0.restart() {<br />
sudo systemctl restart $1.service<br />
}<br />
# stop systemd service<br />
0.stop() {<br />
sudo systemctl stop $1.service<br />
}<br />
# включить сервис systemd<br />
0.enable() {<br />
sudo systemctl enable $1.service<br />
}<br />
# выключить сервис systemd<br />
0.disable() {<br />
sudo systemctl disable $1.service<br />
}<br />
# показать статус сервиса<br />
0.status() {<br />
systemctl status $1.service<br />
}<br />
# прерзагрузить конфигурацию сервиса<br />
0.reload() {<br />
sudo systemctl reload $1.service<br />
}<br />
# показать все запущенные сервисы<br />
0.list() {<br />
systemctl<br />
}<br />
# показать все сервисы, запуск которых завершился неудачей<br />
0.failed () {<br />
systemctl --failed<br />
}<br />
# показать все доступные файлы юнитов<br />
0.list-files() {<br />
systemctl list-unit-files<br />
}<br />
# проверить лог<br />
0.log() {<br />
sudo journalctl<br />
}<br />
# показать необязательные зависимости<br />
0.wants() {<br />
systemctl show -p "Wants" $1.target<br />
}<br />
# анализ системы<br />
0.analyze() {<br />
systemd-analyze $1<br />
}<br />
fi<br />
}}<br />
<br />
{{Warning|Скопируйте в свой {{ic|~/.bashrc}} [[Systemd#Shell_Shortcuts|английскую версию]] данных сокращений, чтобы избежать проблем с командной оболочкой. }}<br />
<br />
=== Сокращение вывода ===<br />
<br />
Измените параметр {{ic|verbose}} на {{ic|quiet}} в строке загрузки ядра вашего загрузчика. Для некоторых систем, в частности с SSD, узким местом является низкая производительность TTY, поэтому сокращение вывода означает прирост скорости загрузки.<br />
<br />
=== Ранний старт ===<br />
<br />
Одним из центральных элементов systemd является [[D-Bus]] и активация сокетов, что требует запуска сервисов при первой потребности в них. Обычно такой подход является удачным, но, если вы знаете, что какой-то сервис (вроде [[ConsoleKit]])должен всегда запускаться во время загрузки системы, то вы можете сократить общее время загрузки, запуская его так рано, как это вообще возможно. Этого можно добиться (если сервис-файл устроен соответствующим образом, что верно в большинстве случаев) путем выполнения команды:<br />
<br />
# systemctl enable console-kit-daemon.service<br />
<br />
Это заставит systemd запустить ConsoleKit как рано, как это возможно, не устраивая перегонки данного сервиса с активацией сокета или D-Bus.<br />
<br />
=== Автомонитрование ===<br />
<br />
Установка по умолчанию запускает fsck и монтирует все файловые системы перед запуском большинства демонов и сервисов. Если ваш раздел {{ic|/home}} занимает большой объем, лучшим вариантом было бы позволить сервисам не зависеть от подключения {{ic|/home}} и запускать данные сервисы, когда {{ic|/home}} еще подвергается проверке при загрузке системы. Добиться такого результата можно добавлением следующих параметров в запись файла fstab, касающуюся раздела {{ic|/home}}:<br />
<br />
noauto,x-systemd.automount<br />
<br />
Такие параметры вызовут fsck и примонтируют {{ic|/home}} при первом обращении к данному разделу, и ядро будет буферизовать все файлы доступа к {{ic|/home}} до готовности данного раздела.<br />
<br />
В случае использования зашифрованных файловых систем с ключами доступа, вам также Iследует добавить параметр {{ic|noauto}} в соответствующие записи файла {{ic|/etc/crypttab}}. systemd не будет подключать зашифрованные устройства при загрузке, но, вместо этого, дождется реального обращения к ним и автоматически откроет к ним доступ с использованием определенных ключей перед тем, как они будут примонтированы. Это сэкономит несколько секунд при загрузке системы, например, в случае использования зашифрованного устройства RAID, потому что systemd не будет дожидаться от устройства, когда оно станет доступным. Например:<br />
<br />
{{hc|/etc/crypttab|<br />
data /dev/md0 /root/key noauto}}<br />
<br />
=== Readahead ===<br />
<br />
systemd поставляется со свой реализации технологии readahead, что в принципе должно усовершенствовать процесс загрузки системы. Однако, в зависимости от версии вашего ядра и типа жесткого диска, скорость обращения к данным может разниться (например, может быть медленнее). Чтобы включить данный сервис, выполните:<br />
<br />
# systemctl enable systemd-readahead-collect.service systemd-readahead-replay.service<br />
<br />
Не забудьте, что волшебство технологии readahead подействует только после нескольких перезапусков системы<br />
<br />
=== Замена ConsoleKit на systemd-logind ===<br />
<br />
Начиная с {{Pkg|polkit}} 0.107 (в настоящее время в репозитории [testing]), [[ConsoleKit]] можно полностью заменить на {{ic|systemd-logind}}. Самый легкий метод удаления [[ConsoleKit]] заключается в [[Automatic_login_to_virtual_console#With_systemd|автоматическом входе в виртуальную консоль]] и [[Start_X_at_Boot|запуска X оттуда]]. Важно понять, что, как указано в последней статье, сервер X запускается в той же виртуальной консоли, в которую вы загрузились, в противном случае systemd не сможет следить за пользовательской сессией. Затем можно просто удалить {{ic|ck-launch-session}} из вашего файла {{ic|~/.xinitrc}}.<br />
<br />
Для того, чтобы проверить статус вашей пользовательской сессии, вы можете использовать команду {{ic|loginctl}}. Чтобы убедиться, что ваша пользовательская сессия правильно установлена, проверьте, содержит ли следующая команда {{ic|1=Active=yes}}. Все действия {{Pkg|polkit}} actions наподобие перевода системы в спящий режим или монтирования внешних носителей с помощью [[Udisks]] должны работать автоматически.<br />
<br />
$ loginctl show-session <session-id><br />
<br />
{{Note|При использовании [[NetworkManager]] вам необходимо перекомпилировать данный пакет с поддержкой systemd из [[ABS]] путем записи опции {{ic|1=--with-session-tracking=systemd}} в [[PKGBUILD]].}}<br />
<br />
== Устранение неполадок ==<br />
<br />
=== Выключение/перезагрузка происходят ужасно долго ===<br />
<br />
Если процесс выключения занимает очень долгое время (или, по-видимому, зависает), то, вероятно, виноват сервис, который не завершает свою работу. systemd ожидает некоторое время, пока каждый сервис завершит свою работу самостоятельно, и только потом пытается принудительно завершить (kill) его. Если вы столкнулись с такой проблемой, обратитесь к [http://freedesktop.org/wiki/Software/systemd/Debugging#Shutdown_Completes_Eventually данной статье (англ.)].<br />
<br />
== Полезные ссылки ==<br />
<br />
*[http://www.freedesktop.org/wiki/Software/systemd Официальный веб-сайт (англ.)]<br />
*[http://0pointer.de/public/systemd-man/ Страницы руководств (англ.)]<br />
*[http://freedesktop.org/wiki/Software/systemd/Optimizations systemd Optimizations (англ.)]<br />
*[http://www.freedesktop.org/wiki/Software/systemd/FrequentlyAskedQuestions FAQ (англ.)]<br />
*[http://www.freedesktop.org/wiki/Software/systemd/TipsAndTricks Tips And Tricks (англ.)]<br />
*[http://0pointer.de/public/systemd-ebook-psankar.pdf systemd для администраторов (PDF) - перевод цикла статей Леннарта Поттеринга (Lennart Poettering) ]<br />
*[http://0pointer.de/blog/projects/systemd.html Блог Lennart'а (англ.)]<br />
*[http://archlinux.org.ru/forum/viewtopic.php?f=9&t=9581 systemd mini FAQ]<br />
*[http://wiki.russianfedora.ru/index.php?title=Systemd systemd - база знаний проекта Fedora]<br />
*[http://fedoraproject.org/wiki/Systemd Fedora Linux Wiki: Systemd (англ.)]<br />
*[http://wiki.debian.org/ru/Systemd Debian Wiki: systemd - менеджер системы и сервисов]<br />
*[http://wiki.ubuntu.com/systemd Ubuntu Wiki: systemd (англ.)]<br />
*[http://fedoraproject.org/wiki/Systemd OpenSuse Wiki: SDB:Systemd]</div>Klayhttps://wiki.archlinux.org/index.php?title=Systemd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=230540Systemd (Русский)2012-10-22T01:29:34Z<p>Klay: /* Полный переход к конфигурационным файлам systemd */</p>
<hr />
<div>[[Category:Русский]]<br />
[[Category:Демоны и системные сервисы (Русский)]]<br />
[[Category:Процесс Загрузки (Русский)]]<br />
[[en:systemd]]<br />
[[es:systemd]]<br />
[[fr:systemd]]<br />
[[it:systemd]]<br />
[[zh-CN:systemd]]<br />
{{Article summary start|Сводка}}<br />
{{Article summary text|Статья охватывает установку и настройку systemd.}}<br />
{{Article summary heading|Связанные статьи}}<br />
{{Article summary wiki|Systemd/Services}}<br />
{{Article summary wiki|Init_Rosetta_(Русский)}}<br />
{{Article summary wiki|Udev_(Русский)}}<br />
{{Article summary end}}<br />
Цитата с [http://freedesktop.org/wiki/Software/systemd веб-страницы проекта]:<br />
<br />
''"'''systemd''' - система [инициализации] и менеджер служб для Linux, совместимые со скриптами инициализации SysV и LSB. systemd обеспечивает возможности агрессивной параллелизации, использует сокеты и активацию [[D-Bus]] для запускаемых служб, предлагает запуск демонов по необходимости, отслеживает процессы при помощи [[cgroups|контрольных групп]] Linux, поддерживает мгновенные снимки и восстановление состояния системы, монтирование и точки монтирования, а также внедряет основанную на зависимостях логику контроля процессов сложных транзакций. Эта система может выступать заменой sysvinit."''.<br />
<br />
{{Note|За детальным объяснением причин перехода Arch'а на systemd обратитесь к [https://bbs.archlinux.org/viewtopic.php?pid&#61;1149530#p1149530 сообщению на англоязычном форуме].}}<br />
<br />
Смотрите также [[Wikipedia:Systemd|статью в Википедии]].<br />
== Что надо усвоить до начала миграции на данную систему ==<br />
<br />
* Настоятельно рекомендуется перейти на новую конфигурацию '''initscripts''', описанную в статье [[rc.conf (Русский)|rc.conf]]. Сконфигурировав таким образом свою систему, вы проделаете бóльшую часть работы, необходимую для миграции на systemd.<br />
* Почитайте про systemd на [http://freedesktop.org/wiki/Software/systemd/ сайте разработчиков].<br />
* Обратите внимание, что systemd имеет собственный '''журнал (journal)''', заменяющий '''syslog''', хотя оба варианта ведения логов могут сосуществовать. Обратитесь к приведенному ниже разделу [[#Journald_в_связке_с_классическим_демоном _syslog|разделу, посвященному журналу]].<br />
* Хотя systemd вполне способна заменить определенную функциональность таких демонов, как '''cron''', '''acpid''' или '''xinetd''', но если вы не хотите, можете не отказываться от использования традиционных демонов.<br />
<br />
== Установка ==<br />
systemd может быть установлен параллельно со стандартным пакетом инициализации {{Pkg|initscripts}}, и между ними можно будет переключаться путем добавления/удаления [[kernel parameters|параметров ядра]] {{ic|1=init=/usr/lib/systemd/systemd}}. <br />
<br />
=== Смешанная установка systemd/sysvinit/initscripts ===<br />
<br />
Возможно иметь в своей системе одновременно установленными systemd и sysvinit и использовать одну и те же конфигурационные файлы, что позволит вам свободно переключаться между ним туда и обратно:<br />
<br />
# Откажитесь от устаревших форматов конфигурации initscripts (о них сообщается при загрузке системы) в пользу [[#Родные системные файлы в systemd|родных системных файлов systemd]] и перезагрузитесь для проверки работоспособности данных установок при использовании initscripts.<br />
# Установите пакет {{Pkg|systemd}} из [[Official Repositories (Русский)|официальных репозиториев]].<br />
# Добавьте запись {{ic|1=init=/usr/lib/systemd/systemd}} к [[Kernel parameters|параметрам ядра]] в вашем загрузчике.<br />
# Перезагрузите систему.<br />
<br />
Systemd запустит демоны, перечисленные в {{ic|/etc/rc.conf}}, выполнит {{ic|/etc/rc.local}} и {{ic|/etc/rc.local.shutdown}} соответственно при загрузке/выключении системы. Если поддержка совместимости с массивом DAEMONS в конфигурационном файле {{ic|rc.conf}} или же скриптов в {{ic|rc.local}} вам не нужна, соответствующие сервис-файлы могут быть заблокированы (замаскированы) для их отключения.<br />
<br />
{{Warning|В случае, когда у вас в массиве DAEMONS перечислены демоны, для которых имеются родные сервис-файлы systemd, автоматически будут использоваться родные сервис-файлы. Тем не менее, если имена скриптов rc и сервисов systemd (так далее будут именоваться службы данной системы инициализации) не соответствуют друг другу, данное правило не сработает и вам следует убедиться, что только включен только один из них двух (предпочтительно родной сервис-файл).}}<br />
<br />
{{Warning|Systemd - процесс асинхронной загрузки по сравнению сравнении с последовательным запуском демонов из массива DAEMONS. В частности, "network", будучи поддерживаемым для совместимости сервисом, может запуститься слишком поздно для включения интерфейсов, которые требуются другим сервисам. Рекомендуется переключиться на использование netcfg или NetworkManager до перехода на systemd.}}<br />
<br />
=== Смешанная установка systemd/initscripts ===<br />
<br />
Возможно заменить sysvinit на systemd, но сохранить initscripts в случае использования некоторых скриптов rc scripts, для которых пока не имеется эквивалентов в systemd.<br />
<br />
# Следуйте инструкциям для смешанной установки systemd/sysvinit/initscripts.<br />
# [[#Использование_юнитов|Включите демоны]], ранее перечисленные в {{ic|/etc/rc.conf}} с помощью команды {{ic|systemctl enable ''daemonname.'''service''' ''}}. Для переноса демонов из {{ic|/etc/rc.conf}} в разряд сервисов systemd, смотрите разделы: [[Daemon#List_of_Daemons|List of Daemons]] и [[Systemd/Services|Services]]. Демоны, для которых не имеется соответствующих сервис-файлов systemd, следует оставить в массиве DAEMONS, поскольку systemd запустит устаревшие скрипты rc.<br />
# Установите пакет {{Pkg|systemd-sysvcompat}}. Данный пакет конфликтует с {{Pkg|sysvinit}} и вам будет предложено удалить последний.<br />
# Удалите запись {{ic|1=init=...}}, поскольку {{ic|/sbin/init}} теперь является символической ссылкой на systemd.<br />
# Перезагрузите систему.<br />
<br />
Единственная разница между этим вариантом и вариантом с сохранением sysvinit состоит в том, что все бинарные файлы sysvinit заменены символическими ссылками на systemctl. Тем не менее, функциональность должна остаться неизменной.<br />
<br />
=== Чистая установка systemd ===<br />
<br />
Напоследок, возможно вовсе удалить initscripts и sysvinit и использовать только лишь systemd.<br />
<br />
# Следуйте инструкциям для смешанной установки systemd/initscripts.<br />
# Убедитесь, что более не имеется каких-либо демонов для запуска из массива DAEMONS в конфигурационном файле {{ic|/etc/rc.conf}} и оба файла {{ic|/etc/rc.local}} и {{ic|/etc/rc.local.shutdown}} пусты.<br />
# Удалите пакет initscripts из вашей системы.<br />
<br />
=== Дополнительная информация ===<br />
<br />
{{Tip|Если в параметрах ядра имеется значение {{ic|quiet}}, вероятно, вам стоит удалить его для нескольких первых загрузок systemd, чтобы видеть возникающие во время загрузке проблемы.}}<br />
<br />
== Родные системные файлы в systemd ==<br />
<br />
{{Note|Возможно, вам придется создать эти файлы. Установите для них права доступа 644 и владельца root:root.}}<br />
<br />
{{Pkg|systemd}} будет использовать {{ic|/etc/rc.conf}}, если эти конфигурационные файлы отсутствуют. Обратите внимание, что такое использование может быть только временным решением. Настоятельно рекомендуется для любой системы использовать конфигурационные файлы systemd.<br />
<br />
=== Имя компьютера (hostname) ===<br />
<br />
{{hc|/etc/hostname|<br />
myhostname}}<br />
<br />
=== Консоль и раскладка клавиатуры ===<br />
<br />
Файл {{ic|/etc/vconsole.conf}} устанавливает настройки виртуальной консоли: раскладку клавиатуры и консольный шрифт.<br />
<br />
{{hc|/etc/vconsole.conf|2=<br />
KEYMAP=ru<br />
FONT=cyr-sun16<br />
FONT_MAP=}}<br />
<br />
Для получения детальной информации обратитесь к разделам [[Fonts#Console_fonts|Console fonts]] and [[KEYMAP#Keyboard_layouts|Keymap]]. <br />
<br />
{{Note|{{ic|{{Pkg|systemd}}-194}} использует шрифт ядра и раскладку по умолчанию (т.е. американскую английскую). Нет более необходимости (для тех, кто использует данную раскладку) иметь в конфигурационном файле строки {{ic|1=KEYMAP=}} и {{ic|1=FONT=}} с пустыми значениями.}}<br />
<br />
=== Локаль ===<br />
Для получения подробной информации о вариантах настройки обратитесь к руководству {{ic|man locale.conf}}<br />
<br />
{{hc|/etc/locale.conf|2=<br />
LANG=ru_RU.UTF-8}}<br />
<br />
Дальнейшая информация содержится в статье [[Locale]].<br />
<br />
=== Временная зона ===<br />
<br />
Для получения подробной информации о вариантах настройки обратитесь к руководству {{ic|man 5 localtime}}.<br />
<br />
# ln -sf /usr/share/zoneinfo/America/Chicago /etc/localtime<br />
<br />
{{Note|Прежний конфигурационный файл {{ic|/etc/timezone}} объявлен устаревшим с выходом {{ic|systemd-190}} и может/должен быть удален.}}<br />
<br />
=== Аппаратные часы ===<br />
<br />
Systemd будет использовать UTC для аппаратных часов, именно такой вариант рекомендуется. Настройка зимнего/летнего времени - неблагодарное занятие. Если переход на зимнее/летнее время происходит в тот момент, когда ваш компьютер выключен, то при следующей загрузке ваши часы будут показывать ошибочное время ([http://www.cl.cam.ac.uk/~mgk25/mswish/ut-rtc.html здесь об этом чуть подробнее (англ.)]). Последние версии ядра устанавливают системное время из RTC (часов реального времени) непосредственно во время загрузки без использования {{ic|hwclock}}, при этом ядро всегда считает, что RTC выставлено по UTC. Это означает, что если RTC выставлено по местному времени (local time), системное время будет изначально установлено ошибочно и затем корректироваться вскоре после этого при каждой загрузке. Это является причиной некоторых досадных багов (идущие назад часы редко являются нужной вещью).<br />
<br />
Причиной, позволяющей RTC быть выставленными по местному времени, является двойная загрузка системы с Windows, ([http://blogs.msdn.com/b/oldnewthing/archive/2004/09/02/224672.aspx которая использует localtime (англ.)]). Windows воспринимает RTC, выставленные по UTC при помощи простого [[Time#UTC_in_Windows|исправления реестра]]. Если вы столкнетесь с подобными проблемами при двойной загрузке с Windows, вы можете установить аппаратные часы на использование местного времени.<br />
<br />
{{hc|/etc/adjtime|<br />
0.0 0.0 0.0<br />
0<br />
LOCAL}}<br />
<br />
Другие параметры по-прежнему нужны, но они игнорируются systemd.<br />
<br />
Обычно рекомендуется запускать [[NTP|демон Network Time Protocol]] для поддержания синхронизации аппаратных часов с системным временем.<br />
<br />
=== Подгружаемые модули ядра ===<br />
<br />
systemd использует конфигурационные файлы из директории {{ic|/etc/modules-load.d/}} для определения модулей ядра, подгружаемых во время загрузки системы. Каждый из конфигурационных файлов имеет наименование вида {{ic|/etc/modules-load.d/<program>.conf}} (где <program> - имя подгружаемого модуля). При этом игнорируются как пустые строки конфигурационных файлов, так и строки, у которых первым символом, отличным о пробела, является символ {{ic|#}} и {{ic|;}}. Например:<br />
<br />
{{hc|/etc/modules-load.d/virtio-net.conf|<br />
# Load virtio-net.ko at boot<br />
virtio-net}}<br />
<br />
Также смотрите раздел [[Modprobe#Options]].<br />
<br />
=== Черный список модулей ядра ===<br />
<br />
Добавление модулей в черный список работает также, как и в случае с {{Pkg|initscripts}}, поскольку в действительности эта функция выполняется таким инструментом, как {{Pkg|kmod}}. Обратитесь к разделу [[Kernel_modules#Blacklisting|Module Blacklisting]] за более подробной информацией.<br />
<br />
=== Временные файлы ===<br />
<br />
Systemd-tmpfiles использует конфигурационные файлы в директориях {{ic|/usr/lib/tmpfiles.d/}} и {{ic|/etc/tmpfiles.d/}} для определения действий с временными файлами и директориями (создание, очистка и удаление их), обычно расположенные в {{ic|/run}} or {{ic|/tmp}}. Каждый файл с настройками имеет название вида {{ic|/etc/tmpfiles.d/<program>.conf}}. Данные конфигурационные файлы имеют приоритет по сравнению с любыми файлами с таким же названием, расположенными в директории {{ic|/usr/lib/tmpfiles.d/}}.<br />
<br />
Временные файлы tmpfiles обычно поставляются вместе с сервис-файлами для создания директорийк. которые, как ожидается, будут использоваться определенными демонами. Например, демон [[Samba]] предполагает наличие директории {{ic|/var/run/samba}} с соответствующими правами доступа. В данном случае tmpfile выглядит следующим образом:<br />
<br />
{{hc|/usr/lib/tmpfiles.d/samba.conf|<br />
D /var/run/samba 0755 root root}}<br />
<br />
Тем не менее, tmpfiles также могут использоваться для записи значений в определенные файлы во врем загрузки. К примеру, если вы используете {{ic|/etc/rc.local}} для того, чтобы отключить пробуждение системы USB-устройствами, при помощи команды {{ic|echo USBE > /proc/acpi/wakeup}}, вы можете вместо этого использовать следующий tmpfile:<br />
<br />
{{hc|/etc/tmpfiles.d/disable-usb-wake.conf|<br />
w /proc/acpi/wakeup - - - - USBE}}<br />
<br />
Метод с использованием tmpfiles в данном случае рекомендуется, поскольку systemd в действительности не поддерживает {{ic|/etc/rc.local}}.<br />
<br />
Обратитесь к руководству {{ic|man tmpfiles.d}} за более подробной информацией.<br />
<br />
=== Монтирование удаленных файловых систем ===<br />
<br />
<br />
Systemd позволяет в автоматическом режиме добиться, что удаленные файловые системы наподобие [[NFS]] и [[Samba]] подключаются после поднятия сети. are only started after the network has been set up. Поэтому монтирование удаленных файловых систем, прописанных в {{ic|/etc/fstab}} должно работать "из коробки".<br />
<br />
Однако, по желанию вы можете использовать [[#Automount|автомонтирование]] для монирования удаленных файловых систем, чтобы монтирование данных систем происходило только по мере доступа к ним. Кроме того, вы можете использовать параметр {{ic|1=x-systemd.device-timeout=#}} в файле {{ic|/etc/fstab}} для определения таймаута в том случае, кода сетевые ресурсы оказываются недоступны.<br />
<br />
Обратитесь к руководству {{ic|man systemd.mount}} для получения более подробной информации.<br />
<br />
=== Управлением питанием ACPI при помощи systemd ===<br />
<br />
Systemd обрабатывает некоторые события, связанные с ACPI, что настраивается при помощи параметров в конфигурационном файле {{ic|/etc/systemd/logind.conf}}:<br />
<br />
* {{ic|HandlePowerKey}}: определяет действия системы при нажатии кнопки питания (вкл./выкл.).<br />
* {{ic|HandleSuspendKey}}: определяет действия системы при нажатии кнопки спящего режима.<br />
* {{ic|HandleHibernateKey}}: определяет действия системы при нажатии кнопки ждущего режимаs.<br />
* {{ic|HandleLidSwitch}}: определяет действия системы при закрытии крышки компьютера.<br />
<br />
Для соответствующих действий могут использоваться значения {{ic|ignore}} (пропустить), {{ic|poweroff}} (отключить питание), {{ic|reboot}} (перезагрузить), {{ic|halt}} (выключить), {{ic|suspend}} (включить спящий режим), {{ic|hibernate}} (включить ждущий режим) или {{ic|kexec}} (системный вызов позволяющий оперативно переключиться в другое ядро).<br />
<br />
Если данные параметры не определены, по умолчанию systemd будет использовать следующие: {{ic|1=HandlePowerKey=poweroff}}, {{ic|1=HandleSuspendKey=suspend}}, {{ic|1=HandleHibernateKey=hibernate}}, и {{ic|1=HandleLidSwitch=suspend}}.<br />
<br />
В системах без графического интерфейса или использующих простые оконные менеджеры наподобие like [[i3]] или [[awesome]], так можно заменить демон [[acpid]], который обычно используется для реагирования на данные события ACPI.<br />
<br />
В текущей версии systemd параметры {{ic|Handle}} будут применены ко всей системе, если только они не "подавляются (временно отключены) другой программой, такой, как менеджер питания данного окружения рабочего стола. Если эти ограничений нет, вы можете столкнуться с ситуацией, когда systemd приводит вашу систему в спящий режим, а затем, когда система пробуждается менеджером управлением питания, снова "усыпляет" ее.<br />
<br />
{{Note|В настоящее время менеджер управления питанием новейшей версии в [[KDE]] является единственным, который использует такие команды "подавления". До тех пор, пока их не будут применять другие менеджеры, вам надо выставить в параметрах {{ic|Handle}} значение {{ic|ignore}}, если вы хотите, чтобы события ACPI обрабатывались в случае использования [[GNOME]], [[Xfce]], [[acpid]] или других программ. Но на подходе новые версии, которые включат данную функциональность.}}<br />
<br />
=== Хуки спящего режима ===<br />
<br />
Systemd в своих командах {{ic|systemctl suspend}} или {{ic|systemctl hibernate}} не использует [[pm-utils]] для "усыпления" машины, поэтому хуки [[pm-utils]], включая любые [[Pm-utils#Creating_your_own_hooks|пользовательские хуки]] не будут работать. Тем не менее, systemd предоставляет схожий механизм запуска пользовательских скриптов для данных событий. Systemd запускает все исполняемые файлы в директории {{ic|/usr/lib/systemd/system-sleep/}} и передает каждому из них два аргумента:<br />
<br />
* Аргумент 1: или {{ic|pre}}, или {{ic|post}}, в зависимости от которых машина либо "уснет", либо будет "пробуждена";<br />
* Аргумент 2: или {{ic|suspend}}, или {{ic|hibernate}}, в зависимости от того, что было вызвано.<br />
<br />
В отличие от [[pm-utils]], systemd запустит данные скрипты одновременно, а не один после другого.<br />
<br />
Вывод вашего скрипта будет записан сервисом {{ic|systemd-suspend.service}} или {{ic|systemd-hibernate.service}}, поэтому вы вы можете увидеть данный выход в [[Systemd (Русский)#Журнал systemd|журнале]].<br />
<br />
Обратите внимание, что вместо использования скриптов вы также можете использовать специальные целевые юниты - {{ic|sleep.target}}, {{ic|suspend.target}} или {{ic|hibernate.target}} для того, чтобы подключить к другим юнитам возможности перехода в спящий режима.<br />
<br />
Обратитесь к руководствам {{ic|man systemd.special}} и {{ic|man systemd-sleep}} для получения дальнейшей информации.<br />
<br />
==== Пример ====<br />
<br />
{{hc|/usr/lib/systemd/system-sleep/example.sh|<nowiki><br />
#!/bin/sh<br />
case $1/$2 in<br />
pre/*)<br />
echo "Going to $2..."<br />
;;<br />
post/*)<br />
echo "Waking up from $2..."<br />
;;<br />
esac</nowiki>}}<br />
<br />
=== Ждущий режим ===<br />
<br />
Смотрите [[systemd#Hibernation|английскую версию вики]].<br />
<br />
=== Юнит ===<br />
<br />
Юнит (англ. unit) - конфигурационный файл, содержащий информацию о сервисе (службе), сокете, устройстве, точке монирования/автомонирования, файле подкачке или разделе, определяемом для загрузки уровне запуска, пути в файловой системе или таймере, которые контролируются и управляются при помощи systemd. Синтаксис юнитов навеян спецификацией .desktop-файлов (XDG Desktop Entry Specification), которая, в свою очередь, вдохновлялась .ini-файлами от Microsoft Windows. Обратитесь к руководству {{ic|man systemd.unit}} для получения дальнейшей информации.<br />
<br />
== Команды systemd ==<br />
<br />
*{{ic|systemctl}}: используется для наблюдения и контроля за состоянием менеджера системы и сервисов systemd.<br />
*{{ic|systemd-cgls}}: рекурсивно показывает содержимое иерархии избранной контрольной группы (cgroup) Linux в виде дерева.<br />
*{{ic|systemadm}}: графическая оболочка для менеджера системы и сервисов systemd , позволяющая наблюдать и контролировать systemd (доступна в виде пакета {{AUR|systemd-ui-git}} из [[AUR]]).<br />
<br />
Обратитесь к страницам руководств для получения дальнейшей информации. <br />
<br />
{{Tip|Вы можете использовать приведенные ниже команды {{ic|systemctl}} с ключом {{ic|-H <user>@<host>}} для того, чтобы контролировать systemd на удаленной машине. В этом случае для соединения с удаленным процессом systemd будет использовать [[SSH]].}}<br />
<br />
=== Анализ состояния системы ===<br />
<br />
Список запущенных юнитов:<br />
<br />
$ systemctl<br />
<br />
или:<br />
<br />
$ systemctl list-units<br />
<br />
Список юнитов, попытка запуска которых завершилась неудачей:<br />
<br />
$ systemctl --failed<br />
<br />
Доступные юниты можно посмотреть в директориях {{ic|/usr/lib/systemd/system/}} и {{ic|/etc/systemd/system/}} (последняя директория имеет приоритет). Вы можете увидеть список установленных юнитов командой:<br />
<br />
$ systemctl list-unit-files<br />
<br />
=== Использование юнитов ===<br />
<br />
Юниты могут быть сервисами ({{ic|.service}}), точками монтирования ({{ic|.mount}}) или сокетами ({{ic|.sockets}}). При использовании команды {{ic|systemctl}} необходимо всегда указывать полное имя файла, включая расширение. Однако, есть несколько сокращений при определении юнита следующими командами{{ic|systemctl}}:<br />
<br />
* Ели вы не указали суффикс, systemctl предполагает, что это {{ic|.service}}. Например, {{ic|netcfg}} и {{ic|netcfg.service}} будут трактоваться одинаково.<br />
* Точки монтирования будут автоматически преобразованы в соответствующий юнит {{ic|.mount}}. Например, указание {{ic|/home}} равнозначно {{ic|home.mount}}.<br />
* Аналогично точкам монтирования, имена устройств автоматически преобразуются в соответствующий юнит {{ic|.device}}, поэтому указание {{ic|/dev/sda2}} полностью соответствует юниту {{ic|dev-sda2.device}}.<br />
<br />
Обратитесь к руководству {{ic|man systemd.unit}} для получения детальной информации.<br />
<br />
Незамедлительно запустить юнит:<br />
<br />
# systemctl start <unit><br />
<br />
Незамедлительно остановить юнит:<br />
<br />
# systemctl stop <unit><br />
<br />
Перезапустить юнит:<br />
<br />
# systemctl restart <unit><br />
<br />
Запросить у юнита перезагрузку его настроек:<br />
<br />
# systemctl reload <unit><br />
<br />
Показать статус юнита, а также запущен он или нет:<br />
<br />
$ systemctl status <unit><br />
<br />
Проверить включение юнита (т.е. разрешен ли юниту запуск при загрузке системы):<br />
<br />
$ systemctl is-enabled <unit><br />
<br />
Включить юнит (разрешить юниту запуск при загрузке системы):<br />
<br />
# systemctl enable <unit><br />
<br />
{{Note| Если сервис-файлы не имеют раздела {{ic|Install}}, это обычно означает, что данные сервисы вызываются автоматически другими сервисами. Но если вам требуется установить их вручную, используйте следующую команду, заменив {{ic|foo}} именем вашего сервиса.<br />
# ln -s /usr/lib/systemd/system/''foo''.service /etc/systemd/system/graphical.target.wants/<br />
}}<br />
<br />
Выключить юнит (запретить юниту запуск при загрузке системы):<br />
<br />
# systemctl disable <unit>}}<br />
<br />
Показать страницу помощи для юнита (необходима поддержка этой функции в указанном файле юнита):<br />
<br />
$ systemctl help <unit><br />
<br />
=== Управление питанием ===<br />
<br />
Если у вас локальная пользовательская сессия {{ic|systemd-logind}} или [[ConsoleKit]] и нет других активных сессий, приведенные ниже команды сработают и без привилегий суперпользователя root. В противном случае (например, вследствие того, что пользователь залогинился в tty), systemd автоматически запросит у вас пароль root (также обратитесь к разделу [[#Замена_ConsoleKit_на_systemd-logind|замена ConsoleKit на systemd-logind]]).<br />
<br />
Завершить работу и перезагрузить систему:<br />
<br />
$ systemctl reboot<br />
<br />
Завершить работу и выключить компьютер:<br />
<br />
$ systemctl halt<br />
<br />
Перевести систему в спящий режим:<br />
<br />
$ systemctl suspend<br />
<br />
Перевести систему в ждущий режим:<br />
<br />
$ systemctl hibernate<br />
<br />
== Уровни запуска/target-юниты ==<br />
<br />
Уровни запуска (по-английски уровень запуска - runlevel) для systemd являются устаревшей концепцией. Systemd использует ''target-юниты'' (буквально ''целевые юниты''), которые выполняют ту же задачу, что и уровни запуска, но действуют немного по-другому. Каждый ''target'' поименован (т.е. имеет собственное имя, а не номер) и, как предполагается, предназначен для использования в конкретных целях; возможно иметь в одно и то же время активными несколько таких целевых юнитов. Некоторые ''target-юниты'' реализованы так, что наследуют все сервисы других ''target-юнитов'' и добавляют к ним свои сервисы. В systemd имеются также ''target-юниты'', которые имитируют общие уровни запуска SystemVinit, поэтому вы можете переключаться между целевыми юнитами с использованием привычной команды {{ic|telinit RUNLEVEL}}. <br />
<br />
=== Получение информации о текущем уровне запуска/target-юнитах ===<br />
<br />
При использовании systemd для этого предназначена следующая команда (заменяющая {{ic|runlevel}}):<br />
<br />
# systemctl list-units --type=target<br />
<br />
=== Создание пользовательского target-юнита ===<br />
<br />
Уровни, которым расписаны конкретные цели на установке дистрибутива Fedora по умолчанию - 0, 1, 3, 5 и 6; есть маппинг 1:1 с помощью конкретного ''target-юнита'' systemd. К сожалению, не существует хорошего способа сделать то же самое для определяемых пользователем уровней, таких, как 2 и 4. Использование их предполагает, что вы создаете новый именованный ''target-юнит''systemd наподобие {{ic|/etc/systemd/system/<your target>}}, который берет за основу один из существующих уровней запуска (взгляните, например, на {{ic|/usr/lib/systemd/system/graphical.target}}), создаете также директорию {{ic|/etc/systemd/system/<your target>.wants}} и затем символические ссылки на те дополнительные сервисы из директории {{ic|/usr/lib/systemd/system/}}, которые вы хотите включить при загрузке.<br />
<br />
== Таблица уровней запуска и их аналогов в Systemd ==<br />
<br />
{| class="wikitable" border="1" cellpadding="5" cellspacing="0"<br />
! Уровнень запуска SysV !! Systemd Target !! Примечание<br />
|-<br />
| 0 || runlevel0.target, poweroff.target || Выключить систему.<br />
|-<br />
| 1, s, single || runlevel1.target, rescue.target || Однопользовательский уровень запуска.<br />
|-<br />
| 2, 4 || runlevel2.target, runlevel4.target, multi-user.target || Уровень запуска, определенный пользователем/специфичный для узла. По умолчанию соответствует уровню запуска 3.<br />
|-<br />
| 3 || runlevel3.target, multi-user.target || Многопользовательский режим без графики. Пользователи, как правило, входят с помощью множества консолей или через сеть.<br />
|-<br />
| 5 || runlevel5.target, graphical.target || Многопользовательский режим с графикой. Обычно эквивалентен запуску всех сервисов уровня 3 и графическому менеджеру входа.<br />
|-<br />
| 6 || runlevel6.target, reboot.target || Перезагрузка.<br />
|-<br />
| emergency || emergency.target || Аварийная оболочка.<br />
|-<br />
|}<br />
<br />
=== Изменение текущего уровня запуска ===<br />
<br />
В systemd уровни запуска доступны посредством "target-юнитов". Вы можете изменить их командой:<br />
<br />
# systemctl isolate graphical.target<br />
<br />
Данная команда изменит только лишь текущий уровень запуска и не повлияет на следующую загрузку системы. Она соответствует командам наподобие {{ic|telinit 3}} или {{ic|telinit 5}} для Sysvinit.<br />
<br />
=== Изменение уровня запуска по умолчанию/target-юнита для загрузки ===<br />
<br />
Стандартный target-юнит - {{ic|default.target}}, который по умолчанию является псевдонимом юнита {{ic|graphical.target}} (примерно соответствующего прежнему уровню выполнения 5). Для изменения уровня выполнения, выполняемого при загрузке по умолчанию, добавьте следующий дополнительный [[kernel parameters|параметр ядра]] в вашем загрузчике:<br />
<br />
{{Tip|Расширение {{ic|.target}} можно опустить.}}<br />
<br />
* {{ic|1=systemd.unit=multi-user.target}} (что примерно соответствует прежнему уровню выполнения 3),<br />
* {{ic|1=systemd.unit=rescue.target}} (что примерно соответствует прежнему уровню выполнения 1).<br />
<br />
Другой путь заключается в том, чтобы оставить загрузчик без изменений и изменить целевой юнит по умолчанию - {{ic|default.target}}, что достигается командой {{ic|systemctl}}:<br />
<br />
# systemctl enable multi-user.target<br />
<br />
Эффект от применения данной команды выводится через {{ic|systemctl}}; символическая ссылка на новый target-юнит по умолчанию создается в директории {{ic|/etc/systemd/system/default.target}}. Это сработает в том случае (и только в том случае), если имеется следующая секция:<br />
<br />
[Install]<br />
Alias=default.target<br />
<br />
в конфигурационном файле target-юнита. В настоящий момент как {{ic|multi-user.target}}, так и {{ic|graphical.target}} оба имеют данную секцию.<br />
<br />
== Запуск окружения рабочего стола из systemd ==<br />
<br />
=== Использование экранного менеджера ===<br />
<br />
Чтобы ключить графический вход в систему, запустите выбранный вами демон [[Display Manager (Русский)|экранного менеджера]] (например, [[KDM]]). В настоящий момент доступны сервис-файлы для [[GDM]], [[KDM]], [[SLiM]], [[XDM]], [[LXDM]] и [[LightDM]].<br />
<br />
# systemctl enable kdm.service<br />
<br />
Эта команда должна работать "из коробки". Если вдруг она не сработала, то, возможно, у вас {{ic|default.target}} установлен вручную или остался с прежней установки:<br />
<br />
{{hc|# ls -l /etc/systemd/system/default.target|<br />
/etc/systemd/system/default.target -> /usr/lib/systemd/system/graphical.target}}<br />
<br />
Просто удалите символическую ссылку и systemd будет использовать целевой юнит по умолчанию - {{ic|default.target}} (т.е. {{ic|graphical.target}}).<br />
<br />
# rm /etc/systemd/system/default.target<br />
<br />
=== Запуск через файл сервиса ===<br />
<br />
<br />
{{Note|При использовании данного метода для вашего пользователя не будет создана PAM-сессия, поэтому ConsoleKit (предоставляющий допуск к выключению/перезагрузке системы, аудиоустройствам и т.д.) не будет корректно работать. Рекомендуемый путь описан в разделах: [[#Замена_ConsoleKit_на_systemd-logind|Замена ConsoleKit на systemd-logind]] и [[Automatic_login_to_virtual_console#With_systemd|Автоматический вход в виртуальную консоль с помощью systemd]].}}<br />
<br />
если вам нужен простой путь запуска X напрямую, без использования экранного менеджера входа в систему, вы можете создать сервис-файл наподобие приведенного ниже:<br />
<br />
{{hc|/etc/systemd/system/graphical.target.wants/xinit.service|2=<br />
[Unit]<br />
Description=Direct login to X<br />
After=systemd-user-sessions.service<br />
<br />
[Service]<br />
ExecStart=/bin/su <username> -l -c "/bin/bash --login -c xinit"<br />
<br />
[Install]<br />
WantedBy=graphical.target}}<br />
<br />
== Журнал systemd ==<br />
<br />
С версии 38 systemd имеет собственную систему ведения логов - журнал (journal).<br />
<br />
По умолчанию, более не требуется запуск демона syslog. Для чтения логов используйте команду:<br />
<br />
# journalctl<br />
<br />
Журнал записывается в директорию {{ic|/run/systemd/journal}}, поэтому логи будут потеряны при перезагрузке. Для сохранения логов создайте директорию {{ic|/var/log/journal/}}:<br />
<br />
# mkdir /var/log/journal/<br />
<br />
=== Фильтрация вывода ===<br />
<br />
{{ic|journalctl}} позволяет фильтровать вывод по особым полям.<br />
<br />
Примеры:<br />
<br />
Показать все сообщения определенной программы:<br />
<br />
# journalctl /usr/lib/systemd/systemd<br />
<br />
Показать все сообщения определенного процесса:<br />
<br />
# journalctl _PID=1<br />
<br />
Показать все сообщения определенного юнита:<br />
<br />
# journalctl _SYSTEMD_UNIT=netcfg.service<br />
<br />
Обратитесь к {{ic|man journalctl}} и {{ic|systemd.journal-fields}} для получения детальной информации.<br />
<br />
=== Ограничение размера журнала ===<br />
<br />
Если журнал сохраняется при перезагрузке, размер его по умолчанию ограничен значением в 10% от объема соответствующей файловой системы. Например, для директории {{ic|/var/log/journal}}, расположенной на корневом разделе в 50 Гбайт, максимальный размер журналируемых данных составит до 5 Гбайт. Максимальный объем постоянного журнала можно контролировать при помощи значения {{ic|SystemMaxUse}} в конфигурационном файле {{ic|/etc/systemd/journald.conf}}, поэтому для ограничения его объемом в 50 Mбайт раскомментируйте и отредактируйте соответствующую строку:<br />
<br />
SystemMaxUse=50M<br />
<br />
Обратитесь к {{ic|man journald.conf}} для получения дальнейшей информации.<br />
<br />
=== Journald в связке с классическим демоном syslog ===<br />
<br />
Совместимость с классической реализацией syslog обеспечивается сокетом {{ic|/run/systemd/journal/syslog}}, в который перенаправляются все сообщения. Чтобы дать созможность демону syslog работать вместе с журналом systemd, следует привязать данный демон к указанному сокету вместо {{ic|/dev/log}} ([http://lwn.net/Articles/474968/ официальное сообщение]). В случае с syslog-ng, измените раздел {{ic|source src}} в конфигурационном файле {{ic|/etc/syslog-ng/syslog-ng.conf}} по следующем образцу:<br />
<br />
source src {<br />
unix-dgram("/run/systemd/journal/syslog");<br />
internal();<br />
file("/proc/kmsg");<br />
};<br />
<br />
и включите syslog-ng:<br />
<br />
# systemctl enable syslog-ng.service<br />
<br />
== Сеть ==<br />
<br />
{{Merge|Configuring Network (Русский)|Данный раздел в английской версии включен в состав статьи [[Configuring Network]]; в русской версии временно оставлен из-за того, что русский вариант [[Configuring Network (Русский)]] устарел в сравнении с английским.}}<br />
<br />
=== Динамическое подключение (DHCP) с использованием dhcpcd ===<br />
<br />
Если хотите использовать только DHCP для своего соединения Ethernet, вы можете воспользоваться сервисом {{ic|dhcpcd@.service}} (который поставляется пакетом {{Pkg|dhcpcd}}).<br />
<br />
Чтобы подключить DHCP для {{ic|eth0}}, просто выполните команду:<br />
<br />
# systemctl start dhcpcd@eth0.service<br />
<br />
Вы можете включить этот сервис, и он будет автоматически запускаться при загрузке. Это делается командой:<br />
<br />
# systemctl enable dhcpcd@eth0.service<br />
<br />
Иногда сервис dhcpd запускается до загрузки модуля вашей сетевой карты ({{bug|30235}}), в этом случае вручную добавьте вашу сетевую карту в конфигурационный файл {{ic|/etc/modules-load.d/*.conf}}. Например, для карты Realtek необходима загрузка модуля {{ic|r8169}}, поэтому создайте такой конфигурационный файл:<br />
<br />
{{hc|/etc/modules-load.d/realtek.conf|2=<br />
r8169}}<br />
<br />
=== Другие конфигурации ===<br />
<br />
Для статического подключения, беспроводной сети или сложной конфигурации сети наподобие сетевого моста, вы можете использовать [[Netcfg#systemd_support|netcfg]] или [[NetworkManager#Enable_NetworkManager_under_Native_systemd_system|NetworkManager]], для обеих этих инструментов управления сетью имеются сервис-файлы для systemd.<br />
<br />
{{Note|Если вы хотите использовать netcfg, networkmanager или другие программы управления сетью, вам не надо в этом случае запускать или включать сервис dhcpcd как показано в предыдущем параграфе.}}<br />
<br />
==Интеграция с Arch==<br />
<br />
=== Эмуляция initscripts ===<br />
<br />
Интеграция с классической конфигурацией Arch Linux обеспечивается пакетом {{Pkg|initscripts}}. Данная интеграция рассматривается как просто переходная мера для легкой миграции пользователей на systemd.<br />
<br />
{{Note|Файл {{ic|/etc/inittab}} вообще не используется.}}<br />
<br />
Если вы отключали использование сочетания клавиш для перезагрузки системы {{keypress|Ctrl+Alt+Del}} в файле {{ic|/etc/inittab}}, теперь вам надо заново сделать это для systemd командой {{ic|systemctl mask ctrl-alt-del.target}}, выполняемой от суперпользователя root.<br />
<br />
==== rc.conf ====<br />
<br />
Некоторые переменные в прежнем основном конфигурационном файле {{ic|/etc/rc.conf}} предположительно не будут корректно работать. Для чистой установки systemd setup рекомендуется использовать [[Systemd (Русский)#Родные системные файлы в systemd|родные системные файлы]], которые имеют приоритет над установками в {{ic|/etc/rc.conf}}.<br />
<br />
Поддерживаются (но не рекомендуются):<br />
<br />
* {{ic|CONSOLEFONT}}<br />
* {{ic|CONSOLEMAP}}<br />
* {{ic|DAEMONS}}<br />
* {{ic|HOSTNAME}}<br />
* {{ic|KEYMAP}}<br />
* {{ic|LOCALE}}<br />
<br />
Не поддерживаются:<br />
<br />
* {{ic|HARDWARECLOCK}}: обратитесь к разделу [[Systemd (Русский)#Аппаратные часы|Аппаратные часы]].<br />
* {{ic|MODULES}}: используйте взамен конфигурационные файлы в директории {{ic|modules-load.d}}.<br />
* {{ic|TIMEZONE}}: вручную сделайте символическую ссылку {{ic|/etc/localtime}} на файл вашей временной зоны.<br />
* {{ic|USELVM}}: взамен используйте {{ic|lvm.service}}, поставляемый пакетом {{pkg|lvm2}}.<br />
* {{ic|USECOLOR}}<br />
<br />
=== Полный переход к конфигурационным файлам systemd ===<br />
<br />
{{Note|Этот метод является предпочтительным, при его использовании система более не зависит от централизованной настройки в файле {{ic|rc.conf}}, а использует родные системные файлы systemd.}}<br />
<br />
Последуйте настройке конфигурационных файлов как показано в разделе [[Systemd (Русский)#Родные системные файлы в systemd|Родные системные файлы в systemd]]. Каждый файл заменяет одну из секций в {{ic|/etc/rc.conf}}, как показано в данной таблице:<br />
<br />
{| class="wikitable"<br />
|-<br />
! scope="col"| Настройка<br />
! scope="col"| Конфигурационный файл (файлы)<br />
! scope="col"| Устаревшая секция [https://projects.archlinux.org/initscripts.git/tree/rc.conf?id=97f0cd6751e8d22c14d7492cdc2186cf41157ba6 rc.conf]<br />
|-<br />
| align="center"|Имя компьютера (Hostname)<br />
| align="left"|{{ic|/etc/hostname}}<br />
{{ic|/etc/hosts}}<br />
| align="center"|{{ic|NETWORKING}}<br />
|-<br />
| align="center"|Консоль и раскладка клавиатуры<br />
| align="left"|{{ic|/etc/vconsole.conf}}<br />
| align="center"|{{ic|LOCALIZATION}}<br />
|-<br />
| align="center"|Локаль<br />
| align="left"|{{ic|/etc/locale.conf}}<br />
{{ic|/etc/locale.gen}}<br />
| align="center"|{{ic|LOCALIZATION}}<br />
|-<br />
| align="center"|Временная зона<br />
| align="left"|{{ic|/etc/localtime}}<br />
| align="center"|{{ic|LOCALIZATION}}<br />
|-<br />
| align="center"|Аппаратные часы<br />
| align="left"|{{ic|/etc/adjtime}}<br />
| align="center"|{{ic|LOCALIZATION}}<br />
|-<br />
| align="center"|Модули ядра<br />
| align="left"|{{ic|/etc/modules-load.d/}}<br />
| align="center"|{{ic|HARDWARE}}<br />
|}<br />
<br />
Для целей совместимости секция {{ic|DAEMONS}} в {{ic|/etc/rc.conf}} еще может использоваться вместе с systemd для запуска сервисов при загрузке системы, даже при "чистой" установке менеджера служб systemd. Взамен этого вы можете полностью удалить файл {{ic|/etc/rc.conf}} и включить сервисы в systemd. Для каждого сервиса с именем {{ic|<service_name>}} в массиве {{ic|DAEMONS}} из файла {{ic|/etc/rc.conf}} выполните команду:<br />
<br />
# systemctl enable <service_name>.service<br />
<br />
{{Tip|Для получения списка обычно используемых демонов с их эквивалентами в initscripts и systemd, обратитесь к [[Daemon#List_of_Daemons|данной таблице]].}}<br />
<br />
Если сервис-файл {{ic|<service_name>.service}} отсутствует:<br />
<br />
* сервис-файл может быть недоступен для systemd. В этом случае вам нужно сохранить конфигурационный файл {{ic|rc.conf}} для запуска этих сервисов во время загрузки системы.<br />
* systemd может называть сервисы другими именами, например, {{ic|cronie.service}} заменяет демон {{ic|crond}}; {{ic|alsa-store.service}} и {{ic|alsa-restore.service}} заменяют демон {{ic|alsa}}. Другой важный пример - демон {{ic|network}}, которого сменил целый набор сервис-файлов (обратитесь к разделу [[#Сеть]] для получения дальнейшей информации.)<br />
<br />
{{Tip|Вы можете заглянуть вовнутрь пакета, содержащего стартовые скрипты демона, чтобы узнать имена его сервис-файла. К примеру:<br />
$ pacman -Ql cronie | grep service<br />
cronie /usr/lib/systemd/system/crond.service<br />
cronie /usr/lib/systemd/system/cronie.service<br />
}}<br />
<br />
== Написание пользовательского .service файла ==<br />
<br />
=== Обработка зависимостей ===<br />
<br />
В случае использования systemd зависимости могут быть разрешены правильным построением файлов юнитов. ,Наиболее частый случай -- когда юниту {{ic|A}} требуется, чтобы юнит {{ic|B}} был запущен перед тем, как запустится сам юнит {{ic|A}}. В этом случае добавьте строки {{ic|1=Requires=B}} и {{ic|1=After=B}} в секцию {{ic|[Unit]}} сервис-файла юнита {{ic|A}}. Если подобная зависимость не является обязательной, добавьте соответственно взамен указанных выше строки {{ic|1=Wants=B}} и {{ic|1=After=B}}. Обратите внимание, что {{ic|1=Wants=}} и {{ic|1=Requires=}} не подразумевают {{ic|1=After=}}, что означает, что если {{ic|1=After=}} не определено, два юнита будут запущены параллельно друг другу.<br />
<br />
Обычно зависимости указываются в сервис-файлах, а не в целевых (target) файлах. Например, {{ic|network.target}} потребуется любому сервису, который связан с настройкой ваших сетевых интерфейсов, поэтому в любом случае определите загрузку вашего пользовательского юнита после запуска {{ic|network.target}}.<br />
<br />
=== Тип ===<br />
<br />
Существует несколько различных типов запуска служб, которые надо иметь в виду при написании пользовательского сервис-файла. Тип запуска определяется параметром {{ic|1=Type=}} в секции {{ic|[Service]}}. Обратитесь к руководству {{ic|man systemd.service}} для получения более детального объяснения.<br />
<br />
* {{ic|1=Type=simple}}: systemd предполагает, что сервис будет запущен незамедлительно. Процесс при этом не должен форкнуться. Не используйте этот тип, если другим сервисы зависят от очередности при запуске данного сервиса, за исключением активации сокета.<br />
* {{ic|1=Type=forking}}: systemd предполагает, что сервис запускается однократно, процесс форкается и родительский процесс завершается. Используйте данный тип для запуска классических демонов за исключением тех случаев, когда, как вам известно, в таком поведении процесса нет необходимости. Вам следует также определить {{ic|1=PIDFile=}}, чтобы systemd могла отслеживать основной процесс.<br />
* {{ic|1=Type=oneshot}}: Полезен для скриптов, которые выполняют одну работу, а потом завершаются. Вам может понадобиться также установить параметр {{ic|1=RemainAfterExit=}}, чтобы systemd по-прежнему считала процесс активным, даже после его завершения<br />
* {{ic|1=Type=notify}}: Идентичен параметру {{ic|1=Type=simple}}, но с той оговоркой, что демон пошлет systemd сигнал о своей готовности. Эталонная реализация данного уведомления обеспечивается библиотекой {{ic|libsystemd-daemon.so}}.<br />
* {{ic|1=Type=dbus}}: Сервис считается находящимся в состоянии готовности, когда определенное {{ic|BusName}} появляется в системной шине DBus.<br />
<br />
=== Замена предоставленных пакетами файлов юнитов ===<br />
<br />
Файлы юнитов в директории {{ic|/etc/systemd/system/}} имеют приоритет над такими же файлами в директории {{ic|/usr/lib/systemd/system/}}.<br />
Для создания собственной версии юнита (который не будет затерт при обновлении), скопируйте старый юнит из директории {{ic|/usr/lib/}} в директорию {{ic|/etc/}} и внесите в эту копию свои изменения. Альтернативным вариантом является использование {{ic|.include}} для парсинга существующего сервис-файла и затем переопределения или добавления новых опций. Например, если вы просто хотите добавить в сервис-файл дополнительную зависимость, вы можете использовать такую команду в юните:<br />
<br />
{{hc|/etc/systemd/system/<service-name>.service|2=<br />
.include /usr/lib/systemd/system/<service-name>.service<br />
<br />
[Unit]<br />
Requires=<new dependency><br />
After=<new dependency>}}<br />
<br />
Затем выполните следующие команды для того, чтобы изменения вступили в силу:<br />
<br />
# systemctl reenable <unit><br />
# systemctl restart <unit><br />
<br />
{{Tip|Вы можете использовать команду {{ic|systemd-delta}}, чтобы увидеть, какие файлы юнитов были переопределены и что в точности было изменено.}}<br />
<br />
=== Подсветка синтаксиса файлов юнитов systemd в Vim ===<br />
<br />
подсветка синтаксиса файлов юнитов для systemd в редакторе [[Vim]] может быть осуществлена путем установки пакета {{AUR|vim-systemd}} из [[Arch User Repository|AUR]].<br />
<br />
== Оптимизация ==<br />
<br />
=== systemd-analyze ===<br />
<br />
Systemd предоставляет инструмент под названием {{ic|systemd-analyze}}, позволяющий проанализировать процесс загрузки вашей системы, чтобы можно было увидеть, какие файлы юнитов тормозят загрузку. Соответственно, вы можете оптимизировать вашу систему. Для использования данного инструмента вам потребуется установить пакеты {{Pkg|python2-dbus}} и {{Pkg|python2-cairo}}.<br />
<br />
Чтобы увидеть, сколько времени было потрачено на подготовку пространства ядра и пространства пользователя во время загрузки, просто выполните команду:<br />
<br />
$ systemd-analyze<br />
<br />
{{Tip|Чтобы увидеть, сколько времени ушло на загрузку образа initramfs, добавьте хук {{ic|timestamp}} в ваш массив {{ic|HOOKS}} из конфигурационного файла {{ic|/etc/[[mkinitcpio]].conf}} и от суперпользователя root пересоберите ваш образ initramfs командой {{ic|mkinitcpio -p linux}} }}<br />
<br />
Чтобы увидеть список запускаемых файлов юнитов, отсортированный по потраченному каждым из них на загрузку времени, выполните команду:<br />
<br />
$ systemd-analyze blame<br />
<br />
Вы также можете создать файл SVG, показывающий процесс загрузки в графическом виде, наподобие [[Bootchart]]:<br />
<br />
$ systemd-analyze plot > plot.svg<br />
<br />
==== Включение bootchart в связке с systemd ====<br />
<br />
Вы можете использовать версию bootchart для визуализации последовательности при загрузке системы.<br />
Из-за невозможности использовать стандартные установки bootchart (так как нельзя добавить в командную строку ядра вторую запись init), вам придется воспользоваться пакетом {{AUR|bootchart2}} из [[AUR]], поставляемым с недокументированным сервисом systemd. После установки bootchart2 выполните команду:<br />
<br />
# systemctl enable bootchart.service<br />
<br />
Обратитесь к [https://github.com/mmeeks/bootchart документации bootchart (англ.)] за дальнейшей и детализированной информацией об использовании данной версии bootchart.<br />
<br />
=== Сокращения командной оболочки ===<br />
<br />
Демон управления systemd требует ввода достаточно большого объема текста команд для выполнения таких процессов, как запуск, остано, включение, проверка статуса сервисов и т.д. Добавление в ваш конфигурационный файл {{ic|~/.bashrc}} следующих функций поможет уппростить взаимодействие с systemd и усовершенствовать опыт ее использования.<br />
<br />
{{bc|# упростим команду systemd, например, "sudo systemctl stop xxx.service" - > "0.stop xxx"<br />
if ! systemd-notify --booted;<br />
then # for not systemd<br />
0.start() {<br />
sudo rc.d start $1<br />
}<br />
<br />
0.restart() {<br />
sudo rc.d restart $1<br />
}<br />
<br />
0.stop() {<br />
sudo rc.d stop $1<br />
}<br />
else<br />
# запустить сервис systemd<br />
0.start() {<br />
sudo systemctl start $1.service<br />
}<br />
# перезапустить сервис systemd<br />
0.restart() {<br />
sudo systemctl restart $1.service<br />
}<br />
# stop systemd service<br />
0.stop() {<br />
sudo systemctl stop $1.service<br />
}<br />
# включить сервис systemd<br />
0.enable() {<br />
sudo systemctl enable $1.service<br />
}<br />
# выключить сервис systemd<br />
0.disable() {<br />
sudo systemctl disable $1.service<br />
}<br />
# показать статус сервиса<br />
0.status() {<br />
systemctl status $1.service<br />
}<br />
# прерзагрузить конфигурацию сервиса<br />
0.reload() {<br />
sudo systemctl reload $1.service<br />
}<br />
# показать все запущенные сервисы<br />
0.list() {<br />
systemctl<br />
}<br />
# показать все сервисы, запуск которых завершился неудачей<br />
0.failed () {<br />
systemctl --failed<br />
}<br />
# показать все доступные файлы юнитов<br />
0.list-files() {<br />
systemctl list-unit-files<br />
}<br />
# проверить лог<br />
0.log() {<br />
sudo journalctl<br />
}<br />
# показать необязательные зависимости<br />
0.wants() {<br />
systemctl show -p "Wants" $1.target<br />
}<br />
# анализ системы<br />
0.analyze() {<br />
systemd-analyze $1<br />
}<br />
fi<br />
}}<br />
<br />
{{Warning|Скопируйте в свой {{ic|~/.bashrc}} [[Systemd#Shell_Shortcuts|английскую версию]] данных сокращений, чтобы избежать проблем с командной оболочкой. }}<br />
<br />
=== Сокращение вывода ===<br />
<br />
Измените параметр {{ic|verbose}} на {{ic|quiet}} в строке загрузки ядра вашего загрузчика. Для некоторых систем, в частности с SSD, узким местом является низкая производительность TTY, поэтому сокращение вывода означает прирост скорости загрузки.<br />
<br />
=== Ранний старт ===<br />
<br />
Одним из центральных элементов systemd является [[D-Bus]] и активация сокетов, что требует запуска сервисов при первой потребности в них. Обычно такой подход является удачным, но, если вы знаете, что какой-то сервис (вроде [[ConsoleKit]])должен всегда запускаться во время загрузки системы, то вы можете сократить общее время загрузки, запуская его так рано, как это вообще возможно. Этого можно добиться (если сервис-файл устроен соответствующим образом, что верно в большинстве случаев) путем выполнения команды:<br />
<br />
# systemctl enable console-kit-daemon.service<br />
<br />
Это заставит systemd запустить ConsoleKit как рано, как это возможно, не устраивая перегонки данного сервиса с активацией сокета или D-Bus.<br />
<br />
=== Автомонитрование ===<br />
<br />
Установка по умолчанию запускает fsck и монтирует все файловые системы перед запуском большинства демонов и сервисов. Если ваш раздел {{ic|/home}} занимает большой объем, лучшим вариантом было бы позволить сервисам не зависеть от подключения {{ic|/home}} и запускать данные сервисы, когда {{ic|/home}} еще подвергается проверке при загрузке системы. Добиться такого результата можно добавлением следующих параметров в запись файла fstab, касающуюся раздела {{ic|/home}}:<br />
<br />
noauto,x-systemd.automount<br />
<br />
Такие параметры вызовут fsck и примонтируют {{ic|/home}} при первом обращении к данному разделу, и ядро будет буферизовать все файлы доступа к {{ic|/home}} до готовности данного раздела.<br />
<br />
В случае использования зашифрованных файловых систем с ключами доступа, вам также Iследует добавить параметр {{ic|noauto}} в соответствующие записи файла {{ic|/etc/crypttab}}. systemd не будет подключать зашифрованные устройства при загрузке, но, вместо этого, дождется реального обращения к ним и автоматически откроет к ним доступ с использованием определенных ключей перед тем, как они будут примонтированы. Это сэкономит несколько секунд при загрузке системы, например, в случае использования зашифрованного устройства RAID, потому что systemd не будет дожидаться от устройства, когда оно станет доступным. Например:<br />
<br />
{{hc|/etc/crypttab|<br />
data /dev/md0 /root/key noauto}}<br />
<br />
=== Readahead ===<br />
<br />
systemd поставляется со свой реализации технологии readahead, что в принципе должно усовершенствовать процесс загрузки системы. Однако, в зависимости от версии вашего ядра и типа жесткого диска, скорость обращения к данным может разниться (например, может быть медленнее). Чтобы включить данный сервис, выполните:<br />
<br />
# systemctl enable systemd-readahead-collect.service systemd-readahead-replay.service<br />
<br />
Не забудьте, что волшебство технологии readahead подействует только после нескольких перезапусков системы<br />
<br />
=== Замена ConsoleKit на systemd-logind ===<br />
<br />
Начиная с {{Pkg|polkit}} 0.107 (в настоящее время в репозитории [testing]), [[ConsoleKit]] можно полностью заменить на {{ic|systemd-logind}}. Самый легкий метод удаления [[ConsoleKit]] заключается в [[Automatic_login_to_virtual_console#With_systemd|автоматическом входе в виртуальную консоль]] и [[Start_X_at_Boot|запуска X оттуда]]. Важно понять, что, как указано в последней статье, сервер X запускается в той же виртуальной консоли, в которую вы загрузились, в противном случае systemd не сможет следить за пользовательской сессией. Затем можно просто удалить {{ic|ck-launch-session}} из вашего файла {{ic|~/.xinitrc}}.<br />
<br />
Для того, чтобы проверить статус вашей пользовательской сессии, вы можете использовать команду {{ic|loginctl}}. Чтобы убедиться, что ваша пользовательская сессия правильно установлена, проверьте, содержит ли следующая команда {{ic|1=Active=yes}}. Все действия {{Pkg|polkit}} actions наподобие перевода системы в спящий режим или монтирования внешних носителей с помощью [[Udisks]] должны работать автоматически.<br />
<br />
$ loginctl show-session <session-id><br />
<br />
{{Note|При использовании [[NetworkManager]] вам необходимо перекомпилировать данный пакет с поддержкой systemd из [[ABS]] путем записи опции {{ic|1=--with-session-tracking=systemd}} в [[PKGBUILD]].}}<br />
<br />
== Устранение неполадок ==<br />
<br />
=== Выключение/перезагрузка происходят ужасно долго ===<br />
<br />
Если процесс выключения занимает очень долгое время (или, по-видимому, зависает), то, вероятно, виноват сервис, который не завершает свою работу. systemd ожидает некоторое время, пока каждый сервис завершит свою работу самостоятельно, и только потом пытается принудительно завершить (kill) его. Если вы столкнулись с такой проблемой, обратитесь к [http://freedesktop.org/wiki/Software/systemd/Debugging#Shutdown_Completes_Eventually данной статье (англ.)].<br />
<br />
== Полезные ссылки ==<br />
<br />
*[http://www.freedesktop.org/wiki/Software/systemd Официальный веб-сайт (англ.)]<br />
*[http://0pointer.de/public/systemd-man/ Страницы руководств (англ.)]<br />
*[http://freedesktop.org/wiki/Software/systemd/Optimizations systemd Optimizations (англ.)]<br />
*[http://www.freedesktop.org/wiki/Software/systemd/FrequentlyAskedQuestions FAQ (англ.)]<br />
*[http://www.freedesktop.org/wiki/Software/systemd/TipsAndTricks Tips And Tricks (англ.)]<br />
*[http://0pointer.de/public/systemd-ebook-psankar.pdf systemd для администраторов (PDF) - перевод цикла статей Леннарта Поттеринга (Lennart Poettering) ]<br />
*[http://0pointer.de/blog/projects/systemd.html Блог Lennart'а (англ.)]<br />
*[http://archlinux.org.ru/forum/viewtopic.php?f=9&t=9581 systemd mini FAQ]<br />
*[http://wiki.russianfedora.ru/index.php?title=Systemd systemd - база знаний проекта Fedora]<br />
*[http://fedoraproject.org/wiki/Systemd Fedora Linux Wiki: Systemd (англ.)]<br />
*[http://wiki.debian.org/ru/Systemd Debian Wiki: systemd - менеджер системы и сервисов]<br />
*[http://wiki.ubuntu.com/systemd Ubuntu Wiki: systemd (англ.)]<br />
*[http://fedoraproject.org/wiki/Systemd OpenSuse Wiki: SDB:Systemd]</div>Klayhttps://wiki.archlinux.org/index.php?title=Arch_boot_process_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=230337Arch boot process (Русский)2012-10-21T09:19:12Z<p>Klay: </p>
<hr />
<div>[[Category:Русский]]<br />
[[Category:Загрузка (Русский)]]<br />
[[Category:Процесс Загрузки (Русский)]]<br />
<br />
[[cs:Arch Boot Process]]<br />
[[en:Arch Boot Process]]<br />
[[es:Arch Boot Process]]<br />
[[fr:Processus de boot]]<br />
[[it:Arch Boot Process]]<br />
[[zh-CN:Arch Boot Process]]<br />
{{Article summary start|Сводка}}<br />
{{Article summary text|Обзор загрузки системы в хронологическом порядке.}}<br />
{{Article summary heading|Краткое описание}}<br />
{{Article summary text|Чтобы компьютер смог запустить Arch Linux, в [[Master Boot Record]] или [[GUID Partition Table]] устройства, с которого производится запуск, должен быть установлен [http://en.wikipedia.org/wiki/Booting#Second-stage_boot_loader загрузчик операционной системы], способный загружать [http://en.wikipedia.org/wiki/Linux_kernel ядро Linux]. Например: [[GRUB]], [[GRUB2]], [[LILO]] или [[Syslinux]]. Загрузчик ответственен за запуск ядра Linux и [[mkinitcpio|установку диска в оперативной памяти для начальной инициализации]]. После запуска ядра и первичной инициализации устройств, происходит старт первых процессов с помощью утилиты [[Wikipedia:Init|Init]], а также запуск остальных скриптов Arch, настройки которых можно поменять редактируя [[rc.conf]]}}<br />
{{Article summary heading|По теме}}<br />
{{Article summary wiki|fstab}}<br />
{{Article summary wiki|rc.conf}}<br />
{{Article summary wiki|Autostarting}}<br />
{{Article summary end}}<br />
<br />
Эта статья призвана описать процесс загрузки Arch Linux и перечислить вовлеченные в процесс загрузки системные файлы, предоставляя ссылки на соответствующие статьи в вики там, где это потребуется. Arch славится своей приверженностью стилю загрузки [http://en.wikipedia.org/wiki/Berkeley_Software_Distribution BSD], в отличии более распространенного [http://en.wikipedia.org/wiki/UNIX_System_V SysV]. Это означает, что существует небольшое различие между уровнями выполнения([[Wikipedia:runlevel]]), поскольку система по умолчанию сконфигурирована использовать и запускать одни и те же модули и процессы на всех уровнях выполнения. Преимуществом такой схемы выступает то, что пользователю становится легче настроить процесс запуска (см. [[rc.conf]]); с другой стороны, некоторые способы углубленного конфигурирования (какие были в SysV) потеряны. Тем, кого это не устраивает, будет полезно обратиться к статье [[Adding Runlevels]]. Чтобы узнать больше о различиях между стилями инициализации BSD и SysV см. [[Wikipedia:Init]]<br />
<br />
== До выполнения init ==<br />
<br />
После подачи питания системе и завершения [[Wikipedia:Power-on self-test|POST]], [[Wikipedia:BIOS|BIOS]] определяет с какого устройства необходимо начать загрузку и передает управление на [[Master Boot Record]] этого устройства. На машине под управлением GNU/Linux в качестве загрузчика ОС чаще всего используют [[GRUB]] или [[LILO]], который собственно и располагается в MBR. Загрузчик может предоставить пользователю выбор ОС для загрузки. Такая установка описана в статье [[Windows and Arch Dual Boot (Русский)]]. После выбора Arch Linux в качестве ОС для запуска, загрузчик размещает в памяти [http://en.wikipedia.org/wiki/Linux_kernel ядро Linux] ({{ic|vmlinuz-linux}}) и образ первичной корневой файловой системы ({{ic|initramfs-linux.img}}), затем загрузчик запускает ядро, передавая ему также параметры запуска, указанные в конфигурационном файле загрузчика.<br />
<br />
Ядро выполняет роль прослойки между аппаратной частью и программами, которые используют ресурсы системы, необходимые им для работы. Для эффективного использования процессора в ядре имеется планировщик, который определяет какой задаче передать приоритет выполнения в любой конкретный момент времени, таким образом создавая иллюзию одновременного выполнения задач.<br />
<br />
Также, после запуска, ядро распаковывает [[initramfs]] (сокр. от initial RAM filesystem/первичная файловая система в ОЗУ), которая становится первичной корневой файловой системой. Затем ядро запускает на выполнение {{ic|/init}}. Таким образом, init становится первым процессом [http://en.wikipedia.org/wiki/User_space пространства пользователя]<br />
<br />
Конечной целью работы initramfs является получение доступа к корневой файловой системе с устройства (см. также [[FHS]]). Для работы с устройствами IDE, SCSI, SATA, USB/FW (если загрузка происходит с внешнего носителя) требуются соответствующие модули, которые должны быть либо встроены в ядро, или непосредственно загружены из initramfs; как только подходящий модуль найден (с помощью программы/скрипта или через [[udev]]), процесс загрузки продолжится. Для получения доступа к корневой файловой системе, initramfs не обязательно содержать все возможные модули, которые только могут потребоваться во время работы с устройствами хранения данных. Большинство остальных модулей устройств будут загружены позже, во время инициализации, с помощью udev.<br />
<br />
На заключительной стадии ''[http://archlinux.me/brain0/2010/02/13/early-userspace-in-arch-linux/ раннего пространства пользователя]'' взамен первичной(инициализирующей) корневой файловой системы [http://ru.wikipedia.org/wiki/%D0%9C%D0%BE%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B9_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B монтируется] ФС с устройства. И с неё запускается {{ic|/sbin/init}}, подменяя собой временный {{ic|/init}}.<br />
<br />
== init и стартовые скрипты Arch ==<br />
Одну из важнейших ролей в старте ОС выполняет программа {{ic|init}}, которая запускает все остальные процессы. Назначением {{ic|init}} является приведение системы в рабочее состояние путем запуска предназначенных для этого скриптов. Как уже было упомянуто ранее, Arch использует BSD-стиль инициализации. {{ic|init}} читает содержимое файла {{ic|/etc/inittab}}; в оригинальном виде начало {{ic|inittab}} выглядит примерно следующим образом:<br />
<br />
{{hc<br />
|/etc/inittab<br />
|<nowiki><br />
...<br />
<br />
# Загрузка в консоль<br />
id:3:initdefault:<br />
# Загрузка в графический интерфейс X11<br />
#id:5:initdefault:<br />
<br />
rc::sysinit:/etc/rc.sysinit<br />
rs:S1:wait:/etc/rc.single<br />
rm:2345:wait:/etc/rc.multi<br />
rh:06:wait:/etc/rc.shutdown<br />
su:S:wait:/sbin/sulogin<br />
<br />
...<br />
</nowiki>}}<br />
<br />
Первая строка определяет '''уровень выполнения''' ([[Wikipedia:runlevel]]) по умолчанию (в данном случае 3 уровень). После запуска ядром init:<br />
<br />
* Сперва выполняется главный скрипт инициализации {{ic|/etc/rc.sysinit}} (скрипт [[Bash]]).<br />
* Если запуск произведен в однопользовательском режиме (уровень выполнения 1 или S), будет выполнен скрипт {{ic|/etc/rc.single}}.<br />
* В случае если был выбран какой-либо другой уровень выполнения (2-5), будет запущен другой скрипт - {{ic|/etc/rc.multi}}.<br />
* Последним поступит на исполнение {{ic|/etc/rc.local}} (только посредством {{ic|/etc/rc.multi}}), который по умолчанию пуст.<br />
<br />
{{Note|Узнать больше про [[Init and inittab|Init и inittab]].}}<br />
<br />
=== /etc/rc.sysinit ===<br />
{{ic|/etc/rc.sysinit}} это большой стартовый скрипт, который настраивает оборудование и выполняет основные задачи по инициализации. Начало его выполнения сопровождается выводом примерно следующих строк:<br />
<br />
Arch Linux<br />
http://www.archlinux.org<br />
Copyright 2002-2007 Judd Vinet<br />
Copyright 2007-2010 Aaron Griffin<br />
Distributed under the GNU General Public License (GPL)<br />
<br />
Итак, {{ic|rc.sysinit}}:<br />
# подгружает {{ic|/etc/rc.conf}}.<br />
# подгружает {{ic|/etc/rc.d/functions}}.<br />
# выводит сообщение приветствия.<br />
# монтирует различные виртуальные файловые системы. (например: /proc, /sys, /run, /dev, /run/lock, /dev/pts, /dev/shm)<br />
# запускает {{ic|bootlogd}}, который записывает сообщения выведенные на консоль в файл {{ic|/var/log/boot}}.<br />
# настраивает аппаратные часы согласно с {{ic|/etc/rc.conf}}.<br />
# запускает [[udev]] и [http://ru.wikipedia.org/wiki/Udev#.D0.9F.D1.80.D0.B8.D0.BD.D1.86.D0.B8.D0.BF_.D1.80.D0.B0.D0.B1.D0.BE.D1.82.D1.8B проверяет наличие событий] (получает uevents).<br />
# грузит необходимые модули из массива {{ic|MODULES}}, объявленного в конфигурационном файле [[rc.conf]].<br />
# запускает интерфейс [[Wikipedia:loopback|обратного замыкания]].<br />
# активирует тома BTRFS и [http://ru.wikipedia.org/wiki/RAID#.D0.9F.D1.80.D0.BE.D0.B3.D1.80.D0.B0.D0.BC.D0.BC.D0.BD.D1.8B.D0.B9_.28.D0.B0.D0.BD.D0.B3.D0.BB..C2.A0software.29_RAID программные RAID-массивы].<br />
# активирует группы [http://ru.wikipedia.org/wiki/LVM LVM2] (если имеются).<br />
# активирует шифрованные тома.<br />
# форсирует проверку файловых систем утилитой [[fsck]] (если требуется). Может перезагрузить машину или зайти в Режиме одного пользователя (см. ниже) в зависимости от результата проверки.<br />
# монтирует корневую систему(/) в режиме чтения/записи, локальные файловые системы и активирует [http://ru.wikipedia.org/wiki/%D0%A1%D0%B2%D0%BE%D0%BF%D0%B8%D0%BD%D0%B3 своп].<br />
# инициализирует генератор случайных чисел.<br />
# удаляет временные файлы.<br />
# устанавливает имя машины в сети(т.н. hostname), [[Locale_(Русский)|локаль]], шрифт консоли и раскладки клавиатуры как указано в {{ic|rc.conf}}.<br />
# выводит сообщения от [http://ru.wikipedia.org/wiki/Dmesg dmesg] в {{ic|/var/log/dmesg.log}}.<br />
<br />
{{ic|/etc/rc.sysinit}} - это скрипт инициализации, а не склад настроек. Он читает [[rc.conf]] для их получения, и {{ic|/etc/rc.d/functions}} содержащий сервисные функции (отвечающие среди прочего и за форматированный вывод - цвета консоли, выравнивание текста, замена BUSY на DONE и т.д.). Обычно нет причин для редактирования {{ic|/etc/rc.sysinit}}, за исключением желания, например, [https://wiki.archlinux.org/index.php/Improve_Boot_Performance_%28%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9%29 ускорить запуск ОС].<br />
<br />
=== /etc/rc.single ===<br />
'''Режим одного пользователя''' загружает систему под учетной записью [http://ru.wikipedia.org/wiki/Root_%28%D1%81%D1%83%D0%BF%D0%B5%D1%80%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%29 суперпользователя]. Этот режим предусмотрен к использованию в случае, если система не может быть запущена другим образом. Скрипт, в своем оригинальном виде, не предусматривает запуска каких-либо [[Daemon|служб]], помимо syslog-ng и udev. Однопользовательский режим удобен при восстановлении системы, когда необходимо ограничить удаленных пользователей от действий, способных повлечь потерю или повреждение данных. Из этого режима можно выйти в стандартный(многопользовательский), прописав {{ic|exit}} в командной строке.<br />
<br />
=== /etc/rc.multi ===<br />
{{ic|/etc/rc.multi}} исполняется при загрузке любого из '''многопользовательских''' (т.е. стандартных) уровней выполнения (2, 3, 4, и 5). Обычно, пользователь не замечает перехода исполнения от {{ic|rc.sysinit}} к {{ic|rc.multi}}, поскольку {{ic|rc.multi}} также использует {{ic|/etc/rc.d/functions}} для форматирования вывода. Этот скрипт:<br />
<br />
# Стартует программу {{ic|sysctl}}, чтобы применить настройки, находящиеся в файле {{ic|/etc/sysctl.conf}}, которые модифицируют параметры ядра Linux прямо во время работы; Arch использует совсем немного таких параметров (в основном настройки связанные с сетью).<br />
# Запускает [[Daemon|службы]] в соответствии с массивом {{ic|DAEMONS}} в конфигурационном файле {{ic|rc.conf}}.<br />
# Исполняет пользовательский скрипт {{ic|/etc/rc.local}}.<br />
# Останавливает {{ic|bootlogd}}, запущенный из {{ic|/etc/rc.sysinit}}.<br />
<br />
=== /etc/rc.local ===<br />
{{ic|/etc/rc.local}} - это локальный скрипт, выполняющийся при загрузке '''многопользовательского режима'''. Пустой по умолчанию; он хорош тем, что в него можно поместить команды, которые будут исполняться почти в самом конце процесса загрузки. Популярные настройки системы (такие как загрузка модулей, смена шрифта консоли, конфигурация устройств) обычно располагаются в более подходящих местах. Дабы не вносить беспорядок, лучше дважды убедиться, что команды располагающиеся в {{ic|rc.local}} больше соответствуют этому скрипту, чем к примеру {{ic|/etc/profile.d}}.<br />
<br />
Во время редактирования этого файла просьба помнить, что он он исполняется '''после''' основных установок (модулей/служб), от имени '''суперпользователя''' и '''вне зависимости''' от запуска оконной системы X. В следующем примере скрипт {{ic|rc.local}} настраивает звук в ALSA:<br />
<br />
{{hc<br />
|/etc/rc.local<br />
|<nowiki><br />
#!/bin/bash<br />
<br />
# /etc/rc.local: Local multi-user startup script.<br />
<br />
amixer sset 'Master Mono' 50% unmute &> /dev/null<br />
amixer sset 'Master' 50% unmute &> /dev/null<br />
amixer sset 'PCM' 75% unmute &> /dev/null<br />
</nowiki>}}<br />
<br />
== Пользовательские ловушки ==<br />
Ловушки полезны, когда необходимо включить какой-либо код в различные места скриптов rc.* без их редактирования.<br />
<br />
{| class="wikitable"<br />
|-<br />
! scope="col" | Наименование ловушки<br />
! scope="col" | Момент исполнения<br />
|-<br />
| sysinit_start<br />
| В начале rc.sysinit<br />
|-<br />
| sysinit_udevlaunched<br />
| После запуска udev в rc.sysinit<br />
|-<br />
| sysinit_udevsettled<br />
| После получения uevents в rc.sysinit<br />
|-<br />
| sysinit_prefsck<br />
| Перед запуском fsck в rc.sysinit<br />
|-<br />
| sysinit_postfsck<br />
| После запуска fsck в rc.sysinit<br />
|-<br />
| sysinit_premount<br />
| Перед монтированием локальных файловых систем, но после того, как был монтирован корень(/) в режиме чтения-записи в rc.sysinit<br />
|-<br />
| sysinit_end<br />
| В конце rc.sysinit<br />
|-<br />
| multi_start<br />
| В начале rc.multi<br />
|-<br />
| multi_end<br />
| В конце rc.multi<br />
|-<br />
| single_start<br />
| В начале rc.single<br />
|-<br />
| single_prekillall<br />
| Перед убийством всех процессов в rc.single<br />
|-<br />
| single_postkillall<br />
| После убийства всех процессов в rc.single<br />
|-<br />
| single_udevlaunched<br />
| После запуска udev в rc.single<br />
|-<br />
| single_udevsettled<br />
| После получения uevents в rc.single<br />
|-<br />
| single_end<br />
| В конце rc.single<br />
|-<br />
| shutdown_start<br />
| В начале rc.shutdown<br />
|-<br />
| shutdown_prekillall<br />
| Перед убийством всех процессов в rc.shutdown<br />
|-<br />
| shutdown_postkillall<br />
| После убийства всех процессов в rc.shutdown<br />
|-<br />
| shutdown_poweroff<br />
| Непосредственно перед отключением питания в rc.shutdown<br />
|}<br />
<br />
Для объявления функции-ловушки создайте файл в {{ic|/etc/rc.d/functions.d}} используя в качестве примера:<br />
<br />
function_name() {<br />
...<br />
}<br />
add_hook hook_name function_name<br />
<br />
Файлы из {{ic|/etc/rc.d/functions.d}} читаются скриптом {{ic|/etc/rc.d/functions}}.<br />
Позволяется регистрировать как несколько функций-ловушек на один и тот же тип ловушки, так и несколько типов ловушек на одну и ту же функцию-ловушку. В этих файлах запрещается именовать функцию как add_hook или run_hook, поскольку функции с такими именами уже объявлены в {{ic|/etc/rc.d/functions}}.<br />
<br />
==== Пример ====<br />
Добавление следующего файла отключает [http://ru.wikipedia.org/wiki/%D0%9A%D1%8D%D1%88#.D0.9F.D0.BE.D0.BB.D0.B8.D1.82.D0.B8.D0.BA.D0.B0_.D0.B7.D0.B0.D0.BF.D0.B8.D1.81.D0.B8_.D0.BF.D1.80.D0.B8_.D0.BA.D1.8D.D1.88.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B8 кэш отложенной записи] на жестком диске <i>перед</i> стартом [[daemons|сервисов]] (полезно для устройств, содержащих файлы MySQL InnoDB).<br />
<br />
{{hc|/etc/rc.d/functions.d/hd_settings|hd_settings() {<br />
/sbin/hdparm -W0 /dev/sdb<br />
}<br />
add_hook sysinit_udevsettled hd_settings<br />
add_hook single_udevsettled hd_settings<br />
}}<br />
Сперва объявляется функция-ловушка hd_settings, затем она регистрируется на ловушки типа '''single_udevsettled''' и '''sysinit_udevsettled'''. Функция-ловушка будет вызываться незамедлительно после получения uevents в {{ic|/etc/rc.d/rc.sysinit}} или {{ic|/etc/rc.d/rc.single}}.<br />
<br />
== init: Идентификация в системе ==<br />
По умолчанию, после завершения всех скриптов запуска, программа {{ic|/sbin/agetty}} просит вас представиться в системе. После ввода имени пользователя {{ic|/sbin/agetty}} вызывает программу {{ic|/bin/login}}, чтобы она запросила пароль.<br />
<br />
Наконец, после успешного входа, программа {{ic|/bin/login}} запускает командный интерпретатор (shell / оболочку) пользователя. Стандартный шелл а также [http://ru.wikipedia.org/wiki/%D0%9F%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D1%80%D0%B5%D0%B4%D1%8B переменные среды] (environment variables) могут быть объявлены глобально, с помощью {{ic|/etc/profile}}. Все переменные, объявленные в стартовых скриптах домашней директории пользователя, получают приоритет над переменными объявленными глобально в {{ic|/etc}}. К примеру, если переменная с одним и тем же одним именем объявлена в {{ic|/etc/profile}} и {{ic|~/.bashrc}}, та, что находится в {{ic|~/.bashrc}} будет иметь преимущественную силу.<br />
<br />
Большинство пользователей, желающих запустить при старте оконную систему [[X]], пожелают также установить графический менеджер входа в систему (см. [[Display Manager]]). Также, статья [[Start X at Boot]] охватывает методы, которые не требуют установки менеджера входа.<br />
<br />
== См. также ==<br />
* [http://www.cyberciti.biz/faq/grub-boot-into-single-user-mode/ Boot Linux Grub Into Single User Mode]<br />
* [http://www.linuxjournal.com/article/4622 Boot with GRUB]<br />
* [http://www.ibm.com/developerworks/linux/library/l-linuxboot/ Inside the Linux boot process]<br />
* [http://linux.about.com/library/cmd/blcmdl5_sysctl.conf.htm Linux / Unix Command: sysctl.conf]<br />
* [http://bbs.archlinux.org/search.php?action=search&keywords=rc.local&search_in=topic&sort_dir=DESC&show_as=topics Search the forum for rc.local examples]<br />
* [[Wikipedia:Linux startup process]]<br />
* [[Wikipedia:initrd]]</div>Klayhttps://wiki.archlinux.org/index.php?title=Init_Rosetta_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=230336Init Rosetta (Русский)2012-10-21T09:18:39Z<p>Klay: </p>
<hr />
<div>[[Category:Русский]]<br />
[[Category:Процесс Загрузки (Русский)]]<br />
[[en:Init Rosetta]]<br />
<br />
== Таблица взаимодействия с сервисами в Init и Systemd ==<br />
{| class="wikitable" border="1" cellpadding="5" cellspacing="0"<br />
|-<br />
! scope="col"| Команда init <br />
! scope="col"| Команда systemd <br />
! scope="col"| Комментарий <br />
|-<br />
| align="left" |rc.d {start |stop | restart...} daemon <br />
| align="left" |systemctl {start | stop | restart...} daemon.service <br />
| align="left" |Изменить состояние сервиса (демона).<br />
|-<br />
| align="left" |rc.d list <br />
| align="left" |systemctl list-unit-files --type=service <br />
| align="left" |Список сервисов (демонов).<br />
|-<br />
| align="left" |chkconfig daemon {on | off} <br />
| align="left" |systemctl {enable | disable} daemon.service <br />
| align="left" |Выключить или включить сервис (демон).<br />
|-<br />
| align="left" |chkconfig daemon --add <br />
| align="left" |systemctl daemon-reload <br />
| align="left" |Используется при создании или изменении конфигурационных файлов/скриптов.<br />
|}<br />
<br />
<br />
== Таблица уровней запуска и их аналогов в Systemd ==<br />
{| class="wikitable" border="1" cellpadding="15" cellspacing="0"<br />
! Уровнень запуска SysV !! Systemd Target !! Примечание<br />
|-<br />
| 0 || runlevel0.target, poweroff.target || Выключить систему.<br />
|-<br />
| 1, s, single || runlevel1.target, rescue.target || Однопользовательский уровень запуска.<br />
|-<br />
| 2, 4 || runlevel2.target, runlevel4.target, multi-user.target || Уровень запуска, определенный пользователем/специфичный для узла. По умолчанию соответствует уровню запуска 3.<br />
|-<br />
| 3 || runlevel3.target, multi-user.target || Многопользовательский режим без графики. Пользователи, как правило, входят с помощью множества консолей или через сеть.<br />
|-<br />
| 5 || runlevel5.target, graphical.target || Многопользовательский режим с графикой. Обычно эквивалентен запуску всех сервисов уровня 3 и графическому менеджеру входа.<br />
|-<br />
| 6 || runlevel6.target, reboot.target || Перезагрузка.<br />
|-<br />
| emergency || emergency.target || Аварийная оболочка.<br />
|-<br />
|}</div>Klayhttps://wiki.archlinux.org/index.php?title=Systemd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=230335Systemd (Русский)2012-10-21T09:18:14Z<p>Klay: </p>
<hr />
<div>[[Category:Русский]]<br />
[[Category:Демоны и системные сервисы (Русский)]]<br />
[[Category:Процесс Загрузки (Русский)]]<br />
[[en:systemd]]<br />
[[es:systemd]]<br />
[[fr:systemd]]<br />
[[it:systemd]]<br />
[[zh-CN:systemd]]<br />
{{Article summary start|Сводка}}<br />
{{Article summary text|Статья охватывает установку и настройку systemd.}}<br />
{{Article summary heading|Связанные статьи}}<br />
{{Article summary wiki|Systemd/Services}}<br />
{{Article summary wiki|Init_Rosetta_(Русский)}}<br />
{{Article summary wiki|Udev_(Русский)}}<br />
{{Article summary end}}<br />
Цитата с [http://freedesktop.org/wiki/Software/systemd веб-страницы проекта]:<br />
<br />
''"'''systemd''' - система [инициализации] и менеджер служб для Linux, совместимые со скриптами инициализации SysV и LSB. systemd обеспечивает возможности агрессивной параллелизации, использует сокеты и активацию [[D-Bus]] для запускаемых служб, предлагает запуск демонов по необходимости, отслеживает процессы при помощи [[cgroups|контрольных групп]] Linux, поддерживает мгновенные снимки и восстановление состояния системы, монтирование и точки монтирования, а также внедряет основанную на зависимостях логику контроля процессов сложных транзакций. Эта система может выступать заменой sysvinit."''.<br />
<br />
{{Note|За детальным объяснением причин перехода Arch'а на systemd обратитесь к [https://bbs.archlinux.org/viewtopic.php?pid&#61;1149530#p1149530 сообщению на англоязычном форуме].}}<br />
<br />
Смотрите также [[Wikipedia:Systemd|статью в Википедии]].<br />
== Что надо усвоить до начала миграции на данную систему ==<br />
<br />
* Настоятельно рекомендуется перейти на новую конфигурацию '''initscripts''', описанную в статье [[rc.conf (Русский)|rc.conf]]. Сконфигурировав таким образом свою систему, вы проделаете бóльшую часть работы, необходимую для миграции на systemd.<br />
* Почитайте про systemd на [http://freedesktop.org/wiki/Software/systemd/ сайте разработчиков].<br />
* Обратите внимание, что systemd имеет собственный '''журнал (journal)''', заменяющий '''syslog''', хотя оба варианта ведения логов могут сосуществовать. Обратитесь к приведенному ниже разделу [[#Journald_в_связке_с_классическим_демоном _syslog|разделу, посвященному журналу]].<br />
* Хотя systemd вполне способна заменить определенную функциональность таких демонов, как '''cron''', '''acpid''' или '''xinetd''', но если вы не хотите, можете не отказываться от использования традиционных демонов.<br />
<br />
== Установка ==<br />
systemd может быть установлен параллельно со стандартным пакетом инициализации {{Pkg|initscripts}}, и между ними можно будет переключаться путем добавления/удаления [[kernel parameters|параметров ядра]] {{ic|1=init=/usr/lib/systemd/systemd}}. <br />
<br />
=== Смешанная установка systemd/sysvinit/initscripts ===<br />
<br />
Возможно иметь в своей системе одновременно установленными systemd и sysvinit и использовать одну и те же конфигурационные файлы, что позволит вам свободно переключаться между ним туда и обратно:<br />
<br />
# Откажитесь от устаревших форматов конфигурации initscripts (о них сообщается при загрузке системы) в пользу [[#Родные системные файлы в systemd|родных системных файлов systemd]] и перезагрузитесь для проверки работоспособности данных установок при использовании initscripts.<br />
# Установите пакет {{Pkg|systemd}} из [[Official Repositories (Русский)|официальных репозиториев]].<br />
# Добавьте запись {{ic|1=init=/usr/lib/systemd/systemd}} к [[Kernel parameters|параметрам ядра]] в вашем загрузчике.<br />
# Перезагрузите систему.<br />
<br />
Systemd запустит демоны, перечисленные в {{ic|/etc/rc.conf}}, выполнит {{ic|/etc/rc.local}} и {{ic|/etc/rc.local.shutdown}} соответственно при загрузке/выключении системы. Если поддержка совместимости с массивом DAEMONS в конфигурационном файле {{ic|rc.conf}} или же скриптов в {{ic|rc.local}} вам не нужна, соответствующие сервис-файлы могут быть заблокированы (замаскированы) для их отключения.<br />
<br />
{{Warning|В случае, когда у вас в массиве DAEMONS перечислены демоны, для которых имеются родные сервис-файлы systemd, автоматически будут использоваться родные сервис-файлы. Тем не менее, если имена скриптов rc и сервисов systemd (так далее будут именоваться службы данной системы инициализации) не соответствуют друг другу, данное правило не сработает и вам следует убедиться, что только включен только один из них двух (предпочтительно родной сервис-файл).}}<br />
<br />
{{Warning|Systemd - процесс асинхронной загрузки по сравнению сравнении с последовательным запуском демонов из массива DAEMONS. В частности, "network", будучи поддерживаемым для совместимости сервисом, может запуститься слишком поздно для включения интерфейсов, которые требуются другим сервисам. Рекомендуется переключиться на использование netcfg или NetworkManager до перехода на systemd.}}<br />
<br />
=== Смешанная установка systemd/initscripts ===<br />
<br />
Возможно заменить sysvinit на systemd, но сохранить initscripts в случае использования некоторых скриптов rc scripts, для которых пока не имеется эквивалентов в systemd.<br />
<br />
# Следуйте инструкциям для смешанной установки systemd/sysvinit/initscripts.<br />
# [[#Использование_юнитов|Включите демоны]], ранее перечисленные в {{ic|/etc/rc.conf}} с помощью команды {{ic|systemctl enable ''daemonname.'''service''' ''}}. Для переноса демонов из {{ic|/etc/rc.conf}} в разряд сервисов systemd, смотрите разделы: [[Daemon#List_of_Daemons|List of Daemons]] и [[Systemd/Services|Services]]. Демоны, для которых не имеется соответствующих сервис-файлов systemd, следует оставить в массиве DAEMONS, поскольку systemd запустит устаревшие скрипты rc.<br />
# Установите пакет {{Pkg|systemd-sysvcompat}}. Данный пакет конфликтует с {{Pkg|sysvinit}} и вам будет предложено удалить последний.<br />
# Удалите запись {{ic|1=init=...}}, поскольку {{ic|/sbin/init}} теперь является символической ссылкой на systemd.<br />
# Перезагрузите систему.<br />
<br />
Единственная разница между этим вариантом и вариантом с сохранением sysvinit состоит в том, что все бинарные файлы sysvinit заменены символическими ссылками на systemctl. Тем не менее, функциональность должна остаться неизменной.<br />
<br />
=== Чистая установка systemd ===<br />
<br />
Напоследок, возможно вовсе удалить initscripts и sysvinit и использовать только лишь systemd.<br />
<br />
# Следуйте инструкциям для смешанной установки systemd/initscripts.<br />
# Убедитесь, что более не имеется каких-либо демонов для запуска из массива DAEMONS в конфигурационном файле {{ic|/etc/rc.conf}} и оба файла {{ic|/etc/rc.local}} и {{ic|/etc/rc.local.shutdown}} пусты.<br />
# Удалите пакет initscripts из вашей системы.<br />
<br />
=== Дополнительная информация ===<br />
<br />
{{Tip|Если в параметрах ядра имеется значение {{ic|quiet}}, вероятно, вам стоит удалить его для нескольких первых загрузок systemd, чтобы видеть возникающие во время загрузке проблемы.}}<br />
<br />
== Родные системные файлы в systemd ==<br />
<br />
{{Note|Возможно, вам придется создать эти файлы. Установите для них права доступа 644 и владельца root:root.}}<br />
<br />
{{Pkg|systemd}} будет использовать {{ic|/etc/rc.conf}}, если эти конфигурационные файлы отсутствуют. Обратите внимание, что такое использование может быть только временным решением. Настоятельно рекомендуется для любой системы использовать конфигурационные файлы systemd.<br />
<br />
=== Имя компьютера (hostname) ===<br />
<br />
{{hc|/etc/hostname|<br />
myhostname}}<br />
<br />
=== Консоль и раскладка клавиатуры ===<br />
<br />
Файл {{ic|/etc/vconsole.conf}} устанавливает настройки виртуальной консоли: раскладку клавиатуры и консольный шрифт.<br />
<br />
{{hc|/etc/vconsole.conf|2=<br />
KEYMAP=ru<br />
FONT=cyr-sun16<br />
FONT_MAP=}}<br />
<br />
Для получения детальной информации обратитесь к разделам [[Fonts#Console_fonts|Console fonts]] and [[KEYMAP#Keyboard_layouts|Keymap]]. <br />
<br />
{{Note|{{ic|{{Pkg|systemd}}-194}} использует шрифт ядра и раскладку по умолчанию (т.е. американскую английскую). Нет более необходимости (для тех, кто использует данную раскладку) иметь в конфигурационном файле строки {{ic|1=KEYMAP=}} и {{ic|1=FONT=}} с пустыми значениями.}}<br />
<br />
=== Локаль ===<br />
Для получения подробной информации о вариантах настройки обратитесь к руководству {{ic|man locale.conf}}<br />
<br />
{{hc|/etc/locale.conf|2=<br />
LANG=ru_RU.UTF-8}}<br />
<br />
Дальнейшая информация содержится в статье [[Locale]].<br />
<br />
=== Временная зона ===<br />
<br />
Для получения подробной информации о вариантах настройки обратитесь к руководству {{ic|man 5 localtime}}.<br />
<br />
# ln -sf /usr/share/zoneinfo/America/Chicago /etc/localtime<br />
<br />
{{Note|Прежний конфигурационный файл {{ic|/etc/timezone}} объявлен устаревшим с выходом {{ic|systemd-190}} и может/должен быть удален.}}<br />
<br />
=== Аппаратные часы ===<br />
<br />
Systemd будет использовать UTC для аппаратных часов, именно такой вариант рекомендуется. Настройка зимнего/летнего времени - неблагодарное занятие. Если переход на зимнее/летнее время происходит в тот момент, когда ваш компьютер выключен, то при следующей загрузке ваши часы будут показывать ошибочное время ([http://www.cl.cam.ac.uk/~mgk25/mswish/ut-rtc.html здесь об этом чуть подробнее (англ.)]). Последние версии ядра устанавливают системное время из RTC (часов реального времени) непосредственно во время загрузки без использования {{ic|hwclock}}, при этом ядро всегда считает, что RTC выставлено по UTC. Это означает, что если RTC выставлено по местному времени (local time), системное время будет изначально установлено ошибочно и затем корректироваться вскоре после этого при каждой загрузке. Это является причиной некоторых досадных багов (идущие назад часы редко являются нужной вещью).<br />
<br />
Причиной, позволяющей RTC быть выставленными по местному времени, является двойная загрузка системы с Windows, ([http://blogs.msdn.com/b/oldnewthing/archive/2004/09/02/224672.aspx которая использует localtime (англ.)]). Windows воспринимает RTC, выставленные по UTC при помощи простого [[Time#UTC_in_Windows|исправления реестра]]. Если вы столкнетесь с подобными проблемами при двойной загрузке с Windows, вы можете установить аппаратные часы на использование местного времени.<br />
<br />
{{hc|/etc/adjtime|<br />
0.0 0.0 0.0<br />
0<br />
LOCAL}}<br />
<br />
Другие параметры по-прежнему нужны, но они игнорируются systemd.<br />
<br />
Обычно рекомендуется запускать [[NTP|демон Network Time Protocol]] для поддержания синхронизации аппаратных часов с системным временем.<br />
<br />
=== Подгружаемые модули ядра ===<br />
<br />
systemd использует конфигурационные файлы из директории {{ic|/etc/modules-load.d/}} для определения модулей ядра, подгружаемых во время загрузки системы. Каждый из конфигурационных файлов имеет наименование вида {{ic|/etc/modules-load.d/<program>.conf}} (где <program> - имя подгружаемого модуля). При этом игнорируются как пустые строки конфигурационных файлов, так и строки, у которых первым символом, отличным о пробела, является символ {{ic|#}} и {{ic|;}}. Например:<br />
<br />
{{hc|/etc/modules-load.d/virtio-net.conf|<br />
# Load virtio-net.ko at boot<br />
virtio-net}}<br />
<br />
Также смотрите раздел [[Modprobe#Options]].<br />
<br />
=== Черный список модулей ядра ===<br />
<br />
Добавление модулей в черный список работает также, как и в случае с {{Pkg|initscripts}}, поскольку в действительности эта функция выполняется таким инструментом, как {{Pkg|kmod}}. Обратитесь к разделу [[Kernel_modules#Blacklisting|Module Blacklisting]] за более подробной информацией.<br />
<br />
=== Временные файлы ===<br />
<br />
Systemd-tmpfiles использует конфигурационные файлы в директориях {{ic|/usr/lib/tmpfiles.d/}} и {{ic|/etc/tmpfiles.d/}} для определения действий с временными файлами и директориями (создание, очистка и удаление их), обычно расположенные в {{ic|/run}} or {{ic|/tmp}}. Каждый файл с настройками имеет название вида {{ic|/etc/tmpfiles.d/<program>.conf}}. Данные конфигурационные файлы имеют приоритет по сравнению с любыми файлами с таким же названием, расположенными в директории {{ic|/usr/lib/tmpfiles.d/}}.<br />
<br />
Временные файлы tmpfiles обычно поставляются вместе с сервис-файлами для создания директорийк. которые, как ожидается, будут использоваться определенными демонами. Например, демон [[Samba]] предполагает наличие директории {{ic|/var/run/samba}} с соответствующими правами доступа. В данном случае tmpfile выглядит следующим образом:<br />
<br />
{{hc|/usr/lib/tmpfiles.d/samba.conf|<br />
D /var/run/samba 0755 root root}}<br />
<br />
Тем не менее, tmpfiles также могут использоваться для записи значений в определенные файлы во врем загрузки. К примеру, если вы используете {{ic|/etc/rc.local}} для того, чтобы отключить пробуждение системы USB-устройствами, при помощи команды {{ic|echo USBE > /proc/acpi/wakeup}}, вы можете вместо этого использовать следующий tmpfile:<br />
<br />
{{hc|/etc/tmpfiles.d/disable-usb-wake.conf|<br />
w /proc/acpi/wakeup - - - - USBE}}<br />
<br />
Метод с использованием tmpfiles в данном случае рекомендуется, поскольку systemd в действительности не поддерживает {{ic|/etc/rc.local}}.<br />
<br />
Обратитесь к руководству {{ic|man tmpfiles.d}} за более подробной информацией.<br />
<br />
=== Монтирование удаленных файловых систем ===<br />
<br />
<br />
Systemd позволяет в автоматическом режиме добиться, что удаленные файловые системы наподобие [[NFS]] и [[Samba]] подключаются после поднятия сети. are only started after the network has been set up. Поэтому монтирование удаленных файловых систем, прописанных в {{ic|/etc/fstab}} должно работать "из коробки".<br />
<br />
Однако, по желанию вы можете использовать [[#Automount|автомонтирование]] для монирования удаленных файловых систем, чтобы монтирование данных систем происходило только по мере доступа к ним. Кроме того, вы можете использовать параметр {{ic|1=x-systemd.device-timeout=#}} в файле {{ic|/etc/fstab}} для определения таймаута в том случае, кода сетевые ресурсы оказываются недоступны.<br />
<br />
Обратитесь к руководству {{ic|man systemd.mount}} для получения более подробной информации.<br />
<br />
=== Управлением питанием ACPI при помощи systemd ===<br />
<br />
Systemd обрабатывает некоторые события, связанные с ACPI, что настраивается при помощи параметров в конфигурационном файле {{ic|/etc/systemd/logind.conf}}:<br />
<br />
* {{ic|HandlePowerKey}}: определяет действия системы при нажатии кнопки питания (вкл./выкл.).<br />
* {{ic|HandleSuspendKey}}: определяет действия системы при нажатии кнопки спящего режима.<br />
* {{ic|HandleHibernateKey}}: определяет действия системы при нажатии кнопки ждущего режимаs.<br />
* {{ic|HandleLidSwitch}}: определяет действия системы при закрытии крышки компьютера.<br />
<br />
Для соответствующих действий могут использоваться значения {{ic|ignore}} (пропустить), {{ic|poweroff}} (отключить питание), {{ic|reboot}} (перезагрузить), {{ic|halt}} (выключить), {{ic|suspend}} (включить спящий режим), {{ic|hibernate}} (включить ждущий режим) или {{ic|kexec}} (системный вызов позволяющий оперативно переключиться в другое ядро).<br />
<br />
Если данные параметры не определены, по умолчанию systemd будет использовать следующие: {{ic|1=HandlePowerKey=poweroff}}, {{ic|1=HandleSuspendKey=suspend}}, {{ic|1=HandleHibernateKey=hibernate}}, и {{ic|1=HandleLidSwitch=suspend}}.<br />
<br />
В системах без графического интерфейса или использующих простые оконные менеджеры наподобие like [[i3]] или [[awesome]], так можно заменить демон [[acpid]], который обычно используется для реагирования на данные события ACPI.<br />
<br />
В текущей версии systemd параметры {{ic|Handle}} будут применены ко всей системе, если только они не "подавляются (временно отключены) другой программой, такой, как менеджер питания данного окружения рабочего стола. Если эти ограничений нет, вы можете столкнуться с ситуацией, когда systemd приводит вашу систему в спящий режим, а затем, когда система пробуждается менеджером управлением питания, снова "усыпляет" ее.<br />
<br />
{{Note|В настоящее время менеджер управления питанием новейшей версии в [[KDE]] является единственным, который использует такие команды "подавления". До тех пор, пока их не будут применять другие менеджеры, вам надо выставить в параметрах {{ic|Handle}} значение {{ic|ignore}}, если вы хотите, чтобы события ACPI обрабатывались в случае использования [[GNOME]], [[Xfce]], [[acpid]] или других программ. Но на подходе новые версии, которые включат данную функциональность.}}<br />
<br />
=== Хуки спящего режима ===<br />
<br />
Systemd в своих командах {{ic|systemctl suspend}} или {{ic|systemctl hibernate}} не использует [[pm-utils]] для "усыпления" машины, поэтому хуки [[pm-utils]], включая любые [[Pm-utils#Creating_your_own_hooks|пользовательские хуки]] не будут работать. Тем не менее, systemd предоставляет схожий механизм запуска пользовательских скриптов для данных событий. Systemd запускает все исполняемые файлы в директории {{ic|/usr/lib/systemd/system-sleep/}} и передает каждому из них два аргумента:<br />
<br />
* Аргумент 1: или {{ic|pre}}, или {{ic|post}}, в зависимости от которых машина либо "уснет", либо будет "пробуждена";<br />
* Аргумент 2: или {{ic|suspend}}, или {{ic|hibernate}}, в зависимости от того, что было вызвано.<br />
<br />
В отличие от [[pm-utils]], systemd запустит данные скрипты одновременно, а не один после другого.<br />
<br />
Вывод вашего скрипта будет записан сервисом {{ic|systemd-suspend.service}} или {{ic|systemd-hibernate.service}}, поэтому вы вы можете увидеть данный выход в [[Systemd (Русский)#Журнал systemd|журнале]].<br />
<br />
Обратите внимание, что вместо использования скриптов вы также можете использовать специальные целевые юниты - {{ic|sleep.target}}, {{ic|suspend.target}} или {{ic|hibernate.target}} для того, чтобы подключить к другим юнитам возможности перехода в спящий режима.<br />
<br />
Обратитесь к руководствам {{ic|man systemd.special}} и {{ic|man systemd-sleep}} для получения дальнейшей информации.<br />
<br />
==== Пример ====<br />
<br />
{{hc|/usr/lib/systemd/system-sleep/example.sh|<nowiki><br />
#!/bin/sh<br />
case $1/$2 in<br />
pre/*)<br />
echo "Going to $2..."<br />
;;<br />
post/*)<br />
echo "Waking up from $2..."<br />
;;<br />
esac</nowiki>}}<br />
<br />
=== Ждущий режим ===<br />
<br />
Смотрите [[systemd#Hibernation|английскую версию вики]].<br />
<br />
=== Юнит ===<br />
<br />
Юнит (англ. unit) - конфигурационный файл, содержащий информацию о сервисе (службе), сокете, устройстве, точке монирования/автомонирования, файле подкачке или разделе, определяемом для загрузки уровне запуска, пути в файловой системе или таймере, которые контролируются и управляются при помощи systemd. Синтаксис юнитов навеян спецификацией .desktop-файлов (XDG Desktop Entry Specification), которая, в свою очередь, вдохновлялась .ini-файлами от Microsoft Windows. Обратитесь к руководству {{ic|man systemd.unit}} для получения дальнейшей информации.<br />
<br />
== Команды systemd ==<br />
<br />
*{{ic|systemctl}}: используется для наблюдения и контроля за состоянием менеджера системы и сервисов systemd.<br />
*{{ic|systemd-cgls}}: рекурсивно показывает содержимое иерархии избранной контрольной группы (cgroup) Linux в виде дерева.<br />
*{{ic|systemadm}}: графическая оболочка для менеджера системы и сервисов systemd , позволяющая наблюдать и контролировать systemd (доступна в виде пакета {{AUR|systemd-ui-git}} из [[AUR]]).<br />
<br />
Обратитесь к страницам руководств для получения дальнейшей информации. <br />
<br />
{{Tip|Вы можете использовать приведенные ниже команды {{ic|systemctl}} с ключом {{ic|-H <user>@<host>}} для того, чтобы контролировать systemd на удаленной машине. В этом случае для соединения с удаленным процессом systemd будет использовать [[SSH]].}}<br />
<br />
=== Анализ состояния системы ===<br />
<br />
Список запущенных юнитов:<br />
<br />
$ systemctl<br />
<br />
или:<br />
<br />
$ systemctl list-units<br />
<br />
Список юнитов, попытка запуска которых завершилась неудачей:<br />
<br />
$ systemctl --failed<br />
<br />
Доступные юниты можно посмотреть в директориях {{ic|/usr/lib/systemd/system/}} и {{ic|/etc/systemd/system/}} (последняя директория имеет приоритет). Вы можете увидеть список установленных юнитов командой:<br />
<br />
$ systemctl list-unit-files<br />
<br />
=== Использование юнитов ===<br />
<br />
Юниты могут быть сервисами ({{ic|.service}}), точками монтирования ({{ic|.mount}}) или сокетами ({{ic|.sockets}}). При использовании команды {{ic|systemctl}} необходимо всегда указывать полное имя файла, включая расширение. Однако, есть несколько сокращений при определении юнита следующими командами{{ic|systemctl}}:<br />
<br />
* Ели вы не указали суффикс, systemctl предполагает, что это {{ic|.service}}. Например, {{ic|netcfg}} и {{ic|netcfg.service}} будут трактоваться одинаково.<br />
* Точки монтирования будут автоматически преобразованы в соответствующий юнит {{ic|.mount}}. Например, указание {{ic|/home}} равнозначно {{ic|home.mount}}.<br />
* Аналогично точкам монтирования, имена устройств автоматически преобразуются в соответствующий юнит {{ic|.device}}, поэтому указание {{ic|/dev/sda2}} полностью соответствует юниту {{ic|dev-sda2.device}}.<br />
<br />
Обратитесь к руководству {{ic|man systemd.unit}} для получения детальной информации.<br />
<br />
Незамедлительно запустить юнит:<br />
<br />
# systemctl start <unit><br />
<br />
Незамедлительно остановить юнит:<br />
<br />
# systemctl stop <unit><br />
<br />
Перезапустить юнит:<br />
<br />
# systemctl restart <unit><br />
<br />
Запросить у юнита перезагрузку его настроек:<br />
<br />
# systemctl reload <unit><br />
<br />
Показать статус юнита, а также запущен он или нет:<br />
<br />
$ systemctl status <unit><br />
<br />
Проверить включение юнита (т.е. разрешен ли юниту запуск при загрузке системы):<br />
<br />
$ systemctl is-enabled <unit><br />
<br />
Включить юнит (разрешить юниту запуск при загрузке системы):<br />
<br />
# systemctl enable <unit><br />
<br />
{{Note| Если сервис-файлы не имеют раздела {{ic|Install}}, это обычно означает, что данные сервисы вызываются автоматически другими сервисами. Но если вам требуется установить их вручную, используйте следующую команду, заменив {{ic|foo}} именем вашего сервиса.<br />
# ln -s /usr/lib/systemd/system/''foo''.service /etc/systemd/system/graphical.target.wants/<br />
}}<br />
<br />
Выключить юнит (запретить юниту запуск при загрузке системы):<br />
<br />
# systemctl disable <unit>}}<br />
<br />
Показать страницу помощи для юнита (необходима поддержка этой функции в указанном файле юнита):<br />
<br />
$ systemctl help <unit><br />
<br />
=== Управление питанием ===<br />
<br />
Если у вас локальная пользовательская сессия {{ic|systemd-logind}} или [[ConsoleKit]] и нет других активных сессий, приведенные ниже команды сработают и без привилегий суперпользователя root. В противном случае (например, вследствие того, что пользователь залогинился в tty), systemd автоматически запросит у вас пароль root (также обратитесь к разделу [[#Замена_ConsoleKit_на_systemd-logind|замена ConsoleKit на systemd-logind]]).<br />
<br />
Завершить работу и перезагрузить систему:<br />
<br />
$ systemctl reboot<br />
<br />
Завершить работу и выключить компьютер:<br />
<br />
$ systemctl halt<br />
<br />
Перевести систему в спящий режим:<br />
<br />
$ systemctl suspend<br />
<br />
Перевести систему в ждущий режим:<br />
<br />
$ systemctl hibernate<br />
<br />
== Уровни запуска/target-юниты ==<br />
<br />
Уровни запуска (по-английски уровень запуска - runlevel) для systemd являются устаревшей концепцией. Systemd использует ''target-юниты'' (буквально ''целевые юниты''), которые выполняют ту же задачу, что и уровни запуска, но действуют немного по-другому. Каждый ''target'' поименован (т.е. имеет собственное имя, а не номер) и, как предполагается, предназначен для использования в конкретных целях; возможно иметь в одно и то же время активными несколько таких целевых юнитов. Некоторые ''target-юниты'' реализованы так, что наследуют все сервисы других ''target-юнитов'' и добавляют к ним свои сервисы. В systemd имеются также ''target-юниты'', которые имитируют общие уровни запуска SystemVinit, поэтому вы можете переключаться между целевыми юнитами с использованием привычной команды {{ic|telinit RUNLEVEL}}. <br />
<br />
=== Получение информации о текущем уровне запуска/target-юнитах ===<br />
<br />
При использовании systemd для этого предназначена следующая команда (заменяющая {{ic|runlevel}}):<br />
<br />
# systemctl list-units --type=target<br />
<br />
=== Создание пользовательского target-юнита ===<br />
<br />
Уровни, которым расписаны конкретные цели на установке дистрибутива Fedora по умолчанию - 0, 1, 3, 5 и 6; есть маппинг 1:1 с помощью конкретного ''target-юнита'' systemd. К сожалению, не существует хорошего способа сделать то же самое для определяемых пользователем уровней, таких, как 2 и 4. Использование их предполагает, что вы создаете новый именованный ''target-юнит''systemd наподобие {{ic|/etc/systemd/system/<your target>}}, который берет за основу один из существующих уровней запуска (взгляните, например, на {{ic|/usr/lib/systemd/system/graphical.target}}), создаете также директорию {{ic|/etc/systemd/system/<your target>.wants}} и затем символические ссылки на те дополнительные сервисы из директории {{ic|/usr/lib/systemd/system/}}, которые вы хотите включить при загрузке.<br />
<br />
== Таблица уровней запуска и их аналогов в Systemd ==<br />
<br />
{| class="wikitable" border="1" cellpadding="5" cellspacing="0"<br />
! Уровнень запуска SysV !! Systemd Target !! Примечание<br />
|-<br />
| 0 || runlevel0.target, poweroff.target || Выключить систему.<br />
|-<br />
| 1, s, single || runlevel1.target, rescue.target || Однопользовательский уровень запуска.<br />
|-<br />
| 2, 4 || runlevel2.target, runlevel4.target, multi-user.target || Уровень запуска, определенный пользователем/специфичный для узла. По умолчанию соответствует уровню запуска 3.<br />
|-<br />
| 3 || runlevel3.target, multi-user.target || Многопользовательский режим без графики. Пользователи, как правило, входят с помощью множества консолей или через сеть.<br />
|-<br />
| 5 || runlevel5.target, graphical.target || Многопользовательский режим с графикой. Обычно эквивалентен запуску всех сервисов уровня 3 и графическому менеджеру входа.<br />
|-<br />
| 6 || runlevel6.target, reboot.target || Перезагрузка.<br />
|-<br />
| emergency || emergency.target || Аварийная оболочка.<br />
|-<br />
|}<br />
<br />
=== Изменение текущего уровня запуска ===<br />
<br />
В systemd уровни запуска доступны посредством "target-юнитов". Вы можете изменить их командой:<br />
<br />
# systemctl isolate graphical.target<br />
<br />
Данная команда изменит только лишь текущий уровень запуска и не повлияет на следующую загрузку системы. Она соответствует командам наподобие {{ic|telinit 3}} или {{ic|telinit 5}} для Sysvinit.<br />
<br />
=== Изменение уровня запуска по умолчанию/target-юнита для загрузки ===<br />
<br />
Стандартный target-юнит - {{ic|default.target}}, который по умолчанию является псевдонимом юнита {{ic|graphical.target}} (примерно соответствующего прежнему уровню выполнения 5). Для изменения уровня выполнения, выполняемого при загрузке по умолчанию, добавьте следующий дополнительный [[kernel parameters|параметр ядра]] в вашем загрузчике:<br />
<br />
{{Tip|Расширение {{ic|.target}} можно опустить.}}<br />
<br />
* {{ic|1=systemd.unit=multi-user.target}} (что примерно соответствует прежнему уровню выполнения 3),<br />
* {{ic|1=systemd.unit=rescue.target}} (что примерно соответствует прежнему уровню выполнения 1).<br />
<br />
Другой путь заключается в том, чтобы оставить загрузчик без изменений и изменить целевой юнит по умолчанию - {{ic|default.target}}, что достигается командой {{ic|systemctl}}:<br />
<br />
# systemctl enable multi-user.target<br />
<br />
Эффект от применения данной команды выводится через {{ic|systemctl}}; символическая ссылка на новый target-юнит по умолчанию создается в директории {{ic|/etc/systemd/system/default.target}}. Это сработает в том случае (и только в том случае), если имеется следующая секция:<br />
<br />
[Install]<br />
Alias=default.target<br />
<br />
в конфигурационном файле target-юнита. В настоящий момент как {{ic|multi-user.target}}, так и {{ic|graphical.target}} оба имеют данную секцию.<br />
<br />
== Запуск окружения рабочего стола из systemd ==<br />
<br />
=== Использование экранного менеджера ===<br />
<br />
Чтобы ключить графический вход в систему, запустите выбранный вами демон [[Display Manager (Русский)|экранного менеджера]] (например, [[KDM]]). В настоящий момент доступны сервис-файлы для [[GDM]], [[KDM]], [[SLiM]], [[XDM]], [[LXDM]] и [[LightDM]].<br />
<br />
# systemctl enable kdm.service<br />
<br />
Эта команда должна работать "из коробки". Если вдруг она не сработала, то, возможно, у вас {{ic|default.target}} установлен вручную или остался с прежней установки:<br />
<br />
{{hc|# ls -l /etc/systemd/system/default.target|<br />
/etc/systemd/system/default.target -> /usr/lib/systemd/system/graphical.target}}<br />
<br />
Просто удалите символическую ссылку и systemd будет использовать целевой юнит по умолчанию - {{ic|default.target}} (т.е. {{ic|graphical.target}}).<br />
<br />
# rm /etc/systemd/system/default.target<br />
<br />
=== Запуск через файл сервиса ===<br />
<br />
<br />
{{Note|При использовании данного метода для вашего пользователя не будет создана PAM-сессия, поэтому ConsoleKit (предоставляющий допуск к выключению/перезагрузке системы, аудиоустройствам и т.д.) не будет корректно работать. Рекомендуемый путь описан в разделах: [[#Замена_ConsoleKit_на_systemd-logind|Замена ConsoleKit на systemd-logind]] и [[Automatic_login_to_virtual_console#With_systemd|Автоматический вход в виртуальную консоль с помощью systemd]].}}<br />
<br />
если вам нужен простой путь запуска X напрямую, без использования экранного менеджера входа в систему, вы можете создать сервис-файл наподобие приведенного ниже:<br />
<br />
{{hc|/etc/systemd/system/graphical.target.wants/xinit.service|2=<br />
[Unit]<br />
Description=Direct login to X<br />
After=systemd-user-sessions.service<br />
<br />
[Service]<br />
ExecStart=/bin/su <username> -l -c "/bin/bash --login -c xinit"<br />
<br />
[Install]<br />
WantedBy=graphical.target}}<br />
<br />
== Журнал systemd ==<br />
<br />
С версии 38 systemd имеет собственную систему ведения логов - журнал (journal).<br />
<br />
По умолчанию, более не требуется запуск демона syslog. Для чтения логов используйте команду:<br />
<br />
# journalctl<br />
<br />
Журнал записывается в директорию {{ic|/run/systemd/journal}}, поэтому логи будут потеряны при перезагрузке. Для сохранения логов создайте директорию {{ic|/var/log/journal/}}:<br />
<br />
# mkdir /var/log/journal/<br />
<br />
=== Фильтрация вывода ===<br />
<br />
{{ic|journalctl}} позволяет фильтровать вывод по особым полям.<br />
<br />
Примеры:<br />
<br />
Показать все сообщения определенной программы:<br />
<br />
# journalctl /usr/lib/systemd/systemd<br />
<br />
Показать все сообщения определенного процесса:<br />
<br />
# journalctl _PID=1<br />
<br />
Показать все сообщения определенного юнита:<br />
<br />
# journalctl _SYSTEMD_UNIT=netcfg.service<br />
<br />
Обратитесь к {{ic|man journalctl}} и {{ic|systemd.journal-fields}} для получения детальной информации.<br />
<br />
=== Ограничение размера журнала ===<br />
<br />
Если журнал сохраняется при перезагрузке, размер его по умолчанию ограничен значением в 10% от объема соответствующей файловой системы. Например, для директории {{ic|/var/log/journal}}, расположенной на корневом разделе в 50 Гбайт, максимальный размер журналируемых данных составит до 5 Гбайт. Максимальный объем постоянного журнала можно контролировать при помощи значения {{ic|SystemMaxUse}} в конфигурационном файле {{ic|/etc/systemd/journald.conf}}, поэтому для ограничения его объемом в 50 Mбайт раскомментируйте и отредактируйте соответствующую строку:<br />
<br />
SystemMaxUse=50M<br />
<br />
Обратитесь к {{ic|man journald.conf}} для получения дальнейшей информации.<br />
<br />
=== Journald в связке с классическим демоном syslog ===<br />
<br />
Совместимость с классической реализацией syslog обеспечивается сокетом {{ic|/run/systemd/journal/syslog}}, в который перенаправляются все сообщения. Чтобы дать созможность демону syslog работать вместе с журналом systemd, следует привязать данный демон к указанному сокету вместо {{ic|/dev/log}} ([http://lwn.net/Articles/474968/ официальное сообщение]). В случае с syslog-ng, измените раздел {{ic|source src}} в конфигурационном файле {{ic|/etc/syslog-ng/syslog-ng.conf}} по следующем образцу:<br />
<br />
source src {<br />
unix-dgram("/run/systemd/journal/syslog");<br />
internal();<br />
file("/proc/kmsg");<br />
};<br />
<br />
и включите syslog-ng:<br />
<br />
# systemctl enable syslog-ng.service<br />
<br />
== Сеть ==<br />
<br />
=== Динамическое подключение (DHCP) с использованием dhcpcd ===<br />
<br />
Если хотите использовать только DHCP для своего соединения Ethernet, вы можете воспользоваться сервисом {{ic|dhcpcd@.service}} (который поставляется пакетом {{Pkg|dhcpcd}}).<br />
<br />
Чтобы подключить DHCP для {{ic|eth0}}, просто выполните команду:<br />
<br />
# systemctl start dhcpcd@eth0.service<br />
<br />
Вы можете включить этот сервис, и он будет автоматически запускаться при загрузке. Это делается командой:<br />
<br />
# systemctl enable dhcpcd@eth0.service<br />
<br />
Иногда сервис dhcpd запускается до загрузки модуля вашей сетевой карты ({{bug|30235}}), в этом случае вручную добавьте вашу сетевую карту в конфигурационный файл {{ic|/etc/modules-load.d/*.conf}}. Например, для карты Realtek необходима загрузка модуля {{ic|r8169}}, поэтому создайте такой конфигурационный файл:<br />
<br />
{{hc|/etc/modules-load.d/realtek.conf|2=<br />
r8169}}<br />
<br />
=== Другие конфигурации ===<br />
<br />
Для статического подключения, беспроводной сети или сложной конфигурации сети наподобие сетевого моста, вы можете использовать [[Netcfg#systemd_support|netcfg]] или [[NetworkManager#Enable_NetworkManager_under_Native_systemd_system|NetworkManager]], для обеих этих инструментов управления сетью имеются сервис-файлы для systemd.<br />
<br />
{{Note|Если вы хотите использовать netcfg, networkmanager или другие программы управления сетью, вам не надо в этом случае запускать или включать сервис dhcpcd как показано в предыдущем параграфе.}}<br />
<br />
==Интеграция с Arch==<br />
<br />
=== Эмуляция initscripts ===<br />
<br />
Интеграция с классической конфигурацией Arch Linux обеспечивается пакетом {{Pkg|initscripts}}. Данная интеграция рассматривается как просто переходная мера для легкой миграции пользователей на systemd.<br />
<br />
{{Note|Файл {{ic|/etc/inittab}} вообще не используется.}}<br />
<br />
Если вы отключали использование сочетания клавиш для перезагрузки системы {{keypress|Ctrl+Alt+Del}} в файле {{ic|/etc/inittab}}, теперь вам надо заново сделать это для systemd командой {{ic|systemctl mask ctrl-alt-del.target}}, выполняемой от суперпользователя root.<br />
<br />
==== rc.conf ====<br />
<br />
Некоторые переменные в прежнем основном конфигурационном файле {{ic|/etc/rc.conf}} предположительно не будут корректно работать. Для чистой установки systemd setup рекомендуется использовать [[Systemd (Русский)#Родные системные файлы в systemd|родные системные файлы]], которые имеют приоритет над установками в {{ic|/etc/rc.conf}}.<br />
<br />
Поддерживаются (но не рекомендуются):<br />
<br />
* {{ic|CONSOLEFONT}}<br />
* {{ic|CONSOLEMAP}}<br />
* {{ic|DAEMONS}}<br />
* {{ic|HOSTNAME}}<br />
* {{ic|KEYMAP}}<br />
* {{ic|LOCALE}}<br />
<br />
Не поддерживаются:<br />
<br />
* {{ic|HARDWARECLOCK}}: обратитесь к разделу [[Systemd (Русский)#Аппаратные часы|Аппаратные часы]].<br />
* {{ic|MODULES}}: используйте взамен конфигурационные файлы в директории {{ic|modules-load.d}}.<br />
* {{ic|TIMEZONE}}: вручную сделайте символическую ссылку {{ic|/etc/localtime}} на файл вашей временной зоны.<br />
* {{ic|USELVM}}: взамен используйте {{ic|lvm.service}}, поставляемый пакетом {{pkg|lvm2}}.<br />
* {{ic|USECOLOR}}<br />
<br />
=== Полный переход к конфигурационным файлам systemd ===<br />
<br />
{{Note|Этот метод является предпочтительным, при его использовании система более не зависит от централизованной настройки в файле {{ic|rc.conf}}, а использует родные системные файлы systemd.}}<br />
<br />
Последуйте настройке конфигурационных файлов как показано в разделе [[Systemd (Русский)#Родные системные файлы в systemd|Родные системные файлы в systemd]]. Каждый файл заменяет одну из секций в {{ic|/etc/rc.conf}}, как показано в данной таблице:<br />
<br />
{| class="wikitable"<br />
|-<br />
! scope="col"| Настройка<br />
! scope="col"| Конфигурационный файл (файлы)<br />
! scope="col"| Устаревшая секция [https://projects.archlinux.org/initscripts.git/tree/rc.conf?id=97f0cd6751e8d22c14d7492cdc2186cf41157ba6 rc.conf]<br />
|-<br />
| align="center"|Имя компьютера (Hostname)<br />
| align="left"|{{ic|/etc/hostname}}<br />
{{ic|/etc/hosts}}<br />
| align="center"|{{ic|NETWORKING}}<br />
|-<br />
| align="center"|Консоль и раскладка клавиатуры<br />
| align="left"|{{ic|/etc/vconsole.conf}}<br />
| align="center"|{{ic|LOCALIZATION}}<br />
|-<br />
| align="center"|Локаль<br />
| align="left"|{{ic|/etc/locale.conf}}<br />
{{ic|/etc/locale.gen}}<br />
| align="center"|{{ic|LOCALIZATION}}<br />
|-<br />
| align="center"|Временная зона<br />
| align="left"|{{ic|/etc/localtime}}<br />
| align="center"|{{ic|LOCALIZATION}}<br />
|-<br />
| align="center"|Аппаратные часы<br />
| align="left"|{{ic|/etc/adjtime}}<br />
| align="center"|{{ic|LOCALIZATION}}<br />
|-<br />
| align="center"|Модули ядра<br />
| align="left"|{{ic|/etc/modules-load.d/}}<br />
| align="center"|{{ic|HARDWARE}}<br />
|}<br />
<br />
Для целей совместимости секция {{ic|DAEMONS}} в {{ic|/etc/rc.conf}} еще может использоваться вместе с systemd для запуска сервисов при загрузке системы, даже при "чистой" установке менеджера служб systemd. Взамен этого вы можете полностью удалить файл {{ic|/etc/rc.conf}} и включить сервисы в systemd. Для каждого сервиса с именем {{ic|<service_name>}} в массиве {{ic|DAEMONS}} из файла {{ic|/etc/rc.conf}} выполните команду:<br />
<br />
# systemctl enable <service_name>.service<br />
<br />
{{Tip|Для получения списка обычно используемых демонов с их эквивалентами в initscripts и systemd, обратитесь к [[Daemon#List_of_Daemons|данной таблице]].}}<br />
<br />
Если сервис-файл {{ic|<service_name>.service}} отсутствует:<br />
<br />
* сервис-файл может быть недоступен для systemd. В этом случае вам нужно сохранить конфигурационный файл {{ic|rc.conf}} для запуска этих сервисов во время загрузки системы.<br />
* systemd может называть сервисы другими именами, например, {{ic|cronie.service}} заменяет демон {{ic|crond}}; {{ic|alsa-store.service}} и {{ic|alsa-restore.service}} заменяют демон {{ic|alsa}}. Другой важный пример - демон {{ic|network}}, которого сменил целый набор сервис-файлов (обратитесь к разделу [[#Сеть]] для получения дальнейшей информации.)<br />
<br />
{{Tip|Вы можете заглянуть вовнутрь пакета, содержащего стартовые скрипты демона, чтобы узнать имена его сервис-файла. К примеру:<br />
$ pacman -Ql cronie<br />
[...]<br />
cronie /etc/rc.d/crond #демон initscript, указываемый в массивеe DAEMONS (не используется при "чистой" настройке systemd)<br />
[...]<br />
cronie /usr/lib/systemd/system/cronie.service #Соответствующий сервис systemd<br />
[...]<br />
}}<br />
<br />
== Writing custom .service files ==<br />
<br />
=== Handling dependencies ===<br />
<br />
With systemd, dependencies can be resolved by designing the unit files correctly. The most typical case is that the unit {{ic|A}} requires the unit {{ic|B}} to be running before {{ic|A}} is started. In that case add {{ic|1=Requires=B}} and {{ic|1=After=B}} to the {{ic|[Unit]}} section of {{ic|A}}. If the dependency is optional, add {{ic|1=Wants=B}} and {{ic|1=After=B}} instead. Note that {{ic|1=Wants=}} and {{ic|1=Requires=}} do not imply {{ic|1=After=}}, meaning that if {{ic|1=After=}} is not specified, the two units will be started in parallel.<br />
<br />
Dependencies are typically placed on services and not on targets. For example, {{ic|network.target}} is pulled in by whatever service configures your network interfaces, therefore ordering your custom unit after it is sufficient since {{ic|network.target}} is started anyway.<br />
<br />
=== Type ===<br />
<br />
There are several different start-up types to consider when writing a custom service file. This is set with the {{ic|1=Type=}} parameter in the {{ic|[Service]}} section. See {{ic|man systemd.service}} for a more detailed explanation.<br />
<br />
* {{ic|1=Type=simple}}: systemd considers the service to be started up immediately. The process must not fork. Do not use this type if other services need to be ordered on this service, unless it is socket activated.<br />
* {{ic|1=Type=forking}}: systemd considers the service started up once the process forks and the parent has exited. For classic daemons use this type unless you know that it is not necessary. You should specify {{ic|1=PIDFile=}} as well so systemd can keep track of the main process.<br />
* {{ic|1=Type=oneshot}}: This is useful for scripts that do a single job and then exit. You may want to set {{ic|1=RemainAfterExit=}} as well so that systemd still considers the service as active after the process has exited.<br />
* {{ic|1=Type=notify}}: Identical to {{ic|1=Type=simple}}, but with the stipulation that the daemon will send a signal to systemd when it is ready. The reference implementation for this notification is provided by {{ic|libsystemd-daemon.so}}.<br />
* {{ic|1=Type=dbus}}: The service is considered ready when the specified {{ic|BusName}} appears on DBus's system bus.<br />
<br />
=== Replacing provided unit files ===<br />
<br />
The unit files in {{ic|/etc/systemd/system/}} take precedence over the ones in {{ic|/usr/lib/systemd/system/}}.<br />
To make your own version of a unit (which will not be destroyed by an upgrade), copy the old unit file from {{ic|/usr/lib/}} to {{ic|/etc/}} and make your changes there. Alternatively you can use {{ic|.include}} to parse an existing service file and then override or add new options. For example, if you simply want to add an additional dependency to a service file, you may use:<br />
<br />
{{hc|/etc/systemd/system/<service-name>.service|2=<br />
.include /usr/lib/systemd/system/<service-name>.service<br />
<br />
[Unit]<br />
Requires=<new dependency><br />
After=<new dependency>}}<br />
<br />
Then run the following for your changes to take effect:<br />
<br />
# systemctl reenable <unit><br />
# systemctl restart <unit><br />
<br />
{{Tip|You can use {{ic|systemd-delta}} to see which unit files have been overridden and what exactly has been changed.}}<br />
<br />
=== Syntax highlighting for systemd unit files within Vim ===<br />
<br />
Syntax highlighting for systemd unit files within [[Vim]] can be enabled by installing {{AUR|vim-systemd}} from the [[Arch User Repository|AUR]].<br />
<br />
== Оптимизация ==<br />
<br />
=== systemd-analyze ===<br />
<br />
Systemd provides a tool called {{ic|systemd-analyze}} that allows you to analyze your boot process so you can see which unit files are causing your boot process to slow down. You can then optimize your system accordingly. You have to install {{Pkg|python2-dbus}} and {{Pkg|python2-cairo}} to use it.<br />
<br />
To see how much time was spent in kernel-/userspace on boot, simply use:<br />
<br />
$ systemd-analyze<br />
<br />
{{Tip|To see how much time was spent in the initramfs, add the {{ic|timestamp}} hook to your {{ic|HOOKS}} array in {{ic|/etc/[[mkinitcpio]].conf}} and as root, rebuild your initramfs with {{ic|mkinitcpio -p linux}} }}<br />
<br />
To list the started unit files, sorted by the time each of them took to start up:<br />
<br />
$ systemd-analyze blame<br />
<br />
You can also create a SVG file which describes your boot process graphically, similiar to [[Bootchart]]:<br />
<br />
$ systemd-analyze plot > plot.svg<br />
<br />
==== Enabling bootchart in conjunction with systemd ====<br />
<br />
You can use a version of bootchart to visualize the boot sequence.<br />
Since you are not able to put a second init into the kernel command line you won't be able to use any of the standard bootchart setups. However the {{AUR|bootchart2}} package from [[AUR]] comes with an undocumented systemd service. After you've installed bootchart2 do:<br />
<br />
# systemctl enable bootchart.service<br />
<br />
Read the [https://github.com/mmeeks/bootchart bootchart documentation] for further details on using this version of bootchart.<br />
<br />
=== Shell Shortcuts ===<br />
<br />
systemd daemon management requires a bit more text entry to accomplish tasks such as start, stopped, enabling, checking status, etc. The following functions can be added to one's {{ic|~/.bashrc}} file to help streamline interactions with systemd and to improve the overall experience.<br />
<br />
{{bc|# simplified systemd command, for instance "sudo systemctl stop xxx.service" - > "0.stop xxx"<br />
if ! systemd-notify --booted;<br />
then # for not systemd<br />
0.start() {<br />
sudo rc.d start $1<br />
}<br />
<br />
0.restart() {<br />
sudo rc.d restart $1<br />
}<br />
<br />
0.stop() {<br />
sudo rc.d stop $1<br />
}<br />
else<br />
# start systemd service<br />
0.start() {<br />
sudo systemctl start $1.service<br />
}<br />
# restart systemd service<br />
0.restart() {<br />
sudo systemctl restart $1.service<br />
}<br />
# stop systemd service<br />
0.stop() {<br />
sudo systemctl stop $1.service<br />
}<br />
# enable systemd service<br />
0.enable() {<br />
sudo systemctl enable $1.service<br />
}<br />
# disable a systemd service<br />
0.disable() {<br />
sudo systemctl disable $1.service<br />
}<br />
# show the status of a service<br />
0.status() {<br />
systemctl status $1.service<br />
}<br />
# reload a service configuration<br />
0.reload() {<br />
sudo systemctl reload $1.service<br />
}<br />
# list all running service<br />
0.list() {<br />
systemctl<br />
}<br />
# list all failed service<br />
0.failed () {<br />
systemctl --failed<br />
}<br />
# list all systemd available unit files<br />
0.list-files() {<br />
systemctl list-unit-files<br />
}<br />
# check the log<br />
0.log() {<br />
sudo journalctl<br />
}<br />
# show wants<br />
0.wants() {<br />
systemctl show -p "Wants" $1.target<br />
}<br />
# analyze the system<br />
0.analyze() {<br />
systemd-analyze $1<br />
}<br />
fi<br />
}}<br />
<br />
=== Less output ===<br />
<br />
Change {{ic|verbose}} to {{ic|quiet}} on the bootloader's kernel line. For some systems, particularly those with an SSD, the slow performance of the TTY is actually a bottleneck, and so less output means faster booting.<br />
<br />
=== Early start ===<br />
<br />
One central feature of systemd is [[D-Bus]] and socket activation, this causes services to be started when they are first accessed, and is generally a good thing. However, if you know that a service (like [[ConsoleKit]]) will always be started during boot, then the overall boot time might be reduced by starting it as early as possible. This can be achieved (if the service file is set up for it, which in most cases it is) by issuing:<br />
<br />
# systemctl enable console-kit-daemon.service<br />
<br />
This will cause systemd to start ConsoleKit as soon as possible, without causing races with the socket or D-Bus activation.<br />
<br />
=== Automount ===<br />
<br />
The default setup will fsck and mount all filesystems before starting most daemons and services. If you have a large {{ic|/home}} partition, it might be better to allow services that do not depend on {{ic|/home}} to start while {{ic|/home}} is being fsck'ed. This can be achieved by adding the following options to the fstab entry of your {{ic|/home}} partition:<br />
<br />
noauto,x-systemd.automount<br />
<br />
This will fsck and mount {{ic|/home}} when it is first accessed, and the kernel will buffer all file access to {{ic|/home}} until it is ready.<br />
<br />
If you have encrypted filesystems with keyfiles, you can also add the {{ic|noauto}} parameter to the corresponding entries in {{ic|/etc/crypttab}}. systemd will then not open the encrypted device on boot, but instead wait until it is actually accessed and then automatically open it with the specified keyfile before mounting it. This might save a few seconds on boot if you are using an encrypted RAID device for example, because systemd doesn't have to wait for the device to become available. For example:<br />
<br />
{{hc|/etc/crypttab|<br />
data /dev/md0 /root/key noauto}}<br />
<br />
=== Readahead ===<br />
<br />
systemd comes with its own readahead implementation, this should in principle improve boot time. However, depending on your kernel version and the type of your hard drive, your mileage may vary (i.e. it might be slower). To enable, do:<br />
<br />
# systemctl enable systemd-readahead-collect.service systemd-readahead-replay.service<br />
<br />
Remember that in order for the readahead to work its magic, you should reboot a couple of times.<br />
<br />
=== Замена ConsoleKit на systemd-logind ===<br />
<br />
Начиная с {{Pkg|polkit}} 0.107 (в настоящее время в репозитории [testing]), [[ConsoleKit]] можно полностью заменить на {{ic|systemd-logind}}. Самый легкий метод удаления [[ConsoleKit]] заключается в [[Automatic_login_to_virtual_console#With_systemd|автоматическом входе в виртуальную консоль]] и [[Start_X_at_Boot|запуска X оттуда]]. Важно понять, что, как указано в последней статье, сервер X запускается в той же виртуальной консоли, в которую вы загрузились, в противном случае systemd не сможет следить за пользовательской сессией. Затем можно просто удалить {{ic|ck-launch-session}} из вашего файла {{ic|~/.xinitrc}}.<br />
<br />
Для того, чтобы проверить статус вашей пользовательской сессии, вы можете использовать команду {{ic|loginctl}}. Чтобы убедиться, что ваша пользовательская сессия правильно установлена, проверьте, содержит ли следующая команда {{ic|1=Active=yes}}. Все действия {{Pkg|polkit}} actions наподобие перевода системы в спящий режим или монтирования внешних носителей с помощью [[Udisks]] должны работать автоматически.<br />
<br />
$ loginctl show-session <session-id><br />
<br />
{{Note|При использовании [[NetworkManager]] вам необходимо перекомпилировать данный пакет с поддержкой systemd из [[ABS]] путем записи опции {{ic|1=--with-session-tracking=systemd}} в [[PKGBUILD]].}}<br />
<br />
== Устранение неполадок ==<br />
<br />
=== Выключение/перезагрузка происходят ужасно долго ===<br />
<br />
Если процесс выключения занимает очень долгое время (или, по-видимому, зависает), то, вероятно, виноват сервис, который не завершает свою работу. systemd ожидает некоторое время, пока каждый сервис завершит свою работу самостоятельно, и только потом пытается принудительно завершить (kill) его. Если вы столкнулись с такой проблемой, обратитесь к [http://freedesktop.org/wiki/Software/systemd/Debugging#Shutdown_Completes_Eventually данной статье (англ.)].<br />
<br />
== Полезные ссылки ==<br />
<br />
*[http://www.freedesktop.org/wiki/Software/systemd Официальный веб-сайт (англ.)]<br />
*[http://0pointer.de/public/systemd-man/ Страницы руководств (англ.)]<br />
*[http://freedesktop.org/wiki/Software/systemd/Optimizations systemd Optimizations (англ.)]<br />
*[http://www.freedesktop.org/wiki/Software/systemd/FrequentlyAskedQuestions FAQ (англ.)]<br />
*[http://www.freedesktop.org/wiki/Software/systemd/TipsAndTricks Tips And Tricks (англ.)]<br />
*[http://0pointer.de/public/systemd-ebook-psankar.pdf systemd для администраторов (PDF) - перевод цикла статей Леннарта Поттеринга (Lennart Poettering) ]<br />
*[http://0pointer.de/blog/projects/systemd.html Блог Lennart'а (англ.)]<br />
*[http://archlinux.org.ru/forum/viewtopic.php?f=9&t=9581 systemd mini FAQ]<br />
*[http://wiki.russianfedora.ru/index.php?title=Systemd systemd - база знаний проекта Fedora]<br />
*[http://fedoraproject.org/wiki/Systemd Fedora Linux Wiki: Systemd (англ.)]<br />
*[http://wiki.debian.org/ru/Systemd Debian Wiki: systemd - менеджер системы и сервисов]<br />
*[http://wiki.ubuntu.com/systemd Ubuntu Wiki: systemd (англ.)]<br />
*[http://fedoraproject.org/wiki/Systemd OpenSuse Wiki: SDB:Systemd]</div>Klayhttps://wiki.archlinux.org/index.php?title=Talk:Systemd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=230333Talk:Systemd (Русский)2012-10-21T09:11:55Z<p>Klay: </p>
<hr />
<div>== Названия ==<br />
<br />
Надо бы определиться как называть введённые systemd сущности.<br />
<br />
unit files - файлы юнитов? тогда<br />
<br />
tmpfile - tmp файл, временный файл<br />
<br />
service - сервис, служба, демон<br />
<br />
service файл - файл сервиса<br />
<br />
target - цель, "целевая точка", план?<br />
<br />
<br />
Под-разбери Поттеринга и его план.<br />
<br />
<br />
----<br />
<br />
Думаю unit нужно оставить юнитом, как это используется везде, tmpfile - временным файлом, service - сервисом. А вот <br />
target и самому не понятно, но уж точно не "план". Возможно ''target'' это ''цель''<br />
<br />
--[[User:Klay|Klay]] ([[User talk:Klay|talk]]) 09:11, 21 October 2012 (UTC)<br />
<br />
== Initscripts ==<br />
<br />
Думается можно начинать удалять информацию по initscripts. По крайней мере, из секции по установке уже можно сейчас. <br />
<br />
--[[User:Unikum|Unikum]] ([[User talk:Unikum|talk]]) 09:35, 20 October 2012 (UTC)<br />
<br />
:Согласен<br />
<br />
:--[[User:Klay|Klay]] ([[User talk:Klay|talk]]) 09:11, 21 October 2012 (UTC)</div>Klayhttps://wiki.archlinux.org/index.php?title=Systemd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=230331Systemd (Русский)2012-10-21T09:02:08Z<p>Klay: /* Таблица target-юнитов */</p>
<hr />
<div>[[Category:Русский]]<br />
[[Category:Демоны и системные сервисы]]<br />
[[Category:Процесс загрузки]]<br />
[[en:systemd]]<br />
[[es:systemd]]<br />
[[fr:systemd]]<br />
[[it:systemd]]<br />
[[zh-CN:systemd]]<br />
{{Article summary start|Сводка}}<br />
{{Article summary text|Статья охватывает установку и настройку systemd.}}<br />
{{Article summary heading|Связанные статьи}}<br />
{{Article summary wiki|Systemd/Services}}<br />
{{Article summary wiki|Init_Rosetta_(Русский)}}<br />
{{Article summary wiki|Udev_(Русский)}}<br />
{{Article summary end}}<br />
Цитата с [http://freedesktop.org/wiki/Software/systemd веб-страницы проекта]:<br />
<br />
''"'''systemd''' - система [инициализации] и менеджер служб для Linux, совместимые со скриптами инициализации SysV и LSB. systemd обеспечивает возможности агрессивной параллелизации, использует сокеты и активацию [[D-Bus]] для запускаемых служб, предлагает запуск демонов по необходимости, отслеживает процессы при помощи [[cgroups|контрольных групп]] Linux, поддерживает мгновенные снимки и восстановление состояния системы, монтирование и точки монтирования, а также внедряет основанную на зависимостях логику контроля процессов сложных транзакций. Эта система может выступать заменой sysvinit."''.<br />
<br />
{{Note|За детальным объяснением причин перехода Arch'а на systemd обратитесь к [https://bbs.archlinux.org/viewtopic.php?pid&#61;1149530#p1149530 сообщению на англоязычном форуме].}}<br />
<br />
Смотрите также [[Wikipedia:Systemd|статью в Википедии]].<br />
== Что надо усвоить до начала миграции на данную систему ==<br />
<br />
* Настоятельно рекомендуется перейти на новую конфигурацию '''initscripts''', описанную в статье [[rc.conf (Русский)|rc.conf]]. Сконфигурировав таким образом свою систему, вы проделаете бóльшую часть работы, необходимую для миграции на systemd.<br />
* Почитайте про systemd на [http://freedesktop.org/wiki/Software/systemd/ сайте разработчиков].<br />
* Обратите внимание, что systemd имеет собственный '''журнал (journal)''', заменяющий '''syslog''', хотя оба варианта ведения логов могут сосуществовать. Обратитесь к приведенному ниже разделу [[#Journald_в_связке_с_классическим_демоном _syslog|разделу, посвященному журналу]].<br />
* Хотя systemd вполне способна заменить определенную функциональность таких демонов, как '''cron''', '''acpid''' или '''xinetd''', но если вы не хотите, можете не отказываться от использования традиционных демонов.<br />
<br />
== Установка ==<br />
systemd может быть установлен параллельно со стандартным пакетом инициализации {{Pkg|initscripts}}, и между ними можно будет переключаться путем добавления/удаления [[kernel parameters|параметров ядра]] {{ic|1=init=/usr/lib/systemd/systemd}}. <br />
<br />
=== Смешанная установка systemd/sysvinit/initscripts ===<br />
<br />
Возможно иметь в своей системе одновременно установленными systemd и sysvinit и использовать одну и те же конфигурационные файлы, что позволит вам свободно переключаться между ним туда и обратно:<br />
<br />
# Откажитесь от устаревших форматов конфигурации initscripts (о них сообщается при загрузке системы) в пользу [[#Родные системные файлы в systemd|родных системных файлов systemd]] и перезагрузитесь для проверки работоспособности данных установок при использовании initscripts.<br />
# Установите пакет {{Pkg|systemd}} из [[Official Repositories (Русский)|официальных репозиториев]].<br />
# Добавьте запись {{ic|1=init=/usr/lib/systemd/systemd}} к [[Kernel parameters|параметрам ядра]] в вашем загрузчике.<br />
# Перезагрузите систему.<br />
<br />
Systemd запустит демоны, перечисленные в {{ic|/etc/rc.conf}}, выполнит {{ic|/etc/rc.local}} и {{ic|/etc/rc.local.shutdown}} соответственно при загрузке/выключении системы. Если поддержка совместимости с массивом DAEMONS в конфигурационном файле {{ic|rc.conf}} или же скриптов в {{ic|rc.local}} вам не нужна, соответствующие сервис-файлы могут быть заблокированы (замаскированы) для их отключения.<br />
<br />
{{Warning|В случае, когда у вас в массиве DAEMONS перечислены демоны, для которых имеются родные сервис-файлы systemd, автоматически будут использоваться родные сервис-файлы. Тем не менее, если имена скриптов rc и сервисов systemd (так далее будут именоваться службы данной системы инициализации) не соответствуют друг другу, данное правило не сработает и вам следует убедиться, что только включен только один из них двух (предпочтительно родной сервис-файл).}}<br />
<br />
{{Warning|Systemd - процесс асинхронной загрузки по сравнению сравнении с последовательным запуском демонов из массива DAEMONS. В частности, "network", будучи поддерживаемым для совместимости сервисом, может запуститься слишком поздно для включения интерфейсов, которые требуются другим сервисам. Рекомендуется переключиться на использование netcfg или NetworkManager до перехода на systemd.}}<br />
<br />
=== Смешанная установка systemd/initscripts ===<br />
<br />
Возможно заменить sysvinit на systemd, но сохранить initscripts в случае использования некоторых скриптов rc scripts, для которых пока не имеется эквивалентов в systemd.<br />
<br />
# Следуйте инструкциям для смешанной установки systemd/sysvinit/initscripts.<br />
# [[#Использование_юнитов|Включите демоны]], ранее перечисленные в {{ic|/etc/rc.conf}} с помощью команды {{ic|systemctl enable ''daemonname.'''service''' ''}}. Для переноса демонов из {{ic|/etc/rc.conf}} в разряд сервисов systemd, смотрите разделы: [[Daemon#List_of_Daemons|List of Daemons]] и [[Systemd/Services|Services]]. Демоны, для которых не имеется соответствующих сервис-файлов systemd, следует оставить в массиве DAEMONS, поскольку systemd запустит устаревшие скрипты rc.<br />
# Установите пакет {{Pkg|systemd-sysvcompat}}. Данный пакет конфликтует с {{Pkg|sysvinit}} и вам будет предложено удалить последний.<br />
# Удалите запись {{ic|1=init=...}}, поскольку {{ic|/sbin/init}} теперь является символической ссылкой на systemd.<br />
# Перезагрузите систему.<br />
<br />
Единственная разница между этим вариантом и вариантом с сохранением sysvinit состоит в том, что все бинарные файлы sysvinit заменены символическими ссылками на systemctl. Тем не менее, функциональность должна остаться неизменной.<br />
<br />
=== Чистая установка systemd ===<br />
<br />
Напоследок, возможно вовсе удалить initscripts и sysvinit и использовать только лишь systemd.<br />
<br />
# Следуйте инструкциям для смешанной установки systemd/initscripts.<br />
# Убедитесь, что более не имеется каких-либо демонов для запуска из массива DAEMONS в конфигурационном файле {{ic|/etc/rc.conf}} и оба файла {{ic|/etc/rc.local}} и {{ic|/etc/rc.local.shutdown}} пусты.<br />
# Удалите пакет initscripts из вашей системы.<br />
<br />
=== Дополнительная информация ===<br />
<br />
{{Tip|Если в параметрах ядра имеется значение {{ic|quiet}}, вероятно, вам стоит удалить его для нескольких первых загрузок systemd, чтобы видеть возникающие во время загрузке проблемы.}}<br />
<br />
== Родные системные файлы в systemd ==<br />
<br />
{{Note|Возможно, вам придется создать эти файлы. Установите для них права доступа 644 и владельца root:root.}}<br />
<br />
{{Pkg|systemd}} будет использовать {{ic|/etc/rc.conf}}, если эти конфигурационные файлы отсутствуют. Обратите внимание, что такое использование может быть только временным решением. Настоятельно рекомендуется для любой системы использовать конфигурационные файлы systemd.<br />
<br />
=== Имя компьютера (hostname) ===<br />
<br />
{{hc|/etc/hostname|<br />
myhostname}}<br />
<br />
=== Консоль и раскладка клавиатуры ===<br />
<br />
Файл {{ic|/etc/vconsole.conf}} устанавливает настройки виртуальной консоли: раскладку клавиатуры и консольный шрифт.<br />
<br />
{{hc|/etc/vconsole.conf|2=<br />
KEYMAP=ru<br />
FONT=cyr-sun16<br />
FONT_MAP=}}<br />
<br />
Для получения детальной информации обратитесь к разделам [[Fonts#Console_fonts|Console fonts]] and [[KEYMAP#Keyboard_layouts|Keymap]]. <br />
<br />
{{Note|{{ic|{{Pkg|systemd}}-194}} использует шрифт ядра и раскладку по умолчанию (т.е. американскую английскую). Нет более необходимости (для тех, кто использует данную раскладку) иметь в конфигурационном файле строки {{ic|1=KEYMAP=}} и {{ic|1=FONT=}} с пустыми значениями.}}<br />
<br />
=== Локаль ===<br />
Для получения подробной информации о вариантах настройки обратитесь к руководству {{ic|man locale.conf}}<br />
<br />
{{hc|/etc/locale.conf|2=<br />
LANG=ru_RU.UTF-8}}<br />
<br />
Дальнейшая информация содержится в статье [[Locale]].<br />
<br />
=== Временная зона ===<br />
<br />
Для получения подробной информации о вариантах настройки обратитесь к руководству {{ic|man 5 localtime}}.<br />
<br />
# ln -sf /usr/share/zoneinfo/America/Chicago /etc/localtime<br />
<br />
{{Note|Прежний конфигурационный файл {{ic|/etc/timezone}} объявлен устаревшим с выходом {{ic|systemd-190}} и может/должен быть удален.}}<br />
<br />
=== Аппаратные часы ===<br />
<br />
Systemd будет использовать UTC для аппаратных часов, именно такой вариант рекомендуется. Настройка зимнего/летнего времени - неблагодарное занятие. Если переход на зимнее/летнее время происходит в тот момент, когда ваш компьютер выключен, то при следующей загрузке ваши часы будут показывать ошибочное время ([http://www.cl.cam.ac.uk/~mgk25/mswish/ut-rtc.html здесь об этом чуть подробнее (англ.)]). Последние версии ядра устанавливают системное время из RTC (часов реального времени) непосредственно во время загрузки без использования {{ic|hwclock}}, при этом ядро всегда считает, что RTC выставлено по UTC. Это означает, что если RTC выставлено по местному времени (local time), системное время будет изначально установлено ошибочно и затем корректироваться вскоре после этого при каждой загрузке. Это является причиной некоторых досадных багов (идущие назад часы редко являются нужной вещью).<br />
<br />
Причиной, позволяющей RTC быть выставленными по местному времени, является двойная загрузка системы с Windows, ([http://blogs.msdn.com/b/oldnewthing/archive/2004/09/02/224672.aspx которая использует localtime (англ.)]). Windows воспринимает RTC, выставленные по UTC при помощи простого [[Time#UTC_in_Windows|исправления реестра]]. Если вы столкнетесь с подобными проблемами при двойной загрузке с Windows, вы можете установить аппаратные часы на использование местного времени.<br />
<br />
{{hc|/etc/adjtime|<br />
0.0 0.0 0.0<br />
0<br />
LOCAL}}<br />
<br />
Другие параметры по-прежнему нужны, но они игнорируются systemd.<br />
<br />
Обычно рекомендуется запускать [[NTP|демон Network Time Protocol]] для поддержания синхронизации аппаратных часов с системным временем.<br />
<br />
=== Подгружаемые модули ядра ===<br />
<br />
systemd использует конфигурационные файлы из директории {{ic|/etc/modules-load.d/}} для определения модулей ядра, подгружаемых во время загрузки системы. Каждый из конфигурационных файлов имеет наименование вида {{ic|/etc/modules-load.d/<program>.conf}} (где <program> - имя подгружаемого модуля). При этом игнорируются как пустые строки конфигурационных файлов, так и строки, у которых первым символом, отличным о пробела, является символ {{ic|#}} и {{ic|;}}. Например:<br />
<br />
{{hc|/etc/modules-load.d/virtio-net.conf|<br />
# Load virtio-net.ko at boot<br />
virtio-net}}<br />
<br />
Также смотрите раздел [[Modprobe#Options]].<br />
<br />
=== Черный список модулей ядра ===<br />
<br />
Добавление модулей в черный список работает также, как и в случае с {{Pkg|initscripts}}, поскольку в действительности эта функция выполняется таким инструментом, как {{Pkg|kmod}}. Обратитесь к разделу [[Kernel_modules#Blacklisting|Module Blacklisting]] за более подробной информацией.<br />
<br />
=== Временные файлы ===<br />
<br />
Systemd-tmpfiles использует конфигурационные файлы в директориях {{ic|/usr/lib/tmpfiles.d/}} и {{ic|/etc/tmpfiles.d/}} для определения действий с временными файлами и директориями (создание, очистка и удаление их), обычно расположенные в {{ic|/run}} or {{ic|/tmp}}. Каждый файл с настройками имеет название вида {{ic|/etc/tmpfiles.d/<program>.conf}}. Данные конфигурационные файлы имеют приоритет по сравнению с любыми файлами с таким же названием, расположенными в директории {{ic|/usr/lib/tmpfiles.d/}}.<br />
<br />
Временные файлы tmpfiles обычно поставляются вместе с сервис-файлами для создания директорийк. которые, как ожидается, будут использоваться определенными демонами. Например, демон [[Samba]] предполагает наличие директории {{ic|/var/run/samba}} с соответствующими правами доступа. В данном случае tmpfile выглядит следующим образом:<br />
<br />
{{hc|/usr/lib/tmpfiles.d/samba.conf|<br />
D /var/run/samba 0755 root root}}<br />
<br />
Тем не менее, tmpfiles также могут использоваться для записи значений в определенные файлы во врем загрузки. К примеру, если вы используете {{ic|/etc/rc.local}} для того, чтобы отключить пробуждение системы USB-устройствами, при помощи команды {{ic|echo USBE > /proc/acpi/wakeup}}, вы можете вместо этого использовать следующий tmpfile:<br />
<br />
{{hc|/etc/tmpfiles.d/disable-usb-wake.conf|<br />
w /proc/acpi/wakeup - - - - USBE}}<br />
<br />
Метод с использованием tmpfiles в данном случае рекомендуется, поскольку systemd в действительности не поддерживает {{ic|/etc/rc.local}}.<br />
<br />
Обратитесь к руководству {{ic|man tmpfiles.d}} за более подробной информацией.<br />
<br />
=== Монтирование удаленных файловых систем ===<br />
<br />
<br />
Systemd позволяет в автоматическом режиме добиться, что удаленные файловые системы наподобие [[NFS]] и [[Samba]] подключаются после поднятия сети. are only started after the network has been set up. Поэтому монтирование удаленных файловых систем, прописанных в {{ic|/etc/fstab}} должно работать "из коробки".<br />
<br />
Однако, по желанию вы можете использовать [[#Automount|автомонтирование]] для монирования удаленных файловых систем, чтобы монтирование данных систем происходило только по мере доступа к ним. Кроме того, вы можете использовать параметр {{ic|1=x-systemd.device-timeout=#}} в файле {{ic|/etc/fstab}} для определения таймаута в том случае, кода сетевые ресурсы оказываются недоступны.<br />
<br />
Обратитесь к руководству {{ic|man systemd.mount}} для получения более подробной информации.<br />
<br />
=== Управлением питанием ACPI при помощи systemd ===<br />
<br />
Systemd обрабатывает некоторые события, связанные с ACPI, что настраивается при помощи параметров в конфигурационном файле {{ic|/etc/systemd/logind.conf}}:<br />
<br />
* {{ic|HandlePowerKey}}: определяет действия системы при нажатии кнопки питания (вкл./выкл.).<br />
* {{ic|HandleSuspendKey}}: определяет действия системы при нажатии кнопки спящего режима.<br />
* {{ic|HandleHibernateKey}}: определяет действия системы при нажатии кнопки ждущего режимаs.<br />
* {{ic|HandleLidSwitch}}: определяет действия системы при закрытии крышки компьютера.<br />
<br />
Для соответствующих действий могут использоваться значения {{ic|ignore}} (пропустить), {{ic|poweroff}} (отключить питание), {{ic|reboot}} (перезагрузить), {{ic|halt}} (выключить), {{ic|suspend}} (включить спящий режим), {{ic|hibernate}} (включить ждущий режим) или {{ic|kexec}} (системный вызов позволяющий оперативно переключиться в другое ядро).<br />
<br />
Если данные параметры не определены, по умолчанию systemd будет использовать следующие: {{ic|1=HandlePowerKey=poweroff}}, {{ic|1=HandleSuspendKey=suspend}}, {{ic|1=HandleHibernateKey=hibernate}}, и {{ic|1=HandleLidSwitch=suspend}}.<br />
<br />
В системах без графического интерфейса или использующих простые оконные менеджеры наподобие like [[i3]] или [[awesome]], так можно заменить демон [[acpid]], который обычно используется для реагирования на данные события ACPI.<br />
<br />
В текущей версии systemd параметры {{ic|Handle}} будут применены ко всей системе, если только они не "подавляются (временно отключены) другой программой, такой, как менеджер питания данного окружения рабочего стола. Если эти ограничений нет, вы можете столкнуться с ситуацией, когда systemd приводит вашу систему в спящий режим, а затем, когда система пробуждается менеджером управлением питания, снова "усыпляет" ее.<br />
<br />
{{Note|В настоящее время менеджер управления питанием новейшей версии в [[KDE]] является единственным, который использует такие команды "подавления". До тех пор, пока их не будут применять другие менеджеры, вам надо выставить в параметрах {{ic|Handle}} значение {{ic|ignore}}, если вы хотите, чтобы события ACPI обрабатывались в случае использования [[GNOME]], [[Xfce]], [[acpid]] или других программ. Но на подходе новые версии, которые включат данную функциональность.}}<br />
<br />
=== Хуки спящего режима ===<br />
<br />
Systemd в своих командах {{ic|systemctl suspend}} или {{ic|systemctl hibernate}} не использует [[pm-utils]] для "усыпления" машины, поэтому хуки [[pm-utils]], включая любые [[Pm-utils#Creating_your_own_hooks|пользовательские хуки]] не будут работать. Тем не менее, systemd предоставляет схожий механизм запуска пользовательских скриптов для данных событий. Systemd запускает все исполняемые файлы в директории {{ic|/usr/lib/systemd/system-sleep/}} и передает каждому из них два аргумента:<br />
<br />
* Аргумент 1: или {{ic|pre}}, или {{ic|post}}, в зависимости от которых машина либо "уснет", либо будет "пробуждена";<br />
* Аргумент 2: или {{ic|suspend}}, или {{ic|hibernate}}, в зависимости от того, что было вызвано.<br />
<br />
В отличие от [[pm-utils]], systemd запустит данные скрипты одновременно, а не один после другого.<br />
<br />
Вывод вашего скрипта будет записан сервисом {{ic|systemd-suspend.service}} или {{ic|systemd-hibernate.service}}, поэтому вы вы можете увидеть данный выход в [[Systemd (Русский)#Журнал systemd|журнале]].<br />
<br />
Обратите внимание, что вместо использования скриптов вы также можете использовать специальные целевые юниты - {{ic|sleep.target}}, {{ic|suspend.target}} или {{ic|hibernate.target}} для того, чтобы подключить к другим юнитам возможности перехода в спящий режима.<br />
<br />
Обратитесь к руководствам {{ic|man systemd.special}} и {{ic|man systemd-sleep}} для получения дальнейшей информации.<br />
<br />
==== Пример ====<br />
<br />
{{hc|/usr/lib/systemd/system-sleep/example.sh|<nowiki><br />
#!/bin/sh<br />
case $1/$2 in<br />
pre/*)<br />
echo "Going to $2..."<br />
;;<br />
post/*)<br />
echo "Waking up from $2..."<br />
;;<br />
esac</nowiki>}}<br />
<br />
=== Ждущий режим ===<br />
<br />
Смотрите [[systemd#Hibernation|английскую версию вики]].<br />
<br />
=== Юнит ===<br />
<br />
Юнит (англ. unit) - конфигурационный файл, содержащий информацию о сервисе (службе), сокете, устройстве, точке монирования/автомонирования, файле подкачке или разделе, определяемом для загрузки уровне запуска, пути в файловой системе или таймере, которые контролируются и управляются при помощи systemd. Синтаксис юнитов навеян спецификацией .desktop-файлов (XDG Desktop Entry Specification), которая, в свою очередь, вдохновлялась .ini-файлами от Microsoft Windows. Обратитесь к руководству {{ic|man systemd.unit}} для получения дальнейшей информации.<br />
<br />
== Команды systemd ==<br />
<br />
*{{ic|systemctl}}: используется для наблюдения и контроля за состоянием менеджера системы и сервисов systemd.<br />
*{{ic|systemd-cgls}}: рекурсивно показывает содержимое иерархии избранной контрольной группы (cgroup) Linux в виде дерева.<br />
*{{ic|systemadm}}: графическая оболочка для менеджера системы и сервисов systemd , позволяющая наблюдать и контролировать systemd (доступна в виде пакета {{AUR|systemd-ui-git}} из [[AUR]]).<br />
<br />
Обратитесь к страницам руководств для получения дальнейшей информации. <br />
<br />
{{Tip|Вы можете использовать приведенные ниже команды {{ic|systemctl}} с ключом {{ic|-H <user>@<host>}} для того, чтобы контролировать systemd на удаленной машине. В этом случае для соединения с удаленным процессом systemd будет использовать [[SSH]].}}<br />
<br />
=== Анализ состояния системы ===<br />
<br />
Список запущенных юнитов:<br />
<br />
$ systemctl<br />
<br />
или:<br />
<br />
$ systemctl list-units<br />
<br />
Список юнитов, попытка запуска которых завершилась неудачей:<br />
<br />
$ systemctl --failed<br />
<br />
Доступные юниты можно посмотреть в директориях {{ic|/usr/lib/systemd/system/}} и {{ic|/etc/systemd/system/}} (последняя директория имеет приоритет). Вы можете увидеть список установленных юнитов командой:<br />
<br />
$ systemctl list-unit-files<br />
<br />
=== Использование юнитов ===<br />
<br />
Юниты могут быть сервисами ({{ic|.service}}), точками монтирования ({{ic|.mount}}) или сокетами ({{ic|.sockets}}). При использовании команды {{ic|systemctl}} необходимо всегда указывать полное имя файла, включая расширение. Однако, есть несколько сокращений при определении юнита следующими командами{{ic|systemctl}}:<br />
<br />
* Ели вы не указали суффикс, systemctl предполагает, что это {{ic|.service}}. Например, {{ic|netcfg}} и {{ic|netcfg.service}} будут трактоваться одинаково.<br />
* Точки монтирования будут автоматически преобразованы в соответствующий юнит {{ic|.mount}}. Например, указание {{ic|/home}} равнозначно {{ic|home.mount}}.<br />
* Аналогично точкам монтирования, имена устройств автоматически преобразуются в соответствующий юнит {{ic|.device}}, поэтому указание {{ic|/dev/sda2}} полностью соответствует юниту {{ic|dev-sda2.device}}.<br />
<br />
Обратитесь к руководству {{ic|man systemd.unit}} для получения детальной информации.<br />
<br />
Незамедлительно запустить юнит:<br />
<br />
# systemctl start <unit><br />
<br />
Незамедлительно остановить юнит:<br />
<br />
# systemctl stop <unit><br />
<br />
Перезапустить юнит:<br />
<br />
# systemctl restart <unit><br />
<br />
Запросить у юнита перезагрузку его настроек:<br />
<br />
# systemctl reload <unit><br />
<br />
Показать статус юнита, а также запущен он или нет:<br />
<br />
$ systemctl status <unit><br />
<br />
Проверить включение юнита (т.е. разрешен ли юниту запуск при загрузке системы):<br />
<br />
$ systemctl is-enabled <unit><br />
<br />
Включить юнит (разрешить юниту запуск при загрузке системы):<br />
<br />
# systemctl enable <unit><br />
<br />
{{Note| Если сервис-файлы не имеют раздела {{ic|Install}}, это обычно означает, что данные сервисы вызываются автоматически другими сервисами. Но если вам требуется установить их вручную, используйте следующую команду, заменив {{ic|foo}} именем вашего сервиса.<br />
# ln -s /usr/lib/systemd/system/''foo''.service /etc/systemd/system/graphical.target.wants/<br />
}}<br />
<br />
Выключить юнит (запретить юниту запуск при загрузке системы):<br />
<br />
# systemctl disable <unit>}}<br />
<br />
Показать страницу помощи для юнита (необходима поддержка этой функции в указанном файле юнита):<br />
<br />
$ systemctl help <unit><br />
<br />
=== Управление питанием ===<br />
<br />
Если у вас локальная пользовательская сессия {{ic|systemd-logind}} или [[ConsoleKit]] и нет других активных сессий, приведенные ниже команды сработают и без привилегий суперпользователя root. В противном случае (например, вследствие того, что пользователь залогинился в tty), systemd автоматически запросит у вас пароль root (также обратитесь к разделу [[#Замена_ConsoleKit_на_systemd-logind|замена ConsoleKit на systemd-logind]]).<br />
<br />
Завершить работу и перезагрузить систему:<br />
<br />
$ systemctl reboot<br />
<br />
Завершить работу и выключить компьютер:<br />
<br />
$ systemctl halt<br />
<br />
Перевести систему в спящий режим:<br />
<br />
$ systemctl suspend<br />
<br />
Перевести систему в ждущий режим:<br />
<br />
$ systemctl hibernate<br />
<br />
== Уровни запуска/target-юниты ==<br />
<br />
Уровни запуска (по-английски уровень запуска - runlevel) для systemd являются устаревшей концепцией. Systemd использует ''target-юниты'' (буквально ''целевые юниты''), которые выполняют ту же задачу, что и уровни запуска, но действуют немного по-другому. Каждый ''target'' поименован (т.е. имеет собственное имя, а не номер) и, как предполагается, предназначен для использования в конкретных целях; возможно иметь в одно и то же время активными несколько таких целевых юнитов. Некоторые ''target-юниты'' реализованы так, что наследуют все сервисы других ''target-юнитов'' и добавляют к ним свои сервисы. В systemd имеются также ''target-юниты'', которые имитируют общие уровни запуска SystemVinit, поэтому вы можете переключаться между целевыми юнитами с использованием привычной команды {{ic|telinit RUNLEVEL}}. <br />
<br />
=== Получение информации о текущем уровне запуска/target-юнитах ===<br />
<br />
При использовании systemd для этого предназначена следующая команда (заменяющая {{ic|runlevel}}):<br />
<br />
# systemctl list-units --type=target<br />
<br />
=== Создание пользовательского target-юнита ===<br />
<br />
Уровни, которым расписаны конкретные цели на установке дистрибутива Fedora по умолчанию - 0, 1, 3, 5 и 6; есть маппинг 1:1 с помощью конкретного ''target-юнита'' systemd. К сожалению, не существует хорошего способа сделать то же самое для определяемых пользователем уровней, таких, как 2 и 4. Использование их предполагает, что вы создаете новый именованный ''target-юнит''systemd наподобие {{ic|/etc/systemd/system/<your target>}}, который берет за основу один из существующих уровней запуска (взгляните, например, на {{ic|/usr/lib/systemd/system/graphical.target}}), создаете также директорию {{ic|/etc/systemd/system/<your target>.wants}} и затем символические ссылки на те дополнительные сервисы из директории {{ic|/usr/lib/systemd/system/}}, которые вы хотите включить при загрузке.<br />
<br />
== Таблица уровней запуска и их аналогов в Systemd ==<br />
<br />
{| class="wikitable" border="1" cellpadding="5" cellspacing="0"<br />
! Уровнень запуска SysV !! Systemd Target !! Примечание<br />
|-<br />
| 0 || runlevel0.target, poweroff.target || Выключить систему.<br />
|-<br />
| 1, s, single || runlevel1.target, rescue.target || Однопользовательский уровень запуска.<br />
|-<br />
| 2, 4 || runlevel2.target, runlevel4.target, multi-user.target || Уровень запуска, определенный пользователем/специфичный для узла. По умолчанию соответствует уровню запуска 3.<br />
|-<br />
| 3 || runlevel3.target, multi-user.target || Многопользовательский режим без графики. Пользователи, как правило, входят с помощью множества консолей или через сеть.<br />
|-<br />
| 5 || runlevel5.target, graphical.target || Многопользовательский режим с графикой. Обычно эквивалентен запуску всех сервисов уровня 3 и графическому менеджеру входа.<br />
|-<br />
| 6 || runlevel6.target, reboot.target || Перезагрузка.<br />
|-<br />
| emergency || emergency.target || Аварийная оболочка.<br />
|-<br />
|}<br />
<br />
=== Изменение текущего уровня запуска ===<br />
<br />
В systemd уровни запуска доступны посредством "target-юнитов". Вы можете изменить их командой:<br />
<br />
# systemctl isolate graphical.target<br />
<br />
Данная команда изменит только лишь текущий уровень запуска и не повлияет на следующую загрузку системы. Она соответствует командам наподобие {{ic|telinit 3}} или {{ic|telinit 5}} для Sysvinit.<br />
<br />
=== Изменение уровня запуска по умолчанию/target-юнита для загрузки ===<br />
<br />
Стандартный target-юнит - {{ic|default.target}}, который по умолчанию является псевдонимом юнита {{ic|graphical.target}} (примерно соответствующего прежнему уровню выполнения 5). Для изменения уровня выполнения, выполняемого при загрузке по умолчанию, добавьте следующий дополнительный [[kernel parameters|параметр ядра]] в вашем загрузчике:<br />
<br />
{{Tip|Расширение {{ic|.target}} можно опустить.}}<br />
<br />
* {{ic|1=systemd.unit=multi-user.target}} (что примерно соответствует прежнему уровню выполнения 3),<br />
* {{ic|1=systemd.unit=rescue.target}} (что примерно соответствует прежнему уровню выполнения 1).<br />
<br />
Другой путь заключается в том, чтобы оставить загрузчик без изменений и изменить целевой юнит по умолчанию - {{ic|default.target}}, что достигается командой {{ic|systemctl}}:<br />
<br />
# systemctl enable multi-user.target<br />
<br />
Эффект от применения данной команды выводится через {{ic|systemctl}}; символическая ссылка на новый target-юнит по умолчанию создается в директории {{ic|/etc/systemd/system/default.target}}. Это сработает в том случае (и только в том случае), если имеется следующая секция:<br />
<br />
[Install]<br />
Alias=default.target<br />
<br />
в конфигурационном файле target-юнита. В настоящий момент как {{ic|multi-user.target}}, так и {{ic|graphical.target}} оба имеют данную секцию.<br />
<br />
== Запуск окружения рабочего стола из systemd ==<br />
<br />
=== Использование экранного менеджера ===<br />
<br />
Чтобы ключить графический вход в систему, запустите выбранный вами демон [[Display Manager (Русский)|экранного менеджера]] (например, [[KDM]]). В настоящий момент доступны сервис-файлы для [[GDM]], [[KDM]], [[SLiM]], [[XDM]], [[LXDM]] и [[LightDM]].<br />
<br />
# systemctl enable kdm.service<br />
<br />
Эта команда должна работать "из коробки". Если вдруг она не сработала, то, возможно, у вас {{ic|default.target}} установлен вручную или остался с прежней установки:<br />
<br />
{{hc|# ls -l /etc/systemd/system/default.target|<br />
/etc/systemd/system/default.target -> /usr/lib/systemd/system/graphical.target}}<br />
<br />
Просто удалите символическую ссылку и systemd будет использовать целевой юнит по умолчанию - {{ic|default.target}} (т.е. {{ic|graphical.target}}).<br />
<br />
# rm /etc/systemd/system/default.target<br />
<br />
=== Запуск через файл сервиса ===<br />
<br />
<br />
{{Note|При использовании данного метода для вашего пользователя не будет создана PAM-сессия, поэтому ConsoleKit (предоставляющий допуск к выключению/перезагрузке системы, аудиоустройствам и т.д.) не будет корректно работать. Рекомендуемый путь описан в разделах: [[#Замена_ConsoleKit_на_systemd-logind|Замена ConsoleKit на systemd-logind]] и [[Automatic_login_to_virtual_console#With_systemd|Автоматический вход в виртуальную консоль с помощью systemd]].}}<br />
<br />
если вам нужен простой путь запуска X напрямую, без использования экранного менеджера входа в систему, вы можете создать сервис-файл наподобие приведенного ниже:<br />
<br />
{{hc|/etc/systemd/system/graphical.target.wants/xinit.service|2=<br />
[Unit]<br />
Description=Direct login to X<br />
After=systemd-user-sessions.service<br />
<br />
[Service]<br />
ExecStart=/bin/su <username> -l -c "/bin/bash --login -c xinit"<br />
<br />
[Install]<br />
WantedBy=graphical.target}}<br />
<br />
== Журнал systemd ==<br />
<br />
С версии 38 systemd имеет собственную систему ведения логов - журнал (journal).<br />
<br />
По умолчанию, более не требуется запуск демона syslog. Для чтения логов используйте команду:<br />
<br />
# journalctl<br />
<br />
Журнал записывается в директорию {{ic|/run/systemd/journal}}, поэтому логи будут потеряны при перезагрузке. Для сохранения логов создайте директорию {{ic|/var/log/journal/}}:<br />
<br />
# mkdir /var/log/journal/<br />
<br />
=== Фильтрация вывода ===<br />
<br />
{{ic|journalctl}} позволяет фильтровать вывод по особым полям.<br />
<br />
Примеры:<br />
<br />
Показать все сообщения определенной программы:<br />
<br />
# journalctl /usr/lib/systemd/systemd<br />
<br />
Показать все сообщения определенного процесса:<br />
<br />
# journalctl _PID=1<br />
<br />
Показать все сообщения определенного юнита:<br />
<br />
# journalctl _SYSTEMD_UNIT=netcfg.service<br />
<br />
Обратитесь к {{ic|man journalctl}} и {{ic|systemd.journal-fields}} для получения детальной информации.<br />
<br />
=== Ограничение размера журнала ===<br />
<br />
Если журнал сохраняется при перезагрузке, размер его по умолчанию ограничен значением в 10% от объема соответствующей файловой системы. Например, для директории {{ic|/var/log/journal}}, расположенной на корневом разделе в 50 Гбайт, максимальный размер журналируемых данных составит до 5 Гбайт. Максимальный объем постоянного журнала можно контролировать при помощи значения {{ic|SystemMaxUse}} в конфигурационном файле {{ic|/etc/systemd/journald.conf}}, поэтому для ограничения его объемом в 50 Mбайт раскомментируйте и отредактируйте соответствующую строку:<br />
<br />
SystemMaxUse=50M<br />
<br />
Обратитесь к {{ic|man journald.conf}} для получения дальнейшей информации.<br />
<br />
=== Journald в связке с классическим демоном syslog ===<br />
<br />
Совместимость с классической реализацией syslog обеспечивается сокетом {{ic|/run/systemd/journal/syslog}}, в который перенаправляются все сообщения. Чтобы дать созможность демону syslog работать вместе с журналом systemd, следует привязать данный демон к указанному сокету вместо {{ic|/dev/log}} ([http://lwn.net/Articles/474968/ официальное сообщение]). В случае с syslog-ng, измените раздел {{ic|source src}} в конфигурационном файле {{ic|/etc/syslog-ng/syslog-ng.conf}} по следующем образцу:<br />
<br />
source src {<br />
unix-dgram("/run/systemd/journal/syslog");<br />
internal();<br />
file("/proc/kmsg");<br />
};<br />
<br />
и включите syslog-ng:<br />
<br />
# systemctl enable syslog-ng.service<br />
<br />
== Сеть ==<br />
<br />
=== Динамическое подключение (DHCP) с использованием dhcpcd ===<br />
<br />
Если хотите использовать только DHCP для своего соединения Ethernet, вы можете воспользоваться сервисом {{ic|dhcpcd@.service}} (который поставляется пакетом {{Pkg|dhcpcd}}).<br />
<br />
Чтобы подключить DHCP для {{ic|eth0}}, просто выполните команду:<br />
<br />
# systemctl start dhcpcd@eth0.service<br />
<br />
Вы можете включить этот сервис, и он будет автоматически запускаться при загрузке. Это делается командой:<br />
<br />
# systemctl enable dhcpcd@eth0.service<br />
<br />
Иногда сервис dhcpd запускается до загрузки модуля вашей сетевой карты ({{bug|30235}}), в этом случае вручную добавьте вашу сетевую карту в конфигурационный файл {{ic|/etc/modules-load.d/*.conf}}. Например, для карты Realtek необходима загрузка модуля {{ic|r8169}}, поэтому создайте такой конфигурационный файл:<br />
<br />
{{hc|/etc/modules-load.d/realtek.conf|2=<br />
r8169}}<br />
<br />
=== Другие конфигурации ===<br />
<br />
Для статического подключения, беспроводной сети или сложной конфигурации сети наподобие сетевого моста, вы можете использовать [[Netcfg#systemd_support|netcfg]] или [[NetworkManager#Enable_NetworkManager_under_Native_systemd_system|NetworkManager]], для обеих этих инструментов управления сетью имеются сервис-файлы для systemd.<br />
<br />
{{Note|Если вы хотите использовать netcfg, networkmanager или другие программы управления сетью, вам не надо в этом случае запускать или включать сервис dhcpcd как показано в предыдущем параграфе.}}<br />
<br />
==Интеграция с Arch==<br />
<br />
=== Эмуляция initscripts ===<br />
<br />
Интеграция с классической конфигурацией Arch Linux обеспечивается пакетом {{Pkg|initscripts}}. Данная интеграция рассматривается как просто переходная мера для легкой миграции пользователей на systemd.<br />
<br />
{{Note|Файл {{ic|/etc/inittab}} вообще не используется.}}<br />
<br />
Если вы отключали использование сочетания клавиш для перезагрузки системы {{keypress|Ctrl+Alt+Del}} в файле {{ic|/etc/inittab}}, теперь вам надо заново сделать это для systemd командой {{ic|systemctl mask ctrl-alt-del.target}}, выполняемой от суперпользователя root.<br />
<br />
==== rc.conf ====<br />
<br />
Некоторые переменные в прежнем основном конфигурационном файле {{ic|/etc/rc.conf}} предположительно не будут корректно работать. Для чистой установки systemd setup рекомендуется использовать [[Systemd (Русский)#Родные системные файлы в systemd|родные системные файлы]], которые имеют приоритет над установками в {{ic|/etc/rc.conf}}.<br />
<br />
Поддерживаются (но не рекомендуются):<br />
<br />
* {{ic|CONSOLEFONT}}<br />
* {{ic|CONSOLEMAP}}<br />
* {{ic|DAEMONS}}<br />
* {{ic|HOSTNAME}}<br />
* {{ic|KEYMAP}}<br />
* {{ic|LOCALE}}<br />
<br />
Не поддерживаются:<br />
<br />
* {{ic|HARDWARECLOCK}}: обратитесь к разделу [[Systemd (Русский)#Аппаратные часы|Аппаратные часы]].<br />
* {{ic|MODULES}}: используйте взамен конфигурационные файлы в директории {{ic|modules-load.d}}.<br />
* {{ic|TIMEZONE}}: вручную сделайте символическую ссылку {{ic|/etc/localtime}} на файл вашей временной зоны.<br />
* {{ic|USELVM}}: взамен используйте {{ic|lvm.service}}, поставляемый пакетом {{pkg|lvm2}}.<br />
* {{ic|USECOLOR}}<br />
<br />
=== Полный переход к конфигурационным файлам systemd ===<br />
<br />
{{Note|Этот метод является предпочтительным, при его использовании система более не зависит от централизованной настройки в файле {{ic|rc.conf}}, а использует родные системные файлы systemd.}}<br />
<br />
Последуйте настройке конфигурационных файлов как показано в разделе [[Systemd (Русский)#Родные системные файлы в systemd|Родные системные файлы в systemd]]. Каждый файл заменяет одну из секций в {{ic|/etc/rc.conf}}, как показано в данной таблице:<br />
<br />
{| class="wikitable"<br />
|-<br />
! scope="col"| Настройка<br />
! scope="col"| Конфигурационный файл (файлы)<br />
! scope="col"| Устаревшая секция [https://projects.archlinux.org/initscripts.git/tree/rc.conf?id=97f0cd6751e8d22c14d7492cdc2186cf41157ba6 rc.conf]<br />
|-<br />
| align="center"|Имя компьютера (Hostname)<br />
| align="left"|{{ic|/etc/hostname}}<br />
{{ic|/etc/hosts}}<br />
| align="center"|{{ic|NETWORKING}}<br />
|-<br />
| align="center"|Консоль и раскладка клавиатуры<br />
| align="left"|{{ic|/etc/vconsole.conf}}<br />
| align="center"|{{ic|LOCALIZATION}}<br />
|-<br />
| align="center"|Локаль<br />
| align="left"|{{ic|/etc/locale.conf}}<br />
{{ic|/etc/locale.gen}}<br />
| align="center"|{{ic|LOCALIZATION}}<br />
|-<br />
| align="center"|Временная зона<br />
| align="left"|{{ic|/etc/localtime}}<br />
| align="center"|{{ic|LOCALIZATION}}<br />
|-<br />
| align="center"|Аппаратные часы<br />
| align="left"|{{ic|/etc/adjtime}}<br />
| align="center"|{{ic|LOCALIZATION}}<br />
|-<br />
| align="center"|Модули ядра<br />
| align="left"|{{ic|/etc/modules-load.d/}}<br />
| align="center"|{{ic|HARDWARE}}<br />
|}<br />
<br />
Для целей совместимости секция {{ic|DAEMONS}} в {{ic|/etc/rc.conf}} еще может использоваться вместе с systemd для запуска сервисов при загрузке системы, даже при "чистой" установке менеджера служб systemd. Взамен этого вы можете полностью удалить файл {{ic|/etc/rc.conf}} и включить сервисы в systemd. Для каждого сервиса с именем {{ic|<service_name>}} в массиве {{ic|DAEMONS}} из файла {{ic|/etc/rc.conf}} выполните команду:<br />
<br />
# systemctl enable <service_name>.service<br />
<br />
{{Tip|Для получения списка обычно используемых демонов с их эквивалентами в initscripts и systemd, обратитесь к [[Daemon#List_of_Daemons|данной таблице]].}}<br />
<br />
Если сервис-файл {{ic|<service_name>.service}} отсутствует:<br />
<br />
* сервис-файл может быть недоступен для systemd. В этом случае вам нужно сохранить конфигурационный файл {{ic|rc.conf}} для запуска этих сервисов во время загрузки системы.<br />
* systemd может называть сервисы другими именами, например, {{ic|cronie.service}} заменяет демон {{ic|crond}}; {{ic|alsa-store.service}} и {{ic|alsa-restore.service}} заменяют демон {{ic|alsa}}. Другой важный пример - демон {{ic|network}}, которого сменил целый набор сервис-файлов (обратитесь к разделу [[#Сеть]] для получения дальнейшей информации.)<br />
<br />
{{Tip|Вы можете заглянуть вовнутрь пакета, содержащего стартовые скрипты демона, чтобы узнать имена его сервис-файла. К примеру:<br />
$ pacman -Ql cronie<br />
[...]<br />
cronie /etc/rc.d/crond #демон initscript, указываемый в массивеe DAEMONS (не используется при "чистой" настройке systemd)<br />
[...]<br />
cronie /usr/lib/systemd/system/cronie.service #Соответствующий сервис systemd<br />
[...]<br />
}}<br />
<br />
== Writing custom .service files ==<br />
<br />
=== Handling dependencies ===<br />
<br />
With systemd, dependencies can be resolved by designing the unit files correctly. The most typical case is that the unit {{ic|A}} requires the unit {{ic|B}} to be running before {{ic|A}} is started. In that case add {{ic|1=Requires=B}} and {{ic|1=After=B}} to the {{ic|[Unit]}} section of {{ic|A}}. If the dependency is optional, add {{ic|1=Wants=B}} and {{ic|1=After=B}} instead. Note that {{ic|1=Wants=}} and {{ic|1=Requires=}} do not imply {{ic|1=After=}}, meaning that if {{ic|1=After=}} is not specified, the two units will be started in parallel.<br />
<br />
Dependencies are typically placed on services and not on targets. For example, {{ic|network.target}} is pulled in by whatever service configures your network interfaces, therefore ordering your custom unit after it is sufficient since {{ic|network.target}} is started anyway.<br />
<br />
=== Type ===<br />
<br />
There are several different start-up types to consider when writing a custom service file. This is set with the {{ic|1=Type=}} parameter in the {{ic|[Service]}} section. See {{ic|man systemd.service}} for a more detailed explanation.<br />
<br />
* {{ic|1=Type=simple}}: systemd considers the service to be started up immediately. The process must not fork. Do not use this type if other services need to be ordered on this service, unless it is socket activated.<br />
* {{ic|1=Type=forking}}: systemd considers the service started up once the process forks and the parent has exited. For classic daemons use this type unless you know that it is not necessary. You should specify {{ic|1=PIDFile=}} as well so systemd can keep track of the main process.<br />
* {{ic|1=Type=oneshot}}: This is useful for scripts that do a single job and then exit. You may want to set {{ic|1=RemainAfterExit=}} as well so that systemd still considers the service as active after the process has exited.<br />
* {{ic|1=Type=notify}}: Identical to {{ic|1=Type=simple}}, but with the stipulation that the daemon will send a signal to systemd when it is ready. The reference implementation for this notification is provided by {{ic|libsystemd-daemon.so}}.<br />
* {{ic|1=Type=dbus}}: The service is considered ready when the specified {{ic|BusName}} appears on DBus's system bus.<br />
<br />
=== Replacing provided unit files ===<br />
<br />
The unit files in {{ic|/etc/systemd/system/}} take precedence over the ones in {{ic|/usr/lib/systemd/system/}}.<br />
To make your own version of a unit (which will not be destroyed by an upgrade), copy the old unit file from {{ic|/usr/lib/}} to {{ic|/etc/}} and make your changes there. Alternatively you can use {{ic|.include}} to parse an existing service file and then override or add new options. For example, if you simply want to add an additional dependency to a service file, you may use:<br />
<br />
{{hc|/etc/systemd/system/<service-name>.service|2=<br />
.include /usr/lib/systemd/system/<service-name>.service<br />
<br />
[Unit]<br />
Requires=<new dependency><br />
After=<new dependency>}}<br />
<br />
Then run the following for your changes to take effect:<br />
<br />
# systemctl reenable <unit><br />
# systemctl restart <unit><br />
<br />
{{Tip|You can use {{ic|systemd-delta}} to see which unit files have been overridden and what exactly has been changed.}}<br />
<br />
=== Syntax highlighting for systemd unit files within Vim ===<br />
<br />
Syntax highlighting for systemd unit files within [[Vim]] can be enabled by installing {{AUR|vim-systemd}} from the [[Arch User Repository|AUR]].<br />
<br />
== Оптимизация ==<br />
<br />
=== systemd-analyze ===<br />
<br />
Systemd provides a tool called {{ic|systemd-analyze}} that allows you to analyze your boot process so you can see which unit files are causing your boot process to slow down. You can then optimize your system accordingly. You have to install {{Pkg|python2-dbus}} and {{Pkg|python2-cairo}} to use it.<br />
<br />
To see how much time was spent in kernel-/userspace on boot, simply use:<br />
<br />
$ systemd-analyze<br />
<br />
{{Tip|To see how much time was spent in the initramfs, add the {{ic|timestamp}} hook to your {{ic|HOOKS}} array in {{ic|/etc/[[mkinitcpio]].conf}} and as root, rebuild your initramfs with {{ic|mkinitcpio -p linux}} }}<br />
<br />
To list the started unit files, sorted by the time each of them took to start up:<br />
<br />
$ systemd-analyze blame<br />
<br />
You can also create a SVG file which describes your boot process graphically, similiar to [[Bootchart]]:<br />
<br />
$ systemd-analyze plot > plot.svg<br />
<br />
==== Enabling bootchart in conjunction with systemd ====<br />
<br />
You can use a version of bootchart to visualize the boot sequence.<br />
Since you are not able to put a second init into the kernel command line you won't be able to use any of the standard bootchart setups. However the {{AUR|bootchart2}} package from [[AUR]] comes with an undocumented systemd service. After you've installed bootchart2 do:<br />
<br />
# systemctl enable bootchart.service<br />
<br />
Read the [https://github.com/mmeeks/bootchart bootchart documentation] for further details on using this version of bootchart.<br />
<br />
=== Shell Shortcuts ===<br />
<br />
systemd daemon management requires a bit more text entry to accomplish tasks such as start, stopped, enabling, checking status, etc. The following functions can be added to one's {{ic|~/.bashrc}} file to help streamline interactions with systemd and to improve the overall experience.<br />
<br />
{{bc|# simplified systemd command, for instance "sudo systemctl stop xxx.service" - > "0.stop xxx"<br />
if ! systemd-notify --booted;<br />
then # for not systemd<br />
0.start() {<br />
sudo rc.d start $1<br />
}<br />
<br />
0.restart() {<br />
sudo rc.d restart $1<br />
}<br />
<br />
0.stop() {<br />
sudo rc.d stop $1<br />
}<br />
else<br />
# start systemd service<br />
0.start() {<br />
sudo systemctl start $1.service<br />
}<br />
# restart systemd service<br />
0.restart() {<br />
sudo systemctl restart $1.service<br />
}<br />
# stop systemd service<br />
0.stop() {<br />
sudo systemctl stop $1.service<br />
}<br />
# enable systemd service<br />
0.enable() {<br />
sudo systemctl enable $1.service<br />
}<br />
# disable a systemd service<br />
0.disable() {<br />
sudo systemctl disable $1.service<br />
}<br />
# show the status of a service<br />
0.status() {<br />
systemctl status $1.service<br />
}<br />
# reload a service configuration<br />
0.reload() {<br />
sudo systemctl reload $1.service<br />
}<br />
# list all running service<br />
0.list() {<br />
systemctl<br />
}<br />
# list all failed service<br />
0.failed () {<br />
systemctl --failed<br />
}<br />
# list all systemd available unit files<br />
0.list-files() {<br />
systemctl list-unit-files<br />
}<br />
# check the log<br />
0.log() {<br />
sudo journalctl<br />
}<br />
# show wants<br />
0.wants() {<br />
systemctl show -p "Wants" $1.target<br />
}<br />
# analyze the system<br />
0.analyze() {<br />
systemd-analyze $1<br />
}<br />
fi<br />
}}<br />
<br />
=== Less output ===<br />
<br />
Change {{ic|verbose}} to {{ic|quiet}} on the bootloader's kernel line. For some systems, particularly those with an SSD, the slow performance of the TTY is actually a bottleneck, and so less output means faster booting.<br />
<br />
=== Early start ===<br />
<br />
One central feature of systemd is [[D-Bus]] and socket activation, this causes services to be started when they are first accessed, and is generally a good thing. However, if you know that a service (like [[ConsoleKit]]) will always be started during boot, then the overall boot time might be reduced by starting it as early as possible. This can be achieved (if the service file is set up for it, which in most cases it is) by issuing:<br />
<br />
# systemctl enable console-kit-daemon.service<br />
<br />
This will cause systemd to start ConsoleKit as soon as possible, without causing races with the socket or D-Bus activation.<br />
<br />
=== Automount ===<br />
<br />
The default setup will fsck and mount all filesystems before starting most daemons and services. If you have a large {{ic|/home}} partition, it might be better to allow services that do not depend on {{ic|/home}} to start while {{ic|/home}} is being fsck'ed. This can be achieved by adding the following options to the fstab entry of your {{ic|/home}} partition:<br />
<br />
noauto,x-systemd.automount<br />
<br />
This will fsck and mount {{ic|/home}} when it is first accessed, and the kernel will buffer all file access to {{ic|/home}} until it is ready.<br />
<br />
If you have encrypted filesystems with keyfiles, you can also add the {{ic|noauto}} parameter to the corresponding entries in {{ic|/etc/crypttab}}. systemd will then not open the encrypted device on boot, but instead wait until it is actually accessed and then automatically open it with the specified keyfile before mounting it. This might save a few seconds on boot if you are using an encrypted RAID device for example, because systemd doesn't have to wait for the device to become available. For example:<br />
<br />
{{hc|/etc/crypttab|<br />
data /dev/md0 /root/key noauto}}<br />
<br />
=== Readahead ===<br />
<br />
systemd comes with its own readahead implementation, this should in principle improve boot time. However, depending on your kernel version and the type of your hard drive, your mileage may vary (i.e. it might be slower). To enable, do:<br />
<br />
# systemctl enable systemd-readahead-collect.service systemd-readahead-replay.service<br />
<br />
Remember that in order for the readahead to work its magic, you should reboot a couple of times.<br />
<br />
=== Замена ConsoleKit на systemd-logind ===<br />
<br />
Начиная с {{Pkg|polkit}} 0.107 (в настоящее время в репозитории [testing]), [[ConsoleKit]] можно полностью заменить на {{ic|systemd-logind}}. Самый легкий метод удаления [[ConsoleKit]] заключается в [[Automatic_login_to_virtual_console#With_systemd|автоматическом входе в виртуальную консоль]] и [[Start_X_at_Boot|запуска X оттуда]]. Важно понять, что, как указано в последней статье, сервер X запускается в той же виртуальной консоли, в которую вы загрузились, в противном случае systemd не сможет следить за пользовательской сессией. Затем можно просто удалить {{ic|ck-launch-session}} из вашего файла {{ic|~/.xinitrc}}.<br />
<br />
Для того, чтобы проверить статус вашей пользовательской сессии, вы можете использовать команду {{ic|loginctl}}. Чтобы убедиться, что ваша пользовательская сессия правильно установлена, проверьте, содержит ли следующая команда {{ic|1=Active=yes}}. Все действия {{Pkg|polkit}} actions наподобие перевода системы в спящий режим или монтирования внешних носителей с помощью [[Udisks]] должны работать автоматически.<br />
<br />
$ loginctl show-session <session-id><br />
<br />
{{Note|При использовании [[NetworkManager]] вам необходимо перекомпилировать данный пакет с поддержкой systemd из [[ABS]] путем записи опции {{ic|1=--with-session-tracking=systemd}} в [[PKGBUILD]].}}<br />
<br />
== Устранение неполадок ==<br />
<br />
=== Выключение/перезагрузка происходят ужасно долго ===<br />
<br />
Если процесс выключения занимает очень долгое время (или, по-видимому, зависает), то, вероятно, виноват сервис, который не завершает свою работу. systemd ожидает некоторое время, пока каждый сервис завершит свою работу самостоятельно, и только потом пытается принудительно завершить (kill) его. Если вы столкнулись с такой проблемой, обратитесь к [http://freedesktop.org/wiki/Software/systemd/Debugging#Shutdown_Completes_Eventually данной статье (англ.)].<br />
<br />
== Полезные ссылки ==<br />
<br />
*[http://www.freedesktop.org/wiki/Software/systemd Официальный веб-сайт (англ.)]<br />
*[http://0pointer.de/public/systemd-man/ Страницы руководств (англ.)]<br />
*[http://freedesktop.org/wiki/Software/systemd/Optimizations systemd Optimizations (англ.)]<br />
*[http://www.freedesktop.org/wiki/Software/systemd/FrequentlyAskedQuestions FAQ (англ.)]<br />
*[http://www.freedesktop.org/wiki/Software/systemd/TipsAndTricks Tips And Tricks (англ.)]<br />
*[http://0pointer.de/public/systemd-ebook-psankar.pdf systemd для администраторов (PDF) - перевод цикла статей Леннарта Поттеринга (Lennart Poettering) ]<br />
*[http://0pointer.de/blog/projects/systemd.html Блог Lennart'а (англ.)]<br />
*[http://archlinux.org.ru/forum/viewtopic.php?f=9&t=9581 systemd mini FAQ]<br />
*[http://wiki.russianfedora.ru/index.php?title=Systemd systemd - база знаний проекта Fedora]<br />
*[http://fedoraproject.org/wiki/Systemd Fedora Linux Wiki: Systemd (англ.)]<br />
*[http://wiki.debian.org/ru/Systemd Debian Wiki: systemd - менеджер системы и сервисов]<br />
*[http://wiki.ubuntu.com/systemd Ubuntu Wiki: systemd (англ.)]<br />
*[http://fedoraproject.org/wiki/Systemd OpenSuse Wiki: SDB:Systemd]</div>Klayhttps://wiki.archlinux.org/index.php?title=Init_Rosetta_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=230330Init Rosetta (Русский)2012-10-21T09:00:44Z<p>Klay: Привел в единообразный вид таблицы</p>
<hr />
<div>[[Category:Русский]]<br />
[[Category:Процесс загрузки]]<br />
[[en:Init Rosetta]]<br />
<br />
== Таблица взаимодействия с сервисами в Init и Systemd ==<br />
{| class="wikitable" border="1" cellpadding="5" cellspacing="0"<br />
|-<br />
! scope="col"| Команда init <br />
! scope="col"| Команда systemd <br />
! scope="col"| Комментарий <br />
|-<br />
| align="left" |rc.d {start |stop | restart...} daemon <br />
| align="left" |systemctl {start | stop | restart...} daemon.service <br />
| align="left" |Изменить состояние сервиса (демона).<br />
|-<br />
| align="left" |rc.d list <br />
| align="left" |systemctl list-unit-files --type=service <br />
| align="left" |Список сервисов (демонов).<br />
|-<br />
| align="left" |chkconfig daemon {on | off} <br />
| align="left" |systemctl {enable | disable} daemon.service <br />
| align="left" |Выключить или включить сервис (демон).<br />
|-<br />
| align="left" |chkconfig daemon --add <br />
| align="left" |systemctl daemon-reload <br />
| align="left" |Используется при создании или изменении конфигурационных файлов/скриптов.<br />
|}<br />
<br />
<br />
== Таблица уровней запуска и их аналогов в Systemd ==<br />
{| class="wikitable" border="1" cellpadding="15" cellspacing="0"<br />
! Уровнень запуска SysV !! Systemd Target !! Примечание<br />
|-<br />
| 0 || runlevel0.target, poweroff.target || Выключить систему.<br />
|-<br />
| 1, s, single || runlevel1.target, rescue.target || Однопользовательский уровень запуска.<br />
|-<br />
| 2, 4 || runlevel2.target, runlevel4.target, multi-user.target || Уровень запуска, определенный пользователем/специфичный для узла. По умолчанию соответствует уровню запуска 3.<br />
|-<br />
| 3 || runlevel3.target, multi-user.target || Многопользовательский режим без графики. Пользователи, как правило, входят с помощью множества консолей или через сеть.<br />
|-<br />
| 5 || runlevel5.target, graphical.target || Многопользовательский режим с графикой. Обычно эквивалентен запуску всех сервисов уровня 3 и графическому менеджеру входа.<br />
|-<br />
| 6 || runlevel6.target, reboot.target || Перезагрузка.<br />
|-<br />
| emergency || emergency.target || Аварийная оболочка.<br />
|-<br />
|}</div>Klayhttps://wiki.archlinux.org/index.php?title=Arch_boot_process_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=230321Arch boot process (Русский)2012-10-21T08:17:48Z<p>Klay: </p>
<hr />
<div>[[Category:Русский]]<br />
[[Category:Загрузка (Русский)]]<br />
[[Category:Процесс загрузки]]<br />
[[cs:Arch Boot Process]]<br />
[[en:Arch Boot Process]]<br />
[[es:Arch Boot Process]]<br />
[[fr:Processus de boot]]<br />
[[it:Arch Boot Process]]<br />
[[zh-CN:Arch Boot Process]]<br />
{{Article summary start|Сводка}}<br />
{{Article summary text|Обзор загрузки системы в хронологическом порядке.}}<br />
{{Article summary heading|Краткое описание}}<br />
{{Article summary text|Чтобы компьютер смог запустить Arch Linux, в [[Master Boot Record]] или [[GUID Partition Table]] устройства, с которого производится запуск, должен быть установлен [http://en.wikipedia.org/wiki/Booting#Second-stage_boot_loader загрузчик операционной системы], способный загружать [http://en.wikipedia.org/wiki/Linux_kernel ядро Linux]. Например: [[GRUB]], [[GRUB2]], [[LILO]] или [[Syslinux]]. Загрузчик ответственен за запуск ядра Linux и [[mkinitcpio|установку диска в оперативной памяти для начальной инициализации]]. После запуска ядра и первичной инициализации устройств, происходит старт первых процессов с помощью утилиты [[Wikipedia:Init|Init]], а также запуск остальных скриптов Arch, настройки которых можно поменять редактируя [[rc.conf]]}}<br />
{{Article summary heading|По теме}}<br />
{{Article summary wiki|fstab}}<br />
{{Article summary wiki|rc.conf}}<br />
{{Article summary wiki|Autostarting}}<br />
{{Article summary end}}<br />
<br />
Эта статья призвана описать процесс загрузки Arch Linux и перечислить вовлеченные в процесс загрузки системные файлы, предоставляя ссылки на соответствующие статьи в вики там, где это потребуется. Arch славится своей приверженностью стилю загрузки [http://en.wikipedia.org/wiki/Berkeley_Software_Distribution BSD], в отличии более распространенного [http://en.wikipedia.org/wiki/UNIX_System_V SysV]. Это означает, что существует небольшое различие между уровнями выполнения([[Wikipedia:runlevel]]), поскольку система по умолчанию сконфигурирована использовать и запускать одни и те же модули и процессы на всех уровнях выполнения. Преимуществом такой схемы выступает то, что пользователю становится легче настроить процесс запуска (см. [[rc.conf]]); с другой стороны, некоторые способы углубленного конфигурирования (какие были в SysV) потеряны. Тем, кого это не устраивает, будет полезно обратиться к статье [[Adding Runlevels]]. Чтобы узнать больше о различиях между стилями инициализации BSD и SysV см. [[Wikipedia:Init]]<br />
<br />
== До выполнения init ==<br />
<br />
После подачи питания системе и завершения [[Wikipedia:Power-on self-test|POST]], [[Wikipedia:BIOS|BIOS]] определяет с какого устройства необходимо начать загрузку и передает управление на [[Master Boot Record]] этого устройства. На машине под управлением GNU/Linux в качестве загрузчика ОС чаще всего используют [[GRUB]] или [[LILO]], который собственно и располагается в MBR. Загрузчик может предоставить пользователю выбор ОС для загрузки. Такая установка описана в статье [[Windows and Arch Dual Boot (Русский)]]. После выбора Arch Linux в качестве ОС для запуска, загрузчик размещает в памяти [http://en.wikipedia.org/wiki/Linux_kernel ядро Linux] ({{ic|vmlinuz-linux}}) и образ первичной корневой файловой системы ({{ic|initramfs-linux.img}}), затем загрузчик запускает ядро, передавая ему также параметры запуска, указанные в конфигурационном файле загрузчика.<br />
<br />
Ядро выполняет роль прослойки между аппаратной частью и программами, которые используют ресурсы системы, необходимые им для работы. Для эффективного использования процессора в ядре имеется планировщик, который определяет какой задаче передать приоритет выполнения в любой конкретный момент времени, таким образом создавая иллюзию одновременного выполнения задач.<br />
<br />
Также, после запуска, ядро распаковывает [[initramfs]] (сокр. от initial RAM filesystem/первичная файловая система в ОЗУ), которая становится первичной корневой файловой системой. Затем ядро запускает на выполнение {{ic|/init}}. Таким образом, init становится первым процессом [http://en.wikipedia.org/wiki/User_space пространства пользователя]<br />
<br />
Конечной целью работы initramfs является получение доступа к корневой файловой системе с устройства (см. также [[FHS]]). Для работы с устройствами IDE, SCSI, SATA, USB/FW (если загрузка происходит с внешнего носителя) требуются соответствующие модули, которые должны быть либо встроены в ядро, или непосредственно загружены из initramfs; как только подходящий модуль найден (с помощью программы/скрипта или через [[udev]]), процесс загрузки продолжится. Для получения доступа к корневой файловой системе, initramfs не обязательно содержать все возможные модули, которые только могут потребоваться во время работы с устройствами хранения данных. Большинство остальных модулей устройств будут загружены позже, во время инициализации, с помощью udev.<br />
<br />
На заключительной стадии ''[http://archlinux.me/brain0/2010/02/13/early-userspace-in-arch-linux/ раннего пространства пользователя]'' взамен первичной(инициализирующей) корневой файловой системы [http://ru.wikipedia.org/wiki/%D0%9C%D0%BE%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B9_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B монтируется] ФС с устройства. И с неё запускается {{ic|/sbin/init}}, подменяя собой временный {{ic|/init}}.<br />
<br />
== init и стартовые скрипты Arch ==<br />
Одну из важнейших ролей в старте ОС выполняет программа {{ic|init}}, которая запускает все остальные процессы. Назначением {{ic|init}} является приведение системы в рабочее состояние путем запуска предназначенных для этого скриптов. Как уже было упомянуто ранее, Arch использует BSD-стиль инициализации. {{ic|init}} читает содержимое файла {{ic|/etc/inittab}}; в оригинальном виде начало {{ic|inittab}} выглядит примерно следующим образом:<br />
<br />
{{hc<br />
|/etc/inittab<br />
|<nowiki><br />
...<br />
<br />
# Загрузка в консоль<br />
id:3:initdefault:<br />
# Загрузка в графический интерфейс X11<br />
#id:5:initdefault:<br />
<br />
rc::sysinit:/etc/rc.sysinit<br />
rs:S1:wait:/etc/rc.single<br />
rm:2345:wait:/etc/rc.multi<br />
rh:06:wait:/etc/rc.shutdown<br />
su:S:wait:/sbin/sulogin<br />
<br />
...<br />
</nowiki>}}<br />
<br />
Первая строка определяет '''уровень выполнения''' ([[Wikipedia:runlevel]]) по умолчанию (в данном случае 3 уровень). После запуска ядром init:<br />
<br />
* Сперва выполняется главный скрипт инициализации {{ic|/etc/rc.sysinit}} (скрипт [[Bash]]).<br />
* Если запуск произведен в однопользовательском режиме (уровень выполнения 1 или S), будет выполнен скрипт {{ic|/etc/rc.single}}.<br />
* В случае если был выбран какой-либо другой уровень выполнения (2-5), будет запущен другой скрипт - {{ic|/etc/rc.multi}}.<br />
* Последним поступит на исполнение {{ic|/etc/rc.local}} (только посредством {{ic|/etc/rc.multi}}), который по умолчанию пуст.<br />
<br />
{{Note|Узнать больше про [[Init and inittab|Init и inittab]].}}<br />
<br />
=== /etc/rc.sysinit ===<br />
{{ic|/etc/rc.sysinit}} это большой стартовый скрипт, который настраивает оборудование и выполняет основные задачи по инициализации. Начало его выполнения сопровождается выводом примерно следующих строк:<br />
<br />
Arch Linux<br />
http://www.archlinux.org<br />
Copyright 2002-2007 Judd Vinet<br />
Copyright 2007-2010 Aaron Griffin<br />
Distributed under the GNU General Public License (GPL)<br />
<br />
Итак, {{ic|rc.sysinit}}:<br />
# подгружает {{ic|/etc/rc.conf}}.<br />
# подгружает {{ic|/etc/rc.d/functions}}.<br />
# выводит сообщение приветствия.<br />
# монтирует различные виртуальные файловые системы. (например: /proc, /sys, /run, /dev, /run/lock, /dev/pts, /dev/shm)<br />
# запускает {{ic|bootlogd}}, который записывает сообщения выведенные на консоль в файл {{ic|/var/log/boot}}.<br />
# настраивает аппаратные часы согласно с {{ic|/etc/rc.conf}}.<br />
# запускает [[udev]] и [http://ru.wikipedia.org/wiki/Udev#.D0.9F.D1.80.D0.B8.D0.BD.D1.86.D0.B8.D0.BF_.D1.80.D0.B0.D0.B1.D0.BE.D1.82.D1.8B проверяет наличие событий] (получает uevents).<br />
# грузит необходимые модули из массива {{ic|MODULES}}, объявленного в конфигурационном файле [[rc.conf]].<br />
# запускает интерфейс [[Wikipedia:loopback|обратного замыкания]].<br />
# активирует тома BTRFS и [http://ru.wikipedia.org/wiki/RAID#.D0.9F.D1.80.D0.BE.D0.B3.D1.80.D0.B0.D0.BC.D0.BC.D0.BD.D1.8B.D0.B9_.28.D0.B0.D0.BD.D0.B3.D0.BB..C2.A0software.29_RAID программные RAID-массивы].<br />
# активирует группы [http://ru.wikipedia.org/wiki/LVM LVM2] (если имеются).<br />
# активирует шифрованные тома.<br />
# форсирует проверку файловых систем утилитой [[fsck]] (если требуется). Может перезагрузить машину или зайти в Режиме одного пользователя (см. ниже) в зависимости от результата проверки.<br />
# монтирует корневую систему(/) в режиме чтения/записи, локальные файловые системы и активирует [http://ru.wikipedia.org/wiki/%D0%A1%D0%B2%D0%BE%D0%BF%D0%B8%D0%BD%D0%B3 своп].<br />
# инициализирует генератор случайных чисел.<br />
# удаляет временные файлы.<br />
# устанавливает имя машины в сети(т.н. hostname), [[Locale_(Русский)|локаль]], шрифт консоли и раскладки клавиатуры как указано в {{ic|rc.conf}}.<br />
# выводит сообщения от [http://ru.wikipedia.org/wiki/Dmesg dmesg] в {{ic|/var/log/dmesg.log}}.<br />
<br />
{{ic|/etc/rc.sysinit}} - это скрипт инициализации, а не склад настроек. Он читает [[rc.conf]] для их получения, и {{ic|/etc/rc.d/functions}} содержащий сервисные функции (отвечающие среди прочего и за форматированный вывод - цвета консоли, выравнивание текста, замена BUSY на DONE и т.д.). Обычно нет причин для редактирования {{ic|/etc/rc.sysinit}}, за исключением желания, например, [https://wiki.archlinux.org/index.php/Improve_Boot_Performance_%28%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9%29 ускорить запуск ОС].<br />
<br />
=== /etc/rc.single ===<br />
'''Режим одного пользователя''' загружает систему под учетной записью [http://ru.wikipedia.org/wiki/Root_%28%D1%81%D1%83%D0%BF%D0%B5%D1%80%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%29 суперпользователя]. Этот режим предусмотрен к использованию в случае, если система не может быть запущена другим образом. Скрипт, в своем оригинальном виде, не предусматривает запуска каких-либо [[Daemon|служб]], помимо syslog-ng и udev. Однопользовательский режим удобен при восстановлении системы, когда необходимо ограничить удаленных пользователей от действий, способных повлечь потерю или повреждение данных. Из этого режима можно выйти в стандартный(многопользовательский), прописав {{ic|exit}} в командной строке.<br />
<br />
=== /etc/rc.multi ===<br />
{{ic|/etc/rc.multi}} исполняется при загрузке любого из '''многопользовательских''' (т.е. стандартных) уровней выполнения (2, 3, 4, и 5). Обычно, пользователь не замечает перехода исполнения от {{ic|rc.sysinit}} к {{ic|rc.multi}}, поскольку {{ic|rc.multi}} также использует {{ic|/etc/rc.d/functions}} для форматирования вывода. Этот скрипт:<br />
<br />
# Стартует программу {{ic|sysctl}}, чтобы применить настройки, находящиеся в файле {{ic|/etc/sysctl.conf}}, которые модифицируют параметры ядра Linux прямо во время работы; Arch использует совсем немного таких параметров (в основном настройки связанные с сетью).<br />
# Запускает [[Daemon|службы]] в соответствии с массивом {{ic|DAEMONS}} в конфигурационном файле {{ic|rc.conf}}.<br />
# Исполняет пользовательский скрипт {{ic|/etc/rc.local}}.<br />
# Останавливает {{ic|bootlogd}}, запущенный из {{ic|/etc/rc.sysinit}}.<br />
<br />
=== /etc/rc.local ===<br />
{{ic|/etc/rc.local}} - это локальный скрипт, выполняющийся при загрузке '''многопользовательского режима'''. Пустой по умолчанию; он хорош тем, что в него можно поместить команды, которые будут исполняться почти в самом конце процесса загрузки. Популярные настройки системы (такие как загрузка модулей, смена шрифта консоли, конфигурация устройств) обычно располагаются в более подходящих местах. Дабы не вносить беспорядок, лучше дважды убедиться, что команды располагающиеся в {{ic|rc.local}} больше соответствуют этому скрипту, чем к примеру {{ic|/etc/profile.d}}.<br />
<br />
Во время редактирования этого файла просьба помнить, что он он исполняется '''после''' основных установок (модулей/служб), от имени '''суперпользователя''' и '''вне зависимости''' от запуска оконной системы X. В следующем примере скрипт {{ic|rc.local}} настраивает звук в ALSA:<br />
<br />
{{hc<br />
|/etc/rc.local<br />
|<nowiki><br />
#!/bin/bash<br />
<br />
# /etc/rc.local: Local multi-user startup script.<br />
<br />
amixer sset 'Master Mono' 50% unmute &> /dev/null<br />
amixer sset 'Master' 50% unmute &> /dev/null<br />
amixer sset 'PCM' 75% unmute &> /dev/null<br />
</nowiki>}}<br />
<br />
== Пользовательские ловушки ==<br />
Ловушки полезны, когда необходимо включить какой-либо код в различные места скриптов rc.* без их редактирования.<br />
<br />
{| class="wikitable"<br />
|-<br />
! scope="col" | Наименование ловушки<br />
! scope="col" | Момент исполнения<br />
|-<br />
| sysinit_start<br />
| В начале rc.sysinit<br />
|-<br />
| sysinit_udevlaunched<br />
| После запуска udev в rc.sysinit<br />
|-<br />
| sysinit_udevsettled<br />
| После получения uevents в rc.sysinit<br />
|-<br />
| sysinit_prefsck<br />
| Перед запуском fsck в rc.sysinit<br />
|-<br />
| sysinit_postfsck<br />
| После запуска fsck в rc.sysinit<br />
|-<br />
| sysinit_premount<br />
| Перед монтированием локальных файловых систем, но после того, как был монтирован корень(/) в режиме чтения-записи в rc.sysinit<br />
|-<br />
| sysinit_end<br />
| В конце rc.sysinit<br />
|-<br />
| multi_start<br />
| В начале rc.multi<br />
|-<br />
| multi_end<br />
| В конце rc.multi<br />
|-<br />
| single_start<br />
| В начале rc.single<br />
|-<br />
| single_prekillall<br />
| Перед убийством всех процессов в rc.single<br />
|-<br />
| single_postkillall<br />
| После убийства всех процессов в rc.single<br />
|-<br />
| single_udevlaunched<br />
| После запуска udev в rc.single<br />
|-<br />
| single_udevsettled<br />
| После получения uevents в rc.single<br />
|-<br />
| single_end<br />
| В конце rc.single<br />
|-<br />
| shutdown_start<br />
| В начале rc.shutdown<br />
|-<br />
| shutdown_prekillall<br />
| Перед убийством всех процессов в rc.shutdown<br />
|-<br />
| shutdown_postkillall<br />
| После убийства всех процессов в rc.shutdown<br />
|-<br />
| shutdown_poweroff<br />
| Непосредственно перед отключением питания в rc.shutdown<br />
|}<br />
<br />
Для объявления функции-ловушки создайте файл в {{ic|/etc/rc.d/functions.d}} используя в качестве примера:<br />
<br />
function_name() {<br />
...<br />
}<br />
add_hook hook_name function_name<br />
<br />
Файлы из {{ic|/etc/rc.d/functions.d}} читаются скриптом {{ic|/etc/rc.d/functions}}.<br />
Позволяется регистрировать как несколько функций-ловушек на один и тот же тип ловушки, так и несколько типов ловушек на одну и ту же функцию-ловушку. В этих файлах запрещается именовать функцию как add_hook или run_hook, поскольку функции с такими именами уже объявлены в {{ic|/etc/rc.d/functions}}.<br />
<br />
==== Пример ====<br />
Добавление следующего файла отключает [http://ru.wikipedia.org/wiki/%D0%9A%D1%8D%D1%88#.D0.9F.D0.BE.D0.BB.D0.B8.D1.82.D0.B8.D0.BA.D0.B0_.D0.B7.D0.B0.D0.BF.D0.B8.D1.81.D0.B8_.D0.BF.D1.80.D0.B8_.D0.BA.D1.8D.D1.88.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B8 кэш отложенной записи] на жестком диске <i>перед</i> стартом [[daemons|сервисов]] (полезно для устройств, содержащих файлы MySQL InnoDB).<br />
<br />
{{hc|/etc/rc.d/functions.d/hd_settings|hd_settings() {<br />
/sbin/hdparm -W0 /dev/sdb<br />
}<br />
add_hook sysinit_udevsettled hd_settings<br />
add_hook single_udevsettled hd_settings<br />
}}<br />
Сперва объявляется функция-ловушка hd_settings, затем она регистрируется на ловушки типа '''single_udevsettled''' и '''sysinit_udevsettled'''. Функция-ловушка будет вызываться незамедлительно после получения uevents в {{ic|/etc/rc.d/rc.sysinit}} или {{ic|/etc/rc.d/rc.single}}.<br />
<br />
== init: Идентификация в системе ==<br />
По умолчанию, после завершения всех скриптов запуска, программа {{ic|/sbin/agetty}} просит вас представиться в системе. После ввода имени пользователя {{ic|/sbin/agetty}} вызывает программу {{ic|/bin/login}}, чтобы она запросила пароль.<br />
<br />
Наконец, после успешного входа, программа {{ic|/bin/login}} запускает командный интерпретатор (shell / оболочку) пользователя. Стандартный шелл а также [http://ru.wikipedia.org/wiki/%D0%9F%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D1%80%D0%B5%D0%B4%D1%8B переменные среды] (environment variables) могут быть объявлены глобально, с помощью {{ic|/etc/profile}}. Все переменные, объявленные в стартовых скриптах домашней директории пользователя, получают приоритет над переменными объявленными глобально в {{ic|/etc}}. К примеру, если переменная с одним и тем же одним именем объявлена в {{ic|/etc/profile}} и {{ic|~/.bashrc}}, та, что находится в {{ic|~/.bashrc}} будет иметь преимущественную силу.<br />
<br />
Большинство пользователей, желающих запустить при старте оконную систему [[X]], пожелают также установить графический менеджер входа в систему (см. [[Display Manager]]). Также, статья [[Start X at Boot]] охватывает методы, которые не требуют установки менеджера входа.<br />
<br />
== См. также ==<br />
* [http://www.cyberciti.biz/faq/grub-boot-into-single-user-mode/ Boot Linux Grub Into Single User Mode]<br />
* [http://www.linuxjournal.com/article/4622 Boot with GRUB]<br />
* [http://www.ibm.com/developerworks/linux/library/l-linuxboot/ Inside the Linux boot process]<br />
* [http://linux.about.com/library/cmd/blcmdl5_sysctl.conf.htm Linux / Unix Command: sysctl.conf]<br />
* [http://bbs.archlinux.org/search.php?action=search&keywords=rc.local&search_in=topic&sort_dir=DESC&show_as=topics Search the forum for rc.local examples]<br />
* [[Wikipedia:Linux startup process]]<br />
* [[Wikipedia:initrd]]</div>Klayhttps://wiki.archlinux.org/index.php?title=Udev_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=230319Udev (Русский)2012-10-21T08:15:10Z<p>Klay: </p>
<hr />
<div>[[Category:Русский]]<br />
[[Category:Hardware detection and troubleshooting (Русский)]]<br />
[[cs:Udev]]<br />
[[en:Udev]]<br />
[[es:Udev]]<br />
[[it:Udev]]<br />
[[zh-CN:Udev]]<br />
[[zh-TW:Udev]]<br />
Если вы хотите перейти с DevFS на Udev, смотрите [[Переход с DevFS на Udev]]<br />
<br />
Эта страница пытается обрисовать всё огромное количество изменений, происходивших в последнее время с изменением udev. Начиная с версии 084, udev отвечает за ''все'' hotplug и coldplug события. Соответственно, пакет hotplug устарел и удалён с репозиториев Arch, так как теперь udev отвечает за все эти события.<br />
{{Note|На сегодняшний день, в связи с изменениями в пакете udev и содержании основного конфигурационного файла системы /etc/rc.conf, эта статья не полностью отражает текущее положение вещей и нуждается в доработке.}}<br />
<br />
== Правило номер один ==<br />
В связи с последними изменениями в пакете udev, файл /etc/rc.conf теперь не поддерживает опцию MOD_AUTOLOAD и работа по определению и загрузке необходимых модулей предоставлена udev. Разница в том, что udev не будет по-умолчанию загружать некоторые проблемные модули (см. ниже) В любом случае, вы можете запустить команду <code>hwdetect --modules</code>, которая сгенерирует имена необходимых для вашей системы модулей. Затем вы можете скопировать их в параметр <code>MODULES</code> файла <code>rc.conf</code> или же добавить туда только нужные вам модули, которые не были загружены автоматически.<br />
<br />
== Основные требования ==<br />
* Вам нужно свежее ядро: все ядра, вышедшие до '''2.6.15''' '''не будут''' работать.<br />
* Вы больше не можете использовать имена устройств в стиле DevFS в вашем fstab или конфигурационном файле загрузчика! Для получения дополнительной информации смотрите [[Переход с DevFS на Udev]].<br />
<br />
== Недавние изменения ==<br />
* Программа <code>startudev</code> удалена. Пользуйтесь скриптом <code>/etc/start_udev</code>, если вы хотите, чтобы udev перезагрузил правила.<br />
* Udev теперь заменяет функциональность <code>hotplug</code> и <code>hwdetect</code>. Несмотря на то, что мы предоставляем <code>hwdetect</code>, он обычно используется только в процессе создания initrd программой <code>mkinitrd</code>.<br />
* Udev будет загружать модули одновременно, что может повлечь возрастание скорости загрузки. Однако, он не всегда загружает модули в одинаковом порядке, что может повлечь проблемы с сетевыми и звуковыми картами (если у вас есть оба устройства). Информацию об этом смотрите ниже.<br />
* Начиная с udev>= 171, OSS-модули, (snd_seq_oss, snd_pcm_oss, snd_mixer_oss) по-умолчанию, автоматически не загружаются. Вы можете загрузить их вручную: <br />
<pre>sudo modprobe snd_mixer_oss</pre> и, если требуется, добавить в /etc/rc.conf, в секцию модулей: <br />
<pre>MODULES=(snd_mixer_oss)</pre> Обратите внимание: TVtime использует snd_mixer_oss для программного управления звуком.<br />
<br />
== Добавление модулей в черный список ==<br />
Udev часто может совершать ошибки и загружать ненужные модули. Для предотвращения этого вы можете поместить их в черный список. Будучи занесенным в него, модуль никогда не будет загружаться udev'ом. Ни во время загрузки, ни во время работы (например, когда вы подключите USB-накопитель).<br />
<br />
Для добавления модуля в черный список, предварите его название восклицательным знаком (!) в параметре <code>MODULES</code> файла <code>rc.conf</code>.<br />
<br />
Например,<br />
<pre>MODULES=(!moduleA !moduleB)</pre><br />
<br />
== load_modules: полезный параметр загрузки ==<br />
Если вы укажете <code>load_modules=off</code> в параметрах загрузки ядра, udev не будет выполнять автозагрузку модулей. Это своего рода спасательный круг, на тот случай, если что-то пошло не так. Если udev загружает проблемный модуль, который подвешивает вашу систему или делает что-то ужасное, вы можете обойти автозагрузку модулей с помощью этого параметра, а затем внести коварный модуль в черный список.<br />
<br />
== Известные проблемы с железом ==<br />
- Устройства BusLogic могут быть неработоспособны и могут подвешивать систему при загрузке. Это баг в ядре, и он пока не исправлен.<br />
- Устройства для чтения карт памяти, подключающиеся по PCMCIA не будут относиться к съемным устройствам.<br />
Для получения доступа к ним с помощью pmount, добавьте их в /etc/pmount.allow<br />
<br />
== Известные проблемы с автозагрузкой ==<br />
=== Модули CPUFreq ===<br />
У нас пока нет хорошего метода обнаружения различных CPUFreq-контроллеров, так что модули для них не будут загружаться автоматически. Для использования функции изменения частоты процессора, вы должны загрузить нужный модуль, добавив его в параметр <code>MODULES</code> файла <code>rc.conf</code>.<br />
<br />
=== Проблемы со звуком, не все модули загружаются автоматически ===<br />
Некотоые пользователи обнаружили эту проблему при наличии старых записей в <code>/etc/modprobe.d/modprobe.conf</code>. Попробуйте почистить этот файл.<br />
<br />
=== Смешивание устройств, порядок сетевых/звуковых карт меняется при каждой загрузке ===<br />
Поскольку udev загружает все модули одновременно, устройства иногда инициализируются в различном порядке. Например, с двумя сетевыми картами, вы можете обнаружить, что они меняются именами <code>eth0</code> и <code>eth1</code>.<br />
<br />
Решение тут состоит в самостоятельном указании порядка загрузки модулей с помощью параметра <code>MODULES</code> в файле <code>rc.conf</code>. Модули, добавленные в этот список, будут загружены перед стартом udev, так что вы имеете полный контроль над порядком их загрузки.<br />
<br />
<pre># Модуль 8139too всегда будет загружаться перед e100<br />
MODULES=(8139too e100)</pre><br />
<br />
Другой метод определения порядка сетевых карт - использование правил udev для именования каждого сетевого интерфейса. Создайте файл <code>/etc/udev/rules.d/10-network.rules</code> и внесите туда MAC-адреса ваших сетевых карт:<br />
<pre>SUBSYSTEM=="net", ATTR{address}=="aa:bb:cc:dd:ee:ff", NAME="lan0"<br />
SUBSYSTEM=="net", ATTR{address}=="ff:ee:dd:cc:bb:aa", NAME="wlan0"</pre><br />
<br />
Обратите внимание, что:<br />
* Для получения MAC-адреса каждой карты, запустите такую команду: <code>udevadm info -a -p /sys/class/net/<ваше_устройство> | grep address</code><br />
* Убедитесь, что используете нижний регистр, указывая MAC-адрес в правиле udev.<br />
* Некоторые люди имели проблемы, именуя сетевые интерфейсы в старом стиле: eth0, eth1, и т.д. Попробуйте что-нибудь вроде "lan" или "wlan", если встретитесь с проблемами.<br />
<br />
Не забудьте обновить /etc/rc.conf и другие конфигурационные файлы, использующие старый стиль именования!<br />
<br />
== Известные проблемы с самосборными ядрами ==<br />
=== Udev не запускается вообще ===<br />
Убедитесь, что версия вашего ядра - 2.6.15 или выше. Ранние ядра не умеют работать с событиями uevent, которые необходимы udev для автозагрузки.<br />
<br />
=== Символические ссылки на CD/DVD и права сломались ===<br />
Если вы используете ядро 2.6.15, вам нужен патч для uevent из ABS (он портирует нужную функциональность uevent из ядра 2.6.16). Просто синхронизируйте ваше дерево ABS командой <code>abs</code>, и вы найдете патч в директории <code>/var/abs/kernels/kernel26/</code>.<br />
<br />
== Трюки с Udev ==<br />
=== Автомонтирование USB-устройств ===<br />
<pre><br />
KERNEL!="sd[a-z][0-9]", GOTO="auto_mount_end"<br />
<br />
IMPORT{program}="/sbin/blkid -o udev -p %N"<br />
ENV{ID_FS_LABEL}!="", ENV{dir_name}="%E{ID_FS_LABEL}"<br />
ENV{ID_FS_LABEL}=="", ENV{dir_name}="usbhd-%k"<br />
<br />
ACTION=="add", RUN+="/bin/mkdir -p /media/%E{dir_name}", RUN+="/bin/mount -t auto -o rw,relatime,noexec,nodev,utf8 <br />
/dev/%k /media/%E{dir_name}"<br />
<br />
ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/umount -l /media/%E{dir_name}", RUN+="/bin/rmdir /media/%E{dir_name}"<br />
<br />
LABEL="auto_mount_end"<br />
</pre><br />
<br />
Поместите это правило в любой файл директории /etc/udev/rules.d/, имя которого оканчивается на .rules. Например, на моей системе этот код находится в файле /etc/udev/rules.d/10-usb.rules.<br />
<br />
<span style="color:red;font-weight:bold;">Важно!</span> Если вы используете любые несъемные устройства, именуемые как /dev/sdX (например жесткие диски SATA), измените во всех sd[a-z] все a на первые неиспользуемые буквы для sd*-устройств. Например, если у вас есть один SATA-диск, распознающийся как /dev/sda, измените все "sd[a-z]" на "sd[b-z]". Хорошая идея - начинать имена файлов с вашими правилами с номера. Например, 010-udev.rules. Тогда udev прочтет их до стандартных правил (например, если Вы хотите применить свои правила перед использованием hal (файл 90-hal.rules)). Эти правила не требует никаких изменений в /etc/fstab. Просмотрите команды монтирования, возможно вы захотите изменить параметры прав доступа, синхронизации и т.д. (поищите в форумах последствия различных конфигураций).</div>Klayhttps://wiki.archlinux.org/index.php?title=Init/Rosetta&diff=230313Init/Rosetta2012-10-21T08:04:21Z<p>Klay: </p>
<hr />
<div>[[Category:Boot process]]<br />
[[ru:Init Rosetta]]<br />
<br />
{| class="wikitable"<br />
|-<br />
! scope="col"| Init Command <br />
! scope="col"| systemd Command <br />
! scope="col"| Comment <br />
|-<br />
| align="center"|&nbsp;rc.d {start | stop | restart...} daemon&nbsp;<br />
| align="left"|&nbsp;systemctl {start | stop | restart...} daemon.service&nbsp;<br />
| align="center"|Change service state<br />
|-<br />
| align="center"|rc.d list<br />
| align="left"|&nbsp;systemctl list-unit-files --type=service<br />
| align="center"|List Services<br />
|-<br />
| align="center"|chkconfig daemon {on | off}<br />
| align="left"|&nbsp;systemctl {enable | disable} daemon.service<br />
| align="center"|Turn service on or off<br />
|-<br />
| align="center"| chkconfig daemon --add <br />
| align="left"|&nbsp;systemctl daemon-reload<br />
| align="center"|&nbsp;Use when you create or modify configs/scripts&nbsp;<br />
|}<br />
<br />
=== Targets table ===<br />
{| border="1"<br />
!SysV Runlevel!!systemd Target!!Notes<br />
|-<br />
| 0 || runlevel0.target, poweroff.target || Halt the system.<br />
|-<br />
| 1, s, single || runlevel1.target, rescue.target || Single user mode.<br />
|-<br />
| 2, 4 || runlevel2.target, runlevel4.target, multi-user.target || User-defined/Site-specific runlevels. By default, identical to 3.<br />
|-<br />
| 3 || runlevel3.target, multi-user.target || Multi-user, non-graphical. Users can usually login via multiple consoles or via the network.<br />
|-<br />
| 5 || runlevel5.target, graphical.target || Multi-user, graphical. Usually has all the services of runlevel 3 plus a graphical login.<br />
|-<br />
| 6 || runlevel6.target, reboot.target || Reboot<br />
|-<br />
| emergency || emergency.target || Emergency shell<br />
|-<br />
|}</div>Klayhttps://wiki.archlinux.org/index.php?title=Init/Rosetta&diff=230312Init/Rosetta2012-10-21T08:04:06Z<p>Klay: </p>
<hr />
<div>[[Category:Boot process]]<br />
[[en:Init Rosetta]]<br />
<br />
{| class="wikitable"<br />
|-<br />
! scope="col"| Init Command <br />
! scope="col"| systemd Command <br />
! scope="col"| Comment <br />
|-<br />
| align="center"|&nbsp;rc.d {start | stop | restart...} daemon&nbsp;<br />
| align="left"|&nbsp;systemctl {start | stop | restart...} daemon.service&nbsp;<br />
| align="center"|Change service state<br />
|-<br />
| align="center"|rc.d list<br />
| align="left"|&nbsp;systemctl list-unit-files --type=service<br />
| align="center"|List Services<br />
|-<br />
| align="center"|chkconfig daemon {on | off}<br />
| align="left"|&nbsp;systemctl {enable | disable} daemon.service<br />
| align="center"|Turn service on or off<br />
|-<br />
| align="center"| chkconfig daemon --add <br />
| align="left"|&nbsp;systemctl daemon-reload<br />
| align="center"|&nbsp;Use when you create or modify configs/scripts&nbsp;<br />
|}<br />
<br />
=== Targets table ===<br />
{| border="1"<br />
!SysV Runlevel!!systemd Target!!Notes<br />
|-<br />
| 0 || runlevel0.target, poweroff.target || Halt the system.<br />
|-<br />
| 1, s, single || runlevel1.target, rescue.target || Single user mode.<br />
|-<br />
| 2, 4 || runlevel2.target, runlevel4.target, multi-user.target || User-defined/Site-specific runlevels. By default, identical to 3.<br />
|-<br />
| 3 || runlevel3.target, multi-user.target || Multi-user, non-graphical. Users can usually login via multiple consoles or via the network.<br />
|-<br />
| 5 || runlevel5.target, graphical.target || Multi-user, graphical. Usually has all the services of runlevel 3 plus a graphical login.<br />
|-<br />
| 6 || runlevel6.target, reboot.target || Reboot<br />
|-<br />
| emergency || emergency.target || Emergency shell<br />
|-<br />
|}</div>Klayhttps://wiki.archlinux.org/index.php?title=Init_Rosetta_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=230311Init Rosetta (Русский)2012-10-21T08:02:39Z<p>Klay: </p>
<hr />
<div>[[Category:Русский]]<br />
[[Category:Процесс загрузки]]<br />
[[en:Init Rosetta]]<br />
<br />
=== Таблица взаимодействия с сервисами в Init и Systemd ===<br />
{| class="wikitable"<br />
|-<br />
! scope="col"| Init Command <br />
! scope="col"| systemd Command <br />
! scope="col"| Comment <br />
|-<br />
| align="center"|&nbsp;rc.d {start | stop | restart...} daemon&nbsp;<br />
| align="left"|&nbsp;systemctl {start | stop | restart...} daemon.service&nbsp;<br />
| align="center"|Change service state<br />
|-<br />
| align="center"|rc.d list<br />
| align="left"|&nbsp;systemctl list-unit-files --type=service<br />
| align="center"|List Services<br />
|-<br />
| align="center"|chkconfig daemon {on | off}<br />
| align="left"|&nbsp;systemctl {enable | disable} daemon.service<br />
| align="center"|Turn service on or off<br />
|-<br />
| align="center"| chkconfig daemon --add <br />
| align="left"|&nbsp;systemctl daemon-reload<br />
| align="center"|&nbsp;Use when you create or modify configs/scripts&nbsp;<br />
|}<br />
<br />
=== Таблица уровней запуска и их аналогов в Systemd ===<br />
{| border="1"<br />
!Уровнень запуска SysV!!Systemd Target!!Примечание<br />
|-<br />
| 0 || runlevel0.target, poweroff.target || Выключить систему.<br />
|-<br />
| 1, s, single || runlevel1.target, rescue.target || Однопользовательский уровень запуска.<br />
|-<br />
| 2, 4 || runlevel2.target, runlevel4.target, multi-user.target || Уровень запуска, определенный пользователем/специфичный для узла. По умолчанию соответствует уровню запуска 3.<br />
|-<br />
| 3 || runlevel3.target, multi-user.target || Многопользовательский режим без графики. Пользователи, как правило, входят с помощью множества консолей или через сеть.<br />
|-<br />
| 5 || runlevel5.target, graphical.target || Многопользовательский режим с графикой. Обычно эквивалентен запуску всех сервисов уровня 3 и графическому менеджеру входа.<br />
|-<br />
| 6 || runlevel6.target, reboot.target || Перезагрузка.<br />
|-<br />
| emergency || emergency.target || Аварийная оболочка.<br />
|-<br />
|}</div>Klayhttps://wiki.archlinux.org/index.php?title=Init_Rosetta_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=230309Init Rosetta (Русский)2012-10-21T07:53:48Z<p>Klay: </p>
<hr />
<div>[[Category:Русский]]<br />
<br />
[[Category:Процесс загрузки]]<br />
<br />
[[ru:Init Rosetta]]<br />
=== Таблица взаимодействия с сервисами в Init и Systemd ===<br />
<br />
{| class="wikitable"<br />
|-<br />
! scope="col"| Init Command <br />
! scope="col"| systemd Command <br />
! scope="col"| Comment <br />
|-<br />
| align="center"|&nbsp;rc.d {start | stop | restart...} daemon&nbsp;<br />
| align="left"|&nbsp;systemctl {start | stop | restart...} daemon.service&nbsp;<br />
| align="center"|Change service state<br />
|-<br />
| align="center"|rc.d list<br />
| align="left"|&nbsp;systemctl list-unit-files --type=service<br />
| align="center"|List Services<br />
|-<br />
| align="center"|chkconfig daemon {on | off}<br />
| align="left"|&nbsp;systemctl {enable | disable} daemon.service<br />
| align="center"|Turn service on or off<br />
|-<br />
| align="center"| chkconfig daemon --add <br />
| align="left"|&nbsp;systemctl daemon-reload<br />
| align="center"|&nbsp;Use when you create or modify configs/scripts&nbsp;<br />
|}<br />
<br />
=== Таблица уровней запуска и их аналогов в Systemd ===<br />
<br />
{| border="1"<br />
!Уровнень запуска SysV!!Systemd Target!!Примечание<br />
|-<br />
| 0 || runlevel0.target, poweroff.target || Выключить систему.<br />
|-<br />
| 1, s, single || runlevel1.target, rescue.target || Однопользовательский уровень запуска.<br />
|-<br />
| 2, 4 || runlevel2.target, runlevel4.target, multi-user.target || Уровень запуска, определенный пользователем/специфичный для узла. По умолчанию соответствует уровню запуска 3.<br />
|-<br />
| 3 || runlevel3.target, multi-user.target || Многопользовательский режим без графики. Пользователи, как правило, входят с помощью множества консолей или через сеть.<br />
|-<br />
| 5 || runlevel5.target, graphical.target || Многопользовательский режим с графикой. Обычно эквивалентен запуску всех сервисов уровня 3 и графическому менеджеру входа.<br />
|-<br />
| 6 || runlevel6.target, reboot.target || Перезагрузка.<br />
|-<br />
| emergency || emergency.target || Аварийная оболочка.<br />
|-<br />
|}</div>Klayhttps://wiki.archlinux.org/index.php?title=Init/Rosetta&diff=230307Init/Rosetta2012-10-21T07:50:59Z<p>Klay: </p>
<hr />
<div>[[Category:Русский]]<br />
<br />
[[Category:Процесс загрузки]]<br />
<br />
[[ru:Init Rosetta]]<br />
=== Таблица взаимодействия с сервисами в Init и Systemd ===<br />
<br />
{| class="wikitable"<br />
|-<br />
! scope="col"| Init Command <br />
! scope="col"| systemd Command <br />
! scope="col"| Comment <br />
|-<br />
| align="center"|&nbsp;rc.d {start | stop | restart...} daemon&nbsp;<br />
| align="left"|&nbsp;systemctl {start | stop | restart...} daemon.service&nbsp;<br />
| align="center"|Change service state<br />
|-<br />
| align="center"|rc.d list<br />
| align="left"|&nbsp;systemctl list-unit-files --type=service<br />
| align="center"|List Services<br />
|-<br />
| align="center"|chkconfig daemon {on | off}<br />
| align="left"|&nbsp;systemctl {enable | disable} daemon.service<br />
| align="center"|Turn service on or off<br />
|-<br />
| align="center"| chkconfig daemon --add <br />
| align="left"|&nbsp;systemctl daemon-reload<br />
| align="center"|&nbsp;Use when you create or modify configs/scripts&nbsp;<br />
|}<br />
<br />
=== Таблица уровней запуска и их аналогов в Systemd ===<br />
<br />
{| border="1"<br />
!Уровнень запуска SysV!!Systemd Target!!Примечание<br />
|-<br />
| 0 || runlevel0.target, poweroff.target || Выключить систему.<br />
|-<br />
| 1, s, single || runlevel1.target, rescue.target || Однопользовательский уровень запуска.<br />
|-<br />
| 2, 4 || runlevel2.target, runlevel4.target, multi-user.target || Уровень запуска, определенный пользователем/специфичный для узла. По умолчанию соответствует уровню запуска 3.<br />
|-<br />
| 3 || runlevel3.target, multi-user.target || Многопользовательский режим без графики. Пользователи, как правило, входят с помощью множества консолей или через сеть.<br />
|-<br />
| 5 || runlevel5.target, graphical.target || Многопользовательский режим с графикой. Обычно эквивалентен запуску всех сервисов уровня 3 и графическому менеджеру входа.<br />
|-<br />
| 6 || runlevel6.target, reboot.target || Перезагрузка.<br />
|-<br />
| emergency || emergency.target || Аварийная оболочка.<br />
|-<br />
|}</div>Klayhttps://wiki.archlinux.org/index.php?title=Init/Rosetta&diff=230306Init/Rosetta2012-10-21T07:49:55Z<p>Klay: /* Таблица target-юнитов */</p>
<hr />
<div>[[Category:Русский]]<br />
<br />
[[Category:Процесс загрузки]]<br />
<br />
[[ru:Init Rosetta]]<br />
{| class="wikitable"<br />
|-<br />
! scope="col"| Init Command <br />
! scope="col"| systemd Command <br />
! scope="col"| Comment <br />
|-<br />
| align="center"|&nbsp;rc.d {start | stop | restart...} daemon&nbsp;<br />
| align="left"|&nbsp;systemctl {start | stop | restart...} daemon.service&nbsp;<br />
| align="center"|Change service state<br />
|-<br />
| align="center"|rc.d list<br />
| align="left"|&nbsp;systemctl list-unit-files --type=service<br />
| align="center"|List Services<br />
|-<br />
| align="center"|chkconfig daemon {on | off}<br />
| align="left"|&nbsp;systemctl {enable | disable} daemon.service<br />
| align="center"|Turn service on or off<br />
|-<br />
| align="center"| chkconfig daemon --add <br />
| align="left"|&nbsp;systemctl daemon-reload<br />
| align="center"|&nbsp;Use when you create or modify configs/scripts&nbsp;<br />
|}<br />
<br />
=== Таблица уровней запуска и их аналогов в Systemd ===<br />
<br />
{| border="1"<br />
!Уровнень запуска SysV!!Systemd Target!!Примечание<br />
|-<br />
| 0 || runlevel0.target, poweroff.target || Выключить систему.<br />
|-<br />
| 1, s, single || runlevel1.target, rescue.target || Однопользовательский уровень запуска.<br />
|-<br />
| 2, 4 || runlevel2.target, runlevel4.target, multi-user.target || Уровень запуска, определенный пользователем/специфичный для узла. По умолчанию соответствует уровню запуска 3.<br />
|-<br />
| 3 || runlevel3.target, multi-user.target || Многопользовательский режим без графики. Пользователи, как правило, входят с помощью множества консолей или через сеть.<br />
|-<br />
| 5 || runlevel5.target, graphical.target || Многопользовательский режим с графикой. Обычно эквивалентен запуску всех сервисов уровня 3 и графическому менеджеру входа.<br />
|-<br />
| 6 || runlevel6.target, reboot.target || Перезагрузка.<br />
|-<br />
| emergency || emergency.target || Аварийная оболочка.<br />
|-<br />
|}</div>Klayhttps://wiki.archlinux.org/index.php?title=Init/Rosetta&diff=230304Init/Rosetta2012-10-21T07:48:03Z<p>Klay: </p>
<hr />
<div>[[Category:Русский]]<br />
<br />
[[Category:Процесс загрузки]]<br />
<br />
[[ru:Init Rosetta]]<br />
{| class="wikitable"<br />
|-<br />
! scope="col"| Init Command <br />
! scope="col"| systemd Command <br />
! scope="col"| Comment <br />
|-<br />
| align="center"|&nbsp;rc.d {start | stop | restart...} daemon&nbsp;<br />
| align="left"|&nbsp;systemctl {start | stop | restart...} daemon.service&nbsp;<br />
| align="center"|Change service state<br />
|-<br />
| align="center"|rc.d list<br />
| align="left"|&nbsp;systemctl list-unit-files --type=service<br />
| align="center"|List Services<br />
|-<br />
| align="center"|chkconfig daemon {on | off}<br />
| align="left"|&nbsp;systemctl {enable | disable} daemon.service<br />
| align="center"|Turn service on or off<br />
|-<br />
| align="center"| chkconfig daemon --add <br />
| align="left"|&nbsp;systemctl daemon-reload<br />
| align="center"|&nbsp;Use when you create or modify configs/scripts&nbsp;<br />
|}<br />
<br />
=== Таблица target-юнитов ===<br />
<br />
{| border="1"<br />
!Уровнень запуска SysV!!Systemd Target!!Примечание<br />
|-<br />
| 0 || runlevel0.target, poweroff.target || Выключить систему.<br />
|-<br />
| 1, s, single || runlevel1.target, rescue.target || Однопользовательский уровень запуска.<br />
|-<br />
| 2, 4 || runlevel2.target, runlevel4.target, multi-user.target || Уровень запуска, определенный пользователем/специфичный для узла. По умолчанию соответствует уровню запуска 3.<br />
|-<br />
| 3 || runlevel3.target, multi-user.target || Многопользовательский режим без графики. Пользователи, как правило, входят с помощью множества консолей или через сеть.<br />
|-<br />
| 5 || runlevel5.target, graphical.target || Многопользовательский режим с графикой. Обычно эквивалентен запуску всех сервисов уровня 3 и графическому менеджеру входа.<br />
|-<br />
| 6 || runlevel6.target, reboot.target || Перезагрузка.<br />
|-<br />
| emergency || emergency.target || Аварийная оболочка.<br />
|-<br />
|}</div>Klayhttps://wiki.archlinux.org/index.php?title=Init/Rosetta&diff=230303Init/Rosetta2012-10-21T07:45:36Z<p>Klay: /* Targets table */</p>
<hr />
<div>[[Category:Boot process]]<br />
[[ru:Init Rosetta]]<br />
{| class="wikitable"<br />
|-<br />
! scope="col"| Init Command <br />
! scope="col"| systemd Command <br />
! scope="col"| Comment <br />
|-<br />
| align="center"|&nbsp;rc.d {start | stop | restart...} daemon&nbsp;<br />
| align="left"|&nbsp;systemctl {start | stop | restart...} daemon.service&nbsp;<br />
| align="center"|Change service state<br />
|-<br />
| align="center"|rc.d list<br />
| align="left"|&nbsp;systemctl list-unit-files --type=service<br />
| align="center"|List Services<br />
|-<br />
| align="center"|chkconfig daemon {on | off}<br />
| align="left"|&nbsp;systemctl {enable | disable} daemon.service<br />
| align="center"|Turn service on or off<br />
|-<br />
| align="center"| chkconfig daemon --add <br />
| align="left"|&nbsp;systemctl daemon-reload<br />
| align="center"|&nbsp;Use when you create or modify configs/scripts&nbsp;<br />
|}<br />
<br />
=== Таблица target-юнитов ===<br />
<br />
{| border="1"<br />
!Уровнень запуска SysV!!Systemd Target!!Примечание<br />
|-<br />
| 0 || runlevel0.target, poweroff.target || Выключить систему.<br />
|-<br />
| 1, s, single || runlevel1.target, rescue.target || Однопользовательский уровень запуска.<br />
|-<br />
| 2, 4 || runlevel2.target, runlevel4.target, multi-user.target || Уровень запуска, определенный пользователем/специфичный для узла. По умолчанию соответствует уровню запуска 3.<br />
|-<br />
| 3 || runlevel3.target, multi-user.target || Многопользовательский режим без графики. Пользователи, как правило, входят с помощью множества консолей или через сеть.<br />
|-<br />
| 5 || runlevel5.target, graphical.target || Многопользовательский режим с графикой. Обычно эквивалентен запуску всех сервисов уровня 3 и графическому менеджеру входа.<br />
|-<br />
| 6 || runlevel6.target, reboot.target || Перезагрузка.<br />
|-<br />
| emergency || emergency.target || Аварийная оболочка.<br />
|-<br />
|}</div>Klayhttps://wiki.archlinux.org/index.php?title=Systemd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=229845Systemd (Русский)2012-10-20T07:12:10Z<p>Klay: /* Полезные ссылки */</p>
<hr />
<div>[[Category:Русский]]<br />
[[Category:Демоны и системные сервисы]]<br />
[[Category:Процесс загрузки]]<br />
[[en:systemd]]<br />
[[es:systemd]]<br />
[[fr:systemd]]<br />
[[it:systemd]]<br />
[[zh-CN:systemd]]<br />
{{Article summary start|Сводка}}<br />
{{Article summary text|Статья охватывает установку и настройку systemd.}}<br />
{{Article summary heading|Связанные статьи}}<br />
{{Article summary wiki|Systemd/Services}}<br />
{{Article summary wiki|Init_Rosetta_(Русский)}}<br />
{{Article summary wiki|Udev_(Русский)}}<br />
{{Article summary end}}<br />
Цитата с [http://freedesktop.org/wiki/Software/systemd веб-страницы проекта]:<br />
<br />
''"'''systemd''' - система [инициализации] и менеджер сервисов для Linux, совместимые со скриптами инициализации SysV и LSB. systemd обеспечивает возможности агрессивной параллелизации, использует сокеты и активацию [[D-Bus]] для запускаемых сервизов, предлагает запуск демонов по необходимости, отслеживает процессы при помощи [[cgroups|контрольных групп]] Linux, поддерживает мгновенные снимки и восстановление состояния системы, монтирование и точки монтирования, а также внедряет основанную на зависимостях логику контроля процессов сложных транзакций. Эта система может выступать заменой sysvinit."''.<br />
<br />
{{Note|За детальным объяснением причин перехода Arch'а на systemd обратитесь к [https://bbs.archlinux.org/viewtopic.php?pid&#61;1149530#p1149530 сообщению на англоязычном форуме].}}<br />
<br />
Смотрите также [[Wikipedia:Systemd|статью в Википедии]].<br />
== Что надо усвоить до начала миграции на данную систему ==<br />
<br />
* Настоятельно рекомендуется перейти на новую конфигурацию '''initscripts''', описанную в статье [[rc.conf (Русский)|rc.conf]]. Сконфигурировав таким образом свою систему, вы проделаете бóльшую часть работы, необходимую для миграции на systemd.<br />
* Почитайте про systemd на [http://freedesktop.org/wiki/Software/systemd/ сайте разработчиков].<br />
* Обратите внимание, что systemd имеет собственный '''журнал (journal)''', заменяющий '''syslog''', хотя оба варианта ведения логов могут сосуществовать. Обратитесь к приведенному ниже разделу [[#Journald_в_связке_с_классическим_демоном _syslog|разделу, посвященному журналу]].<br />
* Хотя systemd вполне способна заменить определенную функциональность таких демонов, как '''cron''', '''acpid''' или '''xinetd''', но если вы не хотите, можете не отказываться от использования традиционных демонов.<br />
<br />
== Установка ==<br />
systemd может быть установлен параллельно со стандартным пакетом инициализации {{Pkg|initscripts}}, и между ними можно будет переключаться путем добавления/удаления [[kernel parameters|параметров ядра]] {{ic|1=init=/usr/lib/systemd/systemd}}. <br />
<br />
=== Смешанная установка systemd/sysvinit/initscripts ===<br />
<br />
Возможно иметь в своей системе одновременно установленными systemd и sysvinit и использовать одну и те же конфигурационные файлы, что позволит вам свободно переключаться между ним туда и обратно:<br />
<br />
# Откажитесь от устаревших форматов конфигурации initscripts (о них сообщается при загрузке системы) в пользу [[#Родные системные файлы в systemd|родных системных файлов systemd]] и перезагрузитесь для проверки работоспособности данных установок при использовании initscripts.<br />
# Установите пакет {{Pkg|systemd}} из [[Official Repositories (Русский)|официальных репозиториев]].<br />
# Добавьте запись {{ic|1=init=/usr/lib/systemd/systemd}} к [[Kernel parameters|параметрам ядра]] в вашем загрузчике.<br />
# Перезагрузите систему.<br />
<br />
Systemd запустит демоны, перечисленные в {{ic|/etc/rc.conf}}, выполнит {{ic|/etc/rc.local}} и {{ic|/etc/rc.local.shutdown}} соответственно при загрузке/выключении системы. Если поддержка совместимости с массивом DAEMONS в конфигурационном файле {{ic|rc.conf}} или же скриптов в {{ic|rc.local}} вам не нужна, соответствующие сервис-файлы могут быть заблокированы (замаскированы) для их отключения.<br />
<br />
{{Warning|В случае, когда у вас в массиве DAEMONS перечислены демоны, для которых имеются родные сервис-файлы systemd, автоматически будут использоваться родные сервис-файлы. Тем не менее, если имена скриптов rc и сервисов systemd не соответствуют друг другу, данное правило не сработает и вам следует убедиться, что только включен только один из них двух (предпочтительно родной сервис-файл).}}<br />
<br />
{{Warning|Systemd - процесс асинхронной загрузки по сравнению сравнении с последовательным запуском демонов из массива DAEMONS. В частности, "network", будучи поддерживаемым для совместимости сервисом, может запуститься слишком поздно для включения интерфейсов, которые требуются другим сервисам. Рекомендуется переключиться на использование netcfg или NetworkManager до перехода на systemd.}}<br />
<br />
=== Смешанная установка systemd/initscripts ===<br />
<br />
Возможно заменить sysvinit на systemd, но сохранить initscripts в случае использования некоторых скриптов rc scripts, для которых пока не имеется эквивалентов в systemd.<br />
<br />
# Следуйте инструкциям для смешанной установки systemd/sysvinit/initscripts.<br />
# [[#Использование_юнитов|Включите демоны]], ранее перечисленные в {{ic|/etc/rc.conf}} с помощью команды {{ic|systemctl enable ''daemonname.'''service''' ''}}. Для переноса демонов из {{ic|/etc/rc.conf}} в разряд сервисов systemd, смотрите разделы: [[Daemon#List_of_Daemons|List of Daemons]] и [[Systemd/Services|Services]]. Демоны, для которых не имеется соответствующих сервис-файлов systemd, следует оставить в массиве DAEMONS, поскольку systemd запустит устаревшие скрипты rc.<br />
# Установите пакет {{Pkg|systemd-sysvcompat}}. Данный пакет конфликтует с {{Pkg|sysvinit}} и вам будет предложено удалить последний.<br />
# Удалите запись {{ic|1=init=...}}, поскольку {{ic|/sbin/init}} теперь является символической ссылкой на systemd.<br />
# Перезагрузите систему.<br />
<br />
Единственная разница между этим вариантом и вариантом с сохранением sysvinit состоит в том, что все бинарные файлы sysvinit заменены символическими ссылками на systemctl. Тем не менее, функциональность должна остаться неизменной.<br />
<br />
{{Note|Вам следует использовать ''NetworkManager.'''service''' '' (запомните употребление в данном названии букв в верхнем регистре) для включения сервиса network manager'а, в противном случае вы получите сообщение об ошибке и сервис не запустится во время загрузки системы.}}<br />
<br />
=== Чистая установка systemd ===<br />
<br />
Напоследок, возможно вовсе удалить initscripts и sysvinit и использовать только лишь systemd.<br />
<br />
# Следуйте инструкциям для смешанной установки systemd/initscripts.<br />
# Убедитесь, что более не имеется каких-либо демонов для запуска из массива DAEMONS в конфигурационном файле {{ic|/etc/rc.conf}} и оба файла {{ic|/etc/rc.local}} и {{ic|/etc/rc.local.shutdown}} пусты.<br />
# Удалите пакет initscripts из вашей системы.<br />
<br />
=== Дополнительная информация ===<br />
<br />
{{Tip|Если в параметрах ядра имеется значение {{ic|quiet}}, вероятно, вам стоит удалить его для нескольких первых загрузок systemd, чтобы видеть возникающие во время загрузке проблемы.}}<br />
<br />
== Родные системные файлы в systemd ==<br />
<br />
{{Note|Возможно, вам придется создать эти файлы. Установите для них права доступа 644 и владельца root:root.}}<br />
<br />
{{Pkg|systemd}} будет использовать {{ic|/etc/rc.conf}}, если эти конфигурационные файлы отсутствуют. Обратите внимание, что такое использование может быть только временным решением. Настоятельно рекомендуется для любой системы использовать конфигурационные файлы systemd.<br />
<br />
=== Имя компьютера (hostname) ===<br />
<br />
{{hc|/etc/hostname|<br />
myhostname}}<br />
<br />
=== Консоль и раскладка клавиатуры ===<br />
<br />
Файл {{ic|/etc/vconsole.conf}} устанавливает настройки виртуальной консоли: раскладку клавиатуры и консольный шрифт.<br />
<br />
{{hc|/etc/vconsole.conf|2=<br />
KEYMAP=ru<br />
FONT=cyr-sun16<br />
FONT_MAP=}}<br />
<br />
Для получения детальной информации обратитесь к разделам [[Fonts#Console_fonts|Console fonts]] and [[KEYMAP#Keyboard_layouts|Keymap]]. <br />
<br />
{{Note|{{ic|{{Pkg|systemd}}-194}} использует шрифт ядра и раскладку по умолчанию (т.е. американскую английскую). Нет более необходимости (для тех, кто использует данную раскладку) иметь в конфигурационном файле строки {{ic|1=KEYMAP=}} и {{ic|1=FONT=}} с пустыми значениями.}}<br />
<br />
=== Локаль ===<br />
Для получения подробной информации о вариантах настройки обратитесь к руководству {{ic|man locale.conf}}<br />
<br />
{{hc|/etc/locale.conf|2=<br />
LANG=ru_RU.UTF-8}}<br />
<br />
Дальнейшая информация содержится в статье [[Locale]].<br />
<br />
=== Временная зона ===<br />
<br />
Для получения подробной информации о вариантах настройки обратитесь к руководству {{ic|man 5 localtime}}.<br />
<br />
# ln -sf /usr/share/zoneinfo/America/Chicago /etc/localtime<br />
<br />
{{Note|Прежний конфигурационный файл {{ic|/etc/timezone}} объявлен устаревшим с выходом {{ic|systemd-190}} и может/должен быть удален.}}<br />
<br />
=== Аппаратные часы ===<br />
<br />
Systemd будет использовать UTC для аппаратных часов, именно такой вариант рекомендуется. Настройка зимнего/летнего времени - неблагодарное занятие. Если переход на зимнее/летнее время происходит в тот момент, когда ваш компьютер выключен, то при следующей загрузке ваши часы будут показывать ошибочное время ([http://www.cl.cam.ac.uk/~mgk25/mswish/ut-rtc.html здесь об этом чуть подробнее (англ.)]). Последние версии ядра устанавливают системное время из RTC (часов реального времени) непосредственно во время загрузки без использования {{ic|hwclock}}, при этом ядро всегда считает, что RTC выставлено по UTC. Это означает, что если RTC выставлено по местному времени (local time), системное время будет изначально установлено ошибочно и затем корректироваться вскоре после этого при каждой загрузке. Это является причиной некоторых досадных багов (идущие назад часы редко являются нужной вещью).<br />
<br />
Причиной, позволяющей RTC быть выставленными по местному времени, является двойная загрузка системы с Windows, ([http://blogs.msdn.com/b/oldnewthing/archive/2004/09/02/224672.aspx которая использует localtime (англ.)]). Windows воспринимает RTC, выставленные по UTC при помощи простого [[Time#UTC_in_Windows|исправления реестра]]. Если вы столкнетесь с подобными проблемами при двойной загрузке с Windows, вы можете установить аппаратные часы на использование местного времени.<br />
<br />
{{hc|/etc/adjtime|<br />
0.0 0.0 0.0<br />
0<br />
LOCAL}}<br />
<br />
Другие параметры по-прежнему нужны, но они игнорируются systemd.<br />
<br />
Обычно рекомендуется запускать [[NTP|демон Network Time Protocol]] для поддержания синхронизации аппаратных часов с системным временем.<br />
<br />
=== Загрузка модулей ядра ===<br />
systemd использует файлы-списки из {{ic|/etc/modules-load.d/}} для загрузки модулей ядра во время запуска системы. Каждый такой файл имеет название вида {{ic|/etc/modules-load.d/<program>.conf}}. В каждой строке конфигурационного файла пишется название модуля ядра для загрузки. Игнорируются пустые строки и строки, у которых первый символ, отличный от пробела, будет {{ic|#}} либо {{ic|;}}. Пример:<br />
{{hc|/etc/modules-load.d/modules.conf|<nowiki><br />
microcode<br />
fglrx<br />
</nowiki>}}<br />
См. также [[Modprobe#Options]]<br />
<br />
=== Чёрный список модулей ядра ===<br />
Добавление модулей в чёрный список работает также, как и с {{Pkg|initscripts}} т.к. на самом деле этим занимается {{Pkg|kmod}}. Подробней на [[Kernel_modules#Blacklisting|Module Blacklisting]]<br />
<br />
=== Временные файлы ===<br />
Systemd-tmpfiles использует файлы настроек из {{ic|/etc/tmpfiles.d/}} для описания создания, очистки, удаления временных файлов и директорий, обычно располагающихся в {{ic|/run}} или {{ic|/tmp}}. Каждый файл с настройками имеет название вида {{ic|/etc/tmpfiles.d/<program>.conf}} и имеент приоритет использования над файлом с таким же названием из {{ic|/usr/lib/tmpfiles.d/}}.<br />
<br />
tmp-файлы обычно идут вместе с сервисами для создания директории, которые используются этими сервисами. Например, демон [[Samba]] ожидает наличия директории {{ic|/var/run/samba}} c корректными правами, соответственно tmp-файл будет примерно следующего вида:<br />
{{hc|/usr/lib/tmpfiles.d/samba.conf|<br />
D /var/run/samba 0755 root root<br />
}}<br />
<br />
Однако, tmp-файлы могут также быть полезны, если необходимо записывать некоторые значения в файл(ы) при загрузке системы. Например, если вы используете {{ic|/etc/rc.local}} для отключения пробуждения USB-усройств через {{ic|echo USBE > /proc/acpi/wakeup}}, то вместо этого вы можете создать tmp-файл вида:<br />
{{hc|/etc/tmpfiles.d/disable-usb-wake.conf|<br />
w /proc/acpi/wakeup - - - - USBE<br />
}}<br />
<br />
Способ с tmp-файлами более предпочтителен, т.к. systemd не задействует {{ic|/etc/rc.local}} по умолчанию<br />
См. {{ic|man tmpfiles.d}} для подробностей.<br />
<br />
=== Монтирование удалённых файловых систем ===<br />
systemd производит монтирование удалённых ресурсов по [[NFS]] или [[Samba]] только после заверщения настройки сети. Поэтому удалённые файловые системы прописанные в {{ic|/etc/fstab}} должны работать "из коробки".<br />
<br />
Тем не менее, вы можете использовать [[#Automount|Automount]] для монтирования удалённых файловых систем, по мере доступа к ним. Дополнительно можно указать параметр монтирования {{ic|1=x-systemd.device-timeout=#}} в {{ic|/etc/fstab}} для обозначения таймаута в случае, если ресурс недоступен.<br />
<br />
Подробней в {{ic|man systemd.mount}}<br />
<br />
=== Замена acpid на systemd ===<br />
Systemd может обрабатывать некоторые события ACPI. Это настраивается через следующие параметры в {{ic|/etc/systemd/logind.conf}}:<br />
* {{ic|HandlePowerKey}} : выключить компьютер после нажания кнопки включения.<br />
* {{ic|HandleSleepKey}} : уснуть после нажатия кнопки "сна".<br />
* {{ic|HandleLidSwitch}} : уснуть после закрытия крышки ноутбука.<br />
В зависимости от значения этих параметров, эти действия могут выполняться, например, только тогда, когда никто из пользователей не вошёл в систему ({{ic|no-session}}). Или только тогда, когда активна одна сессия пользователя ({{ic|any-session}}). См. подробнее {{ic|man logind.conf}}<br />
<br />
Данные параметры не должны использоваться в окружениях рабочего стола подобных [[Gnome]] или [[XFCE]], т.к. они обрабатывают события ACPI самостоятельно. Однако, на системах без установленной графической оболочки, или только с простым оконным менеджером типа [[i3]] или [[awesome]], возможно использовать systemd вместо [[acpid]].<br />
<br />
=== Юниты ===<br />
Юнит это файл с конфигурацией, который содержит в себе информацию о сервисе, сокете, устройстве, точке (авто)монтирования, файле или разделе подкачки, "целевая единица", пути в файловой системе или таймере, управляемыми посредством systemd. Формат юнита сделан наподобие .desktop-файлов XDG Desktop Entry Specification, которые в свою очередь похожи на .ini-файлы Microsoft Windows. Cм. {{ic|man systemd.unit}} за подробной информацией.<br />
<br />
== Команды systemd ==<br />
<br />
*{{ic|systemctl}}: используется для наблюдения и контроля за состоянием sytemd и сервисов.<br />
*{{ic|systemd-cgls}}: показывает древовидную структуру cgroups.<br />
*{{ic|systemadm}}: графическая оболочка для systemd. Позволяет наблюдать и управлять состоянием systemd и сервисов (доступна посредством установки пакета {{AUR|systemd-ui-git}})<br />
<br />
См. страницы руководства man для получения подробной информации.<br />
<br />
{{Tip| Вы можете использовать все нижеизложенные команды {{ic|systemctl}} c параметром {{ic|-H <user>@<host>}} для управления systemd, работающим на удалённой машине. В этом случае для соединения с удалённым процессом systemd будет использоваться [[SSH]].}}<br />
<br />
=== Анализ состояния системы ===<br />
<br />
Список запущенных юнитов:<br />
<br />
{{bc|$ systemctl}}<br />
<br />
или:<br />
<br />
{{bc|$ systemctl list-units}}<br />
<br />
Cписок юнитов, отказавших в работе:<br />
<br />
{{bc|$ systemctl --failed}}<br />
<br />
Доступные юниты можно посмотреть в директориях {{ic|/usr/lib/systemd/system/}} и {{ic|/etc/systemd/system/}} (последняя директория имеет приоритет).<br />
<br />
=== Использование юнитов ===<br />
<br />
Юниты могут быть сервисами ({{ic|.service}}), точками монтирования ({{ic|.mount}}) или сокетами ({{ic|.sockets}}). При использовании команды {{ic|systemctl}} необходимо всегда указывать полное имя файла, включая расширение. Например, {{ic|netcfg.service}}. См. {{ic|man systemd.unit}} для подробностей.<br />
<br />
Непосредственно запустить юнит:<br />
<br />
{{bc|# systemctl start <unit>}}<br />
<br />
Непосредственно остановить юнит:<br />
<br />
{{bc|# systemctl stop <unit>}}<br />
<br />
Перезапустить юнит:<br />
<br />
{{bc|# systemctl restart <unit>}}<br />
<br />
Запросить у юнита перезагрузку его настроек:<br />
<br />
{{bc|# systemctl reload <unit>}}<br />
<br />
Показать статус юнита, а также запущен он или нет:<br />
<br />
{{bc|$ systemctl status <unit>}}<br />
<br />
Проверить включение юнита (т.е. разрешен ли юниту запуск при загрузке системы):<br />
<br />
{{bc|$ systemctl is-enabled <unit>}}<br />
<br />
Включить юнит (разрешить юниту запуск при загрузке системы):<br />
<br />
{{bc|# systemctl enable <unit>}}<br />
<br />
Выключить юнит (запретить юниту запуск при загрузке системы):<br />
<br />
{{bc|# systemctl disable <unit>}}<br />
<br />
Показать страницу помощи для юнита (необходима поддержка этой функции в указанном файле юнита):<br />
<br />
{{bc|$ systemctl help <unit>}}<br />
<br />
=== Управление питанием ===<br />
<br />
Если вы локальный пользователь, и никто кроме вас больше не имеет активной сессии, то нижеприведённые команды работают без прав суперпользователя root. В противном случае, systemd автоматически запросит у вас пароль root.<br />
<br />
Завершить работу и перезагрузить компьютер:<br />
<br />
{{bc|$ systemctl reboot}}<br />
<br />
Завершить работу и выключить компьютер:<br />
<br />
{{bc|$ systemctl poweroff}}<br />
<br />
Завершить работу и остановить(без выключения питания?) компьютер::<br />
<br />
{{bc|$ systemctl halt}}<br />
<br />
Перевести систему в состояние ожидания:<br />
<br />
{{bc|$ systemctl suspend}}<br />
<br />
Перевести систему в состояние гибернации:<br />
<br />
{{bc|$ systemctl hibernate}}<br />
<br />
== Запуск окружения рабочего стола из systemd ==<br />
<br />
=== Использование экранного менеджера ===<br />
Для графического входа в систему, необходимо запустить [[Display Manager (Русский)]]. На данный момент доступны файлы сервисов для [[GDM]], [[KDM]], [[SLiM]], [[XDM]] и [[LXDM]].<br />
<br />
{{bc|# systemctl enable kdm.service}}<br />
<br />
Запуск экранного менеджера должен работать "из коробки". Если не работет то, возможно, у вас {{ic|default.target}} настроен вручную или остался с предыдущей установки:<br />
<br />
{{hc|# ls -l /etc/systemd/system/default.target|/etc/systemd/system/default.target -> /usr/lib/systemd/system/graphical.target}}<br />
<br />
Просто удалите символическую ссылку и systemd будет использовать стандартный {{ic|default.target}} (т.е. {{ic|graphical.target}}).<br />
<br />
{{bc|# rm /etc/systemd/system/default.target}}<br />
<br />
Если для настроек локали используется {{ic|/etc/locale.conf}}, то добавьте строчку в {{ic|/etc/environment}}:<br />
{{hc|/etc/environment|<nowiki><br />
LANG=ru_RU.utf8</nowiki>}}<br />
<br />
=== Запуск через файл сервиса ===<br />
{{Note|При использование данного метода PAM-сессия не создастся для вашего пользователя. Поэтому ConsoleKit (предоставляет вам доступ к выключению\перезагрузке, устройствам аудио и т.д.) не будет корректно работать. Рекомендовано искользовать [[Automatic_login_to_virtual_console#With_systemd]].}}<br />
<br />
Если вам нужно просто напрямую, без экранного менеджера, запустить X, то вы можете создать файл сервиса примерно такого вида:<br />
{{hc|/etc/systemd/system/graphical.target.wants/xinit.service|<nowiki><br />
[Unit]<br />
Description=Direct login to X<br />
After=systemd-user-sessions.service<br />
<br />
[Service]<br />
ExecStart=/bin/su <username> -l -c "/bin/bash --login -c xinit"<br />
<br />
[Install]<br />
WantedBy=graphical.target<br />
</nowiki>}}<br />
<br />
== Журнал systemd ==<br />
<br />
С версии 38 systemd имеет собственную систему ведения логов - журнал (journal).<br />
<br />
По умолчанию, более не требуется запуск демона syslog. Для чтения логов используйте команду:<br />
<br />
# journalctl<br />
<br />
Журнал записывается в директорию {{ic|/run/systemd/journal}}, поэтому логи будут потеряны при перезагрузке. Для сохранения логов создайте директорию {{ic|/var/log/journal/}}:<br />
<br />
# mkdir /var/log/journal/<br />
<br />
=== Фильтрация вывода ===<br />
<br />
{{ic|journalctl}} позволяет фильтровать вывод по особым полям.<br />
<br />
Примеры:<br />
<br />
Показать все сообщения определенной программы:<br />
<br />
# journalctl /usr/lib/systemd/systemd<br />
<br />
Показать все сообщения определенного процесса:<br />
<br />
# journalctl _PID=1<br />
<br />
Показать все сообщения определенного юнита:<br />
<br />
# journalctl _SYSTEMD_UNIT=netcfg.service<br />
<br />
Обратитесь к {{ic|man journalctl}} и {{ic|systemd.journal-fields}} для получения детальной информации.<br />
<br />
=== Ограничение размера журнала ===<br />
<br />
Если журнал сохраняется при перезагрузке, размер его по умолчанию ограничен значением в 10% от объема соответствующей файловой системы. Например, для директории {{ic|/var/log/journal}}, расположенной на корневом разделе в 50 Гбайт, максимальный размер журналируемых данных составит до 5 Гбайт. Максимальный объем постоянного журнала можно контролировать при помощи значения {{ic|SystemMaxUse}} в конфигурационном файле {{ic|/etc/systemd/journald.conf}}, поэтому для ограничения его объемом в 50 Mбайт раскомментируйте и отредактируйте соответствующую строку:<br />
<br />
SystemMaxUse=50M<br />
<br />
Обратитесь к {{ic|man journald.conf}} для получения дальнейшей информации.<br />
<br />
=== Journald в связке с классическим демоном syslog ===<br />
<br />
Совместимость с классической реализацией syslog обеспечивается сокетом {{ic|/run/systemd/journal/syslog}}, в который перенаправляются все сообщения. Чтобы дать созможность демону syslog работать вместе с журналом systemd, следует привязать данный демон к указанному сокету вместо {{ic|/dev/log}} ([http://lwn.net/Articles/474968/ официальное сообщение]). В случае с syslog-ng, измените раздел {{ic|source src}} в конфигурационном файле {{ic|/etc/syslog-ng/syslog-ng.conf}} по следующем образцу:<br />
<br />
source src {<br />
unix-dgram("/run/systemd/journal/syslog");<br />
internal();<br />
file("/proc/kmsg");<br />
};<br />
<br />
и включите syslog-ng:<br />
<br />
# systemctl enable syslog-ng.service<br />
<br />
== Сеть ==<br />
<br />
=== Динамическое подключение (DHCP) с использованием dhcpcd ===<br />
<br />
Если хотите использовать только DHCP для своего соединения Ethernet, вы можете воспользоваться сервисом {{ic|dhcpcd@.service}} (который поставляется пакетом {{Pkg|dhcpcd}}).<br />
<br />
Чтобы подключить DHCP для {{ic|eth0}}, просто выполните команду:<br />
<br />
# systemctl start dhcpcd@eth0.service<br />
<br />
Вы можете включить этот сервис, и он будет автоматически запускаться при загрузке. Это делается командой:<br />
<br />
# systemctl enable dhcpcd@eth0.service<br />
<br />
Иногда сервис dhcpd запускается до загрузки модуля вашей сетевой карты ({{bug|30235}}), в этом случае вручную добавьте вашу сетевую карту в конфигурационный файл {{ic|/etc/modules-load.d/*.conf}}. Например, для карты Realtek необходима загрузка модуля {{ic|r8169}}, поэтому создайте такой конфигурационный файл:<br />
<br />
{{hc|/etc/modules-load.d/realtek.conf|2=<br />
r8169}}<br />
<br />
=== Другие конфигурации ===<br />
<br />
Для статического подключения, беспроводной сети или сложной конфигурации сети наподобие сетевого моста, вы можете использовать [[Netcfg#systemd_support|netcfg]] или [[NetworkManager#Enable_NetworkManager_under_Native_systemd_system|NetworkManager]], для обеих этих инструментов управления сетью имеются сервис-файлы для systemd.<br />
<br />
{{Note|Если вы хотите использовать netcfg, networkmanager или другие программы управления сетью, вам не надо в этом случае запускать или включать сервис dhcpcd как показано в предыдущем параграфе.}}<br />
<br />
==Интеграция с Arch==<br />
/etc/inittab не читается systemd, но стандартные установки systemd соответствуют стандартным установкам inittab.<br />
/etc/rc.local и /etc/rc.local.shutdown запускаются boot/shutdown как и раньше. Чтобы отключить их, выполните 'systemctl disable rc-local.service'. <br />
Большинство параметров /etc/rc.conf читаются systemd. Для чистой установки systemd рккомеднуется использовать нативные конфигурационные файлы (такие как /etc/locale.conf, /etc/vconsole.conf, /etc/hostname, /etc/modules-load.d/*.conf - подробнее смотри http://0pointer.de/public/systemd-man/), которые имеют приоритет над /etc/rc.conf.<br />
===Поддерживаются===<br />
* LOCALE<br />
* KEYMAP<br />
* CONSOLEFONT<br />
* CONSOLEMAP<br />
* HOSTNAME (этот и все вышеперечисленные считываются во время загрузки системы, нативные systemd конфигурационные файлы имеют более выоский приоритет)<br />
* TIMEZONE (устанавливается при выключении)<br />
* MODULES (чёрный список поддерживается)<br />
* DAEMONS (порядок и чёрный список поддерживаются, если нативные systemd service-файл существует, имеющий такое же имя, то нативный файл имеет более высокий приоритет, отключить этот механизм можно с помощью 'systemctl disable arch-daemons.target').<br />
<br />
===Не поддерживаются===<br />
<br />
* HARDWARECLOCK (используйте 'hwclock --systohc --utc' чтобы установить часы в utc, localtime не поддерживается, смотри FAQ)<br />
* USELVM (используйте 'systemctl enable|disable lvm-activate.service' вместо этого)<br />
* USECOLOR <br />
<br />
==Пакет initscripts-systemd==<br />
Этот пакет включает в себя юнит файлы и скрипты, кторые нужны, чтобы эмулировать скрипты инициализации Arch'а. Большинству людей не нужны все (или некоторые) из этих юнитов и они могут быть легко отключены:<br />
# systemctl disable <unitfile><br />
Если вы определны, что хотите отключить конкретный юнит.<br />
<br />
Планируется удалить большую часть функциональности данного пакета, как только эти функции будут обрабатываться в других местах (в основном в udev/systemd/kernel).<br />
<br />
Ниже следует краткое описание каждого из этих юнитов.<br />
<br />
===nisdomainname.service===<br />
Устанавливает nis/yp доменное имя. Этот параметр устарел и не следует его испоьзовать.<br />
<br />
===lvm.service===<br />
Копирует Arch управление LVM. Нужен, только используете LVM не на корневом разделе. В уудщем systemd, вероятно, справиться с этим более надёжным и чистым способом.<br />
<br />
===rc-local.service===<br />
Запускает /etc/rc-local при загрукзе системы.<br />
<br />
===arch-daemons.target===<br />
Считывает DAEMONS массив из rc.conf и запускает соответствующие службы. Если нативный sysemd-файл существует (с тем же именем, что и демон в /etc/rc.d/) дял данного демона, то используется нативный файл. В протвном случае запускается скрипт из /etc/rc.d/.<br />
<br />
===arch-persistent-settings.service===<br />
Он запускается при завершении работы. Его основная цель - убедиться, что все настройки Arch применены при следующей загрузке. В частности:<br />
* устанавливает timezone из rc.conf<br />
* обновляет чёрный список модулей из rc.conf (смотри /etc/modprobe.d/rc.conf)<br />
* оьновляет список модулей, которые должны быть загружены, из rc.conf (смотри /etc/modules-load.d/rc.conf)<br />
<br />
==FAQ==<br />
===Почему мои шрифты в консоли такие уродливые?===<br />
Если шрифт не установлен в /etc/vconsole.conf (или, как альтернатива, в /etc/rc.conf), то будет использован стандартный шрифт. Стандартный шрифт выбирается из-за поддержки большого числа наборов символов. Установите нужный шрифт в вышеуказанных файлах, чтобы исправить проблему.<br />
===Как мне изменить текущий уровень запуска (runlevel)?===<br />
В systemd уровни запуска обеспечиваются через "целевой единицы". Вы можете изменить их так:<br />
# systemctl isolate runlevel5.target<br />
или<br />
# systemctl isolate runlevel3.target<br />
Заметим, однако, что концепция уровней запуска немного устарели, и вместо них лучше использовать современные названия. Например:<br />
# systemctl isolate graphical.target<br />
Эти команды изменят только текущий уровень запуска и при следующей загрузке не сохранятся.<br />
===Как мне изменить уровень запуска по умолчанию?===<br />
Чтобы изменить уровень запуска по умолчанию, нужно создть символическую ссылку на соответствующий target-файл:<br />
# ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target<br />
или <br />
# ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target<br />
<br />
=== Выключение/перезагрузка происходят ужасно долго ===<br />
<br />
Если процесс выключения занимает очень долгое время (или, по-видимому, зависает), то, вероятно, виноват сервис, который не завершает свою работу. systemd ожидает некоторое время, пока каждый сервис завершит свою работу самостоятельно, и только потом пытается принудительно завершить (kill) его. Если вы столкнулись с такой проблемой, обратитесь к [http://freedesktop.org/wiki/Software/systemd/Debugging#Shutdown_Completes_Eventually данной статье (англ.)].<br />
<br />
== Полезные ссылки ==<br />
<br />
*[http://www.freedesktop.org/wiki/Software/systemd Официальный веб-сайт (англ.)]<br />
*[http://0pointer.de/public/systemd-man/ Страницы руководств (англ.)]<br />
*[http://freedesktop.org/wiki/Software/systemd/Optimizations systemd Optimizations (англ.)]<br />
*[http://www.freedesktop.org/wiki/Software/systemd/FrequentlyAskedQuestions FAQ (англ.)]<br />
*[http://www.freedesktop.org/wiki/Software/systemd/TipsAndTricks Tips And Tricks (англ.)]<br />
*[http://0pointer.de/public/systemd-ebook-psankar.pdf systemd для администраторов (PDF) - перевод цикла статей Леннарта Поттеринга (Lennart Poettering) ]<br />
*[http://wiki.russianfedora.ru/index.php?title=Systemd systemd - база знаний проекта Fedora]<br />
*[http://0pointer.de/blog/projects/systemd.html Блог Lennart'а (англ.)]<br />
*[http://archlinux.org.ru/forum/viewtopic.php?f=9&t=9581 systemd mini FAQ]<br />
*[http://wiki.debian.org/ru/Systemd Debian Wiki: systemd - менеджер системы и сервисов]<br />
*[http://fedoraproject.org/wiki/Systemd Fedora Linux Wiki: Systemd (англ.)]<br />
*[http://wiki.ubuntu.com/systemd Ubuntu Wiki: systemd (англ.)]<br />
*[http://fedoraproject.org/wiki/Systemd OpenSuse Wiki: SDB:Systemd]</div>Klayhttps://wiki.archlinux.org/index.php?title=Systemd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=229844Systemd (Русский)2012-10-20T07:11:28Z<p>Klay: /* Полезные ссылки */</p>
<hr />
<div>[[Category:Русский]]<br />
[[Category:Демоны и системные сервисы]]<br />
[[Category:Процесс загрузки]]<br />
[[en:systemd]]<br />
[[es:systemd]]<br />
[[fr:systemd]]<br />
[[it:systemd]]<br />
[[zh-CN:systemd]]<br />
{{Article summary start|Сводка}}<br />
{{Article summary text|Статья охватывает установку и настройку systemd.}}<br />
{{Article summary heading|Связанные статьи}}<br />
{{Article summary wiki|Systemd/Services}}<br />
{{Article summary wiki|Init_Rosetta_(Русский)}}<br />
{{Article summary wiki|Udev_(Русский)}}<br />
{{Article summary end}}<br />
Цитата с [http://freedesktop.org/wiki/Software/systemd веб-страницы проекта]:<br />
<br />
''"'''systemd''' - система [инициализации] и менеджер сервисов для Linux, совместимые со скриптами инициализации SysV и LSB. systemd обеспечивает возможности агрессивной параллелизации, использует сокеты и активацию [[D-Bus]] для запускаемых сервизов, предлагает запуск демонов по необходимости, отслеживает процессы при помощи [[cgroups|контрольных групп]] Linux, поддерживает мгновенные снимки и восстановление состояния системы, монтирование и точки монтирования, а также внедряет основанную на зависимостях логику контроля процессов сложных транзакций. Эта система может выступать заменой sysvinit."''.<br />
<br />
{{Note|За детальным объяснением причин перехода Arch'а на systemd обратитесь к [https://bbs.archlinux.org/viewtopic.php?pid&#61;1149530#p1149530 сообщению на англоязычном форуме].}}<br />
<br />
Смотрите также [[Wikipedia:Systemd|статью в Википедии]].<br />
== Что надо усвоить до начала миграции на данную систему ==<br />
<br />
* Настоятельно рекомендуется перейти на новую конфигурацию '''initscripts''', описанную в статье [[rc.conf (Русский)|rc.conf]]. Сконфигурировав таким образом свою систему, вы проделаете бóльшую часть работы, необходимую для миграции на systemd.<br />
* Почитайте про systemd на [http://freedesktop.org/wiki/Software/systemd/ сайте разработчиков].<br />
* Обратите внимание, что systemd имеет собственный '''журнал (journal)''', заменяющий '''syslog''', хотя оба варианта ведения логов могут сосуществовать. Обратитесь к приведенному ниже разделу [[#Journald_в_связке_с_классическим_демоном _syslog|разделу, посвященному журналу]].<br />
* Хотя systemd вполне способна заменить определенную функциональность таких демонов, как '''cron''', '''acpid''' или '''xinetd''', но если вы не хотите, можете не отказываться от использования традиционных демонов.<br />
<br />
== Установка ==<br />
systemd может быть установлен параллельно со стандартным пакетом инициализации {{Pkg|initscripts}}, и между ними можно будет переключаться путем добавления/удаления [[kernel parameters|параметров ядра]] {{ic|1=init=/usr/lib/systemd/systemd}}. <br />
<br />
=== Смешанная установка systemd/sysvinit/initscripts ===<br />
<br />
Возможно иметь в своей системе одновременно установленными systemd и sysvinit и использовать одну и те же конфигурационные файлы, что позволит вам свободно переключаться между ним туда и обратно:<br />
<br />
# Откажитесь от устаревших форматов конфигурации initscripts (о них сообщается при загрузке системы) в пользу [[#Родные системные файлы в systemd|родных системных файлов systemd]] и перезагрузитесь для проверки работоспособности данных установок при использовании initscripts.<br />
# Установите пакет {{Pkg|systemd}} из [[Official Repositories (Русский)|официальных репозиториев]].<br />
# Добавьте запись {{ic|1=init=/usr/lib/systemd/systemd}} к [[Kernel parameters|параметрам ядра]] в вашем загрузчике.<br />
# Перезагрузите систему.<br />
<br />
Systemd запустит демоны, перечисленные в {{ic|/etc/rc.conf}}, выполнит {{ic|/etc/rc.local}} и {{ic|/etc/rc.local.shutdown}} соответственно при загрузке/выключении системы. Если поддержка совместимости с массивом DAEMONS в конфигурационном файле {{ic|rc.conf}} или же скриптов в {{ic|rc.local}} вам не нужна, соответствующие сервис-файлы могут быть заблокированы (замаскированы) для их отключения.<br />
<br />
{{Warning|В случае, когда у вас в массиве DAEMONS перечислены демоны, для которых имеются родные сервис-файлы systemd, автоматически будут использоваться родные сервис-файлы. Тем не менее, если имена скриптов rc и сервисов systemd не соответствуют друг другу, данное правило не сработает и вам следует убедиться, что только включен только один из них двух (предпочтительно родной сервис-файл).}}<br />
<br />
{{Warning|Systemd - процесс асинхронной загрузки по сравнению сравнении с последовательным запуском демонов из массива DAEMONS. В частности, "network", будучи поддерживаемым для совместимости сервисом, может запуститься слишком поздно для включения интерфейсов, которые требуются другим сервисам. Рекомендуется переключиться на использование netcfg или NetworkManager до перехода на systemd.}}<br />
<br />
=== Смешанная установка systemd/initscripts ===<br />
<br />
Возможно заменить sysvinit на systemd, но сохранить initscripts в случае использования некоторых скриптов rc scripts, для которых пока не имеется эквивалентов в systemd.<br />
<br />
# Следуйте инструкциям для смешанной установки systemd/sysvinit/initscripts.<br />
# [[#Использование_юнитов|Включите демоны]], ранее перечисленные в {{ic|/etc/rc.conf}} с помощью команды {{ic|systemctl enable ''daemonname.'''service''' ''}}. Для переноса демонов из {{ic|/etc/rc.conf}} в разряд сервисов systemd, смотрите разделы: [[Daemon#List_of_Daemons|List of Daemons]] и [[Systemd/Services|Services]]. Демоны, для которых не имеется соответствующих сервис-файлов systemd, следует оставить в массиве DAEMONS, поскольку systemd запустит устаревшие скрипты rc.<br />
# Установите пакет {{Pkg|systemd-sysvcompat}}. Данный пакет конфликтует с {{Pkg|sysvinit}} и вам будет предложено удалить последний.<br />
# Удалите запись {{ic|1=init=...}}, поскольку {{ic|/sbin/init}} теперь является символической ссылкой на systemd.<br />
# Перезагрузите систему.<br />
<br />
Единственная разница между этим вариантом и вариантом с сохранением sysvinit состоит в том, что все бинарные файлы sysvinit заменены символическими ссылками на systemctl. Тем не менее, функциональность должна остаться неизменной.<br />
<br />
{{Note|Вам следует использовать ''NetworkManager.'''service''' '' (запомните употребление в данном названии букв в верхнем регистре) для включения сервиса network manager'а, в противном случае вы получите сообщение об ошибке и сервис не запустится во время загрузки системы.}}<br />
<br />
=== Чистая установка systemd ===<br />
<br />
Напоследок, возможно вовсе удалить initscripts и sysvinit и использовать только лишь systemd.<br />
<br />
# Следуйте инструкциям для смешанной установки systemd/initscripts.<br />
# Убедитесь, что более не имеется каких-либо демонов для запуска из массива DAEMONS в конфигурационном файле {{ic|/etc/rc.conf}} и оба файла {{ic|/etc/rc.local}} и {{ic|/etc/rc.local.shutdown}} пусты.<br />
# Удалите пакет initscripts из вашей системы.<br />
<br />
=== Дополнительная информация ===<br />
<br />
{{Tip|Если в параметрах ядра имеется значение {{ic|quiet}}, вероятно, вам стоит удалить его для нескольких первых загрузок systemd, чтобы видеть возникающие во время загрузке проблемы.}}<br />
<br />
== Родные системные файлы в systemd ==<br />
<br />
{{Note|Возможно, вам придется создать эти файлы. Установите для них права доступа 644 и владельца root:root.}}<br />
<br />
{{Pkg|systemd}} будет использовать {{ic|/etc/rc.conf}}, если эти конфигурационные файлы отсутствуют. Обратите внимание, что такое использование может быть только временным решением. Настоятельно рекомендуется для любой системы использовать конфигурационные файлы systemd.<br />
<br />
=== Имя компьютера (hostname) ===<br />
<br />
{{hc|/etc/hostname|<br />
myhostname}}<br />
<br />
=== Консоль и раскладка клавиатуры ===<br />
<br />
Файл {{ic|/etc/vconsole.conf}} устанавливает настройки виртуальной консоли: раскладку клавиатуры и консольный шрифт.<br />
<br />
{{hc|/etc/vconsole.conf|2=<br />
KEYMAP=ru<br />
FONT=cyr-sun16<br />
FONT_MAP=}}<br />
<br />
Для получения детальной информации обратитесь к разделам [[Fonts#Console_fonts|Console fonts]] and [[KEYMAP#Keyboard_layouts|Keymap]]. <br />
<br />
{{Note|{{ic|{{Pkg|systemd}}-194}} использует шрифт ядра и раскладку по умолчанию (т.е. американскую английскую). Нет более необходимости (для тех, кто использует данную раскладку) иметь в конфигурационном файле строки {{ic|1=KEYMAP=}} и {{ic|1=FONT=}} с пустыми значениями.}}<br />
<br />
=== Локаль ===<br />
Для получения подробной информации о вариантах настройки обратитесь к руководству {{ic|man locale.conf}}<br />
<br />
{{hc|/etc/locale.conf|2=<br />
LANG=ru_RU.UTF-8}}<br />
<br />
Дальнейшая информация содержится в статье [[Locale]].<br />
<br />
=== Временная зона ===<br />
<br />
Для получения подробной информации о вариантах настройки обратитесь к руководству {{ic|man 5 localtime}}.<br />
<br />
# ln -sf /usr/share/zoneinfo/America/Chicago /etc/localtime<br />
<br />
{{Note|Прежний конфигурационный файл {{ic|/etc/timezone}} объявлен устаревшим с выходом {{ic|systemd-190}} и может/должен быть удален.}}<br />
<br />
=== Аппаратные часы ===<br />
<br />
Systemd будет использовать UTC для аппаратных часов, именно такой вариант рекомендуется. Настройка зимнего/летнего времени - неблагодарное занятие. Если переход на зимнее/летнее время происходит в тот момент, когда ваш компьютер выключен, то при следующей загрузке ваши часы будут показывать ошибочное время ([http://www.cl.cam.ac.uk/~mgk25/mswish/ut-rtc.html здесь об этом чуть подробнее (англ.)]). Последние версии ядра устанавливают системное время из RTC (часов реального времени) непосредственно во время загрузки без использования {{ic|hwclock}}, при этом ядро всегда считает, что RTC выставлено по UTC. Это означает, что если RTC выставлено по местному времени (local time), системное время будет изначально установлено ошибочно и затем корректироваться вскоре после этого при каждой загрузке. Это является причиной некоторых досадных багов (идущие назад часы редко являются нужной вещью).<br />
<br />
Причиной, позволяющей RTC быть выставленными по местному времени, является двойная загрузка системы с Windows, ([http://blogs.msdn.com/b/oldnewthing/archive/2004/09/02/224672.aspx которая использует localtime (англ.)]). Windows воспринимает RTC, выставленные по UTC при помощи простого [[Time#UTC_in_Windows|исправления реестра]]. Если вы столкнетесь с подобными проблемами при двойной загрузке с Windows, вы можете установить аппаратные часы на использование местного времени.<br />
<br />
{{hc|/etc/adjtime|<br />
0.0 0.0 0.0<br />
0<br />
LOCAL}}<br />
<br />
Другие параметры по-прежнему нужны, но они игнорируются systemd.<br />
<br />
Обычно рекомендуется запускать [[NTP|демон Network Time Protocol]] для поддержания синхронизации аппаратных часов с системным временем.<br />
<br />
=== Загрузка модулей ядра ===<br />
systemd использует файлы-списки из {{ic|/etc/modules-load.d/}} для загрузки модулей ядра во время запуска системы. Каждый такой файл имеет название вида {{ic|/etc/modules-load.d/<program>.conf}}. В каждой строке конфигурационного файла пишется название модуля ядра для загрузки. Игнорируются пустые строки и строки, у которых первый символ, отличный от пробела, будет {{ic|#}} либо {{ic|;}}. Пример:<br />
{{hc|/etc/modules-load.d/modules.conf|<nowiki><br />
microcode<br />
fglrx<br />
</nowiki>}}<br />
См. также [[Modprobe#Options]]<br />
<br />
=== Чёрный список модулей ядра ===<br />
Добавление модулей в чёрный список работает также, как и с {{Pkg|initscripts}} т.к. на самом деле этим занимается {{Pkg|kmod}}. Подробней на [[Kernel_modules#Blacklisting|Module Blacklisting]]<br />
<br />
=== Временные файлы ===<br />
Systemd-tmpfiles использует файлы настроек из {{ic|/etc/tmpfiles.d/}} для описания создания, очистки, удаления временных файлов и директорий, обычно располагающихся в {{ic|/run}} или {{ic|/tmp}}. Каждый файл с настройками имеет название вида {{ic|/etc/tmpfiles.d/<program>.conf}} и имеент приоритет использования над файлом с таким же названием из {{ic|/usr/lib/tmpfiles.d/}}.<br />
<br />
tmp-файлы обычно идут вместе с сервисами для создания директории, которые используются этими сервисами. Например, демон [[Samba]] ожидает наличия директории {{ic|/var/run/samba}} c корректными правами, соответственно tmp-файл будет примерно следующего вида:<br />
{{hc|/usr/lib/tmpfiles.d/samba.conf|<br />
D /var/run/samba 0755 root root<br />
}}<br />
<br />
Однако, tmp-файлы могут также быть полезны, если необходимо записывать некоторые значения в файл(ы) при загрузке системы. Например, если вы используете {{ic|/etc/rc.local}} для отключения пробуждения USB-усройств через {{ic|echo USBE > /proc/acpi/wakeup}}, то вместо этого вы можете создать tmp-файл вида:<br />
{{hc|/etc/tmpfiles.d/disable-usb-wake.conf|<br />
w /proc/acpi/wakeup - - - - USBE<br />
}}<br />
<br />
Способ с tmp-файлами более предпочтителен, т.к. systemd не задействует {{ic|/etc/rc.local}} по умолчанию<br />
См. {{ic|man tmpfiles.d}} для подробностей.<br />
<br />
=== Монтирование удалённых файловых систем ===<br />
systemd производит монтирование удалённых ресурсов по [[NFS]] или [[Samba]] только после заверщения настройки сети. Поэтому удалённые файловые системы прописанные в {{ic|/etc/fstab}} должны работать "из коробки".<br />
<br />
Тем не менее, вы можете использовать [[#Automount|Automount]] для монтирования удалённых файловых систем, по мере доступа к ним. Дополнительно можно указать параметр монтирования {{ic|1=x-systemd.device-timeout=#}} в {{ic|/etc/fstab}} для обозначения таймаута в случае, если ресурс недоступен.<br />
<br />
Подробней в {{ic|man systemd.mount}}<br />
<br />
=== Замена acpid на systemd ===<br />
Systemd может обрабатывать некоторые события ACPI. Это настраивается через следующие параметры в {{ic|/etc/systemd/logind.conf}}:<br />
* {{ic|HandlePowerKey}} : выключить компьютер после нажания кнопки включения.<br />
* {{ic|HandleSleepKey}} : уснуть после нажатия кнопки "сна".<br />
* {{ic|HandleLidSwitch}} : уснуть после закрытия крышки ноутбука.<br />
В зависимости от значения этих параметров, эти действия могут выполняться, например, только тогда, когда никто из пользователей не вошёл в систему ({{ic|no-session}}). Или только тогда, когда активна одна сессия пользователя ({{ic|any-session}}). См. подробнее {{ic|man logind.conf}}<br />
<br />
Данные параметры не должны использоваться в окружениях рабочего стола подобных [[Gnome]] или [[XFCE]], т.к. они обрабатывают события ACPI самостоятельно. Однако, на системах без установленной графической оболочки, или только с простым оконным менеджером типа [[i3]] или [[awesome]], возможно использовать systemd вместо [[acpid]].<br />
<br />
=== Юниты ===<br />
Юнит это файл с конфигурацией, который содержит в себе информацию о сервисе, сокете, устройстве, точке (авто)монтирования, файле или разделе подкачки, "целевая единица", пути в файловой системе или таймере, управляемыми посредством systemd. Формат юнита сделан наподобие .desktop-файлов XDG Desktop Entry Specification, которые в свою очередь похожи на .ini-файлы Microsoft Windows. Cм. {{ic|man systemd.unit}} за подробной информацией.<br />
<br />
== Команды systemd ==<br />
<br />
*{{ic|systemctl}}: используется для наблюдения и контроля за состоянием sytemd и сервисов.<br />
*{{ic|systemd-cgls}}: показывает древовидную структуру cgroups.<br />
*{{ic|systemadm}}: графическая оболочка для systemd. Позволяет наблюдать и управлять состоянием systemd и сервисов (доступна посредством установки пакета {{AUR|systemd-ui-git}})<br />
<br />
См. страницы руководства man для получения подробной информации.<br />
<br />
{{Tip| Вы можете использовать все нижеизложенные команды {{ic|systemctl}} c параметром {{ic|-H <user>@<host>}} для управления systemd, работающим на удалённой машине. В этом случае для соединения с удалённым процессом systemd будет использоваться [[SSH]].}}<br />
<br />
=== Анализ состояния системы ===<br />
<br />
Список запущенных юнитов:<br />
<br />
{{bc|$ systemctl}}<br />
<br />
или:<br />
<br />
{{bc|$ systemctl list-units}}<br />
<br />
Cписок юнитов, отказавших в работе:<br />
<br />
{{bc|$ systemctl --failed}}<br />
<br />
Доступные юниты можно посмотреть в директориях {{ic|/usr/lib/systemd/system/}} и {{ic|/etc/systemd/system/}} (последняя директория имеет приоритет).<br />
<br />
=== Использование юнитов ===<br />
<br />
Юниты могут быть сервисами ({{ic|.service}}), точками монтирования ({{ic|.mount}}) или сокетами ({{ic|.sockets}}). При использовании команды {{ic|systemctl}} необходимо всегда указывать полное имя файла, включая расширение. Например, {{ic|netcfg.service}}. См. {{ic|man systemd.unit}} для подробностей.<br />
<br />
Непосредственно запустить юнит:<br />
<br />
{{bc|# systemctl start <unit>}}<br />
<br />
Непосредственно остановить юнит:<br />
<br />
{{bc|# systemctl stop <unit>}}<br />
<br />
Перезапустить юнит:<br />
<br />
{{bc|# systemctl restart <unit>}}<br />
<br />
Запросить у юнита перезагрузку его настроек:<br />
<br />
{{bc|# systemctl reload <unit>}}<br />
<br />
Показать статус юнита, а также запущен он или нет:<br />
<br />
{{bc|$ systemctl status <unit>}}<br />
<br />
Проверить включение юнита (т.е. разрешен ли юниту запуск при загрузке системы):<br />
<br />
{{bc|$ systemctl is-enabled <unit>}}<br />
<br />
Включить юнит (разрешить юниту запуск при загрузке системы):<br />
<br />
{{bc|# systemctl enable <unit>}}<br />
<br />
Выключить юнит (запретить юниту запуск при загрузке системы):<br />
<br />
{{bc|# systemctl disable <unit>}}<br />
<br />
Показать страницу помощи для юнита (необходима поддержка этой функции в указанном файле юнита):<br />
<br />
{{bc|$ systemctl help <unit>}}<br />
<br />
=== Управление питанием ===<br />
<br />
Если вы локальный пользователь, и никто кроме вас больше не имеет активной сессии, то нижеприведённые команды работают без прав суперпользователя root. В противном случае, systemd автоматически запросит у вас пароль root.<br />
<br />
Завершить работу и перезагрузить компьютер:<br />
<br />
{{bc|$ systemctl reboot}}<br />
<br />
Завершить работу и выключить компьютер:<br />
<br />
{{bc|$ systemctl poweroff}}<br />
<br />
Завершить работу и остановить(без выключения питания?) компьютер::<br />
<br />
{{bc|$ systemctl halt}}<br />
<br />
Перевести систему в состояние ожидания:<br />
<br />
{{bc|$ systemctl suspend}}<br />
<br />
Перевести систему в состояние гибернации:<br />
<br />
{{bc|$ systemctl hibernate}}<br />
<br />
== Запуск окружения рабочего стола из systemd ==<br />
<br />
=== Использование экранного менеджера ===<br />
Для графического входа в систему, необходимо запустить [[Display Manager (Русский)]]. На данный момент доступны файлы сервисов для [[GDM]], [[KDM]], [[SLiM]], [[XDM]] и [[LXDM]].<br />
<br />
{{bc|# systemctl enable kdm.service}}<br />
<br />
Запуск экранного менеджера должен работать "из коробки". Если не работет то, возможно, у вас {{ic|default.target}} настроен вручную или остался с предыдущей установки:<br />
<br />
{{hc|# ls -l /etc/systemd/system/default.target|/etc/systemd/system/default.target -> /usr/lib/systemd/system/graphical.target}}<br />
<br />
Просто удалите символическую ссылку и systemd будет использовать стандартный {{ic|default.target}} (т.е. {{ic|graphical.target}}).<br />
<br />
{{bc|# rm /etc/systemd/system/default.target}}<br />
<br />
Если для настроек локали используется {{ic|/etc/locale.conf}}, то добавьте строчку в {{ic|/etc/environment}}:<br />
{{hc|/etc/environment|<nowiki><br />
LANG=ru_RU.utf8</nowiki>}}<br />
<br />
=== Запуск через файл сервиса ===<br />
{{Note|При использование данного метода PAM-сессия не создастся для вашего пользователя. Поэтому ConsoleKit (предоставляет вам доступ к выключению\перезагрузке, устройствам аудио и т.д.) не будет корректно работать. Рекомендовано искользовать [[Automatic_login_to_virtual_console#With_systemd]].}}<br />
<br />
Если вам нужно просто напрямую, без экранного менеджера, запустить X, то вы можете создать файл сервиса примерно такого вида:<br />
{{hc|/etc/systemd/system/graphical.target.wants/xinit.service|<nowiki><br />
[Unit]<br />
Description=Direct login to X<br />
After=systemd-user-sessions.service<br />
<br />
[Service]<br />
ExecStart=/bin/su <username> -l -c "/bin/bash --login -c xinit"<br />
<br />
[Install]<br />
WantedBy=graphical.target<br />
</nowiki>}}<br />
<br />
== Журнал systemd ==<br />
<br />
С версии 38 systemd имеет собственную систему ведения логов - журнал (journal).<br />
<br />
По умолчанию, более не требуется запуск демона syslog. Для чтения логов используйте команду:<br />
<br />
# journalctl<br />
<br />
Журнал записывается в директорию {{ic|/run/systemd/journal}}, поэтому логи будут потеряны при перезагрузке. Для сохранения логов создайте директорию {{ic|/var/log/journal/}}:<br />
<br />
# mkdir /var/log/journal/<br />
<br />
=== Фильтрация вывода ===<br />
<br />
{{ic|journalctl}} позволяет фильтровать вывод по особым полям.<br />
<br />
Примеры:<br />
<br />
Показать все сообщения определенной программы:<br />
<br />
# journalctl /usr/lib/systemd/systemd<br />
<br />
Показать все сообщения определенного процесса:<br />
<br />
# journalctl _PID=1<br />
<br />
Показать все сообщения определенного юнита:<br />
<br />
# journalctl _SYSTEMD_UNIT=netcfg.service<br />
<br />
Обратитесь к {{ic|man journalctl}} и {{ic|systemd.journal-fields}} для получения детальной информации.<br />
<br />
=== Ограничение размера журнала ===<br />
<br />
Если журнал сохраняется при перезагрузке, размер его по умолчанию ограничен значением в 10% от объема соответствующей файловой системы. Например, для директории {{ic|/var/log/journal}}, расположенной на корневом разделе в 50 Гбайт, максимальный размер журналируемых данных составит до 5 Гбайт. Максимальный объем постоянного журнала можно контролировать при помощи значения {{ic|SystemMaxUse}} в конфигурационном файле {{ic|/etc/systemd/journald.conf}}, поэтому для ограничения его объемом в 50 Mбайт раскомментируйте и отредактируйте соответствующую строку:<br />
<br />
SystemMaxUse=50M<br />
<br />
Обратитесь к {{ic|man journald.conf}} для получения дальнейшей информации.<br />
<br />
=== Journald в связке с классическим демоном syslog ===<br />
<br />
Совместимость с классической реализацией syslog обеспечивается сокетом {{ic|/run/systemd/journal/syslog}}, в который перенаправляются все сообщения. Чтобы дать созможность демону syslog работать вместе с журналом systemd, следует привязать данный демон к указанному сокету вместо {{ic|/dev/log}} ([http://lwn.net/Articles/474968/ официальное сообщение]). В случае с syslog-ng, измените раздел {{ic|source src}} в конфигурационном файле {{ic|/etc/syslog-ng/syslog-ng.conf}} по следующем образцу:<br />
<br />
source src {<br />
unix-dgram("/run/systemd/journal/syslog");<br />
internal();<br />
file("/proc/kmsg");<br />
};<br />
<br />
и включите syslog-ng:<br />
<br />
# systemctl enable syslog-ng.service<br />
<br />
== Сеть ==<br />
<br />
=== Динамическое подключение (DHCP) с использованием dhcpcd ===<br />
<br />
Если хотите использовать только DHCP для своего соединения Ethernet, вы можете воспользоваться сервисом {{ic|dhcpcd@.service}} (который поставляется пакетом {{Pkg|dhcpcd}}).<br />
<br />
Чтобы подключить DHCP для {{ic|eth0}}, просто выполните команду:<br />
<br />
# systemctl start dhcpcd@eth0.service<br />
<br />
Вы можете включить этот сервис, и он будет автоматически запускаться при загрузке. Это делается командой:<br />
<br />
# systemctl enable dhcpcd@eth0.service<br />
<br />
Иногда сервис dhcpd запускается до загрузки модуля вашей сетевой карты ({{bug|30235}}), в этом случае вручную добавьте вашу сетевую карту в конфигурационный файл {{ic|/etc/modules-load.d/*.conf}}. Например, для карты Realtek необходима загрузка модуля {{ic|r8169}}, поэтому создайте такой конфигурационный файл:<br />
<br />
{{hc|/etc/modules-load.d/realtek.conf|2=<br />
r8169}}<br />
<br />
=== Другие конфигурации ===<br />
<br />
Для статического подключения, беспроводной сети или сложной конфигурации сети наподобие сетевого моста, вы можете использовать [[Netcfg#systemd_support|netcfg]] или [[NetworkManager#Enable_NetworkManager_under_Native_systemd_system|NetworkManager]], для обеих этих инструментов управления сетью имеются сервис-файлы для systemd.<br />
<br />
{{Note|Если вы хотите использовать netcfg, networkmanager или другие программы управления сетью, вам не надо в этом случае запускать или включать сервис dhcpcd как показано в предыдущем параграфе.}}<br />
<br />
==Интеграция с Arch==<br />
/etc/inittab не читается systemd, но стандартные установки systemd соответствуют стандартным установкам inittab.<br />
/etc/rc.local и /etc/rc.local.shutdown запускаются boot/shutdown как и раньше. Чтобы отключить их, выполните 'systemctl disable rc-local.service'. <br />
Большинство параметров /etc/rc.conf читаются systemd. Для чистой установки systemd рккомеднуется использовать нативные конфигурационные файлы (такие как /etc/locale.conf, /etc/vconsole.conf, /etc/hostname, /etc/modules-load.d/*.conf - подробнее смотри http://0pointer.de/public/systemd-man/), которые имеют приоритет над /etc/rc.conf.<br />
===Поддерживаются===<br />
* LOCALE<br />
* KEYMAP<br />
* CONSOLEFONT<br />
* CONSOLEMAP<br />
* HOSTNAME (этот и все вышеперечисленные считываются во время загрузки системы, нативные systemd конфигурационные файлы имеют более выоский приоритет)<br />
* TIMEZONE (устанавливается при выключении)<br />
* MODULES (чёрный список поддерживается)<br />
* DAEMONS (порядок и чёрный список поддерживаются, если нативные systemd service-файл существует, имеющий такое же имя, то нативный файл имеет более высокий приоритет, отключить этот механизм можно с помощью 'systemctl disable arch-daemons.target').<br />
<br />
===Не поддерживаются===<br />
<br />
* HARDWARECLOCK (используйте 'hwclock --systohc --utc' чтобы установить часы в utc, localtime не поддерживается, смотри FAQ)<br />
* USELVM (используйте 'systemctl enable|disable lvm-activate.service' вместо этого)<br />
* USECOLOR <br />
<br />
==Пакет initscripts-systemd==<br />
Этот пакет включает в себя юнит файлы и скрипты, кторые нужны, чтобы эмулировать скрипты инициализации Arch'а. Большинству людей не нужны все (или некоторые) из этих юнитов и они могут быть легко отключены:<br />
# systemctl disable <unitfile><br />
Если вы определны, что хотите отключить конкретный юнит.<br />
<br />
Планируется удалить большую часть функциональности данного пакета, как только эти функции будут обрабатываться в других местах (в основном в udev/systemd/kernel).<br />
<br />
Ниже следует краткое описание каждого из этих юнитов.<br />
<br />
===nisdomainname.service===<br />
Устанавливает nis/yp доменное имя. Этот параметр устарел и не следует его испоьзовать.<br />
<br />
===lvm.service===<br />
Копирует Arch управление LVM. Нужен, только используете LVM не на корневом разделе. В уудщем systemd, вероятно, справиться с этим более надёжным и чистым способом.<br />
<br />
===rc-local.service===<br />
Запускает /etc/rc-local при загрукзе системы.<br />
<br />
===arch-daemons.target===<br />
Считывает DAEMONS массив из rc.conf и запускает соответствующие службы. Если нативный sysemd-файл существует (с тем же именем, что и демон в /etc/rc.d/) дял данного демона, то используется нативный файл. В протвном случае запускается скрипт из /etc/rc.d/.<br />
<br />
===arch-persistent-settings.service===<br />
Он запускается при завершении работы. Его основная цель - убедиться, что все настройки Arch применены при следующей загрузке. В частности:<br />
* устанавливает timezone из rc.conf<br />
* обновляет чёрный список модулей из rc.conf (смотри /etc/modprobe.d/rc.conf)<br />
* оьновляет список модулей, которые должны быть загружены, из rc.conf (смотри /etc/modules-load.d/rc.conf)<br />
<br />
==FAQ==<br />
===Почему мои шрифты в консоли такие уродливые?===<br />
Если шрифт не установлен в /etc/vconsole.conf (или, как альтернатива, в /etc/rc.conf), то будет использован стандартный шрифт. Стандартный шрифт выбирается из-за поддержки большого числа наборов символов. Установите нужный шрифт в вышеуказанных файлах, чтобы исправить проблему.<br />
===Как мне изменить текущий уровень запуска (runlevel)?===<br />
В systemd уровни запуска обеспечиваются через "целевой единицы". Вы можете изменить их так:<br />
# systemctl isolate runlevel5.target<br />
или<br />
# systemctl isolate runlevel3.target<br />
Заметим, однако, что концепция уровней запуска немного устарели, и вместо них лучше использовать современные названия. Например:<br />
# systemctl isolate graphical.target<br />
Эти команды изменят только текущий уровень запуска и при следующей загрузке не сохранятся.<br />
===Как мне изменить уровень запуска по умолчанию?===<br />
Чтобы изменить уровень запуска по умолчанию, нужно создть символическую ссылку на соответствующий target-файл:<br />
# ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target<br />
или <br />
# ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target<br />
<br />
=== Выключение/перезагрузка происходят ужасно долго ===<br />
<br />
Если процесс выключения занимает очень долгое время (или, по-видимому, зависает), то, вероятно, виноват сервис, который не завершает свою работу. systemd ожидает некоторое время, пока каждый сервис завершит свою работу самостоятельно, и только потом пытается принудительно завершить (kill) его. Если вы столкнулись с такой проблемой, обратитесь к [http://freedesktop.org/wiki/Software/systemd/Debugging#Shutdown_Completes_Eventually данной статье (англ.)].<br />
<br />
== Полезные ссылки ==<br />
<br />
*[http://www.freedesktop.org/wiki/Software/systemd Официальный веб-сайт (англ.)]<br />
*[http://0pointer.de/public/systemd-man/ Страницы руководств (англ.)]<br />
*[http://freedesktop.org/wiki/Software/systemd/Optimizations systemd Optimizations (англ.)]<br />
*[http://www.freedesktop.org/wiki/Software/systemd/FrequentlyAskedQuestions FAQ (англ.)]<br />
*[http://www.freedesktop.org/wiki/Software/systemd/TipsAndTricks Tips And Tricks (англ.)]<br />
*[http://0pointer.de/public/systemd-ebook-psankar.pdf systemd для администраторов (PDF) - перевод цикла статей Леннарта Поттеринга (Lennart Poettering) ]<br />
*[http://wiki.russianfedora.ru/index.php?title=Systemd systemd - база знаний проекта Fedora]<br />
*[http://0pointer.de/blog/projects/systemd.html Блог Lennart'а (англ.)]<br />
*[http://archlinux.org.ru/forum/viewtopic.php?f=9&t=9581 systemd mini FAQ]<br />
*[http://wiki.debian.org/ru/Systemd Debian Wiki: systemd - менеджер системы и сервисов]<br />
*[https://fedoraproject.org/wiki/Systemd Fedora Linux Wiki: Systemd (англ.)]<br />
*[https://wiki.ubuntu.com/systemd Ubuntu Wiki: systemd (англ.)]<br />
*[https://fedoraproject.org/wiki/Systemd OpenSuse Wiki: SDB:Systemd]</div>Klayhttps://wiki.archlinux.org/index.php?title=Talk:Systemd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=229843Talk:Systemd (Русский)2012-10-20T06:56:18Z<p>Klay: Мнение о названиях</p>
<hr />
<div>== Названия ==<br />
<br />
Надо бы определиться как называть введённые systemd сущности.<br />
<br />
unit files - файлы юнитов? тогда<br />
<br />
tmpfile - tmp файл, временный файл<br />
<br />
service - сервис, служба, демон<br />
<br />
service файл - файл сервиса<br />
<br />
target - цель, "целевая точка", план?<br />
<br />
<br />
Под-разбери Поттеринга и его план.<br />
<br />
<br />
----<br />
<br />
Думаю unit нужно оставить юнитом, как это используется везде, tmpfile - временным файлом, service - сервисом. А вот <br />
target и самому не понятно, но уж точно не "план".<br />
<br />
-- [[User:Klay|Klay]] ([[User talk:Klay|talk]]) 10:55, 20 октября 2012</div>Klayhttps://wiki.archlinux.org/index.php?title=Systemd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=229276Systemd (Русский)2012-10-17T16:33:25Z<p>Klay: </p>
<hr />
<div>[[Category:Русский]]<br />
[[Category:Демоны и системные сервисы]]<br />
[[Category:Процесс загрузки]]<br />
[[en:Systemd]]<br />
[[es:Systemd]]<br />
[[fr:Systemd]]<br />
[[it:Systemd]]<br />
[[zh-CN:Systemd]]<br />
{{Article summary start|Сводка}}<br />
{{Article summary text|Статья охватывает установку и настройку systemd.}}<br />
{{Article summary heading|Связанные статьи}}<br />
{{Article summary wiki|Systemd/Services}}<br />
{{Article summary wiki|Init_Rosetta_(Русский)}}<br />
{{Article summary wiki|Udev_(Русский)}}<br />
{{Article summary end}}<br />
systemd - новая система инициализации для Linux, совместимая с SysV и LSB скриптами инициализации.<br />
<br />
==Установка==<br />
<br />
<br />
Systemd может быть установлен паралелльно со стандартными скриптами инициализации Arch Linux. Чтобы попробовать systemd в Arch нужно:<br />
* Установить {{Pkg|systemd}} (с зависимостями) из [core];<br />
* Добавить {{Ic|1=init=/bin/systemd}} в параметры загрузки ядра вашего загрузчика.<br />
* (необязательно) Если вы хотите использовать только systemd, то можно удалить {{Pkg|initscripts}} и установить {{Pkg|systemd-sysvcompat}}, который создаст символические ссылки на {{ic|init}}, {{ic|reboot}} и пр. Тогда не нужно будет добавлять параметр {{ic|1=init=}} к строке загрузки ядра.<br />
:{{Note|1=Если вы используете GRUB2, параметры загрузки ядра добавляются в {{Ic|/etc/default/grub}} - {{Ic|1=GRUB_CMDLINE_LINUX="..."}}}}<br />
:{{Tip|1=systemd может быть установлен параллельно с обычнми скриптами инициализации Arch Linux, Их их можно легко переключить, добавив или удалив {{Ic|1=init=/bin/systemd}} в параметрах загрузки ядра.}}<br />
* Конфиги systemd отличаются от стандартных файлов настроки Arch. Пользователям рекомендовано использовать "родные" конфиги systemd, как показано в [[#Системные настройки в systemd]]. Интеграция со стандартными файлами настройки Arch'а может быть произведена с помощью пакета {{Pkg|initscripts-systemd}}. См. ниже [[#Интеграция с Arch]]<br />
* Для того, чтобы воспользоваться преимуществами запуска сервисов через systemd установите пакет {{Pkg|systemd-arch-units}} из [community].<br />
* Запускать демоны из старого списка rc.conf/DAEMON придётся вручную. По умолчанию systemd не будет запускать их автоматически. См. [[#Команды systemd]] для команд просмотра списка доступных сервисов и настройки автоматического запуска.<br />
{{Warning|udev и другие программы предполагают, что {{ic|/usr}} смонтирован и доступен уже при загрузке системы. Если {{Ic|/usr}} вынесен на отдельный раздел, то нужно настроить его монтирование в initramfs при загрузке и отмонтирование при выключении. См. [[Mkinitcpio#/usr_as_a_separate_partition|the mkinitcpio wiki page]] и [http://www.freedesktop.org/wiki/Software/systemd/separate-usr-is-broken freedesktop.org#separate-usr-is-broken]}}<br />
<br />
== Системные файлы в systemd ==<br />
<br />
<br />
{{Note|{{Pkg|systemd}} будет использовать {{ic|/etc/rc.conf}} если "родные" файлы конфигурации отсутствуют. Возможно, вам придётся создать эти файлы.}}<br />
=== Имя компьютера(hostname) ===<br />
{{hc|/etc/hostname|myhostname}}<br />
<br />
=== Консоль и раскладка клавиатуры ===<br />
В файле {{ic|/etc/vconsole.conf}} находятся настройки виртуальной консоли: раскладка клавиатуры и консольный шрифт.<br />
{{hc|/etc/vconsole.conf|<nowiki><br />
KEYMAP=ru<br />
FONT=ter-c16b<br />
FONT_MAP=</nowiki>}}<br />
<br />
=== Локаль ===<br />
Для подробностей см. {{ic|man locale.conf}}<br />
{{hc|/etc/locale.conf|<nowiki><br />
LANG=ru_RU.UTF-8</nowiki>}}<br />
<br />
=== Временная зона ===<br />
Для подробностей см. {{ic|man 5 timezone}}<br />
{{hc|/etc/timezone|Europe/Moscow}}<br />
{{Note|данный файл не избавляет от необходимости наличия файла {{ic|/etc/localtime}}.}}<br />
<br />
=== Загрузка модулей ядра ===<br />
systemd использует файлы-списки из {{ic|/etc/modules-load.d/}} для загрузки модулей ядра во время запуска системы. Каждый такой файл имеет название вида {{ic|/etc/modules-load.d/<program>.conf}}. В каждой строке конфигурационного файла пишется название модуля ядра для загрузки. Игнорируются пустые строки и строки, у которых первый символ, отличный от пробела, будет {{ic|#}} либо {{ic|;}}. Пример:<br />
{{hc|/etc/modules-load.d/modules.conf|<nowiki><br />
microcode<br />
fglrx<br />
</nowiki>}}<br />
См. также [[Modprobe#Options]]<br />
<br />
=== Чёрный список модулей ядра ===<br />
Добавление модулей в чёрный список работает также, как и с {{Pkg|initscripts}} т.к. на самом деле этим занимается {{Pkg|kmod}}. Подробней на [[Kernel_modules#Blacklisting|Module Blacklisting]]<br />
<br />
=== Временные файлы ===<br />
Systemd-tmpfiles использует файлы настроек из {{ic|/etc/tmpfiles.d/}} для описания создания, очистки, удаления временных файлов и директорий, обычно располагающихся в {{ic|/run}} или {{ic|/tmp}}. Каждый файл с настройками имеет название вида {{ic|/etc/tmpfiles.d/<program>.conf}} и имеент приоритет использования над файлом с таким же названием из {{ic|/usr/lib/tmpfiles.d/}}.<br />
<br />
tmp-файлы обычно идут вместе с сервисами для создания директории, которые используются этими сервисами. Например, демон [[Samba]] ожидает наличия директории {{ic|/var/run/samba}} c корректными правами, соответственно tmp-файл будет примерно следующего вида:<br />
{{hc|/usr/lib/tmpfiles.d/samba.conf|<br />
D /var/run/samba 0755 root root<br />
}}<br />
<br />
Однако, tmp-файлы могут также быть полезны, если необходимо записывать некоторые значения в файл(ы) при загрузке системы. Например, если вы используете {{ic|/etc/rc.local}} для отключения пробуждения USB-усройств через {{ic|echo USBE > /proc/acpi/wakeup}}, то вместо этого вы можете создать tmp-файл вида:<br />
{{hc|/etc/tmpfiles.d/disable-usb-wake.conf|<br />
w /proc/acpi/wakeup - - - - USBE<br />
}}<br />
<br />
Способ с tmp-файлами более предпочтителен, т.к. systemd не задействует {{ic|/etc/rc.local}} по умолчанию<br />
См. {{ic|man tmpfiles.d}} для подробностей.<br />
<br />
=== Монтирование удалённых файловых систем ===<br />
systemd производит монтирование удалённых ресурсов по [[NFS]] или [[Samba]] только после заверщения настройки сети. Поэтому удалённые файловые системы прописанные в {{ic|/etc/fstab}} должны работать "из коробки".<br />
<br />
Тем не менее, вы можете использовать [[#Automount|Automount]] для монтирования удалённых файловых систем, по мере доступа к ним. Дополнительно можно указать параметр монтирования {{ic|1=x-systemd.device-timeout=#}} в {{ic|/etc/fstab}} для обозначения таймаута в случае, если ресурс недоступен.<br />
<br />
Подробней в {{ic|man systemd.mount}}<br />
<br />
=== Замена acpid на systemd ===<br />
Systemd может обрабатывать некоторые события ACPI. Это настраивается через следующие параметры в {{ic|/etc/systemd/logind.conf}}:<br />
* {{ic|HandlePowerKey}} : выключить компьютер после нажания кнопки включения.<br />
* {{ic|HandleSleepKey}} : уснуть после нажатия кнопки "сна".<br />
* {{ic|HandleLidSwitch}} : уснуть после закрытия крышки ноутбука.<br />
В зависимости от значения этих параметров, эти действия могут выполняться, например, только тогда, когда никто из пользователей не вошёл в систему ({{ic|no-session}}). Или только тогда, когда активна одна сессия пользователя ({{ic|any-session}}). См. подробнее {{ic|man logind.conf}}<br />
<br />
Данные параметры не должны использоваться в окружениях рабочего стола подобных [[Gnome]] или [[XFCE]], т.к. они обрабатывают события ACPI самостоятельно. Однако, на системах без установленной графической оболочки, или только с простым оконным менеджером типа [[i3]] или [[awesome]], возможно использовать systemd вместо [[acpid]].<br />
<br />
=== Юниты ===<br />
Юнит это файл с конфигурацией, который содержит в себе информацию о сервисе, сокете, устройстве, точке (авто)монтирования, файле или разделе подкачки, "целевая единица", пути в файловой системе или таймере, управляемыми посредством systemd. Формат юнита сделан наподобие .desktop-файлов XDG Desktop Entry Specification, которые в свою очередь похожи на .ini-файлы Microsoft Windows. Cм. {{ic|man systemd.unit}} за подробной информацией.<br />
<br />
== Команды systemd ==<br />
<br />
*{{ic|systemctl}}: используется для наблюдения и контроля за состоянием sytemd и сервисов.<br />
*{{ic|systemd-cgls}}: показывает древовидную структуру cgroups.<br />
*{{ic|systemadm}}: графическая оболочка для systemd. Позволяет наблюдать и управлять состоянием systemd и сервисов (доступна посредством установки пакета {{AUR|systemd-ui-git}})<br />
<br />
См. man страницы помощи для подробностей.<br />
<br />
{{Tip| Вы можете использовать все нижеизложенные команды {{ic|systemctl}} c параметром {{ic|-H <user>@<host>}} для управления systemd, работающим на удалённой машине. В этом случае для соединения с удалённым процессом systemd будет использоваться [[SSH]].}}<br />
<br />
=== Анализ состояния системы ===<br />
<br />
Список запущенных юнитов:<br />
<br />
{{bc|$ systemctl}}<br />
<br />
или:<br />
<br />
{{bc|$ systemctl list-units}}<br />
<br />
Cписок юнитов, отказавших в работе:<br />
<br />
{{bc|$ systemctl --failed}}<br />
<br />
Доступные юниты можно посмотреть в директориях {{ic|/usr/lib/systemd/system/}} и {{ic|/etc/systemd/system/}} (последняя директория имеет приоритет).<br />
<br />
=== Использование юнитов ===<br />
<br />
Юниты могут быть сервисами ({{ic|.service}}), точками монтирования ({{ic|.mount}}) или сокетами ({{ic|.sockets}}). При использовании команды {{ic|systemctl}} необходимо всегда указывать полное имя файла, включая расширение. Например, {{ic|netcfg.service}}. См. {{ic|man systemd.unit}} для подробностей.<br />
<br />
Непосредственно активировать юнит:<br />
<br />
{{bc|# systemctl start <unit>}}<br />
<br />
Непосредственно деактивировать юнит:<br />
<br />
{{bc|# systemctl stop <unit>}}<br />
<br />
Перезапустить юнит:<br />
<br />
{{bc|# systemctl restart <unit>}}<br />
<br />
Запросить у юнита перезагрузку его настроек:<br />
<br />
{{bc|# systemctl reload <unit>}}<br />
<br />
Показать статус юнита, а также запущен он или нет:<br />
<br />
{{bc|$ systemctl status <unit>}}<br />
<br />
Проверить разрешено ли юниту запуск при загрузке системы:<br />
<br />
{{bc|$ systemctl is-enabled <unit>}}<br />
<br />
Разрешить юниту запуск при загрузке системы:<br />
<br />
{{bc|# systemctl enable <unit>}}<br />
<br />
Запретить юниту запуск при загрузке системы:<br />
<br />
{{bc|# systemctl disable <unit>}}<br />
<br />
Показать страницу помощи для юнита (необходима поддержка этого функции в указанном файле юнита):<br />
<br />
{{bc|$ systemctl help <unit>}}<br />
<br />
=== Управление питанием ===<br />
<br />
Если вы локальный пользователь, и никто кроме вас больше не имеет активной сессии, то нижеприведённые команды работают без прав суперпользователя root. В противном случае, systemd автоматически запросит у вас пароль root.<br />
<br />
Завершить работу и перезагрузить компьютер:<br />
<br />
{{bc|$ systemctl reboot}}<br />
<br />
Завершить работу и выключить компьютер:<br />
<br />
{{bc|$ systemctl poweroff}}<br />
<br />
Завершить работу и остановить(без выключения питания?) компьютер::<br />
<br />
{{bc|$ systemctl halt}}<br />
<br />
Перевести систему в состояние ожидания:<br />
<br />
{{bc|$ systemctl suspend}}<br />
<br />
Перевести систему в состояние гибернации:<br />
<br />
{{bc|$ systemctl hibernate}}<br />
<br />
== Запуск окружения рабочего стола из systemd ==<br />
<br />
=== Использование экранного менеджера ===<br />
Для графического входа в систему, необходимо запустить [[Display Manager (Русский)]]. На данный момент доступны файлы сервисов для [[GDM]], [[KDM]], [[SLiM]], [[XDM]] и [[LXDM]].<br />
<br />
{{bc|# systemctl enable kdm.service}}<br />
<br />
Запуск экранного менеджера должен работать "из коробки". Если не работет то, возможно, у вас {{ic|default.target}} настроен вручную или остался с предыдущей установки:<br />
<br />
{{hc|# ls -l /etc/systemd/system/default.target|/etc/systemd/system/default.target -> /usr/lib/systemd/system/graphical.target}}<br />
<br />
Просто удалите символическую ссылку и systemd будет использовать стандартный {{ic|default.target}} (т.е. {{ic|graphical.target}}).<br />
<br />
{{bc|# rm /etc/systemd/system/default.target}}<br />
<br />
Если для настроек локали используется {{ic|/etc/locale.conf}}, то добавьте строчку в {{ic|/etc/environment}}:<br />
{{hc|/etc/environment|<nowiki><br />
LANG=ru_RU.utf8</nowiki>}}<br />
<br />
=== Запуск через файл сервиса ===<br />
{{Note|При использование данного метода PAM-сессия не создастся для вашего пользователя. Поэтому ConsoleKit (предоставляет вам доступ к выключению\перезагрузке, устройствам аудио и т.д.) не будет корректно работать. Рекомендовано искользовать [[Automatic_login_to_virtual_console#With_systemd]].}}<br />
<br />
Если вам нужно просто напрямую, без экранного менеджера, запустить X, то вы можете создать файл сервиса примерно такого вида:<br />
{{hc|/etc/systemd/system/graphical.target.wants/xinit.service|<nowiki><br />
[Unit]<br />
Description=Direct login to X<br />
After=systemd-user-sessions.service<br />
<br />
[Service]<br />
ExecStart=/bin/su <username> -l -c "/bin/bash --login -c xinit"<br />
<br />
[Install]<br />
WantedBy=graphical.target<br />
</nowiki>}}<br />
<br />
==Интеграция с Arch==<br />
/etc/inittab не читается systemd, но стандартные установки systemd соответствуют стандартным установкам inittab.<br />
/etc/rc.local и /etc/rc.local.shutdown запускаются boot/shutdown как и раньше. Чтобы отключить их, выполните 'systemctl disable rc-local.service'. <br />
Большинство параметров /etc/rc.conf читаются systemd. Для чистой установки systemd рккомеднуется использовать нативные конфигурационные файлы (такие как /etc/locale.conf, /etc/vconsole.conf, /etc/hostname, /etc/modules-load.d/*.conf - подробнее смотри http://0pointer.de/public/systemd-man/), которые имеют приоритет над /etc/rc.conf.<br />
===Поддерживаются===<br />
* LOCALE<br />
* KEYMAP<br />
* CONSOLEFONT<br />
* CONSOLEMAP<br />
* HOSTNAME (этот и все вышеперечисленные считываются во время загрузки системы, нативные systemd конфигурационные файлы имеют более выоский приоритет)<br />
* TIMEZONE (устанавливается при выключении)<br />
* MODULES (чёрный список поддерживается)<br />
* DAEMONS (порядок и чёрный список поддерживаются, если нативные systemd service-файл существует, имеющий такое же имя, то нативный файл имеет более высокий приоритет, отключить этот механизм можно с помощью 'systemctl disable arch-daemons.target').<br />
<br />
===Не поддерживаются===<br />
<br />
* HARDWARECLOCK (используйте 'hwclock --systohc --utc' чтобы установить часы в utc, localtime не поддерживается, смотри FAQ)<br />
* USELVM (используйте 'systemctl enable|disable lvm-activate.service' вместо этого)<br />
* USECOLOR <br />
<br />
==Пакет initscripts-systemd==<br />
Этот пакет включает в себя юнит файлы и скрипты, кторые нужны, чтобы эмулировать скрипты инициализации Arch'а. Большинству людей не нужны все (или некоторые) из этих юнитов и они могут быть легко отключены:<br />
# systemctl disable <unitfile><br />
Если вы определны, что хотите отключить конкретный юнит.<br />
<br />
Планируется удалить большую часть функциональности данного пакета, как только эти функции будут обрабатываться в других местах (в основном в udev/systemd/kernel).<br />
<br />
Ниже следует краткое описание каждого из этих юнитов.<br />
<br />
===nisdomainname.service===<br />
Устанавливает nis/yp доменное имя. Этот параметр устарел и не следует его испоьзовать.<br />
<br />
===lvm.service===<br />
Копирует Arch управление LVM. Нужен, только используете LVM не на корневом разделе. В уудщем systemd, вероятно, справиться с этим более надёжным и чистым способом.<br />
<br />
===rc-local.service===<br />
Запускает /etc/rc-local при загрукзе системы.<br />
<br />
===arch-daemons.target===<br />
Считывает DAEMONS массив из rc.conf и запускает соответствующие службы. Если нативный sysemd-файл существует (с тем же именем, что и демон в /etc/rc.d/) дял данного демона, то используется нативный файл. В протвном случае запускается скрипт из /etc/rc.d/.<br />
<br />
===arch-persistent-settings.service===<br />
Он запускается при завершении работы. Его основная цель - убедиться, что все настройки Arch применены при следующей загрузке. В частности:<br />
* устанавливает timezone из rc.conf<br />
* обновляет чёрный список модулей из rc.conf (смотри /etc/modprobe.d/rc.conf)<br />
* оьновляет список модулей, которые должны быть загружены, из rc.conf (смотри /etc/modules-load.d/rc.conf)<br />
<br />
==FAQ==<br />
===Почему мои шрифты в консоли такие уродливые?===<br />
Если шрифт не установлен в /etc/vconsole.conf (или, как альтернатива, в /etc/rc.conf), то будет использован стандартный шрифт. Стандартный шрифт выбирается из-за поддержки большого числа наборов символов. Установите нужный шрифт в вышеуказанных файлах, чтобы исправить проблему.<br />
===Как мне изменить текущий уровень запуска (runlevel)?===<br />
В systemd уровни запуска обеспечиваются через "целевой единицы". Вы можете изменить их так:<br />
# systemctl isolate runlevel5.target<br />
или<br />
# systemctl isolate runlevel3.target<br />
Заметим, однако, что концепция уровней запуска немного устарели, и вместо них лучше использовать современные названия. Например:<br />
# systemctl isolate graphical.target<br />
Эти команды изменят только текущий уровень запуска и при следующей загрузке не сохранятся.<br />
===Как мне изменить уровень запуска по умолчанию?===<br />
Чтобы изменить уровень запуска по умолчанию, нужно создть символическую ссылку на соответствующий target-файл:<br />
# ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target<br />
или <br />
# ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target<br />
<br />
== Ссылки ==<br />
Перевод [http://0pointer.de/blog/projects/systemd.html статьи] разработчика:<br />
* [http://tux-the-penguin.blogspot.com/2010/09/systemd.html Система инициализации Systemd. Часть I]<br />
* [http://tux-the-penguin.blogspot.com/2010/09/systemd-ii.html Система инициализации Systemd. Часть II]</div>Klayhttps://wiki.archlinux.org/index.php?title=Init_Rosetta_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=228595Init Rosetta (Русский)2012-10-14T09:02:27Z<p>Klay: Вики-стиль страницы</p>
<hr />
<div>[[Category:Процесс загрузки]]<br />
[[en:Init Rosetta]]<br />
<br />
=== Таблица взаимодействия с сервисами в Init и Systemd ===<br />
{| class="wikitable"<br />
|-<br />
! scope="col"| Команда Init <br />
! scope="col"| Команда Systemd <br />
! scope="col"| Комментарий <br />
|-<br />
| align="left"|&nbsp;rc.d {start | stop | restart...} daemon&nbsp;<br />
| align="left"|&nbsp;systemctl {start | stop | restart...} daemon.service&nbsp;<br />
| align="left"|&nbsp;Сменить состояние сервиса&nbsp;<br />
|-<br />
| align="left"|&nbsp;rc.d list&nbsp;<br />
| align="left"|&nbsp;systemctl list-unit-files --type=service&nbsp;<br />
| align="left"|&nbsp;Список сервисов&nbsp;<br />
|-<br />
| align="left"|&nbsp;chkconfig daemon {on | off}&nbsp;<br />
| align="left"|&nbsp;systemctl {enable | disable} daemon.service<br />
| align="left"|&nbsp;Включить или выключить сервис&nbsp;<br />
|-<br />
| align="left"|&nbsp;chkconfig daemon --add&nbsp;<br />
| align="left"|&nbsp;systemctl daemon-reload&nbsp;<br />
| align="left"|&nbsp;Используется при создании или изменении конфигураций/скриптов&nbsp;<br />
|}<br />
<br />
=== Таблица уровней запуска и их аналогов в Systemd ===<br />
{| class="wikitable"<br />
|-<br />
! scope="col"| Уровень запуска SysV <br />
! scope="col"| systemd Target <br />
! scope="col"| Замечания <br />
|-<br />
| align="left"|&nbsp;0&nbsp;<br />
| align="left"|&nbsp;runlevel0.target, poweroff.target&nbsp;<br />
| align="left"|&nbsp;Выключить систему.&nbsp;<br />
|-<br />
| align="left"|&nbsp;1, s, single&nbsp;<br />
| align="left"|&nbsp;runlevel1.target, rescue.target&nbsp;<br />
| align="left"|&nbsp;Однопользовательский уровень запуска.&nbsp;<br />
|-<br />
| align="left"|&nbsp;2, 4&nbsp;<br />
| align="left"|&nbsp;runlevel2.target, runlevel4.target, multi-user.target&nbsp;<br />
| align="left"|&nbsp;Уровень запуска определенный пользователем/специфичный для сайта. По умолчанию идентичен уровню запуска 3.&nbsp;<br />
|-<br />
| align="left"|&nbsp;3&nbsp;<br />
| align="left"|&nbsp;runlevel3.target, multi-user.target&nbsp;<br />
| align="left"|&nbsp;Многопользовательский, не графический уровень запуска. Пользователи, как правило, входят с помощью множества консолей или через сеть.&nbsp;<br />
|-<br />
| align="left"|&nbsp;5&nbsp;<br />
| align="left"|&nbsp;runlevel5.target, graphical.target&nbsp;<br />
| align="left"|&nbsp;Многопользовательский, графический уровень запуска. Обычно включает в себя все сервисы 3 уровня, плюс графический вход в систему.&nbsp;<br />
|-<br />
| align="left"|&nbsp;6&nbsp;<br />
| align="left"|&nbsp;runlevel6.target, reboot.target&nbsp;<br />
| align="left"|&nbsp;Перезагрузка.&nbsp;<br />
|-<br />
| align="left"|&nbsp;emergency&nbsp;<br />
| align="left"|&nbsp;emergency.target&nbsp;<br />
| align="left"|&nbsp;Emergency shell.&nbsp;<br />
|}</div>Klayhttps://wiki.archlinux.org/index.php?title=User:Klay&diff=228592User:Klay2012-10-14T08:45:30Z<p>Klay: </p>
<hr />
<div>__NOTOC__<br />
{{Article summary start}}<br />
{{Article summary text|This is the user page for '''Klay'''. Feel free to leave a question or comment on my [[User talk:Klay|Talk page]].}}<br />
{{Article summary heading|TODO}}<br />
{{Article summary wiki|Systemd_(Русский)}}<br />
{{Article summary wiki|Init_Rosetta_(Русский)}}<br />
{{Article summary end}}<br />
<br />
Russian Federation, Murom<br />
<br />
== Contacts ==<br />
Use my [[User talk:Klay|talk]] page for public comments. <br />
Use my [[Special:EmailUser/Klay|email]] for private comments.<br />
<br />
<br />
== Languages ==<br />
* Russian<br />
* English<br />
<br />
<br />
== Experience Using Distributions ==<br />
* Fedora - 1.5 Years<br />
* Ubuntu - 3 Month<br />
* Debian - 5 Month<br />
* Red Hat - 1 Year<br />
* Arch - From April 2012 to now<br />
<br />
<br />
{{Note|This layout was borrowed from [[User:Filam]].}}</div>Klayhttps://wiki.archlinux.org/index.php?title=User:Klay&diff=228590User:Klay2012-10-14T08:43:03Z<p>Klay: </p>
<hr />
<div>{{Article summary start}}<br />
{{Article summary text|This is the user page for '''Klay'''. Feel free to leave a question or comment on my [[User talk:Klay|Talk page]].}}<br />
{{Article summary heading|TODO}}<br />
{{Article summary wiki|Systemd_(Русский)}}<br />
{{Article summary wiki|Init_Rosetta_(Русский)}}<br />
{{Article summary end}}<br />
<br />
Russian Federation, Murom<br />
<br />
== Contacts ==<br />
Use my [[User talk:Klay|talk]] page for public comments. <br />
Use my [[Special:EmailUser/Klay|email]] for private comments.<br />
<br />
<br />
== Languages ==<br />
* Russian<br />
* English<br />
<br />
<br />
== Experience Using Distributions ==<br />
* Fedora - 1.5 Years<br />
* Ubuntu - 3 Month<br />
* Debian - 5 Month<br />
* Red Hat - 1 Year<br />
* Arch - From April 2012 to now</div>Klayhttps://wiki.archlinux.org/index.php?title=User:Klay&diff=228589User:Klay2012-10-14T08:42:35Z<p>Klay: </p>
<hr />
<div>{{Article summary start}}<br />
{{Article summary text|This is the user page for '''Klay'''. Feel free to leave a question or comment on my [[User talk:Klay|Talk page]].}}<br />
{{Article summary heading|TODO}}<br />
{{Article summary wiki|Systemd_(Русский)}}<br />
{{Article summary wiki|Init_Rosetta_(Русский)}}<br />
{{Article summary end}}<br />
<br />
Russian Federation, Murom<br />
<br />
== Contacts ==<br />
Use my [[User talk:Klay|talk]] page for public comments. <br />
Use my [[Special:EmailUser/Klay|email]] for private comments.<br />
<br />
<br />
== Languages ==<br />
* Russian<br />
* English<br />
<br />
<br />
== Experience Using Distributions ==<br />
* Fedora - 1.5 Years<br />
* Ubuntu - 3 Month<br />
* Debian - 5 Month<br />
* Red Hat - 1 Year<br />
* Arch - From April 2012 to now<br />
<br />
<br />
<br />
__NOTOC__ {{DISPLAYTITLE:User:Klay}}</div>Klayhttps://wiki.archlinux.org/index.php?title=Systemd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=228586Systemd (Русский)2012-10-14T08:37:08Z<p>Klay: Добавил ссылку на Init_Rosetta_(Русский)</p>
<hr />
<div>[[Category:Русский]]<br />
[[Category:Демоны и системные сервисы]]<br />
[[Category:Процесс загрузки]]<br />
[[en:Systemd]]<br />
[[es:Systemd]]<br />
[[fr:Systemd]]<br />
[[it:Systemd]]<br />
[[zh-CN:Systemd]]<br />
{{Article summary start|Сводка}}<br />
{{Article summary text|Статья охватывает установку и настройку systemd.}}<br />
{{Article summary heading|Связанные статьи}}<br />
{{Article summary wiki|Systemd/Services}}<br />
{{Article summary wiki|Init_Rosetta_(Русский)}}<br />
{{Article summary wiki|Udev}}<br />
{{Article summary end}}<br />
systemd - новая система инициализации для Linux, совместимая с SysV и LSB скриптами инициализации.<br />
<br />
==Установка==<br />
<br />
<br />
Systemd может быть установлен паралелльно со стандартными скриптами инициализации Arch Linux. Чтобы попробовать systemd в Arch нужно:<br />
* Установить {{Pkg|systemd}} (с зависимостями) из [core];<br />
* Добавить {{Ic|1=init=/bin/systemd}} в параметры загрузки ядра вашего загрузчика.<br />
* (необязательно) Если вы хотите использовать только systemd, то можно удалить {{Pkg|initscripts}} и установить {{Pkg|systemd-sysvcompat}}, который создаст символические ссылки на {{ic|init}}, {{ic|reboot}} и пр. Тогда не нужно будет добавлять параметр {{ic|1=init=}} к строке загрузки ядра.<br />
:{{Note|1=Если вы используете GRUB2, параметры загрузки ядра добавляются в {{Ic|/etc/default/grub}} - {{Ic|1=GRUB_CMDLINE_LINUX="..."}}}}<br />
:{{Tip|1=systemd может быть установлен параллельно с обычнми скриптами инициализации Arch Linux, Их их можно легко переключить, добавив или удалив {{Ic|1=init=/bin/systemd}} в параметрах загрузки ядра.}}<br />
* Конфиги systemd отличаются от стандартных файлов настроки Arch. Пользователям рекомендовано использовать "родные" конфиги systemd, как показано в [[#Системные настройки в systemd]]. Интеграция со стандартными файлами настройки Arch'а может быть произведена с помощью пакета {{Pkg|initscripts-systemd}}. См. ниже [[#Интеграция с Arch]]<br />
* Для того, чтобы воспользоваться преимуществами запуска сервисов через systemd установите пакет {{Pkg|systemd-arch-units}} из [community].<br />
* Запускать демоны из старого списка rc.conf/DAEMON придётся вручную. По умолчанию systemd не будет запускать их автоматически. См. [[#Команды systemd]] для команд просмотра списка доступных сервисов и настройки автоматического запуска.<br />
{{Warning|udev и другие программы предполагают, что {{ic|/usr}} смонтирован и доступен уже при загрузке системы. Если {{Ic|/usr}} вынесен на отдельный раздел, то нужно настроить его монтирование в initramfs при загрузке и отмонтирование при выключении. См. [[Mkinitcpio#/usr_as_a_separate_partition|the mkinitcpio wiki page]] и [http://www.freedesktop.org/wiki/Software/systemd/separate-usr-is-broken freedesktop.org#separate-usr-is-broken]}}<br />
<br />
== Системные файлы в systemd ==<br />
<br />
<br />
{{Note|{{Pkg|systemd}} будет использовать {{ic|/etc/rc.conf}} если "родные" файлы конфигурации отсутствуют. Возможно, вам придётся создать эти файлы.}}<br />
=== Имя компьютера(hostname) ===<br />
{{hc|/etc/hostname|myhostname}}<br />
<br />
=== Консоль и раскладка клавиатуры ===<br />
В файле {{ic|/etc/vconsole.conf}} находятся настройки виртуальной консоли: раскладка клавиатуры и консольный шрифт.<br />
{{hc|/etc/vconsole.conf|<nowiki><br />
KEYMAP=ru<br />
FONT=ter-c16b<br />
FONT_MAP=</nowiki>}}<br />
<br />
=== Локаль ===<br />
Для подробностей см. {{ic|man locale.conf}}<br />
{{hc|/etc/locale.conf|<nowiki><br />
LANG=ru_RU.UTF-8</nowiki>}}<br />
<br />
=== Временная зона ===<br />
Для подробностей см. {{ic|man 5 timezone}}<br />
{{hc|/etc/timezone|Europe/Moscow}}<br />
{{Note|данный файл не избавляет от необходимости наличия файла {{ic|/etc/localtime}}.}}<br />
<br />
=== Загрузка модулей ядра ===<br />
systemd использует файлы-списки из {{ic|/etc/modules-load.d/}} для загрузки модулей ядра во время запуска системы. Каждый такой файл имеет название вида {{ic|/etc/modules-load.d/<program>.conf}}. В каждой строке конфигурационного файла пишется название модуля ядра для загрузки. Игнорируются пустые строки и строки, у которых первый символ, отличный от пробела, будет {{ic|#}} либо {{ic|;}}. Пример:<br />
{{hc|/etc/modules-load.d/modules.conf|<nowiki><br />
microcode<br />
fglrx<br />
</nowiki>}}<br />
См. также [[Modprobe#Options]]<br />
<br />
=== Чёрный список модулей ядра ===<br />
Добавление модулей в чёрный список работает также, как и с {{Pkg|initscripts}} т.к. на самом деле этим занимается {{Pkg|kmod}}. Подробней на [[Kernel_modules#Blacklisting|Module Blacklisting]]<br />
<br />
=== Временные файлы ===<br />
Systemd-tmpfiles использует файлы настроек из {{ic|/etc/tmpfiles.d/}} для описания создания, очистки, удаления временных файлов и директорий, обычно располагающихся в {{ic|/run}} или {{ic|/tmp}}. Каждый файл с настройками имеет название вида {{ic|/etc/tmpfiles.d/<program>.conf}} и имеент приоритет использования над файлом с таким же названием из {{ic|/usr/lib/tmpfiles.d/}}.<br />
<br />
tmp-файлы обычно идут вместе с сервисами для создания директории, которые используются этими сервисами. Например, демон [[Samba]] ожидает наличия директории {{ic|/var/run/samba}} c корректными правами, соответственно tmp-файл будет примерно следующего вида:<br />
{{hc|/usr/lib/tmpfiles.d/samba.conf|<br />
D /var/run/samba 0755 root root<br />
}}<br />
<br />
Однако, tmp-файлы могут также быть полезны, если необходимо записывать некоторые значения в файл(ы) при загрузке системы. Например, если вы используете {{ic|/etc/rc.local}} для отключения пробуждения USB-усройств через {{ic|echo USBE > /proc/acpi/wakeup}}, то вместо этого вы можете создать tmp-файл вида:<br />
{{hc|/etc/tmpfiles.d/disable-usb-wake.conf|<br />
w /proc/acpi/wakeup - - - - USBE<br />
}}<br />
<br />
Способ с tmp-файлами более предпочтителен, т.к. systemd не задействует {{ic|/etc/rc.local}} по умолчанию<br />
См. {{ic|man tmpfiles.d}} для подробностей.<br />
<br />
=== Монтирование удалённых файловых систем ===<br />
systemd производит монтирование удалённых ресурсов по [[NFS]] или [[Samba]] только после заверщения настройки сети. Поэтому удалённые файловые системы прописанные в {{ic|/etc/fstab}} должны работать "из коробки".<br />
<br />
Тем не менее, вы можете использовать [[#Automount|Automount]] для монтирования удалённых файловых систем, по мере доступа к ним. Дополнительно можно указать параметр монтирования {{ic|1=x-systemd.device-timeout=#}} в {{ic|/etc/fstab}} для обозначения таймаута в случае, если ресурс недоступен.<br />
<br />
Подробней в {{ic|man systemd.mount}}<br />
<br />
=== Замена acpid на systemd ===<br />
Systemd может обрабатывать некоторые события ACPI. Это настраивается через следующие параметры в {{ic|/etc/systemd/logind.conf}}:<br />
* {{ic|HandlePowerKey}} : выключить компьютер после нажания кнопки включения.<br />
* {{ic|HandleSleepKey}} : уснуть после нажатия кнопки "сна".<br />
* {{ic|HandleLidSwitch}} : уснуть после закрытия крышки ноутбука.<br />
В зависимости от значения этих параметров, эти действия могут выполняться, например, только тогда, когда никто из пользователей не вошёл в систему ({{ic|no-session}}). Или только тогда, когда активна одна сессия пользователя ({{ic|any-session}}). См. подробнее {{ic|man logind.conf}}<br />
<br />
Данные параметры не должны использоваться в окружениях рабочего стола подобных [[Gnome]] или [[XFCE]], т.к. они обрабатывают события ACPI самостоятельно. Однако, на системах без установленной графической оболочки, или только с простым оконным менеджером типа [[i3]] или [[awesome]], возможно использовать systemd вместо [[acpid]].<br />
<br />
=== Юниты ===<br />
Юнит это файл с конфигурацией, который содержит в себе информацию о сервисе, сокете, устройстве, точке (авто)монтирования, файле или разделе подкачки, "целевая единица", пути в файловой системе или таймере, управляемыми посредством systemd. Формат юнита сделан наподобие .desktop-файлов XDG Desktop Entry Specification, которые в свою очередь похожи на .ini-файлы Microsoft Windows. Cм. {{ic|man systemd.unit}} за подробной информацией.<br />
<br />
== Команды systemd ==<br />
<br />
*{{ic|systemctl}}: используется для наблюдения и контроля за состоянием sytemd и сервисов.<br />
*{{ic|systemd-cgls}}: показывает древовидную структуру cgroups.<br />
*{{ic|systemadm}}: графическая оболочка для systemd. Позволяет наблюдать и управлять состоянием systemd и сервисов (доступна посредством установки пакета {{AUR|systemd-ui-git}})<br />
<br />
См. man страницы помощи для подробностей.<br />
<br />
{{Tip| Вы можете использовать все нижеизложенные команды {{ic|systemctl}} c параметром {{ic|-H <user>@<host>}} для управления systemd, работающим на удалённой машине. В этом случае для соединения с удалённым процессом systemd будет использоваться [[SSH]].}}<br />
<br />
=== Анализ состояния системы ===<br />
<br />
Список запущенных юнитов:<br />
<br />
{{bc|$ systemctl}}<br />
<br />
или:<br />
<br />
{{bc|$ systemctl list-units}}<br />
<br />
Cписок юнитов, отказавших в работе:<br />
<br />
{{bc|$ systemctl --failed}}<br />
<br />
Доступные юниты можно посмотреть в директориях {{ic|/usr/lib/systemd/system/}} и {{ic|/etc/systemd/system/}} (последняя директория имеет приоритет).<br />
<br />
=== Использование юнитов ===<br />
<br />
Юниты могут быть сервисами ({{ic|.service}}), точками монтирования ({{ic|.mount}}) или сокетами ({{ic|.sockets}}). При использовании команды {{ic|systemctl}} необходимо всегда указывать полное имя файла, включая расширение. Например, {{ic|netcfg.service}}. См. {{ic|man systemd.unit}} для подробностей.<br />
<br />
Непосредственно активировать юнит:<br />
<br />
{{bc|# systemctl start <unit>}}<br />
<br />
Непосредственно деактивировать юнит:<br />
<br />
{{bc|# systemctl stop <unit>}}<br />
<br />
Перезапустить юнит:<br />
<br />
{{bc|# systemctl restart <unit>}}<br />
<br />
Запросить у юнита перезагрузку его настроек:<br />
<br />
{{bc|# systemctl reload <unit>}}<br />
<br />
Показать статус юнита, а также запущен он или нет:<br />
<br />
{{bc|$ systemctl status <unit>}}<br />
<br />
Проверить разрешено ли юниту запуск при загрузке системы:<br />
<br />
{{bc|$ systemctl is-enabled <unit>}}<br />
<br />
Разрешить юниту запуск при загрузке системы:<br />
<br />
{{bc|# systemctl enable <unit>}}<br />
<br />
Запретить юниту запуск при загрузке системы:<br />
<br />
{{bc|# systemctl disable <unit>}}<br />
<br />
Показать страницу помощи для юнита (необходима поддержка этого функции в указанном файле юнита):<br />
<br />
{{bc|$ systemctl help <unit>}}<br />
<br />
=== Управление питанием ===<br />
<br />
Если вы локальный пользователь, и никто кроме вас больше не имеет активной сессии, то нижеприведённые команды работают без прав суперпользователя root. В противном случае, systemd автоматически запросит у вас пароль root.<br />
<br />
Завершить работу и перезагрузить компьютер:<br />
<br />
{{bc|$ systemctl reboot}}<br />
<br />
Завершить работу и выключить компьютер:<br />
<br />
{{bc|$ systemctl poweroff}}<br />
<br />
Завершить работу и остановить(без выключения питания?) компьютер::<br />
<br />
{{bc|$ systemctl halt}}<br />
<br />
Перевести систему в состояние ожидания:<br />
<br />
{{bc|$ systemctl suspend}}<br />
<br />
Перевести систему в состояние гибернации:<br />
<br />
{{bc|$ systemctl hibernate}}<br />
<br />
== Запуск окружения рабочего стола из systemd ==<br />
<br />
=== Использование экранного менеджера ===<br />
Для графического входа в систему, необходимо запустить [[Display Manager (Русский)]]. На данный момент доступны файлы сервисов для [[GDM]], [[KDM]], [[SLiM]], [[XDM]] и [[LXDM]].<br />
<br />
{{bc|# systemctl enable kdm.service}}<br />
<br />
Запуск экранного менеджера должен работать "из коробки". Если не работет то, возможно, у вас {{ic|default.target}} настроен вручную или остался с предыдущей установки:<br />
<br />
{{hc|# ls -l /etc/systemd/system/default.target|/etc/systemd/system/default.target -> /usr/lib/systemd/system/graphical.target}}<br />
<br />
Просто удалите символическую ссылку и systemd будет использовать стандартный {{ic|default.target}} (т.е. {{ic|graphical.target}}).<br />
<br />
{{bc|# rm /etc/systemd/system/default.target}}<br />
<br />
Если для настроек локали используется {{ic|/etc/locale.conf}}, то добавьте строчку в {{ic|/etc/environment}}:<br />
{{hc|/etc/environment|<nowiki><br />
LANG=ru_RU.utf8</nowiki>}}<br />
<br />
=== Запуск через файл сервиса ===<br />
{{Note|При использование данного метода PAM-сессия не создастся для вашего пользователя. Поэтому ConsoleKit (предоставляет вам доступ к выключению\перезагрузке, устройствам аудио и т.д.) не будет корректно работать. Рекомендовано искользовать [[Automatic_login_to_virtual_console#With_systemd]].}}<br />
<br />
Если вам нужно просто напрямую, без экранного менеджера, запустить X, то вы можете создать файл сервиса примерно такого вида:<br />
{{hc|/etc/systemd/system/graphical.target.wants/xinit.service|<nowiki><br />
[Unit]<br />
Description=Direct login to X<br />
After=systemd-user-sessions.service<br />
<br />
[Service]<br />
ExecStart=/bin/su <username> -l -c "/bin/bash --login -c xinit"<br />
<br />
[Install]<br />
WantedBy=graphical.target<br />
</nowiki>}}<br />
<br />
==Интеграция с Arch==<br />
/etc/inittab не читается systemd, но стандартные установки systemd соответствуют стандартным установкам inittab.<br />
/etc/rc.local и /etc/rc.local.shutdown запускаются boot/shutdown как и раньше. Чтобы отключить их, выполните 'systemctl disable rc-local.service'. <br />
Большинство параметров /etc/rc.conf читаются systemd. Для чистой установки systemd рккомеднуется использовать нативные конфигурационные файлы (такие как /etc/locale.conf, /etc/vconsole.conf, /etc/hostname, /etc/modules-load.d/*.conf - подробнее смотри http://0pointer.de/public/systemd-man/), которые имеют приоритет над /etc/rc.conf.<br />
===Поддерживаются===<br />
* LOCALE<br />
* KEYMAP<br />
* CONSOLEFONT<br />
* CONSOLEMAP<br />
* HOSTNAME (этот и все вышеперечисленные считываются во время загрузки системы, нативные systemd конфигурационные файлы имеют более выоский приоритет)<br />
* TIMEZONE (устанавливается при выключении)<br />
* MODULES (чёрный список поддерживается)<br />
* DAEMONS (порядок и чёрный список поддерживаются, если нативные systemd service-файл существует, имеющий такое же имя, то нативный файл имеет более высокий приоритет, отключить этот механизм можно с помощью 'systemctl disable arch-daemons.target').<br />
<br />
===Не поддерживаются===<br />
<br />
* HARDWARECLOCK (используйте 'hwclock --systohc --utc' чтобы установить часы в utc, localtime не поддерживается, смотри FAQ)<br />
* USELVM (используйте 'systemctl enable|disable lvm-activate.service' вместо этого)<br />
* USECOLOR <br />
<br />
==Пакет initscripts-systemd==<br />
Этот пакет включает в себя юнит файлы и скрипты, кторые нужны, чтобы эмулировать скрипты инициализации Arch'а. Большинству людей не нужны все (или некоторые) из этих юнитов и они могут быть легко отключены:<br />
# systemctl disable <unitfile><br />
Если вы определны, что хотите отключить конкретный юнит.<br />
<br />
Планируется удалить большую часть функциональности данного пакета, как только эти функции будут обрабатываться в других местах (в основном в udev/systemd/kernel).<br />
<br />
Ниже следует краткое описание каждого из этих юнитов.<br />
<br />
===nisdomainname.service===<br />
Устанавливает nis/yp доменное имя. Этот параметр устарел и не следует его испоьзовать.<br />
<br />
===lvm.service===<br />
Копирует Arch управление LVM. Нужен, только используете LVM не на корневом разделе. В уудщем systemd, вероятно, справиться с этим более надёжным и чистым способом.<br />
<br />
===rc-local.service===<br />
Запускает /etc/rc-local при загрукзе системы.<br />
<br />
===arch-daemons.target===<br />
Считывает DAEMONS массив из rc.conf и запускает соответствующие службы. Если нативный sysemd-файл существует (с тем же именем, что и демон в /etc/rc.d/) дял данного демона, то используется нативный файл. В протвном случае запускается скрипт из /etc/rc.d/.<br />
<br />
===arch-persistent-settings.service===<br />
Он запускается при завершении работы. Его основная цель - убедиться, что все настройки Arch применены при следующей загрузке. В частности:<br />
* устанавливает timezone из rc.conf<br />
* обновляет чёрный список модулей из rc.conf (смотри /etc/modprobe.d/rc.conf)<br />
* оьновляет список модулей, которые должны быть загружены, из rc.conf (смотри /etc/modules-load.d/rc.conf)<br />
<br />
==FAQ==<br />
===Почему мои шрифты в консоли такие уродливые?===<br />
Если шрифт не установлен в /etc/vconsole.conf (или, как альтернатива, в /etc/rc.conf), то будет использован стандартный шрифт. Стандартный шрифт выбирается из-за поддержки большого числа наборов символов. Установите нужный шрифт в вышеуказанных файлах, чтобы исправить проблему.<br />
===Как мне изменить текущий уровень запуска (runlevel)?===<br />
В systemd уровни запуска обеспечиваются через "целевой единицы". Вы можете изменить их так:<br />
# systemctl isolate runlevel5.target<br />
или<br />
# systemctl isolate runlevel3.target<br />
Заметим, однако, что концепция уровней запуска немного устарели, и вместо них лучше использовать современные названия. Например:<br />
# systemctl isolate graphical.target<br />
Эти команды изменят только текущий уровень запуска и при следующей загрузке не сохранятся.<br />
===Как мне изменить уровень запуска по умолчанию?===<br />
Чтобы изменить уровень запуска по умолчанию, нужно создть символическую ссылку на соответствующий target-файл:<br />
# ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target<br />
или <br />
# ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target<br />
<br />
== Ссылки ==<br />
Перевод [http://0pointer.de/blog/projects/systemd.html статьи] разработчика:<br />
* [http://tux-the-penguin.blogspot.com/2010/09/systemd.html Система инициализации Systemd. Часть I]<br />
* [http://tux-the-penguin.blogspot.com/2010/09/systemd-ii.html Система инициализации Systemd. Часть II]</div>Klayhttps://wiki.archlinux.org/index.php?title=User:Klay&diff=228582User:Klay2012-10-14T08:18:53Z<p>Klay: </p>
<hr />
<div>Russian Federation, Murom<br />
<br />
== Contacts ==<br />
Use my [[User talk:Klay|talk]] page for public comments. <br />
Use my [[Special:EmailUser/Klay|email]] for private comments.<br />
<br />
<br />
== Languages ==<br />
* Russian<br />
* English<br />
<br />
<br />
== Experience Using Distributions ==<br />
* Fedora - 1.5 Years<br />
* Ubuntu - 3 Month<br />
* Debian - 5 Month<br />
* Red Hat - 1 Year<br />
* Arch - From April 2012 to now<br />
<br />
<br />
== Links ==<br />
* [[User:Klay/Todo]]<br />
<br />
<br />
<br />
__NOTOC__ {{DISPLAYTITLE:User:Klay}}</div>Klay