https://wiki.archlinux.org/api.php?action=feedcontributions&user=Nobus&feedformat=atomArchWiki - User contributions [en]2024-03-29T05:35:05ZUser contributionsMediaWiki 1.41.0https://wiki.archlinux.org/index.php?title=Beginners%27_guide_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=263813Beginners' guide (Русский)2013-06-22T05:40:13Z<p>Nobus: </p>
<hr />
<div>[[Category:Получение и установка ArchLinux (Русский)]]<br />
[[Category:Об ArchLinux (Русский)]]<br />
[[ar:Beginners' Guide]]<br />
[[bg:Beginners' Guide]]<br />
[[cs:Beginners' Guide]]<br />
[[da:Beginners' Guide]]<br />
[[de:Anleitung für Einsteiger]]<br />
[[en:Beginners' Guide]]<br />
[[es:Beginners' Guide]]<br />
[[fa:راهنمای_تازهکارها]]<br />
[[fr:Installation]]<br />
[[he:Beginners' Guide]]<br />
[[hr:Beginners' Guide]]<br />
[[hu:Beginners' Guide]]<br />
[[id:Beginners' Guide]]<br />
[[it:Beginners' Guide]]<br />
[[ja:Beginners' Guide]]<br />
[[ko:Beginners' Guide]]<br />
[[lt:Beginners' Guide]]<br />
[[nl:Beginners' Guide]]<br />
[[pl:Beginners' Guide]]<br />
[[pt:Beginners' Guide]]<br />
[[sk:Beginners' Guide]]<br />
[[sr:Beginners' Guide]]<br />
[[tr:Yeni_başlayanlar_rehberi]]<br />
[[uk:Beginners' Guide]]<br />
[[zh-CN:Beginners' Guide]]<br />
[[zh-TW:Beginners' Guide]]<br />
{{Tip| Это руководство состоит из отдельных статей. Если вы предпочитаете читать по частям, а не единым куском, начните '''[[Beginners' Guide/Preface_(Русский)|отсюда]]'''.}}<br />
{{Article summary start|Описание}}<br />
{{Article summary text| Подробное, снабженное примерами описание процесса установки и конфигурирования Arch Linux.}}<br />
{{Article summary heading|Полезные ссылки}}<br />
{{Article summary wiki|Руководство по установке}}<br />
{{Article summary wiki|Network Installation Guide}}<br />
{{Article summary wiki|Install from SSH}}<br />
{{Article summary wiki|Основные рекомендации}}<br />
{{Article summary end}}<br />
<!-- Include the different sub pages --><br />
{{:Beginners' Guide/Preface_(Русский)}}<br />
{{:Beginners' Guide/Preparation_(Русский)}}<br />
{{:Beginners' Guide/Installation_(Русский)}}<br />
{{:Beginners' Guide/Post-installation_(Русский)}}</div>Nobushttps://wiki.archlinux.org/index.php?title=Systemd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=256322Systemd (Русский)2013-05-07T16:11:29Z<p>Nobus: </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}} и др.)) в большинстве случаев '''нет''' необходимости. Это даже может нарушить работоспособность системы. Например, добавление в группу {{ic|audio}} может привести к невозможности быстрого переключения между пользователями и позволит приложениям заблокировать программное микширование. Каждый вход PAM предоставляет сессию logind, которая дает вам разрешения для локальной сессии посредством [[Wikipedia:Access control list|POSIX ACLs]] на аудио/видео устройства и позволяет выполнять некоторые операции, такие, как как монтирование съемных носителей через [[udisks]].<br />
<br />
* Обратитесь к статье [[Network Configuration]] для получения информации о настройке сетевых подключений.<br />
<br />
== Родные системные файлы ==<br />
<br />
{{Note|Возможно, вам придется создать эти файлы. Все файлы должны иметь права доступа {{ic|644}} и владельца {{ic|root:root}}.}}<br />
<br />
=== Имя компьютера (hostname) ===<br />
<br />
{{Warning|Этот раздел сохранен в русской версии статьи '''''временно'''''. В английской версии он перемещен в статью [[Network_Configuration#Set_the_hostname|Network Configuration]].}}<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 />
{{Warning|Этот раздел сохранен в русской версии статьи '''''временно'''''. В английской версии он перемещен в статью [[Locale]].}}<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 />
{{Warning|Этот раздел сохранен в русской версии статьи '''''временно'''''. В английской версии он перемещен в статью [[Time#Time Zone|Time#Time]].}}<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 на использование UTC, а не Linux на местное время. Если вы настроите 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|Таким образом для вашей файловой системы {{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 />
=== Управлением питанием 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}}, чтобы изменения вступили в силу.}}<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 />
Чтобы команда {{ic|systemctl hibernate}} заработала в вашей системе, вам необходимо следовать инструкциям из раздела [[Pm-utils#Hibernation_.28suspend2disk.29|Hibernation]], а также, возможно, из раздела [[Pm-utils#Mkinitcpio_Resume_Hook|Mkinitcpio Resume Hook]] (не требуется устанавливать {{ic|pm-utils}}). <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 />
=== Юнит ===<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|Данный раздел в английской версии включен в состав статьи [[Network Configuration]]; в русской версии временно оставлен из-за того, что русский вариант [[Configuring Network (Русский)]] устарел в сравнении с английским.}}<br />
<br />
=== Динамическое подключение (DHCP) с использованием dhcpcd ===<br />
<br />
Если хотите использовать только DHCP для своего соединения Ethernet, вы можете воспользоваться сервисом {{ic|dhcpcd@.service}} (который поставляется пакетом {{Pkg|dhcpcd}}).<br />
<br />
Сначала надо узнать наименование своего сетевого интерфейса командой {{ic|ip addr}}. Чтобы подключить DHCP для {{ic|<имя сетевого интерфейса>}}, просто выполните команду:<br />
<br />
# systemctl start dhcpcd@<имя сетевого интерфейса>.service<br />
<br />
Например, если имя сетевого интерфейса {{ic|enp9s0}}:<br />
<br />
# systemctl start dhcpcd@enp9s0.service<br />
<br />
Вы можете включить этот сервис, и он будет автоматически запускаться при загрузке. Это делается командой:<br />
<br />
# systemctl enable dhcpcd@<имя сетевого интерфейса>.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}} не показывает выхода для сервиса с коротким сроком жизни, вместо нее обратитесь к PID. Например, если загрузка сервиса {{ic|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>Nobushttps://wiki.archlinux.org/index.php?title=Systemd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=256321Systemd (Русский)2013-05-07T16:05:29Z<p>Nobus: /* Локаль */ Замечание относительно временного сохранения данного раздела в вики</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}} и др.)) в большинстве случаев '''нет''' необходимости. Это даже может нарушить работоспособность системы. Например, добавление в группу {{ic|audio}} может привести к невозможности быстрого переключения между пользователями и позволит приложениям заблокировать программное микширование. Каждый вход PAM предоставляет сессию logind, которая дает вам разрешения для локальной сессии посредством [[Wikipedia:Access control list|POSIX ACLs]] на аудио/видео устройства и позволяет выполнять некоторые операции, такие, как как монтирование съемных носителей через [[udisks]].<br />
<br />
* Обратитесь к статье [[Network Configuration]] для получения информации о настройке сетевых подключений.<br />
<br />
== Родные системные файлы ==<br />
<br />
{{Note|Возможно, вам придется создать эти файлы. Все файлы должны иметь права доступа {{ic|644}} и владельца {{ic|root:root}}.}}<br />
<br />
=== Имя компьютера (hostname) ===<br />
<br />
{{Warning|Этот раздел сохранен в русской версии статьи '''''временно'''''. В английской версии он перемещен в статью [[Network_Configuration#Set_the_hostname|Network Configuration]].}}<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 />
{{Warning|Этот раздел сохранен в русской версии статьи '''''временно'''''. В английской версии он перемещен в статью [[Locale]].}}<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 />
{{Warning|Этот раздел сохранен в русской версии статьи '''''временно'''''. В английской версии он перемещен в статью [[Time#Time Zone|Time#Time]].}}<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 на использование UTC, а не Linux на местное время. Если вы настроите 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 />
=== Управлением питанием 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}}, чтобы изменения вступили в силу.}}<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 />
Чтобы команда {{ic|systemctl hibernate}} заработала в вашей системе, вам необходимо следовать инструкциям из раздела [[Pm-utils#Hibernation_.28suspend2disk.29|Hibernation]], а также, возможно, из раздела [[Pm-utils#Mkinitcpio_Resume_Hook|Mkinitcpio Resume Hook]] (не требуется устанавливать {{ic|pm-utils}}). <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 />
=== Юнит ===<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|Данный раздел в английской версии включен в состав статьи [[Network Configuration]]; в русской версии временно оставлен из-за того, что русский вариант [[Configuring Network (Русский)]] устарел в сравнении с английским.}}<br />
<br />
=== Динамическое подключение (DHCP) с использованием dhcpcd ===<br />
<br />
Если хотите использовать только DHCP для своего соединения Ethernet, вы можете воспользоваться сервисом {{ic|dhcpcd@.service}} (который поставляется пакетом {{Pkg|dhcpcd}}).<br />
<br />
Сначала надо узнать наименование своего сетевого интерфейса командой {{ic|ip addr}}. Чтобы подключить DHCP для {{ic|<имя сетевого интерфейса>}}, просто выполните команду:<br />
<br />
# systemctl start dhcpcd@<имя сетевого интерфейса>.service<br />
<br />
Например, если имя сетевого интерфейса {{ic|enp9s0}}:<br />
<br />
# systemctl start dhcpcd@enp9s0.service<br />
<br />
Вы можете включить этот сервис, и он будет автоматически запускаться при загрузке. Это делается командой:<br />
<br />
# systemctl enable dhcpcd@<имя сетевого интерфейса>.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}} не показывает выхода для сервиса с коротким сроком жизни, вместо нее обратитесь к PID. Например, если загрузка сервиса {{ic|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>Nobushttps://wiki.archlinux.org/index.php?title=Installation_guide_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=256320Installation guide (Русский)2013-05-07T16:02:29Z<p>Nobus: Приведение в соответствие с английской вики (по состоянию на 09:41, 3 мая 2013 года)</p>
<hr />
<div>[[Category:About Arch (Русский)]]<br />
[[Category:Getting and installing Arch (Русский)]]<br />
[[En:Installation_Guide]]<br />
[[de:Arch Install Scripts]]<br />
[[fr:Arch_install_scripts]]<br />
[[it:Installation Guide]]<br />
[[uk:Installation Guide]]<br />
[[zh-CN:Installation Guide]]<br />
[[zh-TW:Installation Guide]]<br />
<br />
Этот документ проведет вас через процесс установки [[Arch Linux (Русский)|Arch Linux]] c использованием [https://github.com/falconindy/arch-install-scripts Arch Install Scripts]. Рекомендуется перед установкой ознакомиться с [[FAQ (Русский)]]._<br />
Поддерживаемая сообществом [[Main Page (Русский)|вики Arch'а]] является превосходным ресурсом, к которому следует обращаться в первую очередь при возникновении каких-либо проблем. Если ответ на интересующий вас вопрос в другом месте не найден, доступны [[Wikipedia:IRC|IRC]]-канал (irc://irc.mibbit.net/#archlinux-ru) и [http://archlinux.org.ru/forum/ форумы]. Также обращайтесь к страницам руководств ({{ic|man}}) тех команд, с которыми вы незнакомы; обычно они вызываются при помощи {{ic|man ''command''}} (где ''command'' - имя интересующей вас команды).<br />
<br />
{{Tip|Новички могут обратиться к [[Beginners' Guide (Русский)|подробному руководству]] по установке.}}<br />
<br />
== Получение установочного образа ==<br />
<br />
Загрузите новый установочный образ диска Arch Linux с [https://www.archlinux.org/download/ соответствующей страницы] на главном сайте дистрибутива.<br />
<br />
* Предлагается единый установочный образ, с помощью которого вы сможете загрузиться как на i686, так и на x86_64 системах, чтобы провести установку по сети. Диск с репозиторием [core] для оффлайн-установки больше не доступен и не поддерживается.<br />
<br />
* Установочный образ подписан цифровой подписью, и вы можете проверить ее перед установкой командой {{bc|pacman-key -v <iso-file>.sig}}<br />
<br />
* Образ может быть записан на CD, смонтирован как iso-файл или записан на usb устройство (флешку) с помощью команды {{ic|dd}}. Он предназначен только для установки системы - обновление уже установленной системы производится стандартным способом, командой {{ic|pacman -Syu}}.<br />
<br />
== Установка ==<br />
<br />
=== Раскладка клавиатуры ===<br />
<br />
Для большинства стран и видов клавиатур уже доступны соответствующие раскладки, нужная из которых может быть выбрана командой, например {{ic|loadkeys ru}}. Другие раскладки можно найти в {{ic|/usr/share/kbd/keymaps/}} (можно не указывать полный путь и расширение файла с раскладкой при использовании команды loadkeys).<br />
<br />
=== Создание разделов ===<br />
<br />
Для подробностей обратитесь к разделу [[Partitioning]].<br />
<br />
При необходимости не забудьте создать [[lvm|LVM]], [[Dm-crypt_with_LUKS|LUKS]] или [[RAID|RAID]] устройства.<br />
<br />
=== Форматирование разделов ===<br />
<br />
Более подробно вы можете прочитать [[Format_a_device#Step_2:_create_the_new_file_system|здесь]].<br />
<br />
Если вы используете (U)EFI, вам, скорее всего, понадобится отдельный раздел для размещения служебного раздела UEFI. Подробнее можно прочитать [[Unified_Extensible_Firmware_Interface (Русский)#Создание UEFI раздела в Linux|здесь]].<br />
<br />
=== Монтирование разделов ===<br />
<br />
Как минимум, вы должны смонтировать корневой раздел в {{ic|/mnt}}. Например:<br />
<br />
# mount /dev/sda2 /mnt<br />
<br />
Если вы хотите, чтобы еще какие-либо разделы были автоматически учтены скриптом установки {{ic|genfstab}}, необходимо создать соответствующие директории внутри /mnt и смонтировать туда нужные разделы. Например для отдельных загрузочного и домашнего разделов:<br />
<br />
# mkdir /mnt/boot && mount /dev/sda1 /mnt/boot<br />
# mkdir /mnt/home && mount /dev/sda3 /mnt/home<br />
<br />
=== Подключение к интернету ===<br />
<br />
Сервис DHCP уже доступен для всех подходящих устройств. Для проводного подключения просто запустите {{ic|dhcpcd}}. Если вам необходимо установить статический IP или вы хотите использовать средства настройки наподобие [[Netcfg (Русский)#Настройка|Netcfg]], вам сначала надо остановить данный сервис: {{ic|systemctl stop dhcpcd.service}}. Для получения дополнительной информации обратитесь к [[Configuring Network (Русский)|руководству по настройке сети]].<br />
<br />
==== Беспроводное соединение ====<br />
<br />
Если у вас беспроводное соединение, запустите {{ic|wifi-menu}} для его настройки. Смотрите разделы [[Wireless Setup (Русский)|Wireless Setup]] и [[Netcfg (Русский)#Настройка|Netcfg]], чтобы определить, какие дополнительные драйверы требуются для вашего устройства.<br />
<br />
=== Установка базовой системы ===<br />
<br />
Перед началом установки вы, возможно, захотите отредактировать {{ic|/etc/pacman.d/mirrorlist}} для выбора подходящего зеркала. Это стоит сделать, поскольку копия данного файла будет также установлена в вашу систему с помощью {{ic|pacstrap}}.<br />
<br />
Скрипт [https://github.com/falconindy/arch-install-scripts/blob/master/pacstrap.in pacstrap] установит базовую систему.<br />
<br />
# pacstrap /mnt base<br />
<br />
Также можно установить и другие пакеты, добавив их имена, разделенные пробелами, к команде выше.<br />
<br />
=== Установка загрузчика ===<br />
<br />
[[GRUB2 (Русский)|Grub]]<br />
<br />
* Для BIOS<br />
<br />
# arch-chroot /mnt pacman -S grub-bios<br />
<br />
* Для EFI (иногда вместо него нужно установить {{ic|grub-efi-i386}} )<br />
<br />
# arch-chroot /mnt pacman -S grub-efi-x86_64<br />
<br />
==== [[Syslinux|Syslinux]] ====<br />
<br />
# arch-chroot /mnt pacman -S syslinux<br />
<br />
=== Настройка системы ===<br />
<br />
Создайте [[fstab (Русский)|fstab]] следующей командой. (Если вы хотите использовать UUID или метки, используйте опции {{ic|-U}} или {{ic|-L}} соответственно.)<br />
<br />
# genfstab -p /mnt >> /mnt/etc/fstab<br />
<br />
Далее перейдите в свою установленную систему с помощью [[Change Root|chroot]].<br />
<br />
# arch-chroot /mnt<br />
<br />
* Укажите имя хоста в файле {{ic|/etc/hostname}}.<br />
* Создайте ссылку {{ic|/etc/localtime}} на {{ic|/usr/share/zoneinfo/Zone/SubZone}}. Где {{ic|Zone}} и {{ic|Subzone}} замените на то, что вам нужно. Например<br />
<br />
# ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime<br />
<br />
* Установите используемый в системе язык, настроив [[Locale (Русский)#Установка системной локали|locale]] в {{ic|/etc/locale.conf}}.<br />
<br />
* Раскомментируйте нужные [https://wiki.archlinux.org/index.php/Locale локали] в {{ic|/etc/locale.gen}} и сгенерируйте {{ic|locale-gen}}.<br />
* Настройте {{ic|/etc/mkinitcpio.conf}} как вам нужно (см. [[mkinitcpio (Русский)|mkinitcpio]]) и создайте ramdisk:<br />
<br />
# mkinitcpio -p linux<br />
<br />
* Настройте загрузчик. Относительно GRUB обратитесь к разделу [[GRUB#Installation|GRUB installation and Configuration]]; в случасе с Syslinux смотрите информацию в разделе [[Syslinux#Configuration|Syslinux configuration]].<br />
<br />
* Установите root пароль с помощью команды {{ic|passwd}}.<br />
<br />
=== Размонтирование разделов и перезагрузка ===<br />
<br />
Если вы все еще в окружении chroot, введите {{ic|exit}} или нажмите {{ic|Ctrl+D}}.<br />
В шаге 3 мы смонтировали разделы в {{ic|/mnt}}. Теперь отмонтируем их.<br />
<br />
# umount /mnt/{boot,home,}<br />
<br />
== После установки ==<br />
<br />
=== Управление пользователями ===<br />
<br />
Добавьте добавьте необходимые вам аккаунты пользователей, как это описано на странице [[Users and Groups#User management|User management]]. Считается плохим выбором использование аккаунта суперпользователя для регулярной работы с системой, или подключения к ней через сервер [[SSH]]. Используйте аккаунт суперпользователя только для решения задач администрирования системы.<br />
<br />
=== Управление пакетами ===<br />
<br />
Смотрите статьи [[pacman (Русский)| pacman]] и [[FAQ#Package Management|FAQ: Package Management]] для получения ответов на вопросы, касающиеся установки, обновления и и управления пакетами.<br />
<br />
=== Управление сервисами ===<br />
<br />
Arch Linux использует [[systemd (Русский)| systemd]] в качестве системы инициализации и менеджера служб (сервисов) для Linux. Для обслуживания установленного Arch Linux было бы неплохо изучить основы данной системы. Взаимодействие с systemd происходит посредством команды {{ic|systemctl}}. Обратитесь к разделу [[systemd (Русский)#Основы использования systemctl| Основы использования systemctl]] для получения более подробной информации.<br />
<br />
=== Звук ===<br />
<br />
[[ALSA]] обычно работает "из коробки", только лишь требуется включить звук. Установите пакет {{Pkg|alsa-utils}} (который содержит утилиту {{ic|alsamixer}}) и следуйте инструкциям из [[Advanced Linux Sound Architecture#Unmuting the channels| данного раздела]].<br />
<br />
ALSA включена в ядро и рекомендуется к использованию. Если данная архитектура не работает, то работоспособной альтернативой является [[OSS]]. Если у вас повышенные требования к звуку, обратитесь к статье [[Sound system]] для просмотра различных вариантов решения.<br />
<br />
=== Видеодрайвер ===<br />
<br />
Ядро Linux kernel включает открытые (open-source) видеодрайверы и аппаратную поддержку ускорения видеобуфера. Тем не менее, в X11 необходима пользовательская поддержка OpenGL и ускорения 2D.<br />
<br />
Если вы не знаете, какой видеочипсет имеется на вашей машине, выполните команду:<br />
<br />
$ lspci | grep VGA<br />
<br />
Для получения полного списка открытых видеодрайверов ищите по базе данных пакетов следующей командой:<br />
<br />
$ pacman -Ss xf86-video | less<br />
<br />
Драйвер {{ic|vesa}} - самый общий драйвер, подходящий в большинстве случаев и работающий практически с любым GPU, но он не обеспечивает какое-либо 2D или 3D ускорение. Драйвер vesa загрузится, если более подходящий драйвер не будет найден или его загрузка завершится неудачей и Xorg запустится в режиме совместимости.. Для установки данного драйвера выполните команду:<br />
<br />
# pacman -S xf86-video-vesa<br />
<br />
Чтобы заработало видеоускорение и поддерживались все режимы, доступные для GPU, требуется подходящий видеодрайвер<br />
<br />
{| class="wikitable" style="text-align:center"<br />
|-<br />
! Производитель !! Тип !! Драйвер !! Пакет [[Multilib]] <br><span style="font-weight: normal;">(для 32-бит. приложений в Arch x86_64)</span> !! Документация<br />
|-<br />
| rowspan="2" bgcolor=#f7e3e3| '''<span style="color: #e62c2c;">AMD/ATI</span>'''<br />
| Открытый || {{Pkg|xf86-video-ati}} || {{Pkg|lib32-ati-dri}} || [[ATI]]<br />
|-<br />
| Проприетарный || {{Pkg|catalyst-dkms}} || {{Pkg|lib32-catalyst-utils}} || [[AMD Catalyst]]<br />
|-<br />
| bgcolor=#e3ecf7| '''<span style="color: #2a6dc8;">Intel</span>'''<br />
| Открытый<br />
| {{Pkg|xf86-video-intel}} || {{Pkg|lib32-intel-dri}} || [[Intel Graphics]]<br />
|-<br />
| rowspan="4" bgcolor=#e3f7e6| '''<span style="color: #409044;">Nvidia</span>'''<br />
| rowspan="2"| Открытый<br />
| {{Pkg|xf86-video-nouveau}} || {{Pkg|lib32-nouveau-dri}} || [[Nouveau]]<br />
|-<br />
| {{Pkg|xf86-video-nv}} || – || (устаревший драйвер)<br />
|-<br />
| rowspan="2"| Проприетарный || {{Pkg|nvidia}} || {{Pkg|lib32-nvidia-utils}} || rowspan="2"| [[NVIDIA]]<br />
|-<br />
| {{Pkg|nvidia-304xx}} || {{Pkg|lib32-nvidia-304xx-utils}}<br />
|}<br />
<br />
=== Оконная система ===<br />
<br />
Система X Window (обычно именуемая X11, или X) - сетевой и оконный протокол, который обеспечивает отрисовку окон на растровых дисплеях. Это де-факто стандарт для внедрения графических интерефейсов пользователя (GUI). Обратитесь за более подробной информацией к статье [[Xorg]].<br />
<br />
[[Wayland]] - новый протокол оконной системы с реализованным референсным композитным менеджером Weston, но он находится на ранней стадии развития и в силу этого слабо поддерживается приложениями.<br />
<br />
=== Шрифты ===<br />
<br />
Вы по желанию можете установить набор шрифтов TrueType, поскольку по умолчанию в свежеустановленной системе будут только немасштабируемые шрифты. DejaVu - набор высококачественных неспециализированных шрифтов с хорошим покрытием таблицы [[Wikipedia:Unicode|Unicode]]:<br />
<br />
# pacman -S ttf-dejavu<br />
<br />
Обратитесь к статье [[Font Configuration]] за советами по настройке рендеринга шрифтов и к статье [[Fonts]] за инструкциями по выбору и установке шрифтов.<br />
<br />
== Приложение ==<br />
<br />
Обратитесь к статье [[List of Applications]] для просмотра списка приложений, которые могут вас заинтересовать.<br />
<br />
Также смотрите статью [[General Recommendations (Русский)| General Recommendations]], содержащую руководства по послеустановочной настройке системы, например, настройке тачпада или рендерингу шрифтов.</div>Nobushttps://wiki.archlinux.org/index.php?title=Systemd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=255661Systemd (Русский)2013-04-29T15:06:06Z<p>Nobus: Приведение в соответствие с английской вики (по состоянию на 00:12, 28 апреля 2013 года)</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}} и др.)) в большинстве случаев '''нет''' необходимости. Это даже может нарушить работоспособность системы. Например, добавление в группу {{ic|audio}} может привести к невозможности быстрого переключения между пользователями и позволит приложениям заблокировать программное микширование. Каждый вход PAM предоставляет сессию logind, которая дает вам разрешения для локальной сессии посредством [[Wikipedia:Access control list|POSIX ACLs]] на аудио/видео устройства и позволяет выполнять некоторые операции, такие, как как монтирование съемных носителей через [[udisks]].<br />
<br />
* Обратитесь к статье [[Network Configuration]] для получения информации о настройке сетевых подключений.<br />
<br />
== Родные системные файлы ==<br />
<br />
{{Note|Возможно, вам придется создать эти файлы. Все файлы должны иметь права доступа {{ic|644}} и владельца {{ic|root:root}}.}}<br />
<br />
=== Имя компьютера (hostname) ===<br />
<br />
{{Warning|Этот раздел сохранен в русской версии статьи '''''временно'''''. В английской версии он перемещен в статью [[Network_Configuration#Set_the_hostname|Network Configuration]].}}<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 />
{{Warning|Этот раздел сохранен в русской версии статьи '''''временно'''''. В английской версии он перемещен в статью [[Time#Time Zone|Time#Time]].}}<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 на использование UTC, а не Linux на местное время. Если вы настроите 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 />
=== Управлением питанием 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}}, чтобы изменения вступили в силу.}}<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 />
Чтобы команда {{ic|systemctl hibernate}} заработала в вашей системе, вам необходимо следовать инструкциям из раздела [[Pm-utils#Hibernation_.28suspend2disk.29|Hibernation]], а также, возможно, из раздела [[Pm-utils#Mkinitcpio_Resume_Hook|Mkinitcpio Resume Hook]] (не требуется устанавливать {{ic|pm-utils}}). <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 />
=== Юнит ===<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|Данный раздел в английской версии включен в состав статьи [[Network Configuration]]; в русской версии временно оставлен из-за того, что русский вариант [[Configuring Network (Русский)]] устарел в сравнении с английским.}}<br />
<br />
=== Динамическое подключение (DHCP) с использованием dhcpcd ===<br />
<br />
Если хотите использовать только DHCP для своего соединения Ethernet, вы можете воспользоваться сервисом {{ic|dhcpcd@.service}} (который поставляется пакетом {{Pkg|dhcpcd}}).<br />
<br />
Сначала надо узнать наименование своего сетевого интерфейса командой {{ic|ip addr}}. Чтобы подключить DHCP для {{ic|<имя сетевого интерфейса>}}, просто выполните команду:<br />
<br />
# systemctl start dhcpcd@<имя сетевого интерфейса>.service<br />
<br />
Например, если имя сетевого интерфейса {{ic|enp9s0}}:<br />
<br />
# systemctl start dhcpcd@enp9s0.service<br />
<br />
Вы можете включить этот сервис, и он будет автоматически запускаться при загрузке. Это делается командой:<br />
<br />
# systemctl enable dhcpcd@<имя сетевого интерфейса>.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}} не показывает выхода для сервиса с коротким сроком жизни, вместо нее обратитесь к PID. Например, если загрузка сервиса {{ic|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>Nobushttps://wiki.archlinux.org/index.php?title=Systemd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=255220Systemd (Русский)2013-04-26T16:13:16Z<p>Nobus: /* LVM */</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}} и др.)) в большинстве случаев '''нет''' необходимости. Это даже может нарушить работоспособность системы. Например, добавление в группу {{ic|audio}} может привести к невозможности быстрого переключения между пользователями и позволит приложениям заблокировать программное микширование. Каждый вход PAM предоставляет сессию logind, которая дает вам разрешения для локальной сессии посредством [[Wikipedia:Access control list|POSIX ACLs]] на аудио/видео устройства и позволяет выполнять некоторые операции, такие, как как монтирование съемных носителей через [[udisks]].<br />
<br />
* Обратитесь к статье [[Network Configuration]] для получения информации о настройке сетевых подключений.<br />
<br />
== Родные системные файлы ==<br />
<br />
{{Note|Возможно, вам придется создать эти файлы. Все файлы должны иметь права доступа {{ic|644}} и владельца {{ic|root:root}}.}}<br />
<br />
=== Имя компьютера (hostname) ===<br />
<br />
{{Warning|Этот раздел сохранен в русской версии статьи '''''временно'''''. В английской версии он перемещен в статью [[Network_Configuration#Set_the_hostname|Network Configuration]].}}<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 />
{{Warning|Этот раздел сохранен в русской версии статьи '''''временно'''''. В английской версии он перемещен в статью [[Time#Time Zone|Time#Time]].}}<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 на использование UTC, а не Linux на местное время. Если вы настроите 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 />
=== Управлением питанием 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 />
Чтобы команда {{ic|systemctl hibernate}} заработала в вашей системе, вам необходимо следовать инструкциям из раздела [[Pm-utils#Hibernation_.28suspend2disk.29|Hibernation]], а также, возможно, из раздела [[Pm-utils#Mkinitcpio_Resume_Hook|Mkinitcpio Resume Hook]] (не требуется устанавливать {{ic|pm-utils}}). <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 />
=== Юнит ===<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|Данный раздел в английской версии включен в состав статьи [[Network Configuration]]; в русской версии временно оставлен из-за того, что русский вариант [[Configuring Network (Русский)]] устарел в сравнении с английским.}}<br />
<br />
=== Динамическое подключение (DHCP) с использованием dhcpcd ===<br />
<br />
Если хотите использовать только DHCP для своего соединения Ethernet, вы можете воспользоваться сервисом {{ic|dhcpcd@.service}} (который поставляется пакетом {{Pkg|dhcpcd}}).<br />
<br />
Сначала надо узнать наименование своего сетевого интерфейса командой {{ic|ip addr}}. Чтобы подключить DHCP для {{ic|<имя сетевого интерфейса>}}, просто выполните команду:<br />
<br />
# systemctl start dhcpcd@<имя сетевого интерфейса>.service<br />
<br />
Например, если имя сетевого интерфейса {{ic|enp9s0}}:<br />
<br />
# systemctl start dhcpcd@enp9s0.service<br />
<br />
Вы можете включить этот сервис, и он будет автоматически запускаться при загрузке. Это делается командой:<br />
<br />
# systemctl enable dhcpcd@<имя сетевого интерфейса>.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>Nobushttps://wiki.archlinux.org/index.php?title=Systemd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=255011Systemd (Русский)2013-04-23T17:05:55Z<p>Nobus: /* Управлением питанием ACPI */</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}} и др.)) в большинстве случаев '''нет''' необходимости. Это даже может нарушить работоспособность системы. Например, добавление в группу {{ic|audio}} может привести к невозможности быстрого переключения между пользователями и позволит приложениям заблокировать программное микширование. Каждый вход PAM предоставляет сессию logind, которая дает вам разрешения для локальной сессии посредством [[Wikipedia:Access control list|POSIX ACLs]] на аудио/видео устройства и позволяет выполнять некоторые операции, такие, как как монтирование съемных носителей через [[udisks]].<br />
<br />
* Обратитесь к статье [[Network Configuration]] для получения информации о настройке сетевых подключений.<br />
<br />
== Родные системные файлы ==<br />
<br />
{{Note|Возможно, вам придется создать эти файлы. Все файлы должны иметь права доступа {{ic|644}} и владельца {{ic|root:root}}.}}<br />
<br />
=== Имя компьютера (hostname) ===<br />
<br />
{{Warning|Этот раздел сохранен в русской версии статьи '''''временно'''''. В английской версии он перемещен в статью [[Network_Configuration#Set_the_hostname|Network Configuration]].}}<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 />
{{Warning|Этот раздел сохранен в русской версии статьи '''''временно'''''. В английской версии он перемещен в статью [[Time#Time Zone|Time#Time]].}}<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 на использование UTC, а не Linux на местное время. Если вы настроите 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 />
Чтобы команда {{ic|systemctl hibernate}} заработала в вашей системе, вам необходимо следовать инструкциям из раздела [[Pm-utils#Hibernation_.28suspend2disk.29|Hibernation]], а также, возможно, из раздела [[Pm-utils#Mkinitcpio_Resume_Hook|Mkinitcpio Resume Hook]] (не требуется устанавливать {{ic|pm-utils}}). <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 />
=== Юнит ===<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|Данный раздел в английской версии включен в состав статьи [[Network Configuration]]; в русской версии временно оставлен из-за того, что русский вариант [[Configuring Network (Русский)]] устарел в сравнении с английским.}}<br />
<br />
=== Динамическое подключение (DHCP) с использованием dhcpcd ===<br />
<br />
Если хотите использовать только DHCP для своего соединения Ethernet, вы можете воспользоваться сервисом {{ic|dhcpcd@.service}} (который поставляется пакетом {{Pkg|dhcpcd}}).<br />
<br />
Сначала надо узнать наименование своего сетевого интерфейса командой {{ic|ip addr}}. Чтобы подключить DHCP для {{ic|<имя сетевого интерфейса>}}, просто выполните команду:<br />
<br />
# systemctl start dhcpcd@<имя сетевого интерфейса>.service<br />
<br />
Например, если имя сетевого интерфейса {{ic|enp9s0}}:<br />
<br />
# systemctl start dhcpcd@enp9s0.service<br />
<br />
Вы можете включить этот сервис, и он будет автоматически запускаться при загрузке. Это делается командой:<br />
<br />
# systemctl enable dhcpcd@<имя сетевого интерфейса>.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>Nobushttps://wiki.archlinux.org/index.php?title=Systemd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=255010Systemd (Русский)2013-04-23T17:05:05Z<p>Nobus: /* Управлением питанием ACPI */ Дополнения в соответствии с актукальной английской вики.</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}} и др.)) в большинстве случаев '''нет''' необходимости. Это даже может нарушить работоспособность системы. Например, добавление в группу {{ic|audio}} может привести к невозможности быстрого переключения между пользователями и позволит приложениям заблокировать программное микширование. Каждый вход PAM предоставляет сессию logind, которая дает вам разрешения для локальной сессии посредством [[Wikipedia:Access control list|POSIX ACLs]] на аудио/видео устройства и позволяет выполнять некоторые операции, такие, как как монтирование съемных носителей через [[udisks]].<br />
<br />
* Обратитесь к статье [[Network Configuration]] для получения информации о настройке сетевых подключений.<br />
<br />
== Родные системные файлы ==<br />
<br />
{{Note|Возможно, вам придется создать эти файлы. Все файлы должны иметь права доступа {{ic|644}} и владельца {{ic|root:root}}.}}<br />
<br />
=== Имя компьютера (hostname) ===<br />
<br />
{{Warning|Этот раздел сохранен в русской версии статьи '''''временно'''''. В английской версии он перемещен в статью [[Network_Configuration#Set_the_hostname|Network Configuration]].}}<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 />
{{Warning|Этот раздел сохранен в русской версии статьи '''''временно'''''. В английской версии он перемещен в статью [[Time#Time Zone|Time#Time]].}}<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 на использование UTC, а не Linux на местное время. Если вы настроите 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 />
Чтобы команда {{ic|systemctl hibernate}} заработала в вашей системе, вам необходимо следовать инструкциям из статьи [[Pm-utils#Hibernation_.28suspend2disk.29|Hibernation]], а также, возможно, из статьи [[Pm-utils#Mkinitcpio_Resume_Hook|Mkinitcpio Resume Hook]] (не требуется устанавливать {{ic|pm-utils}}). <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 />
=== Юнит ===<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|Данный раздел в английской версии включен в состав статьи [[Network Configuration]]; в русской версии временно оставлен из-за того, что русский вариант [[Configuring Network (Русский)]] устарел в сравнении с английским.}}<br />
<br />
=== Динамическое подключение (DHCP) с использованием dhcpcd ===<br />
<br />
Если хотите использовать только DHCP для своего соединения Ethernet, вы можете воспользоваться сервисом {{ic|dhcpcd@.service}} (который поставляется пакетом {{Pkg|dhcpcd}}).<br />
<br />
Сначала надо узнать наименование своего сетевого интерфейса командой {{ic|ip addr}}. Чтобы подключить DHCP для {{ic|<имя сетевого интерфейса>}}, просто выполните команду:<br />
<br />
# systemctl start dhcpcd@<имя сетевого интерфейса>.service<br />
<br />
Например, если имя сетевого интерфейса {{ic|enp9s0}}:<br />
<br />
# systemctl start dhcpcd@enp9s0.service<br />
<br />
Вы можете включить этот сервис, и он будет автоматически запускаться при загрузке. Это делается командой:<br />
<br />
# systemctl enable dhcpcd@<имя сетевого интерфейса>.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>Nobushttps://wiki.archlinux.org/index.php?title=Systemd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=254907Systemd (Русский)2013-04-22T16:13:51Z<p>Nobus: /* Временная зона */</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}} и др.)) в большинстве случаев '''нет''' необходимости. Это даже может нарушить работоспособность системы. Например, добавление в группу {{ic|audio}} может привести к невозможности быстрого переключения между пользователями и позволит приложениям заблокировать программное микширование. Каждый вход PAM предоставляет сессию logind, которая дает вам разрешения для локальной сессии посредством [[Wikipedia:Access control list|POSIX ACLs]] на аудио/видео устройства и позволяет выполнять некоторые операции, такие, как как монтирование съемных носителей через [[udisks]].<br />
<br />
* Обратитесь к статье [[Network Configuration]] для получения информации о настройке сетевых подключений.<br />
<br />
== Родные системные файлы ==<br />
<br />
{{Note|Возможно, вам придется создать эти файлы. Все файлы должны иметь права доступа {{ic|644}} и владельца {{ic|root:root}}.}}<br />
<br />
=== Имя компьютера (hostname) ===<br />
<br />
{{Warning|Этот раздел сохранен в русской версии статьи '''''временно'''''. В английской версии он перемещен в статью [[Network_Configuration#Set_the_hostname|Network Configuration]].}}<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 />
{{Warning|Этот раздел сохранен в русской версии статьи '''''временно'''''. В английской версии он перемещен в статью [[Time#Time Zone|Time#Time]].}}<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 на использование UTC, а не Linux на местное время. Если вы настроите 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 />
=== Юнит ===<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|Данный раздел в английской версии включен в состав статьи [[Network Configuration]]; в русской версии временно оставлен из-за того, что русский вариант [[Configuring Network (Русский)]] устарел в сравнении с английским.}}<br />
<br />
=== Динамическое подключение (DHCP) с использованием dhcpcd ===<br />
<br />
Если хотите использовать только DHCP для своего соединения Ethernet, вы можете воспользоваться сервисом {{ic|dhcpcd@.service}} (который поставляется пакетом {{Pkg|dhcpcd}}).<br />
<br />
Сначала надо узнать наименование своего сетевого интерфейса командой {{ic|ip addr}}. Чтобы подключить DHCP для {{ic|<имя сетевого интерфейса>}}, просто выполните команду:<br />
<br />
# systemctl start dhcpcd@<имя сетевого интерфейса>.service<br />
<br />
Например, если имя сетевого интерфейса {{ic|enp9s0}}:<br />
<br />
# systemctl start dhcpcd@enp9s0.service<br />
<br />
Вы можете включить этот сервис, и он будет автоматически запускаться при загрузке. Это делается командой:<br />
<br />
# systemctl enable dhcpcd@<имя сетевого интерфейса>.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>Nobushttps://wiki.archlinux.org/index.php?title=Systemd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=254906Systemd (Русский)2013-04-22T16:12:50Z<p>Nobus: /* Временная зона */</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}} и др.)) в большинстве случаев '''нет''' необходимости. Это даже может нарушить работоспособность системы. Например, добавление в группу {{ic|audio}} может привести к невозможности быстрого переключения между пользователями и позволит приложениям заблокировать программное микширование. Каждый вход PAM предоставляет сессию logind, которая дает вам разрешения для локальной сессии посредством [[Wikipedia:Access control list|POSIX ACLs]] на аудио/видео устройства и позволяет выполнять некоторые операции, такие, как как монтирование съемных носителей через [[udisks]].<br />
<br />
* Обратитесь к статье [[Network Configuration]] для получения информации о настройке сетевых подключений.<br />
<br />
== Родные системные файлы ==<br />
<br />
{{Note|Возможно, вам придется создать эти файлы. Все файлы должны иметь права доступа {{ic|644}} и владельца {{ic|root:root}}.}}<br />
<br />
=== Имя компьютера (hostname) ===<br />
<br />
{{Warning|Этот раздел сохранен в русской версии статьи '''''временно'''''. В английской версии он перемещен в статью [[Network_Configuration#Set_the_hostname|Network Configuration]].}}<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 />
{{Warning|Этот раздел сохранен в русской версии статьи '''''временно'''''. В английской версии он перемещен в статью [[Time#Time Zone|Time#Time]].}}<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 на использование UTC, а не Linux на местное время. Если вы настроите 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 />
=== Юнит ===<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|Данный раздел в английской версии включен в состав статьи [[Network Configuration]]; в русской версии временно оставлен из-за того, что русский вариант [[Configuring Network (Русский)]] устарел в сравнении с английским.}}<br />
<br />
=== Динамическое подключение (DHCP) с использованием dhcpcd ===<br />
<br />
Если хотите использовать только DHCP для своего соединения Ethernet, вы можете воспользоваться сервисом {{ic|dhcpcd@.service}} (который поставляется пакетом {{Pkg|dhcpcd}}).<br />
<br />
Сначала надо узнать наименование своего сетевого интерфейса командой {{ic|ip addr}}. Чтобы подключить DHCP для {{ic|<имя сетевого интерфейса>}}, просто выполните команду:<br />
<br />
# systemctl start dhcpcd@<имя сетевого интерфейса>.service<br />
<br />
Например, если имя сетевого интерфейса {{ic|enp9s0}}:<br />
<br />
# systemctl start dhcpcd@enp9s0.service<br />
<br />
Вы можете включить этот сервис, и он будет автоматически запускаться при загрузке. Это делается командой:<br />
<br />
# systemctl enable dhcpcd@<имя сетевого интерфейса>.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>Nobushttps://wiki.archlinux.org/index.php?title=Systemd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=254905Systemd (Русский)2013-04-22T16:12:23Z<p>Nobus: /* Временная зона */</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}} и др.)) в большинстве случаев '''нет''' необходимости. Это даже может нарушить работоспособность системы. Например, добавление в группу {{ic|audio}} может привести к невозможности быстрого переключения между пользователями и позволит приложениям заблокировать программное микширование. Каждый вход PAM предоставляет сессию logind, которая дает вам разрешения для локальной сессии посредством [[Wikipedia:Access control list|POSIX ACLs]] на аудио/видео устройства и позволяет выполнять некоторые операции, такие, как как монтирование съемных носителей через [[udisks]].<br />
<br />
* Обратитесь к статье [[Network Configuration]] для получения информации о настройке сетевых подключений.<br />
<br />
== Родные системные файлы ==<br />
<br />
{{Note|Возможно, вам придется создать эти файлы. Все файлы должны иметь права доступа {{ic|644}} и владельца {{ic|root:root}}.}}<br />
<br />
=== Имя компьютера (hostname) ===<br />
<br />
{{Warning|Этот раздел сохранен в русской версии статьи '''''временно'''''. В английской версии он перемещен в статью [[Network_Configuration#Set_the_hostname|Network Configuration]].}}<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 />
{{Warning|Этот раздел сохранен в русской версии статьи '''''временно'''''. В английской версии он перемещен в статью [[Time#Time Zone|Time#Time]].}}<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 на использование UTC, а не Linux на местное время. Если вы настроите 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 />
=== Юнит ===<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|Данный раздел в английской версии включен в состав статьи [[Network Configuration]]; в русской версии временно оставлен из-за того, что русский вариант [[Configuring Network (Русский)]] устарел в сравнении с английским.}}<br />
<br />
=== Динамическое подключение (DHCP) с использованием dhcpcd ===<br />
<br />
Если хотите использовать только DHCP для своего соединения Ethernet, вы можете воспользоваться сервисом {{ic|dhcpcd@.service}} (который поставляется пакетом {{Pkg|dhcpcd}}).<br />
<br />
Сначала надо узнать наименование своего сетевого интерфейса командой {{ic|ip addr}}. Чтобы подключить DHCP для {{ic|<имя сетевого интерфейса>}}, просто выполните команду:<br />
<br />
# systemctl start dhcpcd@<имя сетевого интерфейса>.service<br />
<br />
Например, если имя сетевого интерфейса {{ic|enp9s0}}:<br />
<br />
# systemctl start dhcpcd@enp9s0.service<br />
<br />
Вы можете включить этот сервис, и он будет автоматически запускаться при загрузке. Это делается командой:<br />
<br />
# systemctl enable dhcpcd@<имя сетевого интерфейса>.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>Nobushttps://wiki.archlinux.org/index.php?title=Systemd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=254624Systemd (Русский)2013-04-20T04:13:15Z<p>Nobus: /* Сеть */</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}} и др.)) в большинстве случаев '''нет''' необходимости. Это даже может нарушить работоспособность системы. Например, добавление в группу {{ic|audio}} может привести к невозможности быстрого переключения между пользователями и позволит приложениям заблокировать программное микширование. Каждый вход PAM предоставляет сессию logind, которая дает вам разрешения для локальной сессии посредством [[Wikipedia:Access control list|POSIX ACLs]] на аудио/видео устройства и позволяет выполнять некоторые операции, такие, как как монтирование съемных носителей через [[udisks]].<br />
<br />
* Обратитесь к статье [[Network Configuration]] для получения информации о настройке сетевых подключений.<br />
<br />
== Родные системные файлы ==<br />
<br />
{{Note|Возможно, вам придется создать эти файлы. Все файлы должны иметь права доступа {{ic|644}} и владельца {{ic|root:root}}.}}<br />
<br />
=== Имя компьютера (hostname) ===<br />
<br />
{{Warning|Этот раздел сохранен в русской версии статьи '''''временно'''''. В английской версии он перемещен в статью [[Network_Configuration#Set_the_hostname|Network Configuration]].}}<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 на использование UTC, а не Linux на местное время. Если вы настроите 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 />
=== Юнит ===<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|Данный раздел в английской версии включен в состав статьи [[Network Configuration]]; в русской версии временно оставлен из-за того, что русский вариант [[Configuring Network (Русский)]] устарел в сравнении с английским.}}<br />
<br />
=== Динамическое подключение (DHCP) с использованием dhcpcd ===<br />
<br />
Если хотите использовать только DHCP для своего соединения Ethernet, вы можете воспользоваться сервисом {{ic|dhcpcd@.service}} (который поставляется пакетом {{Pkg|dhcpcd}}).<br />
<br />
Сначала надо узнать наименование своего сетевого интерфейса командой {{ic|ip addr}}. Чтобы подключить DHCP для {{ic|<имя сетевого интерфейса>}}, просто выполните команду:<br />
<br />
# systemctl start dhcpcd@<имя сетевого интерфейса>.service<br />
<br />
Например, если имя сетевого интерфейса {{ic|enp9s0}}:<br />
<br />
# systemctl start dhcpcd@enp9s0.service<br />
<br />
Вы можете включить этот сервис, и он будет автоматически запускаться при загрузке. Это делается командой:<br />
<br />
# systemctl enable dhcpcd@<имя сетевого интерфейса>.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>Nobushttps://wiki.archlinux.org/index.php?title=Systemd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=254623Systemd (Русский)2013-04-20T04:03:52Z<p>Nobus: /* Имя компьютера (hostname) */</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}} и др.)) в большинстве случаев '''нет''' необходимости. Это даже может нарушить работоспособность системы. Например, добавление в группу {{ic|audio}} может привести к невозможности быстрого переключения между пользователями и позволит приложениям заблокировать программное микширование. Каждый вход PAM предоставляет сессию logind, которая дает вам разрешения для локальной сессии посредством [[Wikipedia:Access control list|POSIX ACLs]] на аудио/видео устройства и позволяет выполнять некоторые операции, такие, как как монтирование съемных носителей через [[udisks]].<br />
<br />
* Обратитесь к статье [[Network Configuration]] для получения информации о настройке сетевых подключений.<br />
<br />
== Родные системные файлы ==<br />
<br />
{{Note|Возможно, вам придется создать эти файлы. Все файлы должны иметь права доступа {{ic|644}} и владельца {{ic|root:root}}.}}<br />
<br />
=== Имя компьютера (hostname) ===<br />
<br />
{{Warning|Этот раздел сохранен в русской версии статьи '''''временно'''''. В английской версии он перемещен в статью [[Network_Configuration#Set_the_hostname|Network Configuration]].}}<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 на использование UTC, а не Linux на местное время. Если вы настроите 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 />
=== Юнит ===<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>Nobushttps://wiki.archlinux.org/index.php?title=Systemd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=254622Systemd (Русский)2013-04-20T04:01:26Z<p>Nobus: /* Имя компьютера (hostname) */</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}} и др.)) в большинстве случаев '''нет''' необходимости. Это даже может нарушить работоспособность системы. Например, добавление в группу {{ic|audio}} может привести к невозможности быстрого переключения между пользователями и позволит приложениям заблокировать программное микширование. Каждый вход PAM предоставляет сессию logind, которая дает вам разрешения для локальной сессии посредством [[Wikipedia:Access control list|POSIX ACLs]] на аудио/видео устройства и позволяет выполнять некоторые операции, такие, как как монтирование съемных носителей через [[udisks]].<br />
<br />
* Обратитесь к статье [[Network Configuration]] для получения информации о настройке сетевых подключений.<br />
<br />
== Родные системные файлы ==<br />
<br />
{{Note|Возможно, вам придется создать эти файлы. Все файлы должны иметь права доступа {{ic|644}} и владельца {{ic|root:root}}.}}<br />
<br />
=== Имя компьютера (hostname) ===<br />
<br />
{{Warning|Этот раздел сохранен в русской версии статьи '''''временно'''''. В английской версии он перемещен в статью [[Network_Configuration#Set_the_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 на использование UTC, а не Linux на местное время. Если вы настроите 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 />
=== Юнит ===<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>Nobushttps://wiki.archlinux.org/index.php?title=Systemd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=254621Systemd (Русский)2013-04-20T04:00:51Z<p>Nobus: </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}} и др.)) в большинстве случаев '''нет''' необходимости. Это даже может нарушить работоспособность системы. Например, добавление в группу {{ic|audio}} может привести к невозможности быстрого переключения между пользователями и позволит приложениям заблокировать программное микширование. Каждый вход PAM предоставляет сессию logind, которая дает вам разрешения для локальной сессии посредством [[Wikipedia:Access control list|POSIX ACLs]] на аудио/видео устройства и позволяет выполнять некоторые операции, такие, как как монтирование съемных носителей через [[udisks]].<br />
<br />
* Обратитесь к статье [[Network Configuration]] для получения информации о настройке сетевых подключений.<br />
<br />
== Родные системные файлы ==<br />
<br />
{{Note|Возможно, вам придется создать эти файлы. Все файлы должны иметь права доступа {{ic|644}} и владельца {{ic|root:root}}.}}<br />
<br />
=== Имя компьютера (hostname) ===<br />
<br />
{{Warning|Этот раздел сохзранен в русской версии статьи '''''временно'''''. В английской версии он перемещен в статью [[Network_Configuration#Set_the_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 на использование UTC, а не Linux на местное время. Если вы настроите 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 />
=== Юнит ===<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>Nobushttps://wiki.archlinux.org/index.php?title=Installation_guide_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=254591Installation guide (Русский)2013-04-19T14:48:52Z<p>Nobus: Приведение в соответствие с английской вики (по состоянию на 16:04, 11 апреля 2013 года)</p>
<hr />
<div>[[Category:About Arch (Русский)]]<br />
[[Category:Getting and installing Arch (Русский)]]<br />
[[En:Installation_Guide]]<br />
[[de:Arch Install Scripts]]<br />
[[fr:Arch_install_scripts]]<br />
[[it:Installation Guide]]<br />
[[uk:Installation Guide]]<br />
[[zh-CN:Installation Guide]]<br />
[[zh-TW:Installation Guide]]<br />
Этот документ проведет вас через процесс установки [[Arch Linux (Русский)|Arch Linux]] c использованием [https://github.com/falconindy/arch-install-scripts Arch Install Scripts]. Рекомендуется перед установкой ознакомиться с [[FAQ (Русский)]]._<br />
Поддерживаемая сообществом [[Main Page (Русский)|вики Arch'а]] является превосходным ресурсом, к которому следует обращаться в первую очередь при возникновении каких-либо проблем. Если ответ на интересующий вас вопрос в другом месте не найден, доступны [[Wikipedia:IRC|IRC]]-канал (irc://irc.mibbit.net/#archlinux-ru) и [http://archlinux.org.ru/forum/ форумы]. Также обращайтесь к страницам руководств ({{ic|man}}) тех команд, с которыми вы незнакомы; обычно они вызываются при помощи {{ic|man ''command''}} (где ''command'' - имя интересующей вас команды).<br />
<br />
{{Tip|Новички могут обратиться к [[Beginners' Guide (Русский)|подробному руководству]] по установке.}}<br />
<br />
== Получение установочного образа ==<br />
Загрузите новый установочный образ диска Arch Linux с [https://www.archlinux.org/download/ соответствующей страницы] на главном сайте дистрибутива.<br />
* Предлагается единый установочный образ, с помощью которого вы сможете загрузиться как на i686, так и на x86_64 системах, чтобы провести установку по сети. Диск с репозиторием [core] для оффлайн-установки больше не доступен и не поддерживается.<br />
* Установочный образ подписан цифровой подписью, и вы можете проверить ее перед установкой командой {{bc|pacman-key -v <iso-file>.sig}}<br />
* Образ может быть записан на CD, смонтирован как iso-файл или записан на usb устройство (флешку) с помощью команды {{ic|dd}}. Он предназначен только для установки системы - обновление уже установленной системы производится стандартным способом, командой {{ic|pacman -Syu}}.<br />
<br />
== Установка ==<br />
<br />
=== Раскладка клавиатуры ===<br />
Для большинства стран и видов клавиатур уже доступны соответствующие раскладки, нужная из которых может быть выбрана командой, например {{ic|loadkeys ru}}. Другие раскладки можно найти в {{ic|/usr/share/kbd/keymaps/}} (можно не указывать полный путь и расширение файла с раскладкой при использовании команды loadkeys).<br />
<br />
=== Создание разделов ===<br />
Для подробностей обратитесь к разделу [[Partitioning]].<br />
<br />
При необходимости не забудьте создать [[lvm|LVM]], [[Dm-crypt_with_LUKS|LUKS]] или [[RAID|RAID]] устройства.<br />
<br />
=== Форматирование разделов ===<br />
Более подробно вы можете прочитать [[Format_a_device#Step_2:_create_the_new_file_system|здесь]].<br />
<br />
Если вы используете (U)EFI, вам, скорее всего, понадобится отдельный раздел для размещения служебного раздела UEFI. Подробнее можно прочитать [[Unified_Extensible_Firmware_Interface (Русский)#Создание UEFI раздела в Linux|здесь]].<br />
<br />
=== Монтирование разделов ===<br />
Как минимум, вы должны смонтировать корневой раздел в {{ic|/mnt}}. Например:<br />
# mount /dev/sda2 /mnt<br />
Если вы хотите, чтобы еще какие-либо разделы были автоматически учтены скриптом установки {{ic|genfstab}}, необходимо создать соответствующие директории внутри /mnt и смонтировать туда нужные разделы. Например для отдельных загрузочного и домашнего разделов:<br />
# mkdir /mnt/boot && mount /dev/sda1 /mnt/boot<br />
# mkdir /mnt/home && mount /dev/sda3 /mnt/home<br />
<br />
=== Подключение к интернету ===<br />
Сервис DHCP уже доступен для всех подходящих устройств. Для проводного подключения просто запустите {{ic|dhcpcd}}. Если вам необходимо установить статический IP или вы хотите использовать средства настройки наподобие [[Netcfg (Русский)#Настройка|Netcfg]], вам сначала надо остановить данный сервис: {{ic|systemctl stop dhcpcd.service}}. Для получения дополнительной информации обратитесь к [[Configuring Network (Русский)|руководству по настройке сети]].<br />
<br />
==== Беспроводное соединение ====<br />
Если у вас беспроводное соединение, запустите {{ic|wifi-menu}} для его настройки. Смотрите разделы [[Wireless Setup (Русский)|Wireless Setup]] и [[Netcfg (Русский)#Настройка|Netcfg]], чтобы определить, какие дополнительные драйверы требуются для вашего устройства.<br />
<br />
=== Установка базовой системы ===<br />
Перед началом установки вы, возможно, захотите отредактировать {{ic|/etc/pacman.d/mirrorlist}} для выбора подходящего зеркала. Это стоит сделать, поскольку копия данного файла будет также установлена в вашу систему с помощью {{ic|pacstrap}}.<br />
<br />
Скрипт [https://github.com/falconindy/arch-install-scripts/blob/master/pacstrap.in pacstrap] установит базовую систему.<br />
<br />
# pacstrap /mnt base<br />
<br />
Также можно установить и другие пакеты, добавив их имена, разделенные пробелами, к команде выше.<br />
<br />
=== Установка загрузчика ===<br />
[[GRUB2 (Русский)|Grub]]<br />
<br />
* Для BIOS<br />
<br />
# arch-chroot /mnt pacman -S grub-bios<br />
<br />
* Для EFI (иногда вместо него нужно установить {{ic|grub-efi-i386}} )<br />
<br />
# arch-chroot /mnt pacman -S grub-efi-x86_64<br />
<br />
* Устанавливайте GRUB после выполнения chroot (обратитесь к разделу [[#Настройка системы|Настройка системы]] ниже).<br />
<br />
[[Syslinux|Syslinux]]<br />
<br />
# arch-chroot /mnt pacman -S syslinux<br />
<br />
=== Настройка системы ===<br />
Создайте [[fstab (Русский)|fstab]] следующей командой. (Если вы хотите использовать UUID или метки, используйте опции {{ic|-U}} или {{ic|-L}} соответственно.)<br />
# genfstab -p /mnt >> /mnt/etc/fstab<br />
Далее перейдите в свою установленную систему с помощью [[Change Root|chroot]].<br />
# arch-chroot /mnt<br />
<br />
* Укажите имя хоста в файле {{ic|/etc/hostname}}.<br />
* Создайте ссылку {{ic|/etc/localtime}} на {{ic|/usr/share/zoneinfo/Zone/SubZone}}. Где {{ic|Zone}} и {{ic|Subzone}} замените на то, что вам нужно. Например<br />
<br />
# ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime<br />
<br />
* Установите используемый в системе язык, настроив [[Locale (Русский)#Установка системной локали|locale]] в {{ic|/etc/locale.conf}}.<br />
<br />
* Раскомментируйте нужные [https://wiki.archlinux.org/index.php/Locale локали] в {{ic|/etc/locale.gen}} и сгенерируйте {{ic|locale-gen}}.<br />
* Настройте {{ic|/etc/mkinitcpio.conf}} как вам нужно (см. [[mkinitcpio (Русский)|mkinitcpio]]) и создайте ramdisk:<br />
<br />
# mkinitcpio -p linux<br />
<br />
* Настройте загрузчик.<br />
<br />
* Для syslinux отредактируйте {{ic|/boot/syslinux/syslinux.cfg}} и укажите нужный {{ic|/boot}} раздел. Далее введите следующую команду чтобы установить (-i), добавить загрузочный флаг (-a) и установить mbr (-m).<br />
<br />
# /usr/sbin/syslinux-install_update -iam<br />
<br />
* Для установки GRUB прочитайте статью [[GRUB2 (Русский)|GRUB]]<br />
* Установка GRUB на жесткий диск, содержащий /boot раздел<br />
<br />
# grub-install /dev/sda<br />
<br />
* Сгенерируйте конфигурационный файл {{ic|grub.cfg}}:<br />
<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
* Установите root пароль с помощью команды {{ic|passwd}}.<br />
<br />
=== Размонтирование разделов ===<br />
Если вы все еще в окружении chroot, введите {{ic|exit}} или нажмите {{ic|Ctrl+D}}.<br />
В шаге 3 мы смонтировали разделы в {{ic|/mnt}}. Теперь отмонтируем их. <br />
# umount /mnt/{boot,home,}<br />
<br />
== После установки ==<br />
<br />
=== Управление пользователями ===<br />
Добавьте добавьте необходимые вам аккаунты пользователей, как это описано на странице [[Users and Groups#User management|User management]]. Считается плохим выбором использование аккаунта суперпользователя для регулярной работы с системой, или подключения к ней через сервер [[SSH]]. Используйте аккаунт суперпользователя только для решения задач администрирования системы.<br />
<br />
=== Управление пакетами ===<br />
Смотрите статьи [[pacman (Русский)| pacman]] и [[FAQ#Package Management|FAQ: Package Management]] для получения ответов на вопросы, касающиеся установки, обновления и и управления пакетами.<br />
<br />
=== Управление сервисами ===<br />
<br />
Arch Linux использует [[systemd (Русский)| systemd]] в качестве системы инициализации и менеджера служб (сервисов) для Linux. Для обслуживания установленного Arch Linux было бы неплохо изучить основы данной системы. Взаимодействие с systemd происходит посредством команды {{ic|systemctl}}. Обратитесь к разделу [[systemd (Русский)#Основы использования systemctl| Основы использования systemctl]] для получения более подробной информации.<br />
<br />
=== Звук ===<br />
<br />
[[ALSA]] обычно работает "из коробки", только лишь требуется включить звук. Установите пакет {{Pkg|alsa-utils}} (который содержит утилиту {{ic|alsamixer}}) и следуйте инструкциям из [[Advanced Linux Sound Architecture#Unmuting the channels| данного раздела]].<br />
<br />
ALSA включена в ядро и рекомендуется к использованию. Если данная архитектура не работает, то работоспособной альтернативой является [[OSS]]. Если у вас повышенные требования к звуку, обратитесь к статье [[Sound system]] для просмотра различных вариантов решения.<br />
<br />
=== Видеодрайвер ===<br />
<br />
Ядро Linux kernel включает открытые (open-source) видеодрайверы и аппаратную поддержку ускорения видеобуфера. Тем не менее, в X11 необходима пользовательская поддержка OpenGL и ускорения 2D.<br />
<br />
Если вы не знаете, какой видеочипсет имеется на вашей машине, выполните команду:<br />
<br />
$ lspci | grep VGA<br />
<br />
Для получения полного списка открытых видеодрайверов ищите по базе данных пакетов следующей командой:<br />
<br />
$ pacman -Ss xf86-video | less<br />
<br />
Драйвер {{ic|vesa}} - самый общий драйвер, подходящий в большинстве случаев и работающий практически с любым GPU, но он не обеспечивает какое-либо 2D или 3D ускорение. Драйвер vesa загрузится, если более подходящий драйвер не будет найден или его загрузка завершится неудачей и Xorg запустится в режиме совместимости.. Для установки данного драйвера выполните команду:<br />
<br />
# pacman -S xf86-video-vesa<br />
<br />
Чтобы заработало видеоускорение и поддерживались все режимы, доступные для GPU, требуется подходящий видеодрайвер<br />
<br />
{| class="wikitable" style="text-align:center"<br />
|-<br />
! Производитель !! Тип !! Драйвер !! Пакет [[Multilib]] <br><span style="font-weight: normal;">(для 32-бит. приложений в Arch x86_64)</span> !! Документация<br />
|-<br />
| rowspan="2" bgcolor=#f7e3e3| '''<span style="color: #e62c2c;">AMD/ATI</span>'''<br />
| Открытый || {{Pkg|xf86-video-ati}} || {{Pkg|lib32-ati-dri}} || [[ATI]]<br />
|-<br />
| Проприетарный || {{Pkg|catalyst-dkms}} || {{Pkg|lib32-catalyst-utils}} || [[AMD Catalyst]]<br />
|-<br />
| bgcolor=#e3ecf7| '''<span style="color: #2a6dc8;">Intel</span>'''<br />
| Открытый<br />
| {{Pkg|xf86-video-intel}} || {{Pkg|lib32-intel-dri}} || [[Intel Graphics]]<br />
|-<br />
| rowspan="4" bgcolor=#e3f7e6| '''<span style="color: #409044;">Nvidia</span>'''<br />
| rowspan="2"| Открытый<br />
| {{Pkg|xf86-video-nouveau}} || {{Pkg|lib32-nouveau-dri}} || [[Nouveau]]<br />
|-<br />
| {{Pkg|xf86-video-nv}} || – || (устаревший драйвер)<br />
|-<br />
| rowspan="2"| Проприетарный || {{Pkg|nvidia}} || {{Pkg|lib32-nvidia-utils}} || rowspan="2"| [[NVIDIA]]<br />
|-<br />
| {{Pkg|nvidia-304xx}} || {{Pkg|lib32-nvidia-304xx-utils}}<br />
|}<br />
<br />
=== Оконная система ===<br />
<br />
Система X Window (обычно именуемая X11, или X) - сетевой и оконный протокол, который обеспечивает отрисовку окон на растровых дисплеях. Это де-факто стандарт для внедрения графических интерефейсов пользователя (GUI). Обратитесь за более подробной информацией к статье [[Xorg]].<br />
<br />
[[Wayland]] - новый протокол оконной системы с реализованным референсным композитным менеджером Weston, но он находится на ранней стадии развития и в силу этого слабо поддерживается приложениями.<br />
<br />
=== Шрифты ===<br />
<br />
Вы по желанию можете установить набор шрифтов TrueType, поскольку по умолчанию в свежеустановленной системе будут только немасштабируемые шрифты. DejaVu - набор высококачественных неспециализированных шрифтов с хорошим покрытием таблицы [[Wikipedia:Unicode|Unicode]]:<br />
<br />
# pacman -S ttf-dejavu<br />
<br />
Обратитесь к статье [[Font Configuration]] за советами по настройке рендеринга шрифтов и к статье [[Fonts]] за инструкциями по выбору и установке шрифтов.<br />
<br />
== Приложение ==<br />
<br />
Обратитесь к статье [[List of Applications]] для просмотра списка приложений, которые могут вас заинтересовать.<br />
<br />
Также смотрите статью [[General Recommendations (Русский)| General Recommendations]], содержащую руководства по послеустановочной настройке системы, например, настройке тачпада или рендерингу шрифтов.</div>Nobushttps://wiki.archlinux.org/index.php?title=Systemd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=254590Systemd (Русский)2013-04-19T14:46:16Z<p>Nobus: /* Аппаратные часы по localtime */</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 />
* Обратитесь к статье [[Network Configuration]] для получения информации о настройке сетевых подключений.<br />
<br />
== Родные системные файлы ==<br />
<br />
{{Note|Возможно, вам придется создать эти файлы. Все файлы должны иметь права доступа {{ic|644}} и владельца {{ic|root:root}}.}}<br />
<br />
=== Имя компьютера (hostname) ===<br />
<br />
{{Warning|Этот раздел сохзранен в русской версии статьи '''''временно'''''. В английской версии он перемещен в статью [[Network_Configuration#Set_the_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 на использование UTC, а не Linux на местное время. Если вы настроите 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 />
=== Юнит ===<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>Nobushttps://wiki.archlinux.org/index.php?title=Systemd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=254589Systemd (Русский)2013-04-19T14:44:28Z<p>Nobus: Приведение в соответствие с английской вики (по состоянию на 11:02, 17 апреля 2013 года) -- временно оставлен раздел "Имя компьютера (hostname)"</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 />
* Обратитесь к статье [[Network Configuration]] для получения информации о настройке сетевых подключений.<br />
<br />
== Родные системные файлы ==<br />
<br />
{{Note|Возможно, вам придется создать эти файлы. Все файлы должны иметь права доступа {{ic|644}} и владельца {{ic|root:root}}.}}<br />
<br />
=== Имя компьютера (hostname) ===<br />
<br />
{{Warning|Этот раздел сохзранен в русской версии статьи '''''временно'''''. В английской версии он перемещен в статью [[Network_Configuration#Set_the_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 иа использование UTC, а не Linux на местное время. Если вы настроите 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 />
=== Юнит ===<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>Nobushttps://wiki.archlinux.org/index.php?title=Systemd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=253756Systemd (Русский)2013-04-11T15:06:27Z<p>Nobus: Приведение в соответствие с английской вики (по состоянию на 14:47, 11 апреля 2013 года)</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>Nobushttps://wiki.archlinux.org/index.php?title=Systemd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=253623Systemd (Русский)2013-04-10T15:52:40Z<p>Nobus: Приведение в соответствие с английской вики и удаление устаревшей информации по initscripts (по состоянию на 02:10, 9 апреля 2013 года)</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 />
=== Юнит ===<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>Nobushttps://wiki.archlinux.org/index.php?title=Systemd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=253080Systemd (Русский)2013-04-06T04:17:16Z<p>Nobus: Приведение в соответствие с английской вики (по состоянию на 18:23, 5 апреля 2013 года)</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 />
# Сделайте резервные копии конфигурационных файлов {{ic|/etc/inittab}}, {{ic|/etc/rc.conf}}, а также других связанных с {{pkg|sysvinit}} и {{pkg|initscripts}} файлов.<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 />
Системная локаль по умолчанию настраивается в конфигурационном файле {{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 />
}}<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 />
=== Юнит ===<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 />
{{out of date | systemd более не поддерживает initscripts}}<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 />
{{Warning|Если у вас установлены как systemd (197-4 или более поздней версии), так и initscripts и имеется файл {{ic|/etc/rc.local}}, процесс загрузки системы никогда не завершится (потому, что при {{ic|getty@tty1.service}} не дождется, когда systemd 197-4 запустит {{ic|rc-local.service}}, и из-за этого getty не может запуститься). Поэтому сначала удалите либо переименуйте файл {{ic|/etc/rc.local}}.}} <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 list-unit-files}}.<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>Nobushttps://wiki.archlinux.org/index.php?title=Systemd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=252720Systemd (Русский)2013-04-02T18:14:19Z<p>Nobus: /* Journald в связке с классическим демоном syslog */ Приведение в соответствие с английской вики (по состоянию на 01:15, 2 апреля 2013 года)</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 />
# Сделайте резервные копии конфигурационных файлов {{ic|/etc/inittab}}, {{ic|/etc/rc.conf}}, а также других связанных с {{pkg|sysvinit}} и {{pkg|initscripts}} файлов.<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|Возможно, вам придется создать эти файлы. Установите для всех файлов права доступа 644 и владельца 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 />
Системная локаль по умолчанию настраивается в конфигурационном файле {{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 />
}}<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 />
=== Юнит ===<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 />
{{out of date | systemd более не поддерживает initscripts}}<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 />
{{Warning|Если у вас установлены как systemd (197-4 или более поздней версии), так и initscripts и имеется файл {{ic|/etc/rc.local}}, процесс загрузки системы никогда не завершится (потому, что при {{ic|getty@tty1.service}} не дождется, когда systemd 197-4 запустит {{ic|rc-local.service}}, и из-за этого getty не может запуститься). Поэтому сначала удалите либо переименуйте файл {{ic|/etc/rc.local}}.}} <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 list-unit-files}}.<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 />
Перезагрузить 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>Nobushttps://wiki.archlinux.org/index.php?title=Systemd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=252716Systemd (Русский)2013-04-02T18:10:21Z<p>Nobus: /* Редактирование предоставленных пакетами файлов юнитов */ Приведение в соответствие с английской вики</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 />
# Сделайте резервные копии конфигурационных файлов {{ic|/etc/inittab}}, {{ic|/etc/rc.conf}}, а также других связанных с {{pkg|sysvinit}} и {{pkg|initscripts}} файлов.<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|Возможно, вам придется создать эти файлы. Установите для всех файлов права доступа 644 и владельца 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 />
Системная локаль по умолчанию настраивается в конфигурационном файле {{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 />
}}<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 />
=== Юнит ===<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 />
{{out of date | systemd более не поддерживает initscripts}}<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 />
{{Warning|Если у вас установлены как systemd (197-4 или более поздней версии), так и initscripts и имеется файл {{ic|/etc/rc.local}}, процесс загрузки системы никогда не завершится (потому, что при {{ic|getty@tty1.service}} не дождется, когда systemd 197-4 запустит {{ic|rc-local.service}}, и из-за этого getty не может запуститься). Поэтому сначала удалите либо переименуйте файл {{ic|/etc/rc.local}}.}} <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 list-unit-files}}.<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 />
Перезагрузить 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 />
== Сеть ==<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>Nobushttps://wiki.archlinux.org/index.php?title=Installation_guide_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=252513Installation guide (Русский)2013-04-01T03:08:14Z<p>Nobus: /* Оконная система */</p>
<hr />
<div>[[Category:About Arch (Русский)]]<br />
[[Category:Getting and installing Arch (Русский)]]<br />
[[En:Installation_Guide]]<br />
[[de:Arch Install Scripts]]<br />
[[fr:Arch_install_scripts]]<br />
[[it:Installation Guide]]<br />
[[uk:Installation Guide]]<br />
[[zh-CN:Installation Guide]]<br />
[[zh-TW:Installation Guide]]<br />
Этот документ проведет вас через процесс установки [[Arch Linux (Русский)|Arch Linux]] c использованием [https://github.com/falconindy/arch-install-scripts Arch Install Scripts]. Рекомендуется перед установкой ознакомиться с [[FAQ (Русский)]]._<br />
Поддерживаемая сообществом [[Main Page (Русский)|вики Arch'а]] является превосходным ресурсом, к которому следует обращаться в первую очередь при возникновении каких-либо проблем. Если ответ на интересующий вас вопрос в другом месте не найден, доступны [[Wikipedia:IRC|IRC]]-канал (irc://irc.mibbit.net/#archlinux-ru) и [http://archlinux.org.ru/forum/ форумы]. Также обращайтесь к страницам руководств ({{ic|man}}) тех команд, с которыми вы незнакомы; обычно они вызываются при помощи {{ic|man ''command''}} (где ''command'' - имя интересующей вас команды).<br />
<br />
{{Tip|Новички могут обратиться к [[Beginners' Guide (Русский)|подробному руководству]] по установке.}}<br />
<br />
== Получение установочного образа ==<br />
Загрузите новый установочный образ диска Arch Linux с [https://www.archlinux.org/download/ соответствующей страницы] на главном сайте дистрибутива.<br />
* Предлагается единый установочный образ, с помощью которого вы сможете загрузиться как на i686, так и на x86_64 системах, чтобы провести установку по сети. Диск с репозиторием [core] для оффлайн-установки больше не доступен и не поддерживается.<br />
* Установочный образ подписан цифровой подписью, и вы можете проверить ее перед установкой командой {{bc|pacman-key -v <iso-file>.sig}}<br />
* Образ может быть записан на CD, смонтирован как iso-файл или записан на usb устройство (флешку) с помощью команды {{ic|dd}}. Он предназначен только для установки системы - обновление уже установленной системы производится стандартным способом, командой {{ic|pacman -Syu}}.<br />
<br />
== Установка ==<br />
<br />
=== Раскладка клавиатуры ===<br />
Для большинства стран и видов клавиатур уже доступны соответствующие раскладки, нужная из которых может быть выбрана командой, например {{ic|loadkeys ru}}. Другие раскладки можно найти в {{ic|/usr/share/kbd/keymaps/}} (можно не указывать полный путь и расширение файла с раскладкой при использовании команды loadkeys).<br />
<br />
=== Создание разделов ===<br />
Для подробностей обратитесь к разделу [[Partitioning]].<br />
<br />
При необходимости не забудьте создать [[lvm|LVM]], [[Dm-crypt_with_LUKS|LUKS]] или [[RAID|RAID]] устройства.<br />
<br />
=== Форматирование разделов ===<br />
Более подробно вы можете прочитать [[Format_a_device#Step_2:_create_the_new_file_system|здесь]].<br />
<br />
Если вы используете (U)EFI, вам, скорее всего, понадобится отдельный раздел для размещения служебного раздела UEFI. Подробнее можно прочитать [[Unified_Extensible_Firmware_Interface (Русский)#Создание UEFI раздела в Linux|здесь]].<br />
<br />
=== Монтирование разделов ===<br />
Как минимум, вы должны смонтировать корневой раздел в {{ic|/mnt}}. Например:<br />
# mount /dev/sda2 /mnt<br />
Если вы хотите, чтобы еще какие-либо разделы были автоматически учтены скриптом установки {{ic|genfstab}}, необходимо создать соответствующие директории внутри /mnt и смонтировать туда нужные разделы. Например для отдельных загрузочного и домашнего разделов:<br />
# mkdir /mnt/boot && mount /dev/sda1 /mnt/boot<br />
# mkdir /mnt/home && mount /dev/sda3 /mnt/home<br />
<br />
=== Подключение к интернету ===<br />
Сервис DHCP уже доступен для всех подходящих устройств. Для проводного подключения просто запустите {{ic|dhcpcd}}. Если вам необходимо установить статический IP или вы хотите использовать средства настройки наподобие [[Netcfg (Русский)#Настройка|Netcfg]], вам сначала надо остановить данный сервис: {{ic|systemctl stop dhcpcd.service}}. Для получения дополнительной информации обратитесь к [[Configuring Network (Русский)|руководству по настройке сети]].<br />
<br />
==== Беспроводное соединение ====<br />
Если у вас беспроводное соединение, запустите {{ic|wifi-menu}} для его настройки. Смотрите разделы [[Wireless Setup (Русский)|Wireless Setup]] и [[Netcfg (Русский)#Настройка|Netcfg]], чтобы определить, какие дополнительные драйверы требуются для вашего устройства.<br />
<br />
=== Установка базовой системы ===<br />
Перед началом установки вы, возможно, захотите отредактировать {{ic|/etc/pacman.d/mirrorlist}} для выбора подходящего зеркала. Это стоит сделать, поскольку копия данного файла будет также установлена в вашу систему с помощью {{ic|pacstrap}}.<br />
<br />
Скрипт [https://github.com/falconindy/arch-install-scripts/blob/master/pacstrap.in pacstrap] установит базовую систему. Группа пакетов ''base-devel'' должна также быть установлена, если вы собираетесь компилировать программы из [[Arch_User_Repository_(Русский)|AUR]] или с использованием [[Arch_Build_System_(Русский)|ABS]].<br />
<br />
# pacstrap /mnt base base-devel<br />
<br />
Также можно установить и другие пакеты, добавив их имена, разделенные пробелами, к команде выше.<br />
<br />
=== Установка загрузчика ===<br />
[[GRUB2 (Русский)|Grub]]<br />
<br />
* Для BIOS<br />
<br />
# arch-chroot /mnt pacman -S grub-bios<br />
<br />
* Для EFI (иногда вместо него нужно установить {{ic|grub-efi-i386}} )<br />
<br />
# arch-chroot /mnt pacman -S grub-efi-x86_64<br />
<br />
* Устанавливайте GRUB после выполнения chroot (обратитесь к разделу [[#Настройка системы|Настройка системы]] ниже).<br />
<br />
[[Syslinux|Syslinux]]<br />
<br />
# arch-chroot /mnt pacman -S syslinux<br />
<br />
=== Настройка системы ===<br />
Создайте [[fstab (Русский)|fstab]] следующей командой. (Если вы хотите использовать UUID или метки, используйте опции {{ic|-U}} или {{ic|-L}} соответственно.)<br />
# genfstab -p /mnt >> /mnt/etc/fstab<br />
Далее перейдите в свою установленную систему с помощью [[Change Root|chroot]].<br />
# arch-chroot /mnt<br />
<br />
* Укажите имя хоста в файле {{ic|/etc/hostname}}.<br />
* Создайте ссылку {{ic|/etc/localtime}} на {{ic|/usr/share/zoneinfo/Zone/SubZone}}. Где {{ic|Zone}} и {{ic|Subzone}} замените на то, что вам нужно. Например<br />
<br />
# ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime<br />
<br />
* Установите используемый в системе язык, настроив [[Locale (Русский)#Установка системной локали|locale]] в {{ic|/etc/locale.conf}}.<br />
<br />
* Раскомментируйте нужные [https://wiki.archlinux.org/index.php/Locale локали] в {{ic|/etc/locale.gen}} и сгенерируйте {{ic|locale-gen}}.<br />
* Настройте {{ic|/etc/mkinitcpio.conf}} как вам нужно (см. [[mkinitcpio (Русский)|mkinitcpio]]) и создайте ramdisk:<br />
<br />
# mkinitcpio -p linux<br />
<br />
* Настройте загрузчик.<br />
<br />
* Для syslinux отредактируйте {{ic|/boot/syslinux/syslinux.cfg}} и укажите нужный {{ic|/boot}} раздел. Далее введите следующую команду чтобы установить (-i), добавить загрузочный флаг (-a) и установить mbr (-m).<br />
<br />
# /usr/sbin/syslinux-install_update -iam<br />
<br />
* Для установки GRUB прочитайте статью [[GRUB2 (Русский)|GRUB]]<br />
* Установка GRUB на жесткий диск, содержащий /boot раздел<br />
<br />
# grub-install /dev/sda<br />
<br />
* Сгенерируйте конфигурационный файл {{ic|grub.cfg}}:<br />
<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
* Установите root пароль с помощью команды {{ic|passwd}}.<br />
<br />
=== Размонтирование разделов ===<br />
Если вы все еще в окружении chroot, введите {{ic|exit}} или нажмите {{ic|Ctrl+D}}.<br />
В шаге 3 мы смонтировали разделы в {{ic|/mnt}}. Теперь отмонтируем их. <br />
# umount /mnt/{boot,home,}<br />
<br />
== После установки ==<br />
<br />
=== Управление пользователями ===<br />
Добавьте добавьте необходимые вам аккаунты пользователей, как это описано на странице [[Users and Groups#User management|User management]]. Считается плохим выбором использование аккаунта суперпользователя для регулярной работы с системой, или подключения к ней через сервер [[SSH]]. Используйте аккаунт суперпользователя только для решения задач администрирования системы.<br />
<br />
=== Управление пакетами ===<br />
Смотрите статьи [[pacman (Русский)| pacman]] и [[FAQ#Package Management|FAQ: Package Management]] для получения ответов на вопросы, касающиеся установки, обновления и и управления пакетами.<br />
<br />
=== Управление сервисами ===<br />
<br />
Arch Linux использует [[systemd (Русский)| systemd]] в качестве системы инициализации и менеджера служб (сервисов) для Linux. Для обслуживания установленного Arch Linux было бы неплохо изучить основы данной системы. Взаимодействие с systemd происходит посредством команды {{ic|systemctl}}. Обратитесь к разделу [[systemd (Русский)#Основы использования systemctl| Основы использования systemctl]] для получения более подробной информации.<br />
<br />
=== Звук ===<br />
<br />
[[ALSA]] обычно работает "из коробки", только лишь требуется включить звук. Установите пакет {{Pkg|alsa-utils}} (который содержит утилиту {{ic|alsamixer}}) и следуйте инструкциям из [[Advanced Linux Sound Architecture#Unmuting the channels| данного раздела]].<br />
<br />
ALSA включена в ядро и рекомендуется к использованию. Если данная архитектура не работает, то работоспособной альтернативой является [[OSS]]. Если у вас повышенные требования к звуку, обратитесь к статье [[Sound system]] для просмотра различных вариантов решения.<br />
<br />
=== Видеодрайвер ===<br />
<br />
Ядро Linux kernel включает открытые (open-source) видеодрайверы и аппаратную поддержку ускорения видеобуфера. Тем не менее, в X11 необходима пользовательская поддержка OpenGL и ускорения 2D.<br />
<br />
Если вы не знаете, какой видеочипсет имеется на вашей машине, выполните команду:<br />
<br />
$ lspci | grep VGA<br />
<br />
Для получения полного списка открытых видеодрайверов ищите по базе данных пакетов следующей командой:<br />
<br />
$ pacman -Ss xf86-video | less<br />
<br />
Драйвер {{ic|vesa}} - самый общий драйвер, подходящий в большинстве случаев и работающий практически с любым GPU, но он не обеспечивает какое-либо 2D или 3D ускорение. Драйвер vesa загрузится, если более подходящий драйвер не будет найден или его загрузка завершится неудачей и Xorg запустится в режиме совместимости.. Для установки данного драйвера выполните команду:<br />
<br />
# pacman -S xf86-video-vesa<br />
<br />
Чтобы заработало видеоускорение и поддерживались все режимы, доступные для GPU, требуется подходящий видеодрайвер<br />
<br />
{| class="wikitable" style="text-align:center"<br />
|-<br />
! Производитель !! Тип !! Драйвер !! Пакет [[Multilib]] <br><span style="font-weight: normal;">(для 32-бит. приложений в Arch x86_64)</span> !! Документация<br />
|-<br />
| rowspan="2" bgcolor=#f7e3e3| '''<span style="color: #e62c2c;">AMD/ATI</span>'''<br />
| Открытый || {{Pkg|xf86-video-ati}} || {{Pkg|lib32-ati-dri}} || [[ATI]]<br />
|-<br />
| Проприетарный || {{Pkg|catalyst-dkms}} || {{Pkg|lib32-catalyst-utils}} || [[AMD Catalyst]]<br />
|-<br />
| bgcolor=#e3ecf7| '''<span style="color: #2a6dc8;">Intel</span>'''<br />
| Открытый<br />
| {{Pkg|xf86-video-intel}} || {{Pkg|lib32-intel-dri}} || [[Intel Graphics]]<br />
|-<br />
| rowspan="4" bgcolor=#e3f7e6| '''<span style="color: #409044;">Nvidia</span>'''<br />
| rowspan="2"| Открытый<br />
| {{Pkg|xf86-video-nouveau}} || {{Pkg|lib32-nouveau-dri}} || [[Nouveau]]<br />
|-<br />
| {{Pkg|xf86-video-nv}} || – || (устаревший драйвер)<br />
|-<br />
| rowspan="2"| Проприетарный || {{Pkg|nvidia}} || {{Pkg|lib32-nvidia-utils}} || rowspan="2"| [[NVIDIA]]<br />
|-<br />
| {{Pkg|nvidia-304xx}} || {{Pkg|lib32-nvidia-304xx-utils}}<br />
|}<br />
<br />
=== Оконная система ===<br />
<br />
Система X Window (обычно именуемая X11, или X) - сетевой и оконный протокол, который обеспечивает отрисовку окон на растровых дисплеях. Это де-факто стандарт для внедрения графических интерефейсов пользователя (GUI). Обратитесь за более подробной информацией к статье [[Xorg]].<br />
<br />
[[Wayland]] - новый протокол оконной системы с реализованным референсным композитным менеджером Weston, но он находится на ранней стадии развития и в силу этого слабо поддерживается приложениями.<br />
<br />
=== Шрифты ===<br />
<br />
Вы по желанию можете установить набор шрифтов TrueType, поскольку по умолчанию в свежеустановленной системе будут только немасштабируемые шрифты. DejaVu - набор высококачественных неспециализированных шрифтов с хорошим покрытием таблицы [[Wikipedia:Unicode|Unicode]]:<br />
<br />
# pacman -S ttf-dejavu<br />
<br />
Обратитесь к статье [[Font Configuration]] за советами по настройке рендеринга шрифтов и к статье [[Fonts]] за инструкциями по выбору и установке шрифтов.<br />
<br />
== Приложение ==<br />
<br />
Обратитесь к статье [[List of Applications]] для просмотра списка приложений, которые могут вас заинтересовать.<br />
<br />
Также смотрите статью [[General Recommendations (Русский)| General Recommendations]], содержащую руководства по послеустановочной настройке системы, например, настройке тачпада или рендерингу шрифтов.</div>Nobushttps://wiki.archlinux.org/index.php?title=Installation_guide_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=252512Installation guide (Русский)2013-04-01T03:07:53Z<p>Nobus: /* Оконная система */</p>
<hr />
<div>[[Category:About Arch (Русский)]]<br />
[[Category:Getting and installing Arch (Русский)]]<br />
[[En:Installation_Guide]]<br />
[[de:Arch Install Scripts]]<br />
[[fr:Arch_install_scripts]]<br />
[[it:Installation Guide]]<br />
[[uk:Installation Guide]]<br />
[[zh-CN:Installation Guide]]<br />
[[zh-TW:Installation Guide]]<br />
Этот документ проведет вас через процесс установки [[Arch Linux (Русский)|Arch Linux]] c использованием [https://github.com/falconindy/arch-install-scripts Arch Install Scripts]. Рекомендуется перед установкой ознакомиться с [[FAQ (Русский)]]._<br />
Поддерживаемая сообществом [[Main Page (Русский)|вики Arch'а]] является превосходным ресурсом, к которому следует обращаться в первую очередь при возникновении каких-либо проблем. Если ответ на интересующий вас вопрос в другом месте не найден, доступны [[Wikipedia:IRC|IRC]]-канал (irc://irc.mibbit.net/#archlinux-ru) и [http://archlinux.org.ru/forum/ форумы]. Также обращайтесь к страницам руководств ({{ic|man}}) тех команд, с которыми вы незнакомы; обычно они вызываются при помощи {{ic|man ''command''}} (где ''command'' - имя интересующей вас команды).<br />
<br />
{{Tip|Новички могут обратиться к [[Beginners' Guide (Русский)|подробному руководству]] по установке.}}<br />
<br />
== Получение установочного образа ==<br />
Загрузите новый установочный образ диска Arch Linux с [https://www.archlinux.org/download/ соответствующей страницы] на главном сайте дистрибутива.<br />
* Предлагается единый установочный образ, с помощью которого вы сможете загрузиться как на i686, так и на x86_64 системах, чтобы провести установку по сети. Диск с репозиторием [core] для оффлайн-установки больше не доступен и не поддерживается.<br />
* Установочный образ подписан цифровой подписью, и вы можете проверить ее перед установкой командой {{bc|pacman-key -v <iso-file>.sig}}<br />
* Образ может быть записан на CD, смонтирован как iso-файл или записан на usb устройство (флешку) с помощью команды {{ic|dd}}. Он предназначен только для установки системы - обновление уже установленной системы производится стандартным способом, командой {{ic|pacman -Syu}}.<br />
<br />
== Установка ==<br />
<br />
=== Раскладка клавиатуры ===<br />
Для большинства стран и видов клавиатур уже доступны соответствующие раскладки, нужная из которых может быть выбрана командой, например {{ic|loadkeys ru}}. Другие раскладки можно найти в {{ic|/usr/share/kbd/keymaps/}} (можно не указывать полный путь и расширение файла с раскладкой при использовании команды loadkeys).<br />
<br />
=== Создание разделов ===<br />
Для подробностей обратитесь к разделу [[Partitioning]].<br />
<br />
При необходимости не забудьте создать [[lvm|LVM]], [[Dm-crypt_with_LUKS|LUKS]] или [[RAID|RAID]] устройства.<br />
<br />
=== Форматирование разделов ===<br />
Более подробно вы можете прочитать [[Format_a_device#Step_2:_create_the_new_file_system|здесь]].<br />
<br />
Если вы используете (U)EFI, вам, скорее всего, понадобится отдельный раздел для размещения служебного раздела UEFI. Подробнее можно прочитать [[Unified_Extensible_Firmware_Interface (Русский)#Создание UEFI раздела в Linux|здесь]].<br />
<br />
=== Монтирование разделов ===<br />
Как минимум, вы должны смонтировать корневой раздел в {{ic|/mnt}}. Например:<br />
# mount /dev/sda2 /mnt<br />
Если вы хотите, чтобы еще какие-либо разделы были автоматически учтены скриптом установки {{ic|genfstab}}, необходимо создать соответствующие директории внутри /mnt и смонтировать туда нужные разделы. Например для отдельных загрузочного и домашнего разделов:<br />
# mkdir /mnt/boot && mount /dev/sda1 /mnt/boot<br />
# mkdir /mnt/home && mount /dev/sda3 /mnt/home<br />
<br />
=== Подключение к интернету ===<br />
Сервис DHCP уже доступен для всех подходящих устройств. Для проводного подключения просто запустите {{ic|dhcpcd}}. Если вам необходимо установить статический IP или вы хотите использовать средства настройки наподобие [[Netcfg (Русский)#Настройка|Netcfg]], вам сначала надо остановить данный сервис: {{ic|systemctl stop dhcpcd.service}}. Для получения дополнительной информации обратитесь к [[Configuring Network (Русский)|руководству по настройке сети]].<br />
<br />
==== Беспроводное соединение ====<br />
Если у вас беспроводное соединение, запустите {{ic|wifi-menu}} для его настройки. Смотрите разделы [[Wireless Setup (Русский)|Wireless Setup]] и [[Netcfg (Русский)#Настройка|Netcfg]], чтобы определить, какие дополнительные драйверы требуются для вашего устройства.<br />
<br />
=== Установка базовой системы ===<br />
Перед началом установки вы, возможно, захотите отредактировать {{ic|/etc/pacman.d/mirrorlist}} для выбора подходящего зеркала. Это стоит сделать, поскольку копия данного файла будет также установлена в вашу систему с помощью {{ic|pacstrap}}.<br />
<br />
Скрипт [https://github.com/falconindy/arch-install-scripts/blob/master/pacstrap.in pacstrap] установит базовую систему. Группа пакетов ''base-devel'' должна также быть установлена, если вы собираетесь компилировать программы из [[Arch_User_Repository_(Русский)|AUR]] или с использованием [[Arch_Build_System_(Русский)|ABS]].<br />
<br />
# pacstrap /mnt base base-devel<br />
<br />
Также можно установить и другие пакеты, добавив их имена, разделенные пробелами, к команде выше.<br />
<br />
=== Установка загрузчика ===<br />
[[GRUB2 (Русский)|Grub]]<br />
<br />
* Для BIOS<br />
<br />
# arch-chroot /mnt pacman -S grub-bios<br />
<br />
* Для EFI (иногда вместо него нужно установить {{ic|grub-efi-i386}} )<br />
<br />
# arch-chroot /mnt pacman -S grub-efi-x86_64<br />
<br />
* Устанавливайте GRUB после выполнения chroot (обратитесь к разделу [[#Настройка системы|Настройка системы]] ниже).<br />
<br />
[[Syslinux|Syslinux]]<br />
<br />
# arch-chroot /mnt pacman -S syslinux<br />
<br />
=== Настройка системы ===<br />
Создайте [[fstab (Русский)|fstab]] следующей командой. (Если вы хотите использовать UUID или метки, используйте опции {{ic|-U}} или {{ic|-L}} соответственно.)<br />
# genfstab -p /mnt >> /mnt/etc/fstab<br />
Далее перейдите в свою установленную систему с помощью [[Change Root|chroot]].<br />
# arch-chroot /mnt<br />
<br />
* Укажите имя хоста в файле {{ic|/etc/hostname}}.<br />
* Создайте ссылку {{ic|/etc/localtime}} на {{ic|/usr/share/zoneinfo/Zone/SubZone}}. Где {{ic|Zone}} и {{ic|Subzone}} замените на то, что вам нужно. Например<br />
<br />
# ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime<br />
<br />
* Установите используемый в системе язык, настроив [[Locale (Русский)#Установка системной локали|locale]] в {{ic|/etc/locale.conf}}.<br />
<br />
* Раскомментируйте нужные [https://wiki.archlinux.org/index.php/Locale локали] в {{ic|/etc/locale.gen}} и сгенерируйте {{ic|locale-gen}}.<br />
* Настройте {{ic|/etc/mkinitcpio.conf}} как вам нужно (см. [[mkinitcpio (Русский)|mkinitcpio]]) и создайте ramdisk:<br />
<br />
# mkinitcpio -p linux<br />
<br />
* Настройте загрузчик.<br />
<br />
* Для syslinux отредактируйте {{ic|/boot/syslinux/syslinux.cfg}} и укажите нужный {{ic|/boot}} раздел. Далее введите следующую команду чтобы установить (-i), добавить загрузочный флаг (-a) и установить mbr (-m).<br />
<br />
# /usr/sbin/syslinux-install_update -iam<br />
<br />
* Для установки GRUB прочитайте статью [[GRUB2 (Русский)|GRUB]]<br />
* Установка GRUB на жесткий диск, содержащий /boot раздел<br />
<br />
# grub-install /dev/sda<br />
<br />
* Сгенерируйте конфигурационный файл {{ic|grub.cfg}}:<br />
<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
* Установите root пароль с помощью команды {{ic|passwd}}.<br />
<br />
=== Размонтирование разделов ===<br />
Если вы все еще в окружении chroot, введите {{ic|exit}} или нажмите {{ic|Ctrl+D}}.<br />
В шаге 3 мы смонтировали разделы в {{ic|/mnt}}. Теперь отмонтируем их. <br />
# umount /mnt/{boot,home,}<br />
<br />
== После установки ==<br />
<br />
=== Управление пользователями ===<br />
Добавьте добавьте необходимые вам аккаунты пользователей, как это описано на странице [[Users and Groups#User management|User management]]. Считается плохим выбором использование аккаунта суперпользователя для регулярной работы с системой, или подключения к ней через сервер [[SSH]]. Используйте аккаунт суперпользователя только для решения задач администрирования системы.<br />
<br />
=== Управление пакетами ===<br />
Смотрите статьи [[pacman (Русский)| pacman]] и [[FAQ#Package Management|FAQ: Package Management]] для получения ответов на вопросы, касающиеся установки, обновления и и управления пакетами.<br />
<br />
=== Управление сервисами ===<br />
<br />
Arch Linux использует [[systemd (Русский)| systemd]] в качестве системы инициализации и менеджера служб (сервисов) для Linux. Для обслуживания установленного Arch Linux было бы неплохо изучить основы данной системы. Взаимодействие с systemd происходит посредством команды {{ic|systemctl}}. Обратитесь к разделу [[systemd (Русский)#Основы использования systemctl| Основы использования systemctl]] для получения более подробной информации.<br />
<br />
=== Звук ===<br />
<br />
[[ALSA]] обычно работает "из коробки", только лишь требуется включить звук. Установите пакет {{Pkg|alsa-utils}} (который содержит утилиту {{ic|alsamixer}}) и следуйте инструкциям из [[Advanced Linux Sound Architecture#Unmuting the channels| данного раздела]].<br />
<br />
ALSA включена в ядро и рекомендуется к использованию. Если данная архитектура не работает, то работоспособной альтернативой является [[OSS]]. Если у вас повышенные требования к звуку, обратитесь к статье [[Sound system]] для просмотра различных вариантов решения.<br />
<br />
=== Видеодрайвер ===<br />
<br />
Ядро Linux kernel включает открытые (open-source) видеодрайверы и аппаратную поддержку ускорения видеобуфера. Тем не менее, в X11 необходима пользовательская поддержка OpenGL и ускорения 2D.<br />
<br />
Если вы не знаете, какой видеочипсет имеется на вашей машине, выполните команду:<br />
<br />
$ lspci | grep VGA<br />
<br />
Для получения полного списка открытых видеодрайверов ищите по базе данных пакетов следующей командой:<br />
<br />
$ pacman -Ss xf86-video | less<br />
<br />
Драйвер {{ic|vesa}} - самый общий драйвер, подходящий в большинстве случаев и работающий практически с любым GPU, но он не обеспечивает какое-либо 2D или 3D ускорение. Драйвер vesa загрузится, если более подходящий драйвер не будет найден или его загрузка завершится неудачей и Xorg запустится в режиме совместимости.. Для установки данного драйвера выполните команду:<br />
<br />
# pacman -S xf86-video-vesa<br />
<br />
Чтобы заработало видеоускорение и поддерживались все режимы, доступные для GPU, требуется подходящий видеодрайвер<br />
<br />
{| class="wikitable" style="text-align:center"<br />
|-<br />
! Производитель !! Тип !! Драйвер !! Пакет [[Multilib]] <br><span style="font-weight: normal;">(для 32-бит. приложений в Arch x86_64)</span> !! Документация<br />
|-<br />
| rowspan="2" bgcolor=#f7e3e3| '''<span style="color: #e62c2c;">AMD/ATI</span>'''<br />
| Открытый || {{Pkg|xf86-video-ati}} || {{Pkg|lib32-ati-dri}} || [[ATI]]<br />
|-<br />
| Проприетарный || {{Pkg|catalyst-dkms}} || {{Pkg|lib32-catalyst-utils}} || [[AMD Catalyst]]<br />
|-<br />
| bgcolor=#e3ecf7| '''<span style="color: #2a6dc8;">Intel</span>'''<br />
| Открытый<br />
| {{Pkg|xf86-video-intel}} || {{Pkg|lib32-intel-dri}} || [[Intel Graphics]]<br />
|-<br />
| rowspan="4" bgcolor=#e3f7e6| '''<span style="color: #409044;">Nvidia</span>'''<br />
| rowspan="2"| Открытый<br />
| {{Pkg|xf86-video-nouveau}} || {{Pkg|lib32-nouveau-dri}} || [[Nouveau]]<br />
|-<br />
| {{Pkg|xf86-video-nv}} || – || (устаревший драйвер)<br />
|-<br />
| rowspan="2"| Проприетарный || {{Pkg|nvidia}} || {{Pkg|lib32-nvidia-utils}} || rowspan="2"| [[NVIDIA]]<br />
|-<br />
| {{Pkg|nvidia-304xx}} || {{Pkg|lib32-nvidia-304xx-utils}}<br />
|}<br />
<br />
=== Оконная система ===<br />
<br />
Система X Window (обычно именуемая X11, или X) - сетевой и оконный протокол, который обеспечивает отрисовку окон на растровых дисплеях. Это де-факто стандарт для внедрения графических интерефейсов пользователя (GUI). Обратитесь за более подробной информацией к статье [[Xorg]].<br />
<br />
[[Wayland]] - новый протокол оконной системы с реализованным референсным композитным менеджером Weston но он находится на ранней стадии развития и в силу этого слабо поддерживается приложениями.<br />
<br />
=== Шрифты ===<br />
<br />
Вы по желанию можете установить набор шрифтов TrueType, поскольку по умолчанию в свежеустановленной системе будут только немасштабируемые шрифты. DejaVu - набор высококачественных неспециализированных шрифтов с хорошим покрытием таблицы [[Wikipedia:Unicode|Unicode]]:<br />
<br />
# pacman -S ttf-dejavu<br />
<br />
Обратитесь к статье [[Font Configuration]] за советами по настройке рендеринга шрифтов и к статье [[Fonts]] за инструкциями по выбору и установке шрифтов.<br />
<br />
== Приложение ==<br />
<br />
Обратитесь к статье [[List of Applications]] для просмотра списка приложений, которые могут вас заинтересовать.<br />
<br />
Также смотрите статью [[General Recommendations (Русский)| General Recommendations]], содержащую руководства по послеустановочной настройке системы, например, настройке тачпада или рендерингу шрифтов.</div>Nobushttps://wiki.archlinux.org/index.php?title=Systemd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=252436Systemd (Русский)2013-03-31T04:35:06Z<p>Nobus: /* Диагностика проблем при загрузке */</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 />
# Сделайте резервные копии конфигурационных файлов {{ic|/etc/inittab}}, {{ic|/etc/rc.conf}}, а также других связанных с {{pkg|sysvinit}} и {{pkg|initscripts}} файлов.<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|Возможно, вам придется создать эти файлы. Установите для всех файлов права доступа 644 и владельца 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 />
Системная локаль по умолчанию настраивается в конфигурационном файле {{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 />
}}<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 />
=== Юнит ===<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 />
{{out of date | systemd более не поддерживает initscripts}}<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 />
{{Warning|Если у вас установлены как systemd (197-4 или более поздней версии), так и initscripts и имеется файл {{ic|/etc/rc.local}}, процесс загрузки системы никогда не завершится (потому, что при {{ic|getty@tty1.service}} не дождется, когда systemd 197-4 запустит {{ic|rc-local.service}}, и из-за этого getty не может запуститься). Поэтому сначала удалите либо переименуйте файл {{ic|/etc/rc.local}}.}} <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 list-unit-files}}.<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 />
Перезагрузить 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/}} и поместить в нее файлы 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 />
== Сеть ==<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>Nobushttps://wiki.archlinux.org/index.php?title=Systemd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=252435Systemd (Русский)2013-03-31T04:33:59Z<p>Nobus: /* Диагностика проблем при загрузке */</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 />
# Сделайте резервные копии конфигурационных файлов {{ic|/etc/inittab}}, {{ic|/etc/rc.conf}}, а также других связанных с {{pkg|sysvinit}} и {{pkg|initscripts}} файлов.<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|Возможно, вам придется создать эти файлы. Установите для всех файлов права доступа 644 и владельца 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 />
Системная локаль по умолчанию настраивается в конфигурационном файле {{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 />
}}<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 />
=== Юнит ===<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 />
{{out of date | systemd более не поддерживает initscripts}}<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 />
{{Warning|Если у вас установлены как systemd (197-4 или более поздней версии), так и initscripts и имеется файл {{ic|/etc/rc.local}}, процесс загрузки системы никогда не завершится (потому, что при {{ic|getty@tty1.service}} не дождется, когда systemd 197-4 запустит {{ic|rc-local.service}}, и из-за этого getty не может запуститься). Поэтому сначала удалите либо переименуйте файл {{ic|/etc/rc.local}}.}} <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 list-unit-files}}.<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 />
Перезагрузить 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/}} и поместить в нее файлы 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 />
== Сеть ==<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 />
Для получения дополнительной информации обратитесь к странице [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>Nobushttps://wiki.archlinux.org/index.php?title=Systemd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=252434Systemd (Русский)2013-03-31T04:33:21Z<p>Nobus: Приведение в соответствие с английской вики (по состоянию на 16:37, 28 марта 2013 года)</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 />
# Сделайте резервные копии конфигурационных файлов {{ic|/etc/inittab}}, {{ic|/etc/rc.conf}}, а также других связанных с {{pkg|sysvinit}} и {{pkg|initscripts}} файлов.<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|Возможно, вам придется создать эти файлы. Установите для всех файлов права доступа 644 и владельца 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 />
Системная локаль по умолчанию настраивается в конфигурационном файле {{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 />
}}<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 />
=== Юнит ===<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 />
{{out of date | systemd более не поддерживает initscripts}}<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 />
{{Warning|Если у вас установлены как systemd (197-4 или более поздней версии), так и initscripts и имеется файл {{ic|/etc/rc.local}}, процесс загрузки системы никогда не завершится (потому, что при {{ic|getty@tty1.service}} не дождется, когда systemd 197-4 запустит {{ic|rc-local.service}}, и из-за этого getty не может запуститься). Поэтому сначала удалите либо переименуйте файл {{ic|/etc/rc.local}}.}} <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 list-unit-files}}.<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 />
Перезагрузить 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/}} и поместить в нее файлы 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 />
== Сеть ==<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 />
Для получения дополнительной информации обратитесь к странице[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>Nobushttps://wiki.archlinux.org/index.php?title=Systemd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=251838Systemd (Русский)2013-03-24T12:06:58Z<p>Nobus: Приведение в соответствие с английской вики (по состоянию на 06:18, 24 марта 2013 года)</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|Возможно, вам придется создать эти файлы. Установите для всех файлов права доступа 644 и владельца 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 />
Системная локаль по умолчанию настраивается в конфигурационном файле {{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 />
}}<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 />
=== Юнит ===<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 />
{{out of date | systemd более не поддерживает initscripts}}<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 />
{{Warning|Если у вас установлены как systemd (197-4 или более поздней версии), так и initscripts и имеется файл {{ic|/etc/rc.local}}, процесс загрузки системы никогда не завершится (потому, что при {{ic|getty@tty1.service}} не дождется, когда systemd 197-4 запустит {{ic|rc-local.service}}, и из-за этого getty не может запуститься). Поэтому сначала удалите либо переименуйте файл {{ic|/etc/rc.local}}.}} <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 list-unit-files}}.<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 />
Перезагрузить 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/}} и поместить в нее файлы 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 />
== Сеть ==<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 />
*[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>Nobushttps://wiki.archlinux.org/index.php?title=Installation_guide_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=251837Installation guide (Русский)2013-03-24T11:56:15Z<p>Nobus: /* Видеодрайвер */</p>
<hr />
<div>[[Category:About Arch (Русский)]]<br />
[[Category:Getting and installing Arch (Русский)]]<br />
[[En:Installation_Guide]]<br />
[[de:Arch Install Scripts]]<br />
[[fr:Arch_install_scripts]]<br />
[[it:Installation Guide]]<br />
[[uk:Installation Guide]]<br />
[[zh-CN:Installation Guide]]<br />
[[zh-TW:Installation Guide]]<br />
Этот документ проведет вас через процесс установки [[Arch Linux (Русский)|Arch Linux]] c использованием [https://github.com/falconindy/arch-install-scripts Arch Install Scripts]. Рекомендуется перед установкой ознакомиться с [[FAQ (Русский)]]._<br />
Поддерживаемая сообществом [[Main Page (Русский)|вики Arch'а]] является превосходным ресурсом, к которому следует обращаться в первую очередь при возникновении каких-либо проблем. Если ответ на интересующий вас вопрос в другом месте не найден, доступны [[Wikipedia:IRC|IRC]]-канал (irc://irc.mibbit.net/#archlinux-ru) и [http://archlinux.org.ru/forum/ форумы]. Также обращайтесь к страницам руководств ({{ic|man}}) тех команд, с которыми вы незнакомы; обычно они вызываются при помощи {{ic|man ''command''}} (где ''command'' - имя интересующей вас команды).<br />
<br />
{{Tip|Новички могут обратиться к [[Beginners' Guide (Русский)|подробному руководству]] по установке.}}<br />
<br />
== Получение установочного образа ==<br />
Загрузите новый установочный образ диска Arch Linux с [https://www.archlinux.org/download/ соответствующей страницы] на главном сайте дистрибутива.<br />
* Предлагается единый установочный образ, с помощью которого вы сможете загрузиться как на i686, так и на x86_64 системах, чтобы провести установку по сети. Диск с репозиторием [core] для оффлайн-установки больше не доступен и не поддерживается.<br />
* Установочный образ подписан цифровой подписью, и вы можете проверить ее перед установкой командой {{bc|pacman-key -v <iso-file>.sig}}<br />
* Образ может быть записан на CD, смонтирован как iso-файл или записан на usb устройство (флешку) с помощью команды {{ic|dd}}. Он предназначен только для установки системы - обновление уже установленной системы производится стандартным способом, командой {{ic|pacman -Syu}}.<br />
<br />
== Установка ==<br />
<br />
=== Раскладка клавиатуры ===<br />
Для большинства стран и видов клавиатур уже доступны соответствующие раскладки, нужная из которых может быть выбрана командой, например {{ic|loadkeys ru}}. Другие раскладки можно найти в {{ic|/usr/share/kbd/keymaps/}} (можно не указывать полный путь и расширение файла с раскладкой при использовании команды loadkeys).<br />
<br />
=== Создание разделов ===<br />
Для подробностей обратитесь к разделу [[Partitioning]].<br />
<br />
При необходимости не забудьте создать [[lvm|LVM]], [[Dm-crypt_with_LUKS|LUKS]] или [[RAID|RAID]] устройства.<br />
<br />
=== Форматирование разделов ===<br />
Более подробно вы можете прочитать [[Format_a_device#Step_2:_create_the_new_file_system|здесь]].<br />
<br />
Если вы используете (U)EFI, вам, скорее всего, понадобится отдельный раздел для размещения служебного раздела UEFI. Подробнее можно прочитать [[Unified_Extensible_Firmware_Interface (Русский)#Создание UEFI раздела в Linux|здесь]].<br />
<br />
=== Монтирование разделов ===<br />
Как минимум, вы должны смонтировать корневой раздел в {{ic|/mnt}}. Например:<br />
# mount /dev/sda2 /mnt<br />
Если вы хотите, чтобы еще какие-либо разделы были автоматически учтены скриптом установки {{ic|genfstab}}, необходимо создать соответствующие директории внутри /mnt и смонтировать туда нужные разделы. Например для отдельных загрузочного и домашнего разделов:<br />
# mkdir /mnt/boot && mount /dev/sda1 /mnt/boot<br />
# mkdir /mnt/home && mount /dev/sda3 /mnt/home<br />
<br />
=== Подключение к интернету ===<br />
Сервис DHCP уже доступен для всех подходящих устройств. Для проводного подключения просто запустите {{ic|dhcpcd}}. Если вам необходимо установить статический IP или вы хотите использовать средства настройки наподобие [[Netcfg (Русский)#Настройка|Netcfg]], вам сначала надо остановить данный сервис: {{ic|systemctl stop dhcpcd.service}}. Для получения дополнительной информации обратитесь к [[Configuring Network (Русский)|руководству по настройке сети]].<br />
<br />
==== Беспроводное соединение ====<br />
Если у вас беспроводное соединение, запустите {{ic|wifi-menu}} для его настройки. Смотрите разделы [[Wireless Setup (Русский)|Wireless Setup]] и [[Netcfg (Русский)#Настройка|Netcfg]], чтобы определить, какие дополнительные драйверы требуются для вашего устройства.<br />
<br />
=== Установка базовой системы ===<br />
Перед началом установки вы, возможно, захотите отредактировать {{ic|/etc/pacman.d/mirrorlist}} для выбора подходящего зеркала. Это стоит сделать, поскольку копия данного файла будет также установлена в вашу систему с помощью {{ic|pacstrap}}.<br />
<br />
Скрипт [https://github.com/falconindy/arch-install-scripts/blob/master/pacstrap.in pacstrap] установит базовую систему. Группа пакетов ''base-devel'' должна также быть установлена, если вы собираетесь компилировать программы из [[Arch_User_Repository_(Русский)|AUR]] или с использованием [[Arch_Build_System_(Русский)|ABS]].<br />
<br />
# pacstrap /mnt base base-devel<br />
<br />
Также можно установить и другие пакеты, добавив их имена, разделенные пробелами, к команде выше.<br />
<br />
=== Установка загрузчика ===<br />
[[GRUB2 (Русский)|Grub]]<br />
<br />
* Для BIOS<br />
<br />
# arch-chroot /mnt pacman -S grub-bios<br />
<br />
* Для EFI (иногда вместо него нужно установить {{ic|grub-efi-i386}} )<br />
<br />
# arch-chroot /mnt pacman -S grub-efi-x86_64<br />
<br />
* Устанавливайте GRUB после выполнения chroot (обратитесь к разделу [[#Настройка системы|Настройка системы]] ниже).<br />
<br />
[[Syslinux|Syslinux]]<br />
<br />
# arch-chroot /mnt pacman -S syslinux<br />
<br />
=== Настройка системы ===<br />
Создайте [[fstab (Русский)|fstab]] следующей командой. (Если вы хотите использовать UUID или метки, используйте опции {{ic|-U}} или {{ic|-L}} соответственно.)<br />
# genfstab -p /mnt >> /mnt/etc/fstab<br />
Далее перейдите в свою установленную систему с помощью [[Change Root|chroot]].<br />
# arch-chroot /mnt<br />
<br />
* Укажите имя хоста в файле {{ic|/etc/hostname}}.<br />
* Создайте ссылку {{ic|/etc/localtime}} на {{ic|/usr/share/zoneinfo/Zone/SubZone}}. Где {{ic|Zone}} и {{ic|Subzone}} замените на то, что вам нужно. Например<br />
<br />
# ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime<br />
<br />
* Установите используемый в системе язык, настроив [[Locale (Русский)#Установка системной локали|locale]] в {{ic|/etc/locale.conf}}.<br />
<br />
* Раскомментируйте нужные [https://wiki.archlinux.org/index.php/Locale локали] в {{ic|/etc/locale.gen}} и сгенерируйте {{ic|locale-gen}}.<br />
* Настройте {{ic|/etc/mkinitcpio.conf}} как вам нужно (см. [[mkinitcpio (Русский)|mkinitcpio]]) и создайте ramdisk:<br />
<br />
# mkinitcpio -p linux<br />
<br />
* Настройте загрузчик.<br />
<br />
* Для syslinux отредактируйте {{ic|/boot/syslinux/syslinux.cfg}} и укажите нужный {{ic|/boot}} раздел. Далее введите следующую команду чтобы установить (-i), добавить загрузочный флаг (-a) и установить mbr (-m).<br />
<br />
# /usr/sbin/syslinux-install_update -iam<br />
<br />
* Для установки GRUB прочитайте статью [[GRUB2 (Русский)|GRUB]]<br />
* Установка GRUB на жесткий диск, содержащий /boot раздел<br />
<br />
# grub-install /dev/sda<br />
<br />
* Сгенерируйте конфигурационный файл {{ic|grub.cfg}}:<br />
<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
* Установите root пароль с помощью команды {{ic|passwd}}.<br />
<br />
=== Размонтирование разделов ===<br />
Если вы все еще в окружении chroot, введите {{ic|exit}} или нажмите {{ic|Ctrl+D}}.<br />
В шаге 3 мы смонтировали разделы в {{ic|/mnt}}. Теперь отмонтируем их. <br />
# umount /mnt/{boot,home,}<br />
<br />
== После установки ==<br />
<br />
=== Управление пользователями ===<br />
Добавьте добавьте необходимые вам аккаунты пользователей, как это описано на странице [[Users and Groups#User management|User management]]. Считается плохим выбором использование аккаунта суперпользователя для регулярной работы с системой, или подключения к ней через сервер [[SSH]]. Используйте аккаунт суперпользователя только для решения задач администрирования системы.<br />
<br />
=== Управление пакетами ===<br />
Смотрите статьи [[pacman (Русский)| pacman]] и [[FAQ#Package Management|FAQ: Package Management]] для получения ответов на вопросы, касающиеся установки, обновления и и управления пакетами.<br />
<br />
=== Управление сервисами ===<br />
<br />
Arch Linux использует [[systemd (Русский)| systemd]] в качестве системы инициализации и менеджера служб (сервисов) для Linux. Для обслуживания установленного Arch Linux было бы неплохо изучить основы данной системы. Взаимодействие с systemd происходит посредством команды {{ic|systemctl}}. Обратитесь к разделу [[systemd (Русский)#Основы использования systemctl| Основы использования systemctl]] для получения более подробной информации.<br />
<br />
=== Звук ===<br />
<br />
[[ALSA]] обычно работает "из коробки", только лишь требуется включить звук. Установите пакет {{Pkg|alsa-utils}} (который содержит утилиту {{ic|alsamixer}}) и следуйте инструкциям из [[Advanced Linux Sound Architecture#Unmuting the channels| данного раздела]].<br />
<br />
ALSA включена в ядро и рекомендуется к использованию. Если данная архитектура не работает, то работоспособной альтернативой является [[OSS]]. Если у вас повышенные требования к звуку, обратитесь к статье [[Sound system]] для просмотра различных вариантов решения.<br />
<br />
=== Видеодрайвер ===<br />
<br />
Ядро Linux kernel включает открытые (open-source) видеодрайверы и аппаратную поддержку ускорения видеобуфера. Тем не менее, в X11 необходима пользовательская поддержка OpenGL и ускорения 2D.<br />
<br />
Если вы не знаете, какой видеочипсет имеется на вашей машине, выполните команду:<br />
<br />
$ lspci | grep VGA<br />
<br />
Для получения полного списка открытых видеодрайверов ищите по базе данных пакетов следующей командой:<br />
<br />
$ pacman -Ss xf86-video | less<br />
<br />
Драйвер {{ic|vesa}} - самый общий драйвер, подходящий в большинстве случаев и работающий практически с любым GPU, но он не обеспечивает какое-либо 2D или 3D ускорение. Драйвер vesa загрузится, если более подходящий драйвер не будет найден или его загрузка завершится неудачей и Xorg запустится в режиме совместимости.. Для установки данного драйвера выполните команду:<br />
<br />
# pacman -S xf86-video-vesa<br />
<br />
Чтобы заработало видеоускорение и поддерживались все режимы, доступные для GPU, требуется подходящий видеодрайвер<br />
<br />
{| class="wikitable" style="text-align:center"<br />
|-<br />
! Производитель !! Тип !! Драйвер !! Пакет [[Multilib]] <br><span style="font-weight: normal;">(для 32-бит. приложений в Arch x86_64)</span> !! Документация<br />
|-<br />
| rowspan="2" bgcolor=#f7e3e3| '''<span style="color: #e62c2c;">AMD/ATI</span>'''<br />
| Открытый || {{Pkg|xf86-video-ati}} || {{Pkg|lib32-ati-dri}} || [[ATI]]<br />
|-<br />
| Проприетарный || {{Pkg|catalyst-dkms}} || {{Pkg|lib32-catalyst-utils}} || [[AMD Catalyst]]<br />
|-<br />
| bgcolor=#e3ecf7| '''<span style="color: #2a6dc8;">Intel</span>'''<br />
| Открытый<br />
| {{Pkg|xf86-video-intel}} || {{Pkg|lib32-intel-dri}} || [[Intel Graphics]]<br />
|-<br />
| rowspan="4" bgcolor=#e3f7e6| '''<span style="color: #409044;">Nvidia</span>'''<br />
| rowspan="2"| Открытый<br />
| {{Pkg|xf86-video-nouveau}} || {{Pkg|lib32-nouveau-dri}} || [[Nouveau]]<br />
|-<br />
| {{Pkg|xf86-video-nv}} || – || (устаревший драйвер)<br />
|-<br />
| rowspan="2"| Проприетарный || {{Pkg|nvidia}} || {{Pkg|lib32-nvidia-utils}} || rowspan="2"| [[NVIDIA]]<br />
|-<br />
| {{Pkg|nvidia-304xx}} || {{Pkg|lib32-nvidia-304xx-utils}}<br />
|}<br />
<br />
=== Оконная система ===<br />
<br />
Система X Window (обычно именуемая X11, или X) - сетевой и оконный протокол, который обеспечивает отрисовку окон на растровых дисплеях. Это де-факто стандарт для внедрения графических интерефейсов пользователя (GUI). Обратитесь за более подробной информацией к статье [[Xorg]].<br />
<br />
[[Wayland]] - новый протокол оконной системы, но он находится на ранней стадии развития и в силу этого слабо поддерживается приложениями.<br />
<br />
=== Шрифты ===<br />
<br />
Вы по желанию можете установить набор шрифтов TrueType, поскольку по умолчанию в свежеустановленной системе будут только немасштабируемые шрифты. DejaVu - набор высококачественных неспециализированных шрифтов с хорошим покрытием таблицы [[Wikipedia:Unicode|Unicode]]:<br />
<br />
# pacman -S ttf-dejavu<br />
<br />
Обратитесь к статье [[Font Configuration]] за советами по настройке рендеринга шрифтов и к статье [[Fonts]] за инструкциями по выбору и установке шрифтов.<br />
<br />
== Приложение ==<br />
<br />
Обратитесь к статье [[List of Applications]] для просмотра списка приложений, которые могут вас заинтересовать.<br />
<br />
Также смотрите статью [[General Recommendations (Русский)| General Recommendations]], содержащую руководства по послеустановочной настройке системы, например, настройке тачпада или рендерингу шрифтов.</div>Nobushttps://wiki.archlinux.org/index.php?title=Installation_guide_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=251836Installation guide (Русский)2013-03-24T11:55:20Z<p>Nobus: /* Видеодрайвер */ Приведение в соответствие с английской вики (по состоянию на 06:56, 15 марта 2013 года)</p>
<hr />
<div>[[Category:About Arch (Русский)]]<br />
[[Category:Getting and installing Arch (Русский)]]<br />
[[En:Installation_Guide]]<br />
[[de:Arch Install Scripts]]<br />
[[fr:Arch_install_scripts]]<br />
[[it:Installation Guide]]<br />
[[uk:Installation Guide]]<br />
[[zh-CN:Installation Guide]]<br />
[[zh-TW:Installation Guide]]<br />
Этот документ проведет вас через процесс установки [[Arch Linux (Русский)|Arch Linux]] c использованием [https://github.com/falconindy/arch-install-scripts Arch Install Scripts]. Рекомендуется перед установкой ознакомиться с [[FAQ (Русский)]]._<br />
Поддерживаемая сообществом [[Main Page (Русский)|вики Arch'а]] является превосходным ресурсом, к которому следует обращаться в первую очередь при возникновении каких-либо проблем. Если ответ на интересующий вас вопрос в другом месте не найден, доступны [[Wikipedia:IRC|IRC]]-канал (irc://irc.mibbit.net/#archlinux-ru) и [http://archlinux.org.ru/forum/ форумы]. Также обращайтесь к страницам руководств ({{ic|man}}) тех команд, с которыми вы незнакомы; обычно они вызываются при помощи {{ic|man ''command''}} (где ''command'' - имя интересующей вас команды).<br />
<br />
{{Tip|Новички могут обратиться к [[Beginners' Guide (Русский)|подробному руководству]] по установке.}}<br />
<br />
== Получение установочного образа ==<br />
Загрузите новый установочный образ диска Arch Linux с [https://www.archlinux.org/download/ соответствующей страницы] на главном сайте дистрибутива.<br />
* Предлагается единый установочный образ, с помощью которого вы сможете загрузиться как на i686, так и на x86_64 системах, чтобы провести установку по сети. Диск с репозиторием [core] для оффлайн-установки больше не доступен и не поддерживается.<br />
* Установочный образ подписан цифровой подписью, и вы можете проверить ее перед установкой командой {{bc|pacman-key -v <iso-file>.sig}}<br />
* Образ может быть записан на CD, смонтирован как iso-файл или записан на usb устройство (флешку) с помощью команды {{ic|dd}}. Он предназначен только для установки системы - обновление уже установленной системы производится стандартным способом, командой {{ic|pacman -Syu}}.<br />
<br />
== Установка ==<br />
<br />
=== Раскладка клавиатуры ===<br />
Для большинства стран и видов клавиатур уже доступны соответствующие раскладки, нужная из которых может быть выбрана командой, например {{ic|loadkeys ru}}. Другие раскладки можно найти в {{ic|/usr/share/kbd/keymaps/}} (можно не указывать полный путь и расширение файла с раскладкой при использовании команды loadkeys).<br />
<br />
=== Создание разделов ===<br />
Для подробностей обратитесь к разделу [[Partitioning]].<br />
<br />
При необходимости не забудьте создать [[lvm|LVM]], [[Dm-crypt_with_LUKS|LUKS]] или [[RAID|RAID]] устройства.<br />
<br />
=== Форматирование разделов ===<br />
Более подробно вы можете прочитать [[Format_a_device#Step_2:_create_the_new_file_system|здесь]].<br />
<br />
Если вы используете (U)EFI, вам, скорее всего, понадобится отдельный раздел для размещения служебного раздела UEFI. Подробнее можно прочитать [[Unified_Extensible_Firmware_Interface (Русский)#Создание UEFI раздела в Linux|здесь]].<br />
<br />
=== Монтирование разделов ===<br />
Как минимум, вы должны смонтировать корневой раздел в {{ic|/mnt}}. Например:<br />
# mount /dev/sda2 /mnt<br />
Если вы хотите, чтобы еще какие-либо разделы были автоматически учтены скриптом установки {{ic|genfstab}}, необходимо создать соответствующие директории внутри /mnt и смонтировать туда нужные разделы. Например для отдельных загрузочного и домашнего разделов:<br />
# mkdir /mnt/boot && mount /dev/sda1 /mnt/boot<br />
# mkdir /mnt/home && mount /dev/sda3 /mnt/home<br />
<br />
=== Подключение к интернету ===<br />
Сервис DHCP уже доступен для всех подходящих устройств. Для проводного подключения просто запустите {{ic|dhcpcd}}. Если вам необходимо установить статический IP или вы хотите использовать средства настройки наподобие [[Netcfg (Русский)#Настройка|Netcfg]], вам сначала надо остановить данный сервис: {{ic|systemctl stop dhcpcd.service}}. Для получения дополнительной информации обратитесь к [[Configuring Network (Русский)|руководству по настройке сети]].<br />
<br />
==== Беспроводное соединение ====<br />
Если у вас беспроводное соединение, запустите {{ic|wifi-menu}} для его настройки. Смотрите разделы [[Wireless Setup (Русский)|Wireless Setup]] и [[Netcfg (Русский)#Настройка|Netcfg]], чтобы определить, какие дополнительные драйверы требуются для вашего устройства.<br />
<br />
=== Установка базовой системы ===<br />
Перед началом установки вы, возможно, захотите отредактировать {{ic|/etc/pacman.d/mirrorlist}} для выбора подходящего зеркала. Это стоит сделать, поскольку копия данного файла будет также установлена в вашу систему с помощью {{ic|pacstrap}}.<br />
<br />
Скрипт [https://github.com/falconindy/arch-install-scripts/blob/master/pacstrap.in pacstrap] установит базовую систему. Группа пакетов ''base-devel'' должна также быть установлена, если вы собираетесь компилировать программы из [[Arch_User_Repository_(Русский)|AUR]] или с использованием [[Arch_Build_System_(Русский)|ABS]].<br />
<br />
# pacstrap /mnt base base-devel<br />
<br />
Также можно установить и другие пакеты, добавив их имена, разделенные пробелами, к команде выше.<br />
<br />
=== Установка загрузчика ===<br />
[[GRUB2 (Русский)|Grub]]<br />
<br />
* Для BIOS<br />
<br />
# arch-chroot /mnt pacman -S grub-bios<br />
<br />
* Для EFI (иногда вместо него нужно установить {{ic|grub-efi-i386}} )<br />
<br />
# arch-chroot /mnt pacman -S grub-efi-x86_64<br />
<br />
* Устанавливайте GRUB после выполнения chroot (обратитесь к разделу [[#Настройка системы|Настройка системы]] ниже).<br />
<br />
[[Syslinux|Syslinux]]<br />
<br />
# arch-chroot /mnt pacman -S syslinux<br />
<br />
=== Настройка системы ===<br />
Создайте [[fstab (Русский)|fstab]] следующей командой. (Если вы хотите использовать UUID или метки, используйте опции {{ic|-U}} или {{ic|-L}} соответственно.)<br />
# genfstab -p /mnt >> /mnt/etc/fstab<br />
Далее перейдите в свою установленную систему с помощью [[Change Root|chroot]].<br />
# arch-chroot /mnt<br />
<br />
* Укажите имя хоста в файле {{ic|/etc/hostname}}.<br />
* Создайте ссылку {{ic|/etc/localtime}} на {{ic|/usr/share/zoneinfo/Zone/SubZone}}. Где {{ic|Zone}} и {{ic|Subzone}} замените на то, что вам нужно. Например<br />
<br />
# ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime<br />
<br />
* Установите используемый в системе язык, настроив [[Locale (Русский)#Установка системной локали|locale]] в {{ic|/etc/locale.conf}}.<br />
<br />
* Раскомментируйте нужные [https://wiki.archlinux.org/index.php/Locale локали] в {{ic|/etc/locale.gen}} и сгенерируйте {{ic|locale-gen}}.<br />
* Настройте {{ic|/etc/mkinitcpio.conf}} как вам нужно (см. [[mkinitcpio (Русский)|mkinitcpio]]) и создайте ramdisk:<br />
<br />
# mkinitcpio -p linux<br />
<br />
* Настройте загрузчик.<br />
<br />
* Для syslinux отредактируйте {{ic|/boot/syslinux/syslinux.cfg}} и укажите нужный {{ic|/boot}} раздел. Далее введите следующую команду чтобы установить (-i), добавить загрузочный флаг (-a) и установить mbr (-m).<br />
<br />
# /usr/sbin/syslinux-install_update -iam<br />
<br />
* Для установки GRUB прочитайте статью [[GRUB2 (Русский)|GRUB]]<br />
* Установка GRUB на жесткий диск, содержащий /boot раздел<br />
<br />
# grub-install /dev/sda<br />
<br />
* Сгенерируйте конфигурационный файл {{ic|grub.cfg}}:<br />
<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
* Установите root пароль с помощью команды {{ic|passwd}}.<br />
<br />
=== Размонтирование разделов ===<br />
Если вы все еще в окружении chroot, введите {{ic|exit}} или нажмите {{ic|Ctrl+D}}.<br />
В шаге 3 мы смонтировали разделы в {{ic|/mnt}}. Теперь отмонтируем их. <br />
# umount /mnt/{boot,home,}<br />
<br />
== После установки ==<br />
<br />
=== Управление пользователями ===<br />
Добавьте добавьте необходимые вам аккаунты пользователей, как это описано на странице [[Users and Groups#User management|User management]]. Считается плохим выбором использование аккаунта суперпользователя для регулярной работы с системой, или подключения к ней через сервер [[SSH]]. Используйте аккаунт суперпользователя только для решения задач администрирования системы.<br />
<br />
=== Управление пакетами ===<br />
Смотрите статьи [[pacman (Русский)| pacman]] и [[FAQ#Package Management|FAQ: Package Management]] для получения ответов на вопросы, касающиеся установки, обновления и и управления пакетами.<br />
<br />
=== Управление сервисами ===<br />
<br />
Arch Linux использует [[systemd (Русский)| systemd]] в качестве системы инициализации и менеджера служб (сервисов) для Linux. Для обслуживания установленного Arch Linux было бы неплохо изучить основы данной системы. Взаимодействие с systemd происходит посредством команды {{ic|systemctl}}. Обратитесь к разделу [[systemd (Русский)#Основы использования systemctl| Основы использования systemctl]] для получения более подробной информации.<br />
<br />
=== Звук ===<br />
<br />
[[ALSA]] обычно работает "из коробки", только лишь требуется включить звук. Установите пакет {{Pkg|alsa-utils}} (который содержит утилиту {{ic|alsamixer}}) и следуйте инструкциям из [[Advanced Linux Sound Architecture#Unmuting the channels| данного раздела]].<br />
<br />
ALSA включена в ядро и рекомендуется к использованию. Если данная архитектура не работает, то работоспособной альтернативой является [[OSS]]. Если у вас повышенные требования к звуку, обратитесь к статье [[Sound system]] для просмотра различных вариантов решения.<br />
<br />
=== Видеодрайвер ===<br />
<br />
Ядро Linux kernel включает открытые (open-source) видеодрайверы и аппаратную поддержку ускорения видеобуфера. Тем не менее, в X11 необходима пользовательская поддержка OpenGL и ускорения 2D.<br />
<br />
Если вы не знаете, какой видеочипсет имеется на вашей машине, выполните команду:<br />
<br />
$ lspci | grep VGA<br />
<br />
Для получения полного списка открытых видеодрайверов ищите по базе данных пакетов следующей командой:<br />
<br />
$ pacman -Ss xf86-video | less<br />
<br />
Драйвер {{ic|vesa}} - самый общий драйвер, подходящий в большинстве случаев и работающий практически с любым GPU, но он не обеспечивает какое-либо 2D или 3D ускорение. Драйвер vesa загрузится, если более подходящий драйвер не будет найден или его загрузка завершится неудачей и Xorg запустится в режиме совместимости.. Для установки данного драйвера выполните команду:<br />
<br />
# pacman -S xf86-video-vesa<br />
<br />
Чтобы заработало видеоускорение и поддерживались все режимы, доступные для GPU, требуется подходящий видеодрайвер<br />
<br />
{| class="wikitable" style="text-align:center"<br />
|-<br />
! Производитель !! Тип !! Драйвер !! Пакет [[Multilib]] <br><span style="font-weight: normal;">(for 32-bit applications on Arch x86_64)</span> !! Документация<br />
|-<br />
| rowspan="2" bgcolor=#f7e3e3| '''<span style="color: #e62c2c;">AMD/ATI</span>'''<br />
| Открытый || {{Pkg|xf86-video-ati}} || {{Pkg|lib32-ati-dri}} || [[ATI]]<br />
|-<br />
| Проприетарный || {{Pkg|catalyst-dkms}} || {{Pkg|lib32-catalyst-utils}} || [[AMD Catalyst]]<br />
|-<br />
| bgcolor=#e3ecf7| '''<span style="color: #2a6dc8;">Intel</span>'''<br />
| Открытый<br />
| {{Pkg|xf86-video-intel}} || {{Pkg|lib32-intel-dri}} || [[Intel Graphics]]<br />
|-<br />
| rowspan="4" bgcolor=#e3f7e6| '''<span style="color: #409044;">Nvidia</span>'''<br />
| rowspan="2"| Открытый<br />
| {{Pkg|xf86-video-nouveau}} || {{Pkg|lib32-nouveau-dri}} || [[Nouveau]]<br />
|-<br />
| {{Pkg|xf86-video-nv}} || – || (устаревший драйвер)<br />
|-<br />
| rowspan="2"| Проприетарный || {{Pkg|nvidia}} || {{Pkg|lib32-nvidia-utils}} || rowspan="2"| [[NVIDIA]]<br />
|-<br />
| {{Pkg|nvidia-304xx}} || {{Pkg|lib32-nvidia-304xx-utils}}<br />
|}<br />
<br />
=== Оконная система ===<br />
<br />
Система X Window (обычно именуемая X11, или X) - сетевой и оконный протокол, который обеспечивает отрисовку окон на растровых дисплеях. Это де-факто стандарт для внедрения графических интерефейсов пользователя (GUI). Обратитесь за более подробной информацией к статье [[Xorg]].<br />
<br />
[[Wayland]] - новый протокол оконной системы, но он находится на ранней стадии развития и в силу этого слабо поддерживается приложениями.<br />
<br />
=== Шрифты ===<br />
<br />
Вы по желанию можете установить набор шрифтов TrueType, поскольку по умолчанию в свежеустановленной системе будут только немасштабируемые шрифты. DejaVu - набор высококачественных неспециализированных шрифтов с хорошим покрытием таблицы [[Wikipedia:Unicode|Unicode]]:<br />
<br />
# pacman -S ttf-dejavu<br />
<br />
Обратитесь к статье [[Font Configuration]] за советами по настройке рендеринга шрифтов и к статье [[Fonts]] за инструкциями по выбору и установке шрифтов.<br />
<br />
== Приложение ==<br />
<br />
Обратитесь к статье [[List of Applications]] для просмотра списка приложений, которые могут вас заинтересовать.<br />
<br />
Также смотрите статью [[General Recommendations (Русский)| General Recommendations]], содержащую руководства по послеустановочной настройке системы, например, настройке тачпада или рендерингу шрифтов.</div>Nobushttps://wiki.archlinux.org/index.php?title=Installation_guide_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=251835Installation guide (Русский)2013-03-24T11:53:44Z<p>Nobus: /* Видеодрайвер */</p>
<hr />
<div>[[Category:About Arch (Русский)]]<br />
[[Category:Getting and installing Arch (Русский)]]<br />
[[En:Installation_Guide]]<br />
[[de:Arch Install Scripts]]<br />
[[fr:Arch_install_scripts]]<br />
[[it:Installation Guide]]<br />
[[uk:Installation Guide]]<br />
[[zh-CN:Installation Guide]]<br />
[[zh-TW:Installation Guide]]<br />
Этот документ проведет вас через процесс установки [[Arch Linux (Русский)|Arch Linux]] c использованием [https://github.com/falconindy/arch-install-scripts Arch Install Scripts]. Рекомендуется перед установкой ознакомиться с [[FAQ (Русский)]]._<br />
Поддерживаемая сообществом [[Main Page (Русский)|вики Arch'а]] является превосходным ресурсом, к которому следует обращаться в первую очередь при возникновении каких-либо проблем. Если ответ на интересующий вас вопрос в другом месте не найден, доступны [[Wikipedia:IRC|IRC]]-канал (irc://irc.mibbit.net/#archlinux-ru) и [http://archlinux.org.ru/forum/ форумы]. Также обращайтесь к страницам руководств ({{ic|man}}) тех команд, с которыми вы незнакомы; обычно они вызываются при помощи {{ic|man ''command''}} (где ''command'' - имя интересующей вас команды).<br />
<br />
{{Tip|Новички могут обратиться к [[Beginners' Guide (Русский)|подробному руководству]] по установке.}}<br />
<br />
== Получение установочного образа ==<br />
Загрузите новый установочный образ диска Arch Linux с [https://www.archlinux.org/download/ соответствующей страницы] на главном сайте дистрибутива.<br />
* Предлагается единый установочный образ, с помощью которого вы сможете загрузиться как на i686, так и на x86_64 системах, чтобы провести установку по сети. Диск с репозиторием [core] для оффлайн-установки больше не доступен и не поддерживается.<br />
* Установочный образ подписан цифровой подписью, и вы можете проверить ее перед установкой командой {{bc|pacman-key -v <iso-file>.sig}}<br />
* Образ может быть записан на CD, смонтирован как iso-файл или записан на usb устройство (флешку) с помощью команды {{ic|dd}}. Он предназначен только для установки системы - обновление уже установленной системы производится стандартным способом, командой {{ic|pacman -Syu}}.<br />
<br />
== Установка ==<br />
<br />
=== Раскладка клавиатуры ===<br />
Для большинства стран и видов клавиатур уже доступны соответствующие раскладки, нужная из которых может быть выбрана командой, например {{ic|loadkeys ru}}. Другие раскладки можно найти в {{ic|/usr/share/kbd/keymaps/}} (можно не указывать полный путь и расширение файла с раскладкой при использовании команды loadkeys).<br />
<br />
=== Создание разделов ===<br />
Для подробностей обратитесь к разделу [[Partitioning]].<br />
<br />
При необходимости не забудьте создать [[lvm|LVM]], [[Dm-crypt_with_LUKS|LUKS]] или [[RAID|RAID]] устройства.<br />
<br />
=== Форматирование разделов ===<br />
Более подробно вы можете прочитать [[Format_a_device#Step_2:_create_the_new_file_system|здесь]].<br />
<br />
Если вы используете (U)EFI, вам, скорее всего, понадобится отдельный раздел для размещения служебного раздела UEFI. Подробнее можно прочитать [[Unified_Extensible_Firmware_Interface (Русский)#Создание UEFI раздела в Linux|здесь]].<br />
<br />
=== Монтирование разделов ===<br />
Как минимум, вы должны смонтировать корневой раздел в {{ic|/mnt}}. Например:<br />
# mount /dev/sda2 /mnt<br />
Если вы хотите, чтобы еще какие-либо разделы были автоматически учтены скриптом установки {{ic|genfstab}}, необходимо создать соответствующие директории внутри /mnt и смонтировать туда нужные разделы. Например для отдельных загрузочного и домашнего разделов:<br />
# mkdir /mnt/boot && mount /dev/sda1 /mnt/boot<br />
# mkdir /mnt/home && mount /dev/sda3 /mnt/home<br />
<br />
=== Подключение к интернету ===<br />
Сервис DHCP уже доступен для всех подходящих устройств. Для проводного подключения просто запустите {{ic|dhcpcd}}. Если вам необходимо установить статический IP или вы хотите использовать средства настройки наподобие [[Netcfg (Русский)#Настройка|Netcfg]], вам сначала надо остановить данный сервис: {{ic|systemctl stop dhcpcd.service}}. Для получения дополнительной информации обратитесь к [[Configuring Network (Русский)|руководству по настройке сети]].<br />
<br />
==== Беспроводное соединение ====<br />
Если у вас беспроводное соединение, запустите {{ic|wifi-menu}} для его настройки. Смотрите разделы [[Wireless Setup (Русский)|Wireless Setup]] и [[Netcfg (Русский)#Настройка|Netcfg]], чтобы определить, какие дополнительные драйверы требуются для вашего устройства.<br />
<br />
=== Установка базовой системы ===<br />
Перед началом установки вы, возможно, захотите отредактировать {{ic|/etc/pacman.d/mirrorlist}} для выбора подходящего зеркала. Это стоит сделать, поскольку копия данного файла будет также установлена в вашу систему с помощью {{ic|pacstrap}}.<br />
<br />
Скрипт [https://github.com/falconindy/arch-install-scripts/blob/master/pacstrap.in pacstrap] установит базовую систему. Группа пакетов ''base-devel'' должна также быть установлена, если вы собираетесь компилировать программы из [[Arch_User_Repository_(Русский)|AUR]] или с использованием [[Arch_Build_System_(Русский)|ABS]].<br />
<br />
# pacstrap /mnt base base-devel<br />
<br />
Также можно установить и другие пакеты, добавив их имена, разделенные пробелами, к команде выше.<br />
<br />
=== Установка загрузчика ===<br />
[[GRUB2 (Русский)|Grub]]<br />
<br />
* Для BIOS<br />
<br />
# arch-chroot /mnt pacman -S grub-bios<br />
<br />
* Для EFI (иногда вместо него нужно установить {{ic|grub-efi-i386}} )<br />
<br />
# arch-chroot /mnt pacman -S grub-efi-x86_64<br />
<br />
* Устанавливайте GRUB после выполнения chroot (обратитесь к разделу [[#Настройка системы|Настройка системы]] ниже).<br />
<br />
[[Syslinux|Syslinux]]<br />
<br />
# arch-chroot /mnt pacman -S syslinux<br />
<br />
=== Настройка системы ===<br />
Создайте [[fstab (Русский)|fstab]] следующей командой. (Если вы хотите использовать UUID или метки, используйте опции {{ic|-U}} или {{ic|-L}} соответственно.)<br />
# genfstab -p /mnt >> /mnt/etc/fstab<br />
Далее перейдите в свою установленную систему с помощью [[Change Root|chroot]].<br />
# arch-chroot /mnt<br />
<br />
* Укажите имя хоста в файле {{ic|/etc/hostname}}.<br />
* Создайте ссылку {{ic|/etc/localtime}} на {{ic|/usr/share/zoneinfo/Zone/SubZone}}. Где {{ic|Zone}} и {{ic|Subzone}} замените на то, что вам нужно. Например<br />
<br />
# ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime<br />
<br />
* Установите используемый в системе язык, настроив [[Locale (Русский)#Установка системной локали|locale]] в {{ic|/etc/locale.conf}}.<br />
<br />
* Раскомментируйте нужные [https://wiki.archlinux.org/index.php/Locale локали] в {{ic|/etc/locale.gen}} и сгенерируйте {{ic|locale-gen}}.<br />
* Настройте {{ic|/etc/mkinitcpio.conf}} как вам нужно (см. [[mkinitcpio (Русский)|mkinitcpio]]) и создайте ramdisk:<br />
<br />
# mkinitcpio -p linux<br />
<br />
* Настройте загрузчик.<br />
<br />
* Для syslinux отредактируйте {{ic|/boot/syslinux/syslinux.cfg}} и укажите нужный {{ic|/boot}} раздел. Далее введите следующую команду чтобы установить (-i), добавить загрузочный флаг (-a) и установить mbr (-m).<br />
<br />
# /usr/sbin/syslinux-install_update -iam<br />
<br />
* Для установки GRUB прочитайте статью [[GRUB2 (Русский)|GRUB]]<br />
* Установка GRUB на жесткий диск, содержащий /boot раздел<br />
<br />
# grub-install /dev/sda<br />
<br />
* Сгенерируйте конфигурационный файл {{ic|grub.cfg}}:<br />
<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
* Установите root пароль с помощью команды {{ic|passwd}}.<br />
<br />
=== Размонтирование разделов ===<br />
Если вы все еще в окружении chroot, введите {{ic|exit}} или нажмите {{ic|Ctrl+D}}.<br />
В шаге 3 мы смонтировали разделы в {{ic|/mnt}}. Теперь отмонтируем их. <br />
# umount /mnt/{boot,home,}<br />
<br />
== После установки ==<br />
<br />
=== Управление пользователями ===<br />
Добавьте добавьте необходимые вам аккаунты пользователей, как это описано на странице [[Users and Groups#User management|User management]]. Считается плохим выбором использование аккаунта суперпользователя для регулярной работы с системой, или подключения к ней через сервер [[SSH]]. Используйте аккаунт суперпользователя только для решения задач администрирования системы.<br />
<br />
=== Управление пакетами ===<br />
Смотрите статьи [[pacman (Русский)| pacman]] и [[FAQ#Package Management|FAQ: Package Management]] для получения ответов на вопросы, касающиеся установки, обновления и и управления пакетами.<br />
<br />
=== Управление сервисами ===<br />
<br />
Arch Linux использует [[systemd (Русский)| systemd]] в качестве системы инициализации и менеджера служб (сервисов) для Linux. Для обслуживания установленного Arch Linux было бы неплохо изучить основы данной системы. Взаимодействие с systemd происходит посредством команды {{ic|systemctl}}. Обратитесь к разделу [[systemd (Русский)#Основы использования systemctl| Основы использования systemctl]] для получения более подробной информации.<br />
<br />
=== Звук ===<br />
<br />
[[ALSA]] обычно работает "из коробки", только лишь требуется включить звук. Установите пакет {{Pkg|alsa-utils}} (который содержит утилиту {{ic|alsamixer}}) и следуйте инструкциям из [[Advanced Linux Sound Architecture#Unmuting the channels| данного раздела]].<br />
<br />
ALSA включена в ядро и рекомендуется к использованию. Если данная архитектура не работает, то работоспособной альтернативой является [[OSS]]. Если у вас повышенные требования к звуку, обратитесь к статье [[Sound system]] для просмотра различных вариантов решения.<br />
<br />
=== Видеодрайвер ===<br />
<br />
Ядро Linux kernel включает открытые (open-source) видеодрайверы и аппаратную поддержку ускорения видеобуфера. Тем не менее, в X11 необходима пользовательская поддержка OpenGL и ускорения 2D.<br />
<br />
Если вы не знаете, какой видеочипсет имеется на вашей машине, выполните команду:<br />
<br />
$ lspci | grep VGA<br />
<br />
Для получения полного списка открытых видеодрайверов ищите по базе данных пакетов следующей командой:<br />
<br />
$ pacman -Ss xf86-video | less<br />
<br />
Драйвер {{ic|vesa}} - самый общий драйвер, подходящий в большинстве случаев и работающий практически с любым GPU, но он не обеспечивает какое-либо 2D или 3D ускорение. Драйвер vesa загрузится, если более подходящий драйвер не будет найден или его запуск завершится неудачей и Xorg загрузится в режиме совместимости.. Для установки данного драйвера выполните команду:<br />
<br />
# pacman -S xf86-video-vesa<br />
<br />
Чтобы заработало видеоускорение и поддерживались все режимы, доступные для GPU, требуется подходящий видеодрайвер<br />
<br />
{| class="wikitable" style="text-align:center"<br />
|-<br />
! Производитель !! Тип !! Драйвер !! Пакет [[Multilib]] <br><span style="font-weight: normal;">(for 32-bit applications on Arch x86_64)</span> !! Документация<br />
|-<br />
| rowspan="2" bgcolor=#f7e3e3| '''<span style="color: #e62c2c;">AMD/ATI</span>'''<br />
| Открытый || {{Pkg|xf86-video-ati}} || {{Pkg|lib32-ati-dri}} || [[ATI]]<br />
|-<br />
| Проприетарный || {{Pkg|catalyst-dkms}} || {{Pkg|lib32-catalyst-utils}} || [[AMD Catalyst]]<br />
|-<br />
| bgcolor=#e3ecf7| '''<span style="color: #2a6dc8;">Intel</span>'''<br />
| Открытый<br />
| {{Pkg|xf86-video-intel}} || {{Pkg|lib32-intel-dri}} || [[Intel Graphics]]<br />
|-<br />
| rowspan="4" bgcolor=#e3f7e6| '''<span style="color: #409044;">Nvidia</span>'''<br />
| rowspan="2"| Открытый<br />
| {{Pkg|xf86-video-nouveau}} || {{Pkg|lib32-nouveau-dri}} || [[Nouveau]]<br />
|-<br />
| {{Pkg|xf86-video-nv}} || – || (устаревший драйвер)<br />
|-<br />
| rowspan="2"| Проприетарный || {{Pkg|nvidia}} || {{Pkg|lib32-nvidia-utils}} || rowspan="2"| [[NVIDIA]]<br />
|-<br />
| {{Pkg|nvidia-304xx}} || {{Pkg|lib32-nvidia-304xx-utils}}<br />
|}<br />
<br />
=== Оконная система ===<br />
<br />
Система X Window (обычно именуемая X11, или X) - сетевой и оконный протокол, который обеспечивает отрисовку окон на растровых дисплеях. Это де-факто стандарт для внедрения графических интерефейсов пользователя (GUI). Обратитесь за более подробной информацией к статье [[Xorg]].<br />
<br />
[[Wayland]] - новый протокол оконной системы, но он находится на ранней стадии развития и в силу этого слабо поддерживается приложениями.<br />
<br />
=== Шрифты ===<br />
<br />
Вы по желанию можете установить набор шрифтов TrueType, поскольку по умолчанию в свежеустановленной системе будут только немасштабируемые шрифты. DejaVu - набор высококачественных неспециализированных шрифтов с хорошим покрытием таблицы [[Wikipedia:Unicode|Unicode]]:<br />
<br />
# pacman -S ttf-dejavu<br />
<br />
Обратитесь к статье [[Font Configuration]] за советами по настройке рендеринга шрифтов и к статье [[Fonts]] за инструкциями по выбору и установке шрифтов.<br />
<br />
== Приложение ==<br />
<br />
Обратитесь к статье [[List of Applications]] для просмотра списка приложений, которые могут вас заинтересовать.<br />
<br />
Также смотрите статью [[General Recommendations (Русский)| General Recommendations]], содержащую руководства по послеустановочной настройке системы, например, настройке тачпада или рендерингу шрифтов.</div>Nobushttps://wiki.archlinux.org/index.php?title=Installation_guide_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=251834Installation guide (Русский)2013-03-24T11:53:27Z<p>Nobus: /* Video driver */</p>
<hr />
<div>[[Category:About Arch (Русский)]]<br />
[[Category:Getting and installing Arch (Русский)]]<br />
[[En:Installation_Guide]]<br />
[[de:Arch Install Scripts]]<br />
[[fr:Arch_install_scripts]]<br />
[[it:Installation Guide]]<br />
[[uk:Installation Guide]]<br />
[[zh-CN:Installation Guide]]<br />
[[zh-TW:Installation Guide]]<br />
Этот документ проведет вас через процесс установки [[Arch Linux (Русский)|Arch Linux]] c использованием [https://github.com/falconindy/arch-install-scripts Arch Install Scripts]. Рекомендуется перед установкой ознакомиться с [[FAQ (Русский)]]._<br />
Поддерживаемая сообществом [[Main Page (Русский)|вики Arch'а]] является превосходным ресурсом, к которому следует обращаться в первую очередь при возникновении каких-либо проблем. Если ответ на интересующий вас вопрос в другом месте не найден, доступны [[Wikipedia:IRC|IRC]]-канал (irc://irc.mibbit.net/#archlinux-ru) и [http://archlinux.org.ru/forum/ форумы]. Также обращайтесь к страницам руководств ({{ic|man}}) тех команд, с которыми вы незнакомы; обычно они вызываются при помощи {{ic|man ''command''}} (где ''command'' - имя интересующей вас команды).<br />
<br />
{{Tip|Новички могут обратиться к [[Beginners' Guide (Русский)|подробному руководству]] по установке.}}<br />
<br />
== Получение установочного образа ==<br />
Загрузите новый установочный образ диска Arch Linux с [https://www.archlinux.org/download/ соответствующей страницы] на главном сайте дистрибутива.<br />
* Предлагается единый установочный образ, с помощью которого вы сможете загрузиться как на i686, так и на x86_64 системах, чтобы провести установку по сети. Диск с репозиторием [core] для оффлайн-установки больше не доступен и не поддерживается.<br />
* Установочный образ подписан цифровой подписью, и вы можете проверить ее перед установкой командой {{bc|pacman-key -v <iso-file>.sig}}<br />
* Образ может быть записан на CD, смонтирован как iso-файл или записан на usb устройство (флешку) с помощью команды {{ic|dd}}. Он предназначен только для установки системы - обновление уже установленной системы производится стандартным способом, командой {{ic|pacman -Syu}}.<br />
<br />
== Установка ==<br />
<br />
=== Раскладка клавиатуры ===<br />
Для большинства стран и видов клавиатур уже доступны соответствующие раскладки, нужная из которых может быть выбрана командой, например {{ic|loadkeys ru}}. Другие раскладки можно найти в {{ic|/usr/share/kbd/keymaps/}} (можно не указывать полный путь и расширение файла с раскладкой при использовании команды loadkeys).<br />
<br />
=== Создание разделов ===<br />
Для подробностей обратитесь к разделу [[Partitioning]].<br />
<br />
При необходимости не забудьте создать [[lvm|LVM]], [[Dm-crypt_with_LUKS|LUKS]] или [[RAID|RAID]] устройства.<br />
<br />
=== Форматирование разделов ===<br />
Более подробно вы можете прочитать [[Format_a_device#Step_2:_create_the_new_file_system|здесь]].<br />
<br />
Если вы используете (U)EFI, вам, скорее всего, понадобится отдельный раздел для размещения служебного раздела UEFI. Подробнее можно прочитать [[Unified_Extensible_Firmware_Interface (Русский)#Создание UEFI раздела в Linux|здесь]].<br />
<br />
=== Монтирование разделов ===<br />
Как минимум, вы должны смонтировать корневой раздел в {{ic|/mnt}}. Например:<br />
# mount /dev/sda2 /mnt<br />
Если вы хотите, чтобы еще какие-либо разделы были автоматически учтены скриптом установки {{ic|genfstab}}, необходимо создать соответствующие директории внутри /mnt и смонтировать туда нужные разделы. Например для отдельных загрузочного и домашнего разделов:<br />
# mkdir /mnt/boot && mount /dev/sda1 /mnt/boot<br />
# mkdir /mnt/home && mount /dev/sda3 /mnt/home<br />
<br />
=== Подключение к интернету ===<br />
Сервис DHCP уже доступен для всех подходящих устройств. Для проводного подключения просто запустите {{ic|dhcpcd}}. Если вам необходимо установить статический IP или вы хотите использовать средства настройки наподобие [[Netcfg (Русский)#Настройка|Netcfg]], вам сначала надо остановить данный сервис: {{ic|systemctl stop dhcpcd.service}}. Для получения дополнительной информации обратитесь к [[Configuring Network (Русский)|руководству по настройке сети]].<br />
<br />
==== Беспроводное соединение ====<br />
Если у вас беспроводное соединение, запустите {{ic|wifi-menu}} для его настройки. Смотрите разделы [[Wireless Setup (Русский)|Wireless Setup]] и [[Netcfg (Русский)#Настройка|Netcfg]], чтобы определить, какие дополнительные драйверы требуются для вашего устройства.<br />
<br />
=== Установка базовой системы ===<br />
Перед началом установки вы, возможно, захотите отредактировать {{ic|/etc/pacman.d/mirrorlist}} для выбора подходящего зеркала. Это стоит сделать, поскольку копия данного файла будет также установлена в вашу систему с помощью {{ic|pacstrap}}.<br />
<br />
Скрипт [https://github.com/falconindy/arch-install-scripts/blob/master/pacstrap.in pacstrap] установит базовую систему. Группа пакетов ''base-devel'' должна также быть установлена, если вы собираетесь компилировать программы из [[Arch_User_Repository_(Русский)|AUR]] или с использованием [[Arch_Build_System_(Русский)|ABS]].<br />
<br />
# pacstrap /mnt base base-devel<br />
<br />
Также можно установить и другие пакеты, добавив их имена, разделенные пробелами, к команде выше.<br />
<br />
=== Установка загрузчика ===<br />
[[GRUB2 (Русский)|Grub]]<br />
<br />
* Для BIOS<br />
<br />
# arch-chroot /mnt pacman -S grub-bios<br />
<br />
* Для EFI (иногда вместо него нужно установить {{ic|grub-efi-i386}} )<br />
<br />
# arch-chroot /mnt pacman -S grub-efi-x86_64<br />
<br />
* Устанавливайте GRUB после выполнения chroot (обратитесь к разделу [[#Настройка системы|Настройка системы]] ниже).<br />
<br />
[[Syslinux|Syslinux]]<br />
<br />
# arch-chroot /mnt pacman -S syslinux<br />
<br />
=== Настройка системы ===<br />
Создайте [[fstab (Русский)|fstab]] следующей командой. (Если вы хотите использовать UUID или метки, используйте опции {{ic|-U}} или {{ic|-L}} соответственно.)<br />
# genfstab -p /mnt >> /mnt/etc/fstab<br />
Далее перейдите в свою установленную систему с помощью [[Change Root|chroot]].<br />
# arch-chroot /mnt<br />
<br />
* Укажите имя хоста в файле {{ic|/etc/hostname}}.<br />
* Создайте ссылку {{ic|/etc/localtime}} на {{ic|/usr/share/zoneinfo/Zone/SubZone}}. Где {{ic|Zone}} и {{ic|Subzone}} замените на то, что вам нужно. Например<br />
<br />
# ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime<br />
<br />
* Установите используемый в системе язык, настроив [[Locale (Русский)#Установка системной локали|locale]] в {{ic|/etc/locale.conf}}.<br />
<br />
* Раскомментируйте нужные [https://wiki.archlinux.org/index.php/Locale локали] в {{ic|/etc/locale.gen}} и сгенерируйте {{ic|locale-gen}}.<br />
* Настройте {{ic|/etc/mkinitcpio.conf}} как вам нужно (см. [[mkinitcpio (Русский)|mkinitcpio]]) и создайте ramdisk:<br />
<br />
# mkinitcpio -p linux<br />
<br />
* Настройте загрузчик.<br />
<br />
* Для syslinux отредактируйте {{ic|/boot/syslinux/syslinux.cfg}} и укажите нужный {{ic|/boot}} раздел. Далее введите следующую команду чтобы установить (-i), добавить загрузочный флаг (-a) и установить mbr (-m).<br />
<br />
# /usr/sbin/syslinux-install_update -iam<br />
<br />
* Для установки GRUB прочитайте статью [[GRUB2 (Русский)|GRUB]]<br />
* Установка GRUB на жесткий диск, содержащий /boot раздел<br />
<br />
# grub-install /dev/sda<br />
<br />
* Сгенерируйте конфигурационный файл {{ic|grub.cfg}}:<br />
<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
* Установите root пароль с помощью команды {{ic|passwd}}.<br />
<br />
=== Размонтирование разделов ===<br />
Если вы все еще в окружении chroot, введите {{ic|exit}} или нажмите {{ic|Ctrl+D}}.<br />
В шаге 3 мы смонтировали разделы в {{ic|/mnt}}. Теперь отмонтируем их. <br />
# umount /mnt/{boot,home,}<br />
<br />
== После установки ==<br />
<br />
=== Управление пользователями ===<br />
Добавьте добавьте необходимые вам аккаунты пользователей, как это описано на странице [[Users and Groups#User management|User management]]. Считается плохим выбором использование аккаунта суперпользователя для регулярной работы с системой, или подключения к ней через сервер [[SSH]]. Используйте аккаунт суперпользователя только для решения задач администрирования системы.<br />
<br />
=== Управление пакетами ===<br />
Смотрите статьи [[pacman (Русский)| pacman]] и [[FAQ#Package Management|FAQ: Package Management]] для получения ответов на вопросы, касающиеся установки, обновления и и управления пакетами.<br />
<br />
=== Управление сервисами ===<br />
<br />
Arch Linux использует [[systemd (Русский)| systemd]] в качестве системы инициализации и менеджера служб (сервисов) для Linux. Для обслуживания установленного Arch Linux было бы неплохо изучить основы данной системы. Взаимодействие с systemd происходит посредством команды {{ic|systemctl}}. Обратитесь к разделу [[systemd (Русский)#Основы использования systemctl| Основы использования systemctl]] для получения более подробной информации.<br />
<br />
=== Звук ===<br />
<br />
[[ALSA]] обычно работает "из коробки", только лишь требуется включить звук. Установите пакет {{Pkg|alsa-utils}} (который содержит утилиту {{ic|alsamixer}}) и следуйте инструкциям из [[Advanced Linux Sound Architecture#Unmuting the channels| данного раздела]].<br />
<br />
ALSA включена в ядро и рекомендуется к использованию. Если данная архитектура не работает, то работоспособной альтернативой является [[OSS]]. Если у вас повышенные требования к звуку, обратитесь к статье [[Sound system]] для просмотра различных вариантов решения.<br />
<br />
=== Видеодрайвер ===<br />
<br />
Ядро Linux kernel включает открытые (open-source) видеодрайверы и аппаратную поддержку ускорения видеобуфера. Тем не менее, в X11 необходима пользовательская поддержка OpenGL и ускорения 2D.<br />
<br />
Если вы не знаете, какой видеочипсет имеется на вашей машине, выполните команду:<br />
<br />
$ lspci | grep VGA<br />
<br />
Для получения полного списка открытых видеодрайверов ищите по базе данных пакетов следующей командой:<br />
<br />
$ pacman -Ss xf86-video | less<br />
<br />
Драйвер {{ic|vesa}} - самый общий драйвер, подходящий в большинстве случаев и работающий практически с любым GPU, но он не обеспечивает какое-либо 2D или 3D ускорение. Драйвер vesa загрузится, если более подходящий драйвер не будет найден или его запуск завершится неудачей и Xorg загрузится в режиме совместимости.. Для установки данного драйвера выполните команду:<br />
<br />
# pacman -S xf86-video-vesa<br />
<br />
Чтобы заработало видеоускорение и поддерживались все режимы, доступные для GPU, требуется подходящий видеодрайвер<br />
<br />
{| class="wikitable" style="text-align:center"<br />
|-<br />
! Производитель !! Тип !! Драйвер !! Пакет [[Multilib]] <br><span style="font-weight: normal;">(for 32-bit applications on Arch x86_64)</span> !! Документация<br />
|-<br />
| rowspan="2" bgcolor=#f7e3e3| '''<span style="color: #e62c2c;">AMD/ATI</span>'''<br />
| Открытый || {{Pkg|xf86-video-ati}} || {{Pkg|lib32-ati-dri}} || [[ATI]]<br />
|-<br />
| Проприетарный || {{Pkg|catalyst-dkms}} || {{Pkg|lib32-catalyst-utils}} || [[AMD Catalyst]]<br />
|-<br />
| bgcolor=#e3ecf7| '''<span style="color: #2a6dc8;">Intel</span>'''<br />
| Open source<br />
| {{Pkg|xf86-video-intel}} || {{Pkg|lib32-intel-dri}} || [[Intel Graphics]]<br />
|-<br />
| rowspan="4" bgcolor=#e3f7e6| '''<span style="color: #409044;">Nvidia</span>'''<br />
| rowspan="2"| Открытый<br />
| {{Pkg|xf86-video-nouveau}} || {{Pkg|lib32-nouveau-dri}} || [[Nouveau]]<br />
|-<br />
| {{Pkg|xf86-video-nv}} || – || (устаревший драйвер)<br />
|-<br />
| rowspan="2"| Проприетарный || {{Pkg|nvidia}} || {{Pkg|lib32-nvidia-utils}} || rowspan="2"| [[NVIDIA]]<br />
|-<br />
| {{Pkg|nvidia-304xx}} || {{Pkg|lib32-nvidia-304xx-utils}}<br />
|}<br />
<br />
=== Оконная система ===<br />
<br />
Система X Window (обычно именуемая X11, или X) - сетевой и оконный протокол, который обеспечивает отрисовку окон на растровых дисплеях. Это де-факто стандарт для внедрения графических интерефейсов пользователя (GUI). Обратитесь за более подробной информацией к статье [[Xorg]].<br />
<br />
[[Wayland]] - новый протокол оконной системы, но он находится на ранней стадии развития и в силу этого слабо поддерживается приложениями.<br />
<br />
=== Шрифты ===<br />
<br />
Вы по желанию можете установить набор шрифтов TrueType, поскольку по умолчанию в свежеустановленной системе будут только немасштабируемые шрифты. DejaVu - набор высококачественных неспециализированных шрифтов с хорошим покрытием таблицы [[Wikipedia:Unicode|Unicode]]:<br />
<br />
# pacman -S ttf-dejavu<br />
<br />
Обратитесь к статье [[Font Configuration]] за советами по настройке рендеринга шрифтов и к статье [[Fonts]] за инструкциями по выбору и установке шрифтов.<br />
<br />
== Приложение ==<br />
<br />
Обратитесь к статье [[List of Applications]] для просмотра списка приложений, которые могут вас заинтересовать.<br />
<br />
Также смотрите статью [[General Recommendations (Русский)| General Recommendations]], содержащую руководства по послеустановочной настройке системы, например, настройке тачпада или рендерингу шрифтов.</div>Nobushttps://wiki.archlinux.org/index.php?title=Installation_guide_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=251833Installation guide (Русский)2013-03-24T11:41:21Z<p>Nobus: /* Оконная система */</p>
<hr />
<div>[[Category:About Arch (Русский)]]<br />
[[Category:Getting and installing Arch (Русский)]]<br />
[[En:Installation_Guide]]<br />
[[de:Arch Install Scripts]]<br />
[[fr:Arch_install_scripts]]<br />
[[it:Installation Guide]]<br />
[[uk:Installation Guide]]<br />
[[zh-CN:Installation Guide]]<br />
[[zh-TW:Installation Guide]]<br />
Этот документ проведет вас через процесс установки [[Arch Linux (Русский)|Arch Linux]] c использованием [https://github.com/falconindy/arch-install-scripts Arch Install Scripts]. Рекомендуется перед установкой ознакомиться с [[FAQ (Русский)]]._<br />
Поддерживаемая сообществом [[Main Page (Русский)|вики Arch'а]] является превосходным ресурсом, к которому следует обращаться в первую очередь при возникновении каких-либо проблем. Если ответ на интересующий вас вопрос в другом месте не найден, доступны [[Wikipedia:IRC|IRC]]-канал (irc://irc.mibbit.net/#archlinux-ru) и [http://archlinux.org.ru/forum/ форумы]. Также обращайтесь к страницам руководств ({{ic|man}}) тех команд, с которыми вы незнакомы; обычно они вызываются при помощи {{ic|man ''command''}} (где ''command'' - имя интересующей вас команды).<br />
<br />
{{Tip|Новички могут обратиться к [[Beginners' Guide (Русский)|подробному руководству]] по установке.}}<br />
<br />
== Получение установочного образа ==<br />
Загрузите новый установочный образ диска Arch Linux с [https://www.archlinux.org/download/ соответствующей страницы] на главном сайте дистрибутива.<br />
* Предлагается единый установочный образ, с помощью которого вы сможете загрузиться как на i686, так и на x86_64 системах, чтобы провести установку по сети. Диск с репозиторием [core] для оффлайн-установки больше не доступен и не поддерживается.<br />
* Установочный образ подписан цифровой подписью, и вы можете проверить ее перед установкой командой {{bc|pacman-key -v <iso-file>.sig}}<br />
* Образ может быть записан на CD, смонтирован как iso-файл или записан на usb устройство (флешку) с помощью команды {{ic|dd}}. Он предназначен только для установки системы - обновление уже установленной системы производится стандартным способом, командой {{ic|pacman -Syu}}.<br />
<br />
== Установка ==<br />
<br />
=== Раскладка клавиатуры ===<br />
Для большинства стран и видов клавиатур уже доступны соответствующие раскладки, нужная из которых может быть выбрана командой, например {{ic|loadkeys ru}}. Другие раскладки можно найти в {{ic|/usr/share/kbd/keymaps/}} (можно не указывать полный путь и расширение файла с раскладкой при использовании команды loadkeys).<br />
<br />
=== Создание разделов ===<br />
Для подробностей обратитесь к разделу [[Partitioning]].<br />
<br />
При необходимости не забудьте создать [[lvm|LVM]], [[Dm-crypt_with_LUKS|LUKS]] или [[RAID|RAID]] устройства.<br />
<br />
=== Форматирование разделов ===<br />
Более подробно вы можете прочитать [[Format_a_device#Step_2:_create_the_new_file_system|здесь]].<br />
<br />
Если вы используете (U)EFI, вам, скорее всего, понадобится отдельный раздел для размещения служебного раздела UEFI. Подробнее можно прочитать [[Unified_Extensible_Firmware_Interface (Русский)#Создание UEFI раздела в Linux|здесь]].<br />
<br />
=== Монтирование разделов ===<br />
Как минимум, вы должны смонтировать корневой раздел в {{ic|/mnt}}. Например:<br />
# mount /dev/sda2 /mnt<br />
Если вы хотите, чтобы еще какие-либо разделы были автоматически учтены скриптом установки {{ic|genfstab}}, необходимо создать соответствующие директории внутри /mnt и смонтировать туда нужные разделы. Например для отдельных загрузочного и домашнего разделов:<br />
# mkdir /mnt/boot && mount /dev/sda1 /mnt/boot<br />
# mkdir /mnt/home && mount /dev/sda3 /mnt/home<br />
<br />
=== Подключение к интернету ===<br />
Сервис DHCP уже доступен для всех подходящих устройств. Для проводного подключения просто запустите {{ic|dhcpcd}}. Если вам необходимо установить статический IP или вы хотите использовать средства настройки наподобие [[Netcfg (Русский)#Настройка|Netcfg]], вам сначала надо остановить данный сервис: {{ic|systemctl stop dhcpcd.service}}. Для получения дополнительной информации обратитесь к [[Configuring Network (Русский)|руководству по настройке сети]].<br />
<br />
==== Беспроводное соединение ====<br />
Если у вас беспроводное соединение, запустите {{ic|wifi-menu}} для его настройки. Смотрите разделы [[Wireless Setup (Русский)|Wireless Setup]] и [[Netcfg (Русский)#Настройка|Netcfg]], чтобы определить, какие дополнительные драйверы требуются для вашего устройства.<br />
<br />
=== Установка базовой системы ===<br />
Перед началом установки вы, возможно, захотите отредактировать {{ic|/etc/pacman.d/mirrorlist}} для выбора подходящего зеркала. Это стоит сделать, поскольку копия данного файла будет также установлена в вашу систему с помощью {{ic|pacstrap}}.<br />
<br />
Скрипт [https://github.com/falconindy/arch-install-scripts/blob/master/pacstrap.in pacstrap] установит базовую систему. Группа пакетов ''base-devel'' должна также быть установлена, если вы собираетесь компилировать программы из [[Arch_User_Repository_(Русский)|AUR]] или с использованием [[Arch_Build_System_(Русский)|ABS]].<br />
<br />
# pacstrap /mnt base base-devel<br />
<br />
Также можно установить и другие пакеты, добавив их имена, разделенные пробелами, к команде выше.<br />
<br />
=== Установка загрузчика ===<br />
[[GRUB2 (Русский)|Grub]]<br />
<br />
* Для BIOS<br />
<br />
# arch-chroot /mnt pacman -S grub-bios<br />
<br />
* Для EFI (иногда вместо него нужно установить {{ic|grub-efi-i386}} )<br />
<br />
# arch-chroot /mnt pacman -S grub-efi-x86_64<br />
<br />
* Устанавливайте GRUB после выполнения chroot (обратитесь к разделу [[#Настройка системы|Настройка системы]] ниже).<br />
<br />
[[Syslinux|Syslinux]]<br />
<br />
# arch-chroot /mnt pacman -S syslinux<br />
<br />
=== Настройка системы ===<br />
Создайте [[fstab (Русский)|fstab]] следующей командой. (Если вы хотите использовать UUID или метки, используйте опции {{ic|-U}} или {{ic|-L}} соответственно.)<br />
# genfstab -p /mnt >> /mnt/etc/fstab<br />
Далее перейдите в свою установленную систему с помощью [[Change Root|chroot]].<br />
# arch-chroot /mnt<br />
<br />
* Укажите имя хоста в файле {{ic|/etc/hostname}}.<br />
* Создайте ссылку {{ic|/etc/localtime}} на {{ic|/usr/share/zoneinfo/Zone/SubZone}}. Где {{ic|Zone}} и {{ic|Subzone}} замените на то, что вам нужно. Например<br />
<br />
# ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime<br />
<br />
* Установите используемый в системе язык, настроив [[Locale (Русский)#Установка системной локали|locale]] в {{ic|/etc/locale.conf}}.<br />
<br />
* Раскомментируйте нужные [https://wiki.archlinux.org/index.php/Locale локали] в {{ic|/etc/locale.gen}} и сгенерируйте {{ic|locale-gen}}.<br />
* Настройте {{ic|/etc/mkinitcpio.conf}} как вам нужно (см. [[mkinitcpio (Русский)|mkinitcpio]]) и создайте ramdisk:<br />
<br />
# mkinitcpio -p linux<br />
<br />
* Настройте загрузчик.<br />
<br />
* Для syslinux отредактируйте {{ic|/boot/syslinux/syslinux.cfg}} и укажите нужный {{ic|/boot}} раздел. Далее введите следующую команду чтобы установить (-i), добавить загрузочный флаг (-a) и установить mbr (-m).<br />
<br />
# /usr/sbin/syslinux-install_update -iam<br />
<br />
* Для установки GRUB прочитайте статью [[GRUB2 (Русский)|GRUB]]<br />
* Установка GRUB на жесткий диск, содержащий /boot раздел<br />
<br />
# grub-install /dev/sda<br />
<br />
* Сгенерируйте конфигурационный файл {{ic|grub.cfg}}:<br />
<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
* Установите root пароль с помощью команды {{ic|passwd}}.<br />
<br />
=== Размонтирование разделов ===<br />
Если вы все еще в окружении chroot, введите {{ic|exit}} или нажмите {{ic|Ctrl+D}}.<br />
В шаге 3 мы смонтировали разделы в {{ic|/mnt}}. Теперь отмонтируем их. <br />
# umount /mnt/{boot,home,}<br />
<br />
== После установки ==<br />
<br />
=== Управление пользователями ===<br />
Добавьте добавьте необходимые вам аккаунты пользователей, как это описано на странице [[Users and Groups#User management|User management]]. Считается плохим выбором использование аккаунта суперпользователя для регулярной работы с системой, или подключения к ней через сервер [[SSH]]. Используйте аккаунт суперпользователя только для решения задач администрирования системы.<br />
<br />
=== Управление пакетами ===<br />
Смотрите статьи [[pacman (Русский)| pacman]] и [[FAQ#Package Management|FAQ: Package Management]] для получения ответов на вопросы, касающиеся установки, обновления и и управления пакетами.<br />
<br />
=== Управление сервисами ===<br />
<br />
Arch Linux использует [[systemd (Русский)| systemd]] в качестве системы инициализации и менеджера служб (сервисов) для Linux. Для обслуживания установленного Arch Linux было бы неплохо изучить основы данной системы. Взаимодействие с systemd происходит посредством команды {{ic|systemctl}}. Обратитесь к разделу [[systemd (Русский)#Основы использования systemctl| Основы использования systemctl]] для получения более подробной информации.<br />
<br />
=== Звук ===<br />
<br />
[[ALSA]] обычно работает "из коробки", только лишь требуется включить звук. Установите пакет {{Pkg|alsa-utils}} (который содержит утилиту {{ic|alsamixer}}) и следуйте инструкциям из [[Advanced Linux Sound Architecture#Unmuting the channels| данного раздела]].<br />
<br />
ALSA включена в ядро и рекомендуется к использованию. Если данная архитектура не работает, то работоспособной альтернативой является [[OSS]]. Если у вас повышенные требования к звуку, обратитесь к статье [[Sound system]] для просмотра различных вариантов решения.<br />
<br />
=== Video driver ===<br />
<br />
The Linux kernel includes open-source video drivers and support for hardware accelerated framebuffers. However, userland support is required for OpenGL and 2D acceleration in X11.<br />
<br />
If you don't know which video chipset is available on your machine, run:<br />
<br />
$ lspci | grep VGA<br />
<br />
For a complete list of open-source video drivers, search the package database:<br />
<br />
$ pacman -Ss xf86-video | less<br />
<br />
The {{ic|vesa}} driver is a generic mode-setting driver that will work with almost every GPU, but will not provide any 2D or 3D acceleration. If a better driver cannot be found or fails to load, Xorg will fall back to vesa. To install it:<br />
<br />
# pacman -S xf86-video-vesa<br />
<br />
In order for video acceleration to work, and often to expose all the modes that the GPU can set, a proper video driver is required:<br />
<br />
{| class="wikitable" style="text-align:center"<br />
|-<br />
! Brand !! Type !! Driver !! [[Multilib]] Package<br><span style="font-weight: normal;">(for 32-bit applications on Arch x86_64)</span> !! Documentation<br />
|-<br />
| rowspan="2" bgcolor=#f7e3e3| '''<span style="color: #e62c2c;">AMD/ATI</span>'''<br />
| Open source || {{Pkg|xf86-video-ati}} || {{Pkg|lib32-ati-dri}} || [[ATI]]<br />
|-<br />
| Proprietary || {{Pkg|catalyst-dkms}} || {{Pkg|lib32-catalyst-utils}} || [[AMD Catalyst]]<br />
|-<br />
| bgcolor=#e3ecf7| '''<span style="color: #2a6dc8;">Intel</span>'''<br />
| Open source<br />
| {{Pkg|xf86-video-intel}} || {{Pkg|lib32-intel-dri}} || [[Intel Graphics]]<br />
|-<br />
| rowspan="4" bgcolor=#e3f7e6| '''<span style="color: #409044;">Nvidia</span>'''<br />
| rowspan="2"| Open source<br />
| {{Pkg|xf86-video-nouveau}} || {{Pkg|lib32-nouveau-dri}} || [[Nouveau]]<br />
|-<br />
| {{Pkg|xf86-video-nv}} || – || (legacy driver)<br />
|-<br />
| rowspan="2"| Proprietary || {{Pkg|nvidia}} || {{Pkg|lib32-nvidia-utils}} || rowspan="2"| [[NVIDIA]]<br />
|-<br />
| {{Pkg|nvidia-304xx}} || {{Pkg|lib32-nvidia-304xx-utils}}<br />
|}<br />
<br />
=== Оконная система ===<br />
<br />
Система X Window (обычно именуемая X11, или X) - сетевой и оконный протокол, который обеспечивает отрисовку окон на растровых дисплеях. Это де-факто стандарт для внедрения графических интерефейсов пользователя (GUI). Обратитесь за более подробной информацией к статье [[Xorg]].<br />
<br />
[[Wayland]] - новый протокол оконной системы, но он находится на ранней стадии развития и в силу этого слабо поддерживается приложениями.<br />
<br />
=== Шрифты ===<br />
<br />
Вы по желанию можете установить набор шрифтов TrueType, поскольку по умолчанию в свежеустановленной системе будут только немасштабируемые шрифты. DejaVu - набор высококачественных неспециализированных шрифтов с хорошим покрытием таблицы [[Wikipedia:Unicode|Unicode]]:<br />
<br />
# pacman -S ttf-dejavu<br />
<br />
Обратитесь к статье [[Font Configuration]] за советами по настройке рендеринга шрифтов и к статье [[Fonts]] за инструкциями по выбору и установке шрифтов.<br />
<br />
== Приложение ==<br />
<br />
Обратитесь к статье [[List of Applications]] для просмотра списка приложений, которые могут вас заинтересовать.<br />
<br />
Также смотрите статью [[General Recommendations (Русский)| General Recommendations]], содержащую руководства по послеустановочной настройке системы, например, настройке тачпада или рендерингу шрифтов.</div>Nobushttps://wiki.archlinux.org/index.php?title=Installation_guide_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=251832Installation guide (Русский)2013-03-24T11:41:06Z<p>Nobus: /* оконная система */</p>
<hr />
<div>[[Category:About Arch (Русский)]]<br />
[[Category:Getting and installing Arch (Русский)]]<br />
[[En:Installation_Guide]]<br />
[[de:Arch Install Scripts]]<br />
[[fr:Arch_install_scripts]]<br />
[[it:Installation Guide]]<br />
[[uk:Installation Guide]]<br />
[[zh-CN:Installation Guide]]<br />
[[zh-TW:Installation Guide]]<br />
Этот документ проведет вас через процесс установки [[Arch Linux (Русский)|Arch Linux]] c использованием [https://github.com/falconindy/arch-install-scripts Arch Install Scripts]. Рекомендуется перед установкой ознакомиться с [[FAQ (Русский)]]._<br />
Поддерживаемая сообществом [[Main Page (Русский)|вики Arch'а]] является превосходным ресурсом, к которому следует обращаться в первую очередь при возникновении каких-либо проблем. Если ответ на интересующий вас вопрос в другом месте не найден, доступны [[Wikipedia:IRC|IRC]]-канал (irc://irc.mibbit.net/#archlinux-ru) и [http://archlinux.org.ru/forum/ форумы]. Также обращайтесь к страницам руководств ({{ic|man}}) тех команд, с которыми вы незнакомы; обычно они вызываются при помощи {{ic|man ''command''}} (где ''command'' - имя интересующей вас команды).<br />
<br />
{{Tip|Новички могут обратиться к [[Beginners' Guide (Русский)|подробному руководству]] по установке.}}<br />
<br />
== Получение установочного образа ==<br />
Загрузите новый установочный образ диска Arch Linux с [https://www.archlinux.org/download/ соответствующей страницы] на главном сайте дистрибутива.<br />
* Предлагается единый установочный образ, с помощью которого вы сможете загрузиться как на i686, так и на x86_64 системах, чтобы провести установку по сети. Диск с репозиторием [core] для оффлайн-установки больше не доступен и не поддерживается.<br />
* Установочный образ подписан цифровой подписью, и вы можете проверить ее перед установкой командой {{bc|pacman-key -v <iso-file>.sig}}<br />
* Образ может быть записан на CD, смонтирован как iso-файл или записан на usb устройство (флешку) с помощью команды {{ic|dd}}. Он предназначен только для установки системы - обновление уже установленной системы производится стандартным способом, командой {{ic|pacman -Syu}}.<br />
<br />
== Установка ==<br />
<br />
=== Раскладка клавиатуры ===<br />
Для большинства стран и видов клавиатур уже доступны соответствующие раскладки, нужная из которых может быть выбрана командой, например {{ic|loadkeys ru}}. Другие раскладки можно найти в {{ic|/usr/share/kbd/keymaps/}} (можно не указывать полный путь и расширение файла с раскладкой при использовании команды loadkeys).<br />
<br />
=== Создание разделов ===<br />
Для подробностей обратитесь к разделу [[Partitioning]].<br />
<br />
При необходимости не забудьте создать [[lvm|LVM]], [[Dm-crypt_with_LUKS|LUKS]] или [[RAID|RAID]] устройства.<br />
<br />
=== Форматирование разделов ===<br />
Более подробно вы можете прочитать [[Format_a_device#Step_2:_create_the_new_file_system|здесь]].<br />
<br />
Если вы используете (U)EFI, вам, скорее всего, понадобится отдельный раздел для размещения служебного раздела UEFI. Подробнее можно прочитать [[Unified_Extensible_Firmware_Interface (Русский)#Создание UEFI раздела в Linux|здесь]].<br />
<br />
=== Монтирование разделов ===<br />
Как минимум, вы должны смонтировать корневой раздел в {{ic|/mnt}}. Например:<br />
# mount /dev/sda2 /mnt<br />
Если вы хотите, чтобы еще какие-либо разделы были автоматически учтены скриптом установки {{ic|genfstab}}, необходимо создать соответствующие директории внутри /mnt и смонтировать туда нужные разделы. Например для отдельных загрузочного и домашнего разделов:<br />
# mkdir /mnt/boot && mount /dev/sda1 /mnt/boot<br />
# mkdir /mnt/home && mount /dev/sda3 /mnt/home<br />
<br />
=== Подключение к интернету ===<br />
Сервис DHCP уже доступен для всех подходящих устройств. Для проводного подключения просто запустите {{ic|dhcpcd}}. Если вам необходимо установить статический IP или вы хотите использовать средства настройки наподобие [[Netcfg (Русский)#Настройка|Netcfg]], вам сначала надо остановить данный сервис: {{ic|systemctl stop dhcpcd.service}}. Для получения дополнительной информации обратитесь к [[Configuring Network (Русский)|руководству по настройке сети]].<br />
<br />
==== Беспроводное соединение ====<br />
Если у вас беспроводное соединение, запустите {{ic|wifi-menu}} для его настройки. Смотрите разделы [[Wireless Setup (Русский)|Wireless Setup]] и [[Netcfg (Русский)#Настройка|Netcfg]], чтобы определить, какие дополнительные драйверы требуются для вашего устройства.<br />
<br />
=== Установка базовой системы ===<br />
Перед началом установки вы, возможно, захотите отредактировать {{ic|/etc/pacman.d/mirrorlist}} для выбора подходящего зеркала. Это стоит сделать, поскольку копия данного файла будет также установлена в вашу систему с помощью {{ic|pacstrap}}.<br />
<br />
Скрипт [https://github.com/falconindy/arch-install-scripts/blob/master/pacstrap.in pacstrap] установит базовую систему. Группа пакетов ''base-devel'' должна также быть установлена, если вы собираетесь компилировать программы из [[Arch_User_Repository_(Русский)|AUR]] или с использованием [[Arch_Build_System_(Русский)|ABS]].<br />
<br />
# pacstrap /mnt base base-devel<br />
<br />
Также можно установить и другие пакеты, добавив их имена, разделенные пробелами, к команде выше.<br />
<br />
=== Установка загрузчика ===<br />
[[GRUB2 (Русский)|Grub]]<br />
<br />
* Для BIOS<br />
<br />
# arch-chroot /mnt pacman -S grub-bios<br />
<br />
* Для EFI (иногда вместо него нужно установить {{ic|grub-efi-i386}} )<br />
<br />
# arch-chroot /mnt pacman -S grub-efi-x86_64<br />
<br />
* Устанавливайте GRUB после выполнения chroot (обратитесь к разделу [[#Настройка системы|Настройка системы]] ниже).<br />
<br />
[[Syslinux|Syslinux]]<br />
<br />
# arch-chroot /mnt pacman -S syslinux<br />
<br />
=== Настройка системы ===<br />
Создайте [[fstab (Русский)|fstab]] следующей командой. (Если вы хотите использовать UUID или метки, используйте опции {{ic|-U}} или {{ic|-L}} соответственно.)<br />
# genfstab -p /mnt >> /mnt/etc/fstab<br />
Далее перейдите в свою установленную систему с помощью [[Change Root|chroot]].<br />
# arch-chroot /mnt<br />
<br />
* Укажите имя хоста в файле {{ic|/etc/hostname}}.<br />
* Создайте ссылку {{ic|/etc/localtime}} на {{ic|/usr/share/zoneinfo/Zone/SubZone}}. Где {{ic|Zone}} и {{ic|Subzone}} замените на то, что вам нужно. Например<br />
<br />
# ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime<br />
<br />
* Установите используемый в системе язык, настроив [[Locale (Русский)#Установка системной локали|locale]] в {{ic|/etc/locale.conf}}.<br />
<br />
* Раскомментируйте нужные [https://wiki.archlinux.org/index.php/Locale локали] в {{ic|/etc/locale.gen}} и сгенерируйте {{ic|locale-gen}}.<br />
* Настройте {{ic|/etc/mkinitcpio.conf}} как вам нужно (см. [[mkinitcpio (Русский)|mkinitcpio]]) и создайте ramdisk:<br />
<br />
# mkinitcpio -p linux<br />
<br />
* Настройте загрузчик.<br />
<br />
* Для syslinux отредактируйте {{ic|/boot/syslinux/syslinux.cfg}} и укажите нужный {{ic|/boot}} раздел. Далее введите следующую команду чтобы установить (-i), добавить загрузочный флаг (-a) и установить mbr (-m).<br />
<br />
# /usr/sbin/syslinux-install_update -iam<br />
<br />
* Для установки GRUB прочитайте статью [[GRUB2 (Русский)|GRUB]]<br />
* Установка GRUB на жесткий диск, содержащий /boot раздел<br />
<br />
# grub-install /dev/sda<br />
<br />
* Сгенерируйте конфигурационный файл {{ic|grub.cfg}}:<br />
<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
* Установите root пароль с помощью команды {{ic|passwd}}.<br />
<br />
=== Размонтирование разделов ===<br />
Если вы все еще в окружении chroot, введите {{ic|exit}} или нажмите {{ic|Ctrl+D}}.<br />
В шаге 3 мы смонтировали разделы в {{ic|/mnt}}. Теперь отмонтируем их. <br />
# umount /mnt/{boot,home,}<br />
<br />
== После установки ==<br />
<br />
=== Управление пользователями ===<br />
Добавьте добавьте необходимые вам аккаунты пользователей, как это описано на странице [[Users and Groups#User management|User management]]. Считается плохим выбором использование аккаунта суперпользователя для регулярной работы с системой, или подключения к ней через сервер [[SSH]]. Используйте аккаунт суперпользователя только для решения задач администрирования системы.<br />
<br />
=== Управление пакетами ===<br />
Смотрите статьи [[pacman (Русский)| pacman]] и [[FAQ#Package Management|FAQ: Package Management]] для получения ответов на вопросы, касающиеся установки, обновления и и управления пакетами.<br />
<br />
=== Управление сервисами ===<br />
<br />
Arch Linux использует [[systemd (Русский)| systemd]] в качестве системы инициализации и менеджера служб (сервисов) для Linux. Для обслуживания установленного Arch Linux было бы неплохо изучить основы данной системы. Взаимодействие с systemd происходит посредством команды {{ic|systemctl}}. Обратитесь к разделу [[systemd (Русский)#Основы использования systemctl| Основы использования systemctl]] для получения более подробной информации.<br />
<br />
=== Звук ===<br />
<br />
[[ALSA]] обычно работает "из коробки", только лишь требуется включить звук. Установите пакет {{Pkg|alsa-utils}} (который содержит утилиту {{ic|alsamixer}}) и следуйте инструкциям из [[Advanced Linux Sound Architecture#Unmuting the channels| данного раздела]].<br />
<br />
ALSA включена в ядро и рекомендуется к использованию. Если данная архитектура не работает, то работоспособной альтернативой является [[OSS]]. Если у вас повышенные требования к звуку, обратитесь к статье [[Sound system]] для просмотра различных вариантов решения.<br />
<br />
=== Video driver ===<br />
<br />
The Linux kernel includes open-source video drivers and support for hardware accelerated framebuffers. However, userland support is required for OpenGL and 2D acceleration in X11.<br />
<br />
If you don't know which video chipset is available on your machine, run:<br />
<br />
$ lspci | grep VGA<br />
<br />
For a complete list of open-source video drivers, search the package database:<br />
<br />
$ pacman -Ss xf86-video | less<br />
<br />
The {{ic|vesa}} driver is a generic mode-setting driver that will work with almost every GPU, but will not provide any 2D or 3D acceleration. If a better driver cannot be found or fails to load, Xorg will fall back to vesa. To install it:<br />
<br />
# pacman -S xf86-video-vesa<br />
<br />
In order for video acceleration to work, and often to expose all the modes that the GPU can set, a proper video driver is required:<br />
<br />
{| class="wikitable" style="text-align:center"<br />
|-<br />
! Brand !! Type !! Driver !! [[Multilib]] Package<br><span style="font-weight: normal;">(for 32-bit applications on Arch x86_64)</span> !! Documentation<br />
|-<br />
| rowspan="2" bgcolor=#f7e3e3| '''<span style="color: #e62c2c;">AMD/ATI</span>'''<br />
| Open source || {{Pkg|xf86-video-ati}} || {{Pkg|lib32-ati-dri}} || [[ATI]]<br />
|-<br />
| Proprietary || {{Pkg|catalyst-dkms}} || {{Pkg|lib32-catalyst-utils}} || [[AMD Catalyst]]<br />
|-<br />
| bgcolor=#e3ecf7| '''<span style="color: #2a6dc8;">Intel</span>'''<br />
| Open source<br />
| {{Pkg|xf86-video-intel}} || {{Pkg|lib32-intel-dri}} || [[Intel Graphics]]<br />
|-<br />
| rowspan="4" bgcolor=#e3f7e6| '''<span style="color: #409044;">Nvidia</span>'''<br />
| rowspan="2"| Open source<br />
| {{Pkg|xf86-video-nouveau}} || {{Pkg|lib32-nouveau-dri}} || [[Nouveau]]<br />
|-<br />
| {{Pkg|xf86-video-nv}} || – || (legacy driver)<br />
|-<br />
| rowspan="2"| Proprietary || {{Pkg|nvidia}} || {{Pkg|lib32-nvidia-utils}} || rowspan="2"| [[NVIDIA]]<br />
|-<br />
| {{Pkg|nvidia-304xx}} || {{Pkg|lib32-nvidia-304xx-utils}}<br />
|}<br />
<br />
=== Оконная система ===<br />
<br />
Система X Window (comобычно именуемая X11, или X) - сетевой и оконный протокол, который обеспечивает отрисовку окон на растровых дисплеях. Это де-факто стандарт для внедрения графических интерефейсов пользователя (GUI). Обратитесь за более подробной информацией к статье [[Xorg]].<br />
<br />
[[Wayland]] - новый протокол оконной системы, но он находится на ранней стадии развития и в силу этого слабо поддерживается приложениями.<br />
<br />
=== Шрифты ===<br />
<br />
Вы по желанию можете установить набор шрифтов TrueType, поскольку по умолчанию в свежеустановленной системе будут только немасштабируемые шрифты. DejaVu - набор высококачественных неспециализированных шрифтов с хорошим покрытием таблицы [[Wikipedia:Unicode|Unicode]]:<br />
<br />
# pacman -S ttf-dejavu<br />
<br />
Обратитесь к статье [[Font Configuration]] за советами по настройке рендеринга шрифтов и к статье [[Fonts]] за инструкциями по выбору и установке шрифтов.<br />
<br />
== Приложение ==<br />
<br />
Обратитесь к статье [[List of Applications]] для просмотра списка приложений, которые могут вас заинтересовать.<br />
<br />
Также смотрите статью [[General Recommendations (Русский)| General Recommendations]], содержащую руководства по послеустановочной настройке системы, например, настройке тачпада или рендерингу шрифтов.</div>Nobushttps://wiki.archlinux.org/index.php?title=Installation_guide_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=251831Installation guide (Русский)2013-03-24T11:40:57Z<p>Nobus: /* Display server */</p>
<hr />
<div>[[Category:About Arch (Русский)]]<br />
[[Category:Getting and installing Arch (Русский)]]<br />
[[En:Installation_Guide]]<br />
[[de:Arch Install Scripts]]<br />
[[fr:Arch_install_scripts]]<br />
[[it:Installation Guide]]<br />
[[uk:Installation Guide]]<br />
[[zh-CN:Installation Guide]]<br />
[[zh-TW:Installation Guide]]<br />
Этот документ проведет вас через процесс установки [[Arch Linux (Русский)|Arch Linux]] c использованием [https://github.com/falconindy/arch-install-scripts Arch Install Scripts]. Рекомендуется перед установкой ознакомиться с [[FAQ (Русский)]]._<br />
Поддерживаемая сообществом [[Main Page (Русский)|вики Arch'а]] является превосходным ресурсом, к которому следует обращаться в первую очередь при возникновении каких-либо проблем. Если ответ на интересующий вас вопрос в другом месте не найден, доступны [[Wikipedia:IRC|IRC]]-канал (irc://irc.mibbit.net/#archlinux-ru) и [http://archlinux.org.ru/forum/ форумы]. Также обращайтесь к страницам руководств ({{ic|man}}) тех команд, с которыми вы незнакомы; обычно они вызываются при помощи {{ic|man ''command''}} (где ''command'' - имя интересующей вас команды).<br />
<br />
{{Tip|Новички могут обратиться к [[Beginners' Guide (Русский)|подробному руководству]] по установке.}}<br />
<br />
== Получение установочного образа ==<br />
Загрузите новый установочный образ диска Arch Linux с [https://www.archlinux.org/download/ соответствующей страницы] на главном сайте дистрибутива.<br />
* Предлагается единый установочный образ, с помощью которого вы сможете загрузиться как на i686, так и на x86_64 системах, чтобы провести установку по сети. Диск с репозиторием [core] для оффлайн-установки больше не доступен и не поддерживается.<br />
* Установочный образ подписан цифровой подписью, и вы можете проверить ее перед установкой командой {{bc|pacman-key -v <iso-file>.sig}}<br />
* Образ может быть записан на CD, смонтирован как iso-файл или записан на usb устройство (флешку) с помощью команды {{ic|dd}}. Он предназначен только для установки системы - обновление уже установленной системы производится стандартным способом, командой {{ic|pacman -Syu}}.<br />
<br />
== Установка ==<br />
<br />
=== Раскладка клавиатуры ===<br />
Для большинства стран и видов клавиатур уже доступны соответствующие раскладки, нужная из которых может быть выбрана командой, например {{ic|loadkeys ru}}. Другие раскладки можно найти в {{ic|/usr/share/kbd/keymaps/}} (можно не указывать полный путь и расширение файла с раскладкой при использовании команды loadkeys).<br />
<br />
=== Создание разделов ===<br />
Для подробностей обратитесь к разделу [[Partitioning]].<br />
<br />
При необходимости не забудьте создать [[lvm|LVM]], [[Dm-crypt_with_LUKS|LUKS]] или [[RAID|RAID]] устройства.<br />
<br />
=== Форматирование разделов ===<br />
Более подробно вы можете прочитать [[Format_a_device#Step_2:_create_the_new_file_system|здесь]].<br />
<br />
Если вы используете (U)EFI, вам, скорее всего, понадобится отдельный раздел для размещения служебного раздела UEFI. Подробнее можно прочитать [[Unified_Extensible_Firmware_Interface (Русский)#Создание UEFI раздела в Linux|здесь]].<br />
<br />
=== Монтирование разделов ===<br />
Как минимум, вы должны смонтировать корневой раздел в {{ic|/mnt}}. Например:<br />
# mount /dev/sda2 /mnt<br />
Если вы хотите, чтобы еще какие-либо разделы были автоматически учтены скриптом установки {{ic|genfstab}}, необходимо создать соответствующие директории внутри /mnt и смонтировать туда нужные разделы. Например для отдельных загрузочного и домашнего разделов:<br />
# mkdir /mnt/boot && mount /dev/sda1 /mnt/boot<br />
# mkdir /mnt/home && mount /dev/sda3 /mnt/home<br />
<br />
=== Подключение к интернету ===<br />
Сервис DHCP уже доступен для всех подходящих устройств. Для проводного подключения просто запустите {{ic|dhcpcd}}. Если вам необходимо установить статический IP или вы хотите использовать средства настройки наподобие [[Netcfg (Русский)#Настройка|Netcfg]], вам сначала надо остановить данный сервис: {{ic|systemctl stop dhcpcd.service}}. Для получения дополнительной информации обратитесь к [[Configuring Network (Русский)|руководству по настройке сети]].<br />
<br />
==== Беспроводное соединение ====<br />
Если у вас беспроводное соединение, запустите {{ic|wifi-menu}} для его настройки. Смотрите разделы [[Wireless Setup (Русский)|Wireless Setup]] и [[Netcfg (Русский)#Настройка|Netcfg]], чтобы определить, какие дополнительные драйверы требуются для вашего устройства.<br />
<br />
=== Установка базовой системы ===<br />
Перед началом установки вы, возможно, захотите отредактировать {{ic|/etc/pacman.d/mirrorlist}} для выбора подходящего зеркала. Это стоит сделать, поскольку копия данного файла будет также установлена в вашу систему с помощью {{ic|pacstrap}}.<br />
<br />
Скрипт [https://github.com/falconindy/arch-install-scripts/blob/master/pacstrap.in pacstrap] установит базовую систему. Группа пакетов ''base-devel'' должна также быть установлена, если вы собираетесь компилировать программы из [[Arch_User_Repository_(Русский)|AUR]] или с использованием [[Arch_Build_System_(Русский)|ABS]].<br />
<br />
# pacstrap /mnt base base-devel<br />
<br />
Также можно установить и другие пакеты, добавив их имена, разделенные пробелами, к команде выше.<br />
<br />
=== Установка загрузчика ===<br />
[[GRUB2 (Русский)|Grub]]<br />
<br />
* Для BIOS<br />
<br />
# arch-chroot /mnt pacman -S grub-bios<br />
<br />
* Для EFI (иногда вместо него нужно установить {{ic|grub-efi-i386}} )<br />
<br />
# arch-chroot /mnt pacman -S grub-efi-x86_64<br />
<br />
* Устанавливайте GRUB после выполнения chroot (обратитесь к разделу [[#Настройка системы|Настройка системы]] ниже).<br />
<br />
[[Syslinux|Syslinux]]<br />
<br />
# arch-chroot /mnt pacman -S syslinux<br />
<br />
=== Настройка системы ===<br />
Создайте [[fstab (Русский)|fstab]] следующей командой. (Если вы хотите использовать UUID или метки, используйте опции {{ic|-U}} или {{ic|-L}} соответственно.)<br />
# genfstab -p /mnt >> /mnt/etc/fstab<br />
Далее перейдите в свою установленную систему с помощью [[Change Root|chroot]].<br />
# arch-chroot /mnt<br />
<br />
* Укажите имя хоста в файле {{ic|/etc/hostname}}.<br />
* Создайте ссылку {{ic|/etc/localtime}} на {{ic|/usr/share/zoneinfo/Zone/SubZone}}. Где {{ic|Zone}} и {{ic|Subzone}} замените на то, что вам нужно. Например<br />
<br />
# ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime<br />
<br />
* Установите используемый в системе язык, настроив [[Locale (Русский)#Установка системной локали|locale]] в {{ic|/etc/locale.conf}}.<br />
<br />
* Раскомментируйте нужные [https://wiki.archlinux.org/index.php/Locale локали] в {{ic|/etc/locale.gen}} и сгенерируйте {{ic|locale-gen}}.<br />
* Настройте {{ic|/etc/mkinitcpio.conf}} как вам нужно (см. [[mkinitcpio (Русский)|mkinitcpio]]) и создайте ramdisk:<br />
<br />
# mkinitcpio -p linux<br />
<br />
* Настройте загрузчик.<br />
<br />
* Для syslinux отредактируйте {{ic|/boot/syslinux/syslinux.cfg}} и укажите нужный {{ic|/boot}} раздел. Далее введите следующую команду чтобы установить (-i), добавить загрузочный флаг (-a) и установить mbr (-m).<br />
<br />
# /usr/sbin/syslinux-install_update -iam<br />
<br />
* Для установки GRUB прочитайте статью [[GRUB2 (Русский)|GRUB]]<br />
* Установка GRUB на жесткий диск, содержащий /boot раздел<br />
<br />
# grub-install /dev/sda<br />
<br />
* Сгенерируйте конфигурационный файл {{ic|grub.cfg}}:<br />
<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
* Установите root пароль с помощью команды {{ic|passwd}}.<br />
<br />
=== Размонтирование разделов ===<br />
Если вы все еще в окружении chroot, введите {{ic|exit}} или нажмите {{ic|Ctrl+D}}.<br />
В шаге 3 мы смонтировали разделы в {{ic|/mnt}}. Теперь отмонтируем их. <br />
# umount /mnt/{boot,home,}<br />
<br />
== После установки ==<br />
<br />
=== Управление пользователями ===<br />
Добавьте добавьте необходимые вам аккаунты пользователей, как это описано на странице [[Users and Groups#User management|User management]]. Считается плохим выбором использование аккаунта суперпользователя для регулярной работы с системой, или подключения к ней через сервер [[SSH]]. Используйте аккаунт суперпользователя только для решения задач администрирования системы.<br />
<br />
=== Управление пакетами ===<br />
Смотрите статьи [[pacman (Русский)| pacman]] и [[FAQ#Package Management|FAQ: Package Management]] для получения ответов на вопросы, касающиеся установки, обновления и и управления пакетами.<br />
<br />
=== Управление сервисами ===<br />
<br />
Arch Linux использует [[systemd (Русский)| systemd]] в качестве системы инициализации и менеджера служб (сервисов) для Linux. Для обслуживания установленного Arch Linux было бы неплохо изучить основы данной системы. Взаимодействие с systemd происходит посредством команды {{ic|systemctl}}. Обратитесь к разделу [[systemd (Русский)#Основы использования systemctl| Основы использования systemctl]] для получения более подробной информации.<br />
<br />
=== Звук ===<br />
<br />
[[ALSA]] обычно работает "из коробки", только лишь требуется включить звук. Установите пакет {{Pkg|alsa-utils}} (который содержит утилиту {{ic|alsamixer}}) и следуйте инструкциям из [[Advanced Linux Sound Architecture#Unmuting the channels| данного раздела]].<br />
<br />
ALSA включена в ядро и рекомендуется к использованию. Если данная архитектура не работает, то работоспособной альтернативой является [[OSS]]. Если у вас повышенные требования к звуку, обратитесь к статье [[Sound system]] для просмотра различных вариантов решения.<br />
<br />
=== Video driver ===<br />
<br />
The Linux kernel includes open-source video drivers and support for hardware accelerated framebuffers. However, userland support is required for OpenGL and 2D acceleration in X11.<br />
<br />
If you don't know which video chipset is available on your machine, run:<br />
<br />
$ lspci | grep VGA<br />
<br />
For a complete list of open-source video drivers, search the package database:<br />
<br />
$ pacman -Ss xf86-video | less<br />
<br />
The {{ic|vesa}} driver is a generic mode-setting driver that will work with almost every GPU, but will not provide any 2D or 3D acceleration. If a better driver cannot be found or fails to load, Xorg will fall back to vesa. To install it:<br />
<br />
# pacman -S xf86-video-vesa<br />
<br />
In order for video acceleration to work, and often to expose all the modes that the GPU can set, a proper video driver is required:<br />
<br />
{| class="wikitable" style="text-align:center"<br />
|-<br />
! Brand !! Type !! Driver !! [[Multilib]] Package<br><span style="font-weight: normal;">(for 32-bit applications on Arch x86_64)</span> !! Documentation<br />
|-<br />
| rowspan="2" bgcolor=#f7e3e3| '''<span style="color: #e62c2c;">AMD/ATI</span>'''<br />
| Open source || {{Pkg|xf86-video-ati}} || {{Pkg|lib32-ati-dri}} || [[ATI]]<br />
|-<br />
| Proprietary || {{Pkg|catalyst-dkms}} || {{Pkg|lib32-catalyst-utils}} || [[AMD Catalyst]]<br />
|-<br />
| bgcolor=#e3ecf7| '''<span style="color: #2a6dc8;">Intel</span>'''<br />
| Open source<br />
| {{Pkg|xf86-video-intel}} || {{Pkg|lib32-intel-dri}} || [[Intel Graphics]]<br />
|-<br />
| rowspan="4" bgcolor=#e3f7e6| '''<span style="color: #409044;">Nvidia</span>'''<br />
| rowspan="2"| Open source<br />
| {{Pkg|xf86-video-nouveau}} || {{Pkg|lib32-nouveau-dri}} || [[Nouveau]]<br />
|-<br />
| {{Pkg|xf86-video-nv}} || – || (legacy driver)<br />
|-<br />
| rowspan="2"| Proprietary || {{Pkg|nvidia}} || {{Pkg|lib32-nvidia-utils}} || rowspan="2"| [[NVIDIA]]<br />
|-<br />
| {{Pkg|nvidia-304xx}} || {{Pkg|lib32-nvidia-304xx-utils}}<br />
|}<br />
<br />
=== оконная система ===<br />
<br />
Система X Window (comобычно именуемая X11, или X) - сетевой и оконный протокол, который обеспечивает отрисовку окон на растровых дисплеях. Это де-факто стандарт для внедрения графических интерефейсов пользователя (GUI). Обратитесь за более подробной информацией к статье [[Xorg]].<br />
<br />
[[Wayland]] - новый протокол оконной системы, но он находится на ранней стадии развития и в силу этого слабо поддерживается приложениями.<br />
<br />
=== Шрифты ===<br />
<br />
Вы по желанию можете установить набор шрифтов TrueType, поскольку по умолчанию в свежеустановленной системе будут только немасштабируемые шрифты. DejaVu - набор высококачественных неспециализированных шрифтов с хорошим покрытием таблицы [[Wikipedia:Unicode|Unicode]]:<br />
<br />
# pacman -S ttf-dejavu<br />
<br />
Обратитесь к статье [[Font Configuration]] за советами по настройке рендеринга шрифтов и к статье [[Fonts]] за инструкциями по выбору и установке шрифтов.<br />
<br />
== Приложение ==<br />
<br />
Обратитесь к статье [[List of Applications]] для просмотра списка приложений, которые могут вас заинтересовать.<br />
<br />
Также смотрите статью [[General Recommendations (Русский)| General Recommendations]], содержащую руководства по послеустановочной настройке системы, например, настройке тачпада или рендерингу шрифтов.</div>Nobushttps://wiki.archlinux.org/index.php?title=Installation_guide_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=251822Installation guide (Русский)2013-03-24T11:24:52Z<p>Nobus: /* Pder */</p>
<hr />
<div>[[Category:About Arch (Русский)]]<br />
[[Category:Getting and installing Arch (Русский)]]<br />
[[En:Installation_Guide]]<br />
[[de:Arch Install Scripts]]<br />
[[fr:Arch_install_scripts]]<br />
[[it:Installation Guide]]<br />
[[uk:Installation Guide]]<br />
[[zh-CN:Installation Guide]]<br />
[[zh-TW:Installation Guide]]<br />
Этот документ проведет вас через процесс установки [[Arch Linux (Русский)|Arch Linux]] c использованием [https://github.com/falconindy/arch-install-scripts Arch Install Scripts]. Рекомендуется перед установкой ознакомиться с [[FAQ (Русский)]]._<br />
Поддерживаемая сообществом [[Main Page (Русский)|вики Arch'а]] является превосходным ресурсом, к которому следует обращаться в первую очередь при возникновении каких-либо проблем. Если ответ на интересующий вас вопрос в другом месте не найден, доступны [[Wikipedia:IRC|IRC]]-канал (irc://irc.mibbit.net/#archlinux-ru) и [http://archlinux.org.ru/forum/ форумы]. Также обращайтесь к страницам руководств ({{ic|man}}) тех команд, с которыми вы незнакомы; обычно они вызываются при помощи {{ic|man ''command''}} (где ''command'' - имя интересующей вас команды).<br />
<br />
{{Tip|Новички могут обратиться к [[Beginners' Guide (Русский)|подробному руководству]] по установке.}}<br />
<br />
== Получение установочного образа ==<br />
Загрузите новый установочный образ диска Arch Linux с [https://www.archlinux.org/download/ соответствующей страницы] на главном сайте дистрибутива.<br />
* Предлагается единый установочный образ, с помощью которого вы сможете загрузиться как на i686, так и на x86_64 системах, чтобы провести установку по сети. Диск с репозиторием [core] для оффлайн-установки больше не доступен и не поддерживается.<br />
* Установочный образ подписан цифровой подписью, и вы можете проверить ее перед установкой командой {{bc|pacman-key -v <iso-file>.sig}}<br />
* Образ может быть записан на CD, смонтирован как iso-файл или записан на usb устройство (флешку) с помощью команды {{ic|dd}}. Он предназначен только для установки системы - обновление уже установленной системы производится стандартным способом, командой {{ic|pacman -Syu}}.<br />
<br />
== Установка ==<br />
<br />
=== Раскладка клавиатуры ===<br />
Для большинства стран и видов клавиатур уже доступны соответствующие раскладки, нужная из которых может быть выбрана командой, например {{ic|loadkeys ru}}. Другие раскладки можно найти в {{ic|/usr/share/kbd/keymaps/}} (можно не указывать полный путь и расширение файла с раскладкой при использовании команды loadkeys).<br />
<br />
=== Создание разделов ===<br />
Для подробностей обратитесь к разделу [[Partitioning]].<br />
<br />
При необходимости не забудьте создать [[lvm|LVM]], [[Dm-crypt_with_LUKS|LUKS]] или [[RAID|RAID]] устройства.<br />
<br />
=== Форматирование разделов ===<br />
Более подробно вы можете прочитать [[Format_a_device#Step_2:_create_the_new_file_system|здесь]].<br />
<br />
Если вы используете (U)EFI, вам, скорее всего, понадобится отдельный раздел для размещения служебного раздела UEFI. Подробнее можно прочитать [[Unified_Extensible_Firmware_Interface (Русский)#Создание UEFI раздела в Linux|здесь]].<br />
<br />
=== Монтирование разделов ===<br />
Как минимум, вы должны смонтировать корневой раздел в {{ic|/mnt}}. Например:<br />
# mount /dev/sda2 /mnt<br />
Если вы хотите, чтобы еще какие-либо разделы были автоматически учтены скриптом установки {{ic|genfstab}}, необходимо создать соответствующие директории внутри /mnt и смонтировать туда нужные разделы. Например для отдельных загрузочного и домашнего разделов:<br />
# mkdir /mnt/boot && mount /dev/sda1 /mnt/boot<br />
# mkdir /mnt/home && mount /dev/sda3 /mnt/home<br />
<br />
=== Подключение к интернету ===<br />
Сервис DHCP уже доступен для всех подходящих устройств. Для проводного подключения просто запустите {{ic|dhcpcd}}. Если вам необходимо установить статический IP или вы хотите использовать средства настройки наподобие [[Netcfg (Русский)#Настройка|Netcfg]], вам сначала надо остановить данный сервис: {{ic|systemctl stop dhcpcd.service}}. Для получения дополнительной информации обратитесь к [[Configuring Network (Русский)|руководству по настройке сети]].<br />
<br />
==== Беспроводное соединение ====<br />
Если у вас беспроводное соединение, запустите {{ic|wifi-menu}} для его настройки. Смотрите разделы [[Wireless Setup (Русский)|Wireless Setup]] и [[Netcfg (Русский)#Настройка|Netcfg]], чтобы определить, какие дополнительные драйверы требуются для вашего устройства.<br />
<br />
=== Установка базовой системы ===<br />
Перед началом установки вы, возможно, захотите отредактировать {{ic|/etc/pacman.d/mirrorlist}} для выбора подходящего зеркала. Это стоит сделать, поскольку копия данного файла будет также установлена в вашу систему с помощью {{ic|pacstrap}}.<br />
<br />
Скрипт [https://github.com/falconindy/arch-install-scripts/blob/master/pacstrap.in pacstrap] установит базовую систему. Группа пакетов ''base-devel'' должна также быть установлена, если вы собираетесь компилировать программы из [[Arch_User_Repository_(Русский)|AUR]] или с использованием [[Arch_Build_System_(Русский)|ABS]].<br />
<br />
# pacstrap /mnt base base-devel<br />
<br />
Также можно установить и другие пакеты, добавив их имена, разделенные пробелами, к команде выше.<br />
<br />
=== Установка загрузчика ===<br />
[[GRUB2 (Русский)|Grub]]<br />
<br />
* Для BIOS<br />
<br />
# arch-chroot /mnt pacman -S grub-bios<br />
<br />
* Для EFI (иногда вместо него нужно установить {{ic|grub-efi-i386}} )<br />
<br />
# arch-chroot /mnt pacman -S grub-efi-x86_64<br />
<br />
* Устанавливайте GRUB после выполнения chroot (обратитесь к разделу [[#Настройка системы|Настройка системы]] ниже).<br />
<br />
[[Syslinux|Syslinux]]<br />
<br />
# arch-chroot /mnt pacman -S syslinux<br />
<br />
=== Настройка системы ===<br />
Создайте [[fstab (Русский)|fstab]] следующей командой. (Если вы хотите использовать UUID или метки, используйте опции {{ic|-U}} или {{ic|-L}} соответственно.)<br />
# genfstab -p /mnt >> /mnt/etc/fstab<br />
Далее перейдите в свою установленную систему с помощью [[Change Root|chroot]].<br />
# arch-chroot /mnt<br />
<br />
* Укажите имя хоста в файле {{ic|/etc/hostname}}.<br />
* Создайте ссылку {{ic|/etc/localtime}} на {{ic|/usr/share/zoneinfo/Zone/SubZone}}. Где {{ic|Zone}} и {{ic|Subzone}} замените на то, что вам нужно. Например<br />
<br />
# ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime<br />
<br />
* Установите используемый в системе язык, настроив [[Locale (Русский)#Установка системной локали|locale]] в {{ic|/etc/locale.conf}}.<br />
<br />
* Раскомментируйте нужные [https://wiki.archlinux.org/index.php/Locale локали] в {{ic|/etc/locale.gen}} и сгенерируйте {{ic|locale-gen}}.<br />
* Настройте {{ic|/etc/mkinitcpio.conf}} как вам нужно (см. [[mkinitcpio (Русский)|mkinitcpio]]) и создайте ramdisk:<br />
<br />
# mkinitcpio -p linux<br />
<br />
* Настройте загрузчик.<br />
<br />
* Для syslinux отредактируйте {{ic|/boot/syslinux/syslinux.cfg}} и укажите нужный {{ic|/boot}} раздел. Далее введите следующую команду чтобы установить (-i), добавить загрузочный флаг (-a) и установить mbr (-m).<br />
<br />
# /usr/sbin/syslinux-install_update -iam<br />
<br />
* Для установки GRUB прочитайте статью [[GRUB2 (Русский)|GRUB]]<br />
* Установка GRUB на жесткий диск, содержащий /boot раздел<br />
<br />
# grub-install /dev/sda<br />
<br />
* Сгенерируйте конфигурационный файл {{ic|grub.cfg}}:<br />
<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
* Установите root пароль с помощью команды {{ic|passwd}}.<br />
<br />
=== Размонтирование разделов ===<br />
Если вы все еще в окружении chroot, введите {{ic|exit}} или нажмите {{ic|Ctrl+D}}.<br />
В шаге 3 мы смонтировали разделы в {{ic|/mnt}}. Теперь отмонтируем их. <br />
# umount /mnt/{boot,home,}<br />
<br />
== После установки ==<br />
<br />
=== Управление пользователями ===<br />
Добавьте добавьте необходимые вам аккаунты пользователей, как это описано на странице [[Users and Groups#User management|User management]]. Считается плохим выбором использование аккаунта суперпользователя для регулярной работы с системой, или подключения к ней через сервер [[SSH]]. Используйте аккаунт суперпользователя только для решения задач администрирования системы.<br />
<br />
=== Управление пакетами ===<br />
Смотрите статьи [[pacman (Русский)| pacman]] и [[FAQ#Package Management|FAQ: Package Management]] для получения ответов на вопросы, касающиеся установки, обновления и и управления пакетами.<br />
<br />
=== Управление сервисами ===<br />
<br />
Arch Linux использует [[systemd (Русский)| systemd]] в качестве системы инициализации и менеджера служб (сервисов) для Linux. Для обслуживания установленного Arch Linux было бы неплохо изучить основы данной системы. Взаимодействие с systemd происходит посредством команды {{ic|systemctl}}. Обратитесь к разделу [[systemd (Русский)#Основы использования systemctl| Основы использования systemctl]] для получения более подробной информации.<br />
<br />
=== Звук ===<br />
<br />
[[ALSA]] обычно работает "из коробки", только лишь требуется включить звук. Установите пакет {{Pkg|alsa-utils}} (который содержит утилиту {{ic|alsamixer}}) и следуйте инструкциям из [[Advanced Linux Sound Architecture#Unmuting the channels| данного раздела]].<br />
<br />
ALSA включена в ядро и рекомендуется к использованию. Если данная архитектура не работает, то работоспособной альтернативой является [[OSS]]. Если у вас повышенные требования к звуку, обратитесь к статье [[Sound system]] для просмотра различных вариантов решения.<br />
<br />
=== Video driver ===<br />
<br />
The Linux kernel includes open-source video drivers and support for hardware accelerated framebuffers. However, userland support is required for OpenGL and 2D acceleration in X11.<br />
<br />
If you don't know which video chipset is available on your machine, run:<br />
<br />
$ lspci | grep VGA<br />
<br />
For a complete list of open-source video drivers, search the package database:<br />
<br />
$ pacman -Ss xf86-video | less<br />
<br />
The {{ic|vesa}} driver is a generic mode-setting driver that will work with almost every GPU, but will not provide any 2D or 3D acceleration. If a better driver cannot be found or fails to load, Xorg will fall back to vesa. To install it:<br />
<br />
# pacman -S xf86-video-vesa<br />
<br />
In order for video acceleration to work, and often to expose all the modes that the GPU can set, a proper video driver is required:<br />
<br />
{| class="wikitable" style="text-align:center"<br />
|-<br />
! Brand !! Type !! Driver !! [[Multilib]] Package<br><span style="font-weight: normal;">(for 32-bit applications on Arch x86_64)</span> !! Documentation<br />
|-<br />
| rowspan="2" bgcolor=#f7e3e3| '''<span style="color: #e62c2c;">AMD/ATI</span>'''<br />
| Open source || {{Pkg|xf86-video-ati}} || {{Pkg|lib32-ati-dri}} || [[ATI]]<br />
|-<br />
| Proprietary || {{Pkg|catalyst-dkms}} || {{Pkg|lib32-catalyst-utils}} || [[AMD Catalyst]]<br />
|-<br />
| bgcolor=#e3ecf7| '''<span style="color: #2a6dc8;">Intel</span>'''<br />
| Open source<br />
| {{Pkg|xf86-video-intel}} || {{Pkg|lib32-intel-dri}} || [[Intel Graphics]]<br />
|-<br />
| rowspan="4" bgcolor=#e3f7e6| '''<span style="color: #409044;">Nvidia</span>'''<br />
| rowspan="2"| Open source<br />
| {{Pkg|xf86-video-nouveau}} || {{Pkg|lib32-nouveau-dri}} || [[Nouveau]]<br />
|-<br />
| {{Pkg|xf86-video-nv}} || – || (legacy driver)<br />
|-<br />
| rowspan="2"| Proprietary || {{Pkg|nvidia}} || {{Pkg|lib32-nvidia-utils}} || rowspan="2"| [[NVIDIA]]<br />
|-<br />
| {{Pkg|nvidia-304xx}} || {{Pkg|lib32-nvidia-304xx-utils}}<br />
|}<br />
<br />
=== Display server ===<br />
<br />
The X Window System (commonly X11, or X) is a networking and display protocol which provides windowing on bitmap displays. It is the de-facto standard for implementating graphical user interfaces. See the [[Xorg]] article for details.<br />
<br />
[[Wayland]] is a new display server protocol and the Weston reference implementation is available. There is very little support for it from applications at this early stage of development.<br />
<br />
=== Шрифты ===<br />
<br />
Вы по желанию можете установить набор шрифтов TrueType, поскольку по умолчанию в свежеустановленной системе будут только немасштабируемые шрифты. DejaVu - набор высококачественных неспециализированных шрифтов с хорошим покрытием таблицы [[Wikipedia:Unicode|Unicode]]:<br />
<br />
# pacman -S ttf-dejavu<br />
<br />
Обратитесь к статье [[Font Configuration]] за советами по настройке рендеринга шрифтов и к статье [[Fonts]] за инструкциями по выбору и установке шрифтов.<br />
<br />
== Приложение ==<br />
<br />
Обратитесь к статье [[List of Applications]] для просмотра списка приложений, которые могут вас заинтересовать.<br />
<br />
Также смотрите статью [[General Recommendations (Русский)| General Recommendations]], содержащую руководства по послеустановочной настройке системы, например, настройке тачпада или рендерингу шрифтов.</div>Nobushttps://wiki.archlinux.org/index.php?title=Installation_guide_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=251821Installation guide (Русский)2013-03-24T11:24:39Z<p>Nobus: /* Шрифты */</p>
<hr />
<div>[[Category:About Arch (Русский)]]<br />
[[Category:Getting and installing Arch (Русский)]]<br />
[[En:Installation_Guide]]<br />
[[de:Arch Install Scripts]]<br />
[[fr:Arch_install_scripts]]<br />
[[it:Installation Guide]]<br />
[[uk:Installation Guide]]<br />
[[zh-CN:Installation Guide]]<br />
[[zh-TW:Installation Guide]]<br />
Этот документ проведет вас через процесс установки [[Arch Linux (Русский)|Arch Linux]] c использованием [https://github.com/falconindy/arch-install-scripts Arch Install Scripts]. Рекомендуется перед установкой ознакомиться с [[FAQ (Русский)]]._<br />
Поддерживаемая сообществом [[Main Page (Русский)|вики Arch'а]] является превосходным ресурсом, к которому следует обращаться в первую очередь при возникновении каких-либо проблем. Если ответ на интересующий вас вопрос в другом месте не найден, доступны [[Wikipedia:IRC|IRC]]-канал (irc://irc.mibbit.net/#archlinux-ru) и [http://archlinux.org.ru/forum/ форумы]. Также обращайтесь к страницам руководств ({{ic|man}}) тех команд, с которыми вы незнакомы; обычно они вызываются при помощи {{ic|man ''command''}} (где ''command'' - имя интересующей вас команды).<br />
<br />
{{Tip|Новички могут обратиться к [[Beginners' Guide (Русский)|подробному руководству]] по установке.}}<br />
<br />
== Получение установочного образа ==<br />
Загрузите новый установочный образ диска Arch Linux с [https://www.archlinux.org/download/ соответствующей страницы] на главном сайте дистрибутива.<br />
* Предлагается единый установочный образ, с помощью которого вы сможете загрузиться как на i686, так и на x86_64 системах, чтобы провести установку по сети. Диск с репозиторием [core] для оффлайн-установки больше не доступен и не поддерживается.<br />
* Установочный образ подписан цифровой подписью, и вы можете проверить ее перед установкой командой {{bc|pacman-key -v <iso-file>.sig}}<br />
* Образ может быть записан на CD, смонтирован как iso-файл или записан на usb устройство (флешку) с помощью команды {{ic|dd}}. Он предназначен только для установки системы - обновление уже установленной системы производится стандартным способом, командой {{ic|pacman -Syu}}.<br />
<br />
== Установка ==<br />
<br />
=== Раскладка клавиатуры ===<br />
Для большинства стран и видов клавиатур уже доступны соответствующие раскладки, нужная из которых может быть выбрана командой, например {{ic|loadkeys ru}}. Другие раскладки можно найти в {{ic|/usr/share/kbd/keymaps/}} (можно не указывать полный путь и расширение файла с раскладкой при использовании команды loadkeys).<br />
<br />
=== Создание разделов ===<br />
Для подробностей обратитесь к разделу [[Partitioning]].<br />
<br />
При необходимости не забудьте создать [[lvm|LVM]], [[Dm-crypt_with_LUKS|LUKS]] или [[RAID|RAID]] устройства.<br />
<br />
=== Форматирование разделов ===<br />
Более подробно вы можете прочитать [[Format_a_device#Step_2:_create_the_new_file_system|здесь]].<br />
<br />
Если вы используете (U)EFI, вам, скорее всего, понадобится отдельный раздел для размещения служебного раздела UEFI. Подробнее можно прочитать [[Unified_Extensible_Firmware_Interface (Русский)#Создание UEFI раздела в Linux|здесь]].<br />
<br />
=== Монтирование разделов ===<br />
Как минимум, вы должны смонтировать корневой раздел в {{ic|/mnt}}. Например:<br />
# mount /dev/sda2 /mnt<br />
Если вы хотите, чтобы еще какие-либо разделы были автоматически учтены скриптом установки {{ic|genfstab}}, необходимо создать соответствующие директории внутри /mnt и смонтировать туда нужные разделы. Например для отдельных загрузочного и домашнего разделов:<br />
# mkdir /mnt/boot && mount /dev/sda1 /mnt/boot<br />
# mkdir /mnt/home && mount /dev/sda3 /mnt/home<br />
<br />
=== Подключение к интернету ===<br />
Сервис DHCP уже доступен для всех подходящих устройств. Для проводного подключения просто запустите {{ic|dhcpcd}}. Если вам необходимо установить статический IP или вы хотите использовать средства настройки наподобие [[Netcfg (Русский)#Настройка|Netcfg]], вам сначала надо остановить данный сервис: {{ic|systemctl stop dhcpcd.service}}. Для получения дополнительной информации обратитесь к [[Configuring Network (Русский)|руководству по настройке сети]].<br />
<br />
==== Беспроводное соединение ====<br />
Если у вас беспроводное соединение, запустите {{ic|wifi-menu}} для его настройки. Смотрите разделы [[Wireless Setup (Русский)|Wireless Setup]] и [[Netcfg (Русский)#Настройка|Netcfg]], чтобы определить, какие дополнительные драйверы требуются для вашего устройства.<br />
<br />
=== Установка базовой системы ===<br />
Перед началом установки вы, возможно, захотите отредактировать {{ic|/etc/pacman.d/mirrorlist}} для выбора подходящего зеркала. Это стоит сделать, поскольку копия данного файла будет также установлена в вашу систему с помощью {{ic|pacstrap}}.<br />
<br />
Скрипт [https://github.com/falconindy/arch-install-scripts/blob/master/pacstrap.in pacstrap] установит базовую систему. Группа пакетов ''base-devel'' должна также быть установлена, если вы собираетесь компилировать программы из [[Arch_User_Repository_(Русский)|AUR]] или с использованием [[Arch_Build_System_(Русский)|ABS]].<br />
<br />
# pacstrap /mnt base base-devel<br />
<br />
Также можно установить и другие пакеты, добавив их имена, разделенные пробелами, к команде выше.<br />
<br />
=== Установка загрузчика ===<br />
[[GRUB2 (Русский)|Grub]]<br />
<br />
* Для BIOS<br />
<br />
# arch-chroot /mnt pacman -S grub-bios<br />
<br />
* Для EFI (иногда вместо него нужно установить {{ic|grub-efi-i386}} )<br />
<br />
# arch-chroot /mnt pacman -S grub-efi-x86_64<br />
<br />
* Устанавливайте GRUB после выполнения chroot (обратитесь к разделу [[#Настройка системы|Настройка системы]] ниже).<br />
<br />
[[Syslinux|Syslinux]]<br />
<br />
# arch-chroot /mnt pacman -S syslinux<br />
<br />
=== Настройка системы ===<br />
Создайте [[fstab (Русский)|fstab]] следующей командой. (Если вы хотите использовать UUID или метки, используйте опции {{ic|-U}} или {{ic|-L}} соответственно.)<br />
# genfstab -p /mnt >> /mnt/etc/fstab<br />
Далее перейдите в свою установленную систему с помощью [[Change Root|chroot]].<br />
# arch-chroot /mnt<br />
<br />
* Укажите имя хоста в файле {{ic|/etc/hostname}}.<br />
* Создайте ссылку {{ic|/etc/localtime}} на {{ic|/usr/share/zoneinfo/Zone/SubZone}}. Где {{ic|Zone}} и {{ic|Subzone}} замените на то, что вам нужно. Например<br />
<br />
# ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime<br />
<br />
* Установите используемый в системе язык, настроив [[Locale (Русский)#Установка системной локали|locale]] в {{ic|/etc/locale.conf}}.<br />
<br />
* Раскомментируйте нужные [https://wiki.archlinux.org/index.php/Locale локали] в {{ic|/etc/locale.gen}} и сгенерируйте {{ic|locale-gen}}.<br />
* Настройте {{ic|/etc/mkinitcpio.conf}} как вам нужно (см. [[mkinitcpio (Русский)|mkinitcpio]]) и создайте ramdisk:<br />
<br />
# mkinitcpio -p linux<br />
<br />
* Настройте загрузчик.<br />
<br />
* Для syslinux отредактируйте {{ic|/boot/syslinux/syslinux.cfg}} и укажите нужный {{ic|/boot}} раздел. Далее введите следующую команду чтобы установить (-i), добавить загрузочный флаг (-a) и установить mbr (-m).<br />
<br />
# /usr/sbin/syslinux-install_update -iam<br />
<br />
* Для установки GRUB прочитайте статью [[GRUB2 (Русский)|GRUB]]<br />
* Установка GRUB на жесткий диск, содержащий /boot раздел<br />
<br />
# grub-install /dev/sda<br />
<br />
* Сгенерируйте конфигурационный файл {{ic|grub.cfg}}:<br />
<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
* Установите root пароль с помощью команды {{ic|passwd}}.<br />
<br />
=== Размонтирование разделов ===<br />
Если вы все еще в окружении chroot, введите {{ic|exit}} или нажмите {{ic|Ctrl+D}}.<br />
В шаге 3 мы смонтировали разделы в {{ic|/mnt}}. Теперь отмонтируем их. <br />
# umount /mnt/{boot,home,}<br />
<br />
== После установки ==<br />
<br />
=== Управление пользователями ===<br />
Добавьте добавьте необходимые вам аккаунты пользователей, как это описано на странице [[Users and Groups#User management|User management]]. Считается плохим выбором использование аккаунта суперпользователя для регулярной работы с системой, или подключения к ней через сервер [[SSH]]. Используйте аккаунт суперпользователя только для решения задач администрирования системы.<br />
<br />
=== Управление пакетами ===<br />
Смотрите статьи [[pacman (Русский)| pacman]] и [[FAQ#Package Management|FAQ: Package Management]] для получения ответов на вопросы, касающиеся установки, обновления и и управления пакетами.<br />
<br />
=== Управление сервисами ===<br />
<br />
Arch Linux использует [[systemd (Русский)| systemd]] в качестве системы инициализации и менеджера служб (сервисов) для Linux. Для обслуживания установленного Arch Linux было бы неплохо изучить основы данной системы. Взаимодействие с systemd происходит посредством команды {{ic|systemctl}}. Обратитесь к разделу [[systemd (Русский)#Основы использования systemctl| Основы использования systemctl]] для получения более подробной информации.<br />
<br />
=== Pder ===<br />
<br />
[[ALSA]] обычно работает "из коробки", только лишь требуется включить звук. Установите пакет {{Pkg|alsa-utils}} (который содержит утилиту {{ic|alsamixer}}) и следуйте инструкциям из [[Advanced Linux Sound Architecture#Unmuting the channels| данного раздела]].<br />
<br />
ALSA включена в ядро и рекомендуется к использованию. Если данная архитектура не работает, то работоспособной альтернативой является [[OSS]]. Если у вас повышенные требования к звуку, обратитесь к статье [[Sound system]] для просмотра различных вариантов решения.<br />
<br />
=== Video driver ===<br />
<br />
The Linux kernel includes open-source video drivers and support for hardware accelerated framebuffers. However, userland support is required for OpenGL and 2D acceleration in X11.<br />
<br />
If you don't know which video chipset is available on your machine, run:<br />
<br />
$ lspci | grep VGA<br />
<br />
For a complete list of open-source video drivers, search the package database:<br />
<br />
$ pacman -Ss xf86-video | less<br />
<br />
The {{ic|vesa}} driver is a generic mode-setting driver that will work with almost every GPU, but will not provide any 2D or 3D acceleration. If a better driver cannot be found or fails to load, Xorg will fall back to vesa. To install it:<br />
<br />
# pacman -S xf86-video-vesa<br />
<br />
In order for video acceleration to work, and often to expose all the modes that the GPU can set, a proper video driver is required:<br />
<br />
{| class="wikitable" style="text-align:center"<br />
|-<br />
! Brand !! Type !! Driver !! [[Multilib]] Package<br><span style="font-weight: normal;">(for 32-bit applications on Arch x86_64)</span> !! Documentation<br />
|-<br />
| rowspan="2" bgcolor=#f7e3e3| '''<span style="color: #e62c2c;">AMD/ATI</span>'''<br />
| Open source || {{Pkg|xf86-video-ati}} || {{Pkg|lib32-ati-dri}} || [[ATI]]<br />
|-<br />
| Proprietary || {{Pkg|catalyst-dkms}} || {{Pkg|lib32-catalyst-utils}} || [[AMD Catalyst]]<br />
|-<br />
| bgcolor=#e3ecf7| '''<span style="color: #2a6dc8;">Intel</span>'''<br />
| Open source<br />
| {{Pkg|xf86-video-intel}} || {{Pkg|lib32-intel-dri}} || [[Intel Graphics]]<br />
|-<br />
| rowspan="4" bgcolor=#e3f7e6| '''<span style="color: #409044;">Nvidia</span>'''<br />
| rowspan="2"| Open source<br />
| {{Pkg|xf86-video-nouveau}} || {{Pkg|lib32-nouveau-dri}} || [[Nouveau]]<br />
|-<br />
| {{Pkg|xf86-video-nv}} || – || (legacy driver)<br />
|-<br />
| rowspan="2"| Proprietary || {{Pkg|nvidia}} || {{Pkg|lib32-nvidia-utils}} || rowspan="2"| [[NVIDIA]]<br />
|-<br />
| {{Pkg|nvidia-304xx}} || {{Pkg|lib32-nvidia-304xx-utils}}<br />
|}<br />
<br />
=== Display server ===<br />
<br />
The X Window System (commonly X11, or X) is a networking and display protocol which provides windowing on bitmap displays. It is the de-facto standard for implementating graphical user interfaces. See the [[Xorg]] article for details.<br />
<br />
[[Wayland]] is a new display server protocol and the Weston reference implementation is available. There is very little support for it from applications at this early stage of development.<br />
<br />
=== Шрифты ===<br />
<br />
Вы по желанию можете установить набор шрифтов TrueType, поскольку по умолчанию в свежеустановленной системе будут только немасштабируемые шрифты. DejaVu - набор высококачественных неспециализированных шрифтов с хорошим покрытием таблицы [[Wikipedia:Unicode|Unicode]]:<br />
<br />
# pacman -S ttf-dejavu<br />
<br />
Обратитесь к статье [[Font Configuration]] за советами по настройке рендеринга шрифтов и к статье [[Fonts]] за инструкциями по выбору и установке шрифтов.<br />
<br />
== Приложение ==<br />
<br />
Обратитесь к статье [[List of Applications]] для просмотра списка приложений, которые могут вас заинтересовать.<br />
<br />
Также смотрите статью [[General Recommendations (Русский)| General Recommendations]], содержащую руководства по послеустановочной настройке системы, например, настройке тачпада или рендерингу шрифтов.</div>Nobushttps://wiki.archlinux.org/index.php?title=Beginners%27_Guide/Installation_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=251820Beginners' Guide/Installation (Русский)2013-03-24T11:23:26Z<p>Nobus: /* Настройка сети */</p>
<hr />
<div><noinclude><br />
[[Category:Русский]]<br />
[[da:Beginners' Guide/Installation]]<br />
[[en:Beginners' Guide/Installation]]<br />
[[es:Beginners' Guide/Installation]]<br />
[[hr:Beginners' Guide/Installation]]<br />
[[hu:Beginners' Guide/Installation]]<br />
[[it:Beginners' Guide/Installation]]<br />
[[ko:Beginners' Guide/Installation]]<br />
[[nl:Beginners' Guide/Installatie]]<br />
[[pt:Beginners' Guide/Installation]]<br />
[[sr:Beginners' Guide/Installation]]<br />
[[zh-CN:Beginners' Guide/Installation]]<br />
{{Note| Это часть более обширной статьи '''[[Beginners' Guide_(Русский)|Руководство для новичков]]'''.}}<br />
</noinclude><br />
<br />
==Установка==<br />
<br />
Теперь вы видите приглашение командной строки от имени пользователя root.<br />
<br />
====Изменение языка====<br />
<br />
{{Tip|Эти действия выполнять не обязательно, если вам не нужно вносить записи в конфигурационные файлы на русском языке, или же использовать отличные от стандартных английских символы при установлении пароля Wi-Fi, а также получать системные сообщения на родном языке (например, сообщения об ошибках).}}<br />
<br />
По умолчанию, раскладка клавиатуры установлена в {{ic|us}}. Если вам нужна не раскладка, отличная от американской ([[Wikipedia:File:KB_United_States-NoAltGr.svg|US]]), как, впрочем, и предполагается для русскоязычного пользователя, выполните:<br />
<br />
# loadkeys ''layout''<br />
<br />
...где ''layout'' может быть {{ic|ru}} (для русской раскладки), {{ic|ua}} (для украинской) и др. Другие раскладки можно найти в {{ic|/usr/share/kbd/keymaps/}} (можно не указывать полный путь и расширение файла с раскладкой при использовании команды loadkeys). См. соответствующий список раскладок [[KEYMAP#Keyboard_layouts|здесь]].<br />
<br />
Шрифт также должен быть изменен, поскольку большинство языков используют больше символов, чем 26 букв [[Wikipedia:English_alphabet|английского алфавита]]. В противном случае некоторые символы, отличные от стандартных английских, могут отображаться как белые квадраты или другие знаки. Обратите внимание, что наименование шрифта чувствительно к регистру, поэтому, пожалуйста, введите его ''точно'' так, как вы его видите, например:<br />
<br />
# setfont cyr-sun16<br />
<br />
Другие шрифты, в том числе кириллические, можно найти в {{ic|/usr/share/kbd/consolefonts}}.<br />
<br />
По умолчанию языком системы является английский (US/США). Если вы хотите изменить настройки языка, используемые в процессе установки ''(русский, в данном примере)'', удалите символ комментария {{ic|#}} перед нужной вам [http://www.greendesktiny.com/support/knowledgebase_detail.php?ref=EUH-483 локалью] в файле {{ic|/etc/locale.gen}}, наряду с английской локалью (US). Пожалуйста, выбирайте юникодовскую локаль {{ic|UTF-8}}.<br />
<br />
Используйте клавиши {{Keypress|Ctrl+X}} для выхода, когда же вам будет предложено сохранить изменения, нажмите {{Keypress|Y}} и {{Keypress|Enter}} для сохранения файла под тем же именем.<br />
<br />
{{hc|# nano /etc/locale.gen|<br />
en_US.UTF-8 UTF-8<br />
ru_RU.UTF-8 UTF-8}}<br />
<br />
# locale-gen<br />
# export LANG=ru_RU.UTF-8<br />
<br />
Помните, раскладка переключается установленным для нее и неизменяемым сочетанием клавиш (для {{ic|ru}} - {{Keypress|LCtrl+LShift}}).<br />
<br />
===Настройка сети===<br />
<br />
{{Warning| udev теперь не присваивает имена сетевых интерфейсов по схеме wlanX и ethX. Если вы пришли с другого дистрибутива или переустанавливаете Arch и не осведомлены о новом стиле именования интерфейсов, пожалуйста не думайте что Ваше беспроводное соединение имеет имя wlan0, или проводное соединение имеет имя eth0. Вы можете использовать утилиту "ip" для того чтобы узнать имена интерфейсов.}}<br />
<br />
Начиная с релиза systemd-197's и далее, udev теперь назначае предсказуемое, стабильное имя сети которое отличается от привычного именования (wlan0, wlan1, и т.д.). Эти имена интерфейсов гарантированно сохраняются и после перезагрузки, которые решают проблему отсутствия предсказуемости назначения имени сетевого интерфейса. Для получения дополнительной информации о том, почему это было необходимо, читайте http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames .<br />
<br />
Сетевой демон {{ic|dhcpcd}} стартует при загрузке автоматически и попытается подключиться к проводному соединению, если оно доступно. Попробуйте пропинговать какой-нибудь сайт.<br />
<br />
{{hc|# ping -c 3 ya.ru|2=<br />
PING ya.ru (93.158.134.203) 56(84) bytes of data.<br />
64 bytes from www.yandex.ru (93.158.134.203): icmp_req=1 ttl=54 time=62.4 ms<br />
64 bytes from www.yandex.ru (93.158.134.203): icmp_req=2 ttl=54 time=63.0 ms<br />
64 bytes from www.yandex.ru (93.158.134.203): icmp_req=3 ttl=54 time=62.4 ms<br />
<br />
--- ya.ru ping statistics ---<br />
3 packets transmitted, 3 received, 0% packet loss, time 2002ms<br />
rtt min/avg/max/mdev = 62.423/62.623/63.009/0.273 ms<br />
}}<br />
<br />
Если вместо этого вы увидели ошибку {{ic|ping: unknown host}}, Вам необходимо настроить соединение в ручную как описано ниже<br />
<br />
В противном случае переходите к разделу [[#Подготовка жесткого диска|Подготовка жесткого диска]].<br />
<br />
====Настройка проводного соединения====<br />
<br />
Выполните эту процедуру, если вам нужно установить проводное соединение через статический IP адрес.<br />
Во-первых, определите название вашего интерфейса.<br />
{{hc|# ip link|<br />
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT <br />
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00<br />
2: enp2s0f0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000<br />
link/ether 00:11:25:31:69:20 brd ff:ff:ff:ff:ff:ff<br />
3: wlp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT qlen 1000<br />
link/ether 01:02:03:04:05:06 brd ff:ff:ff:ff:ff:ff}}<br />
<br />
В этом примере сетевой интерфейсом Ethernet является enp2s0f0. Если вы не уверены, что ваш Ethernet интерфейс может начинаться с буквы "e", и вряд ли будет "lo" или начинаться с "w". Вы также можете использовать iwconfig и посмотреть, какие интерфейсы не являются беспроводными:<br />
<br />
<br />
{{hc|# iwconfig|2=<br />
enp2s0f0 no wireless extensions.<br />
wlp3s0 IEEE 802.11bgn ESSID:"NETGEAR97" <br />
Mode:Managed Frequency:2.427 GHz Access Point: 2C:B0:5D:9C:72:BF <br />
Bit Rate=65 Mb/s Tx-Power=16 dBm <br />
Retry long limit:7 RTS thr:off Fragment thr:off<br />
Power Management:on<br />
Link Quality=61/70 Signal level=-49 dBm <br />
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0<br />
Tx excessive retries:0 Invalid misc:430 Missed beacon:0<br />
lo no wireless extensions.}}<br />
<br />
В этом примере, ни enp2s0f0 ни lo не имеют беспроводных дополнений, то есть enp2s0f0 наш интерфейс Ethernet.<br />
<br />
Вам необходимо знать следующие настройки:<br />
<br />
* Ваш статический IP адрес.<br />
* Маска сети.<br />
* Широковещательный адрес<br />
* Ваш шлюз.<br />
* Адреса ваших DNS серверов.<br />
* Доменное имя.<br />
<br />
Поднимите сетевое соединение, например, для {{ic|enp2s0f0}}:<br />
<br />
# ip link set enp2s0f0 up<br />
<br />
Добавьте адрес:<br />
<br />
# ip addr add <ip address>/<subnetmask> dev <interface><br />
<br />
Например:<br />
<br />
# ip addr add 192.168.1.2/24 dev enp2s0f0<br />
<br />
Для дополнительной настройки обратитесь к {{ic|man ip}}.<br />
<br />
Добавьте ваш шлюз как показано ниже, вставив IP-адрес своего шлюза:<br />
<br />
# ip route add default via <ip address><br />
<br />
Например:<br />
<br />
# ip route add default via 192.168.1.1<br />
<br />
Отредактируйте {{ic|resolv.conf}}, сменив адреса ваших DNS серверов и доменное имя:<br />
<br />
{{hc|# nano /etc/resolv.conf|<br />
nameserver 61.23.173.5<br />
nameserver 61.95.849.8<br />
search example.com}}<br />
<br />
{{Note|Сейчас у вас может быть включено максимум 3 строки {{ic|nameserver}}.}}<br />
<br />
Теперь у вас должно появиться работающее сетевое соединение. Если этого не произошло, обратитесь к странице [[Configuring Network (Русский)]].<br />
<br />
====Настройка беспроводного соединения====<br />
<br />
Следуйте указанной процедуре, если вам в процессе установки необходимо беспроводное соединение.<br />
Если вы в первый раз уставливаете Arch Linux, вы будете удивлены что названия беспроводных интерфейсов теперь не именуются по схеме "wlanX". Не паникуйте, используйте {{ic|iwconfig}} чтобы узнать имя вашего беспроводного соединения.<br />
<br />
Драйверы и утилиты для настройки беспроводного соединения теперь доступны на установочном диске. Для успешной настройки имеет большое значение хорошее представление о собственном оборудовании для беспроводных сетей, . Учтите, что ''описываемый процесс настройки'' действителен только ''на время установки в live-системе''. Вам нужно будет повторить его уже ''в установленной системе после загрузки в нее''.<br />
<br />
Имейте также в виду, что настройка беспроводного соединения необязательна для установки системы, если во время установки такое соединение не доступно. Функциональность, обеспечиваемая беспроводным соединением, всегда может быть добавлена позже.<br />
<br />
{{Note|Данный пример использует {{ic|wlp3s0}} в качестве имени интерфейса и {{ic|linksys}} для ESSID. Не забудьте изменить эти настройки применительно к вашей ситуации.}}<br />
<br />
Основные этапы:<br />
* (необязательно) Определите используемое беспроводное оборудование:<br />
<br />
# lspci | grep -i net<br />
или же при использовании USB-адаптера:<br />
<br />
# lsusb<br />
<br />
* Удостоверьтесь командой {{ic|/usr/sbin/iwconfig}}, что udev загрузил нужный драйвер, который создал беспроводный интерфейс:<br />
<br />
{{Note|Если вы не увидели аналогичный вывод, значит драйвер для вашего беспроводного оборудования не был загружен. В этом случае вы должны загрузить драйвер самостоятельно. Обратитесь к статье [[Wireless Setup]] для получения дополнительной информации.}}<br />
<br />
{{hc|# iwconfig|2=<br />
enp2s0f0 no wireless extensions.<br />
wlp3s0 IEEE 802.11bgn ESSID:"NETGEAR97" <br />
Mode:Managed Frequency:2.427 GHz Access Point: 2C:B0:5D:9C:72:BF <br />
Bit Rate=65 Mb/s Tx-Power=16 dBm <br />
Retry long limit:7 RTS thr:off Fragment thr:off<br />
Power Management:on<br />
Link Quality=61/70 Signal level=-49 dBm <br />
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0<br />
Tx excessive retries:0 Invalid misc:430 Missed beacon:0<br />
lo no wireless extensions.}}<br />
<br />
В этом примере {{ic|wlp3s0}} - имя беспроводного интерфейса. <br />
<br />
* Поднимите интерфейс:<br />
<br />
# ip link set wlp3s0 up<br />
<br />
Некоторое беспроводное оборудование в дополнение к драйверу требует также загрузки проприетарной прошивки. В этом случае вы, скорее всего, увидите такое сообщение:<br />
<br />
{{hc|# ip link set wlp3s0 up|<br />
SIOCSIFFLAGS: No such file or directory}}<br />
<br />
Если вы не уверены в необходимости проприетарной прошивки для вашего оборудования, выполните команду {{ic|/usr/bin/dmesg}} для того, чтобы увидеть сообщения ядра системы, где должна быть строка с требованием загрузить прошивку. <br />
<br />
Вот пример для чипсета Intel:<br />
<br />
{{hc|# dmesg <nowiki>|</nowiki> grep firmware|<br />
firmware: requesting iwlwifi-5000-1.ucode}}<br />
<br />
Если подобного сообщения нет, значит, ваше оборудование не требует загрузки прошивки.<br />
<br />
{{Note|Прошивки для беспроводного оборудования во время установки расположены в директории {{ic|/usr/lib/firmware}}, ''но должны быть установлены явным образом в новую систему на этапе выбора пакетов!'' Процесс установки пакетов описан ниже в этом руководстве. Убедитесь, что вы устанавливаете как драйвера, так и прошивки для вашего беспроводного оборудования. Прочтите статью [[Wireless Setup]], если вы не уверены насчет прошивки, требуемой для Вашего оборудования. Это типичная ошибка.}}<br />
<br />
Наконец, используйте интерактивное меню для установки подключения по Wi-Fi, предлагаемое пакетом {{pkg|netcfg}}:<br />
<br />
# wifi-menu wlp3s0<br />
<br />
Теперь у вас должно появиться работающее сетевое соединение. Если этого не произошло, обратитесь к странице [[Wireless Setup]].<br />
<br />
====xDSL (PPPoE), аналоговый модем или ISDN====<br />
<br />
Если у вас роутер в режиме моста, выполните:<br />
<br />
# pppoe-setup<br />
<br />
* Введите свое имя (логин), выданный провайдером.<br />
* Нажмите {{Keypress|Enter}} для "eth0".<br />
* Нажмите {{Keypress|Enter}} для выбора опции "no", так что эта настройка останется постоянной.<br />
* Нажмите {{ic|server}} (выбор в большинстве случаев).<br />
* Нажмите {{Keypress|1}} для брандмауэра.<br />
* Введите пароль, выданный провайдером.<br />
* В конце нажмите {{Keypress|y}}.<br />
<br />
Для использования этих настроек и подключения к провайдеру, выполните:<br />
<br />
# pppoe-start<br />
<br />
Вам также может потребоваться настроить свой конфигурационный файл {{ic|resolv.conf}}:<br />
<br />
# echo nameserver 8.8.8.8 > /etc/resolv.conf<br />
<br />
Для аналогового модема (dial-up) и ISDN, см. [[Direct Modem Connection]].<br />
<br />
====Использование прокси-сервера====<br />
<br />
Если вы используете прокси-сервер, вам необходимо экспортировать переменные среды {{ic|http_proxy}} и {{ic|ftp_proxy}}. '''[[Proxy|Нажмите здесь]]''' для получения информации по данной теме.<br />
<br />
{{Note|В установленной системе данные переменные должны быть указаны в файле {{ic|/etc/wgetrc}}.}}<br />
<br />
===Подготовка жесткого диска===<br />
<br />
{{Warning| Ошибка в разбиении диска на разделы может уничтожить данные. Поэтому настоятельно рекомендуется сделать резервную копию наиболее важных данных.}}<br />
Новичкам рекомендуется использовать графическую утилиту для разметки диска. Хороший пример подобной утилиты -[http://gparted.sourceforge.net/download.php GParted], запускаемый из live-дистрибутива Linux, такого как [[Wikipedia:Parted_Magic|Parted Magic]], [[Wikipedia:Ubuntu_(operating_system)|Ubuntu]], [[Wikipedia:Linux_Mint|Linux Mint]] и др. Смотрите [[Partitioning]] для получения общих сведений и убедитесь, что отформатировали разделы с файловой системой (например, '''ext4''', '''btrfs''' и др.) до перезагрузки компьютера.<br />
<br />
Если вы уже произвели разметку жесткого диска, переходите к разделу [[#Монтирование_разделов|монтированию разделов]].<br />
<br />
В противном случае, посмотрите следующий пример.<br />
<br />
====Пример====<br />
<br />
Установочный образ Arch Linux включает следующие утилиты разбиения диска:<br />
<br />
* [[Wikipedia:cfdisk|cfdisk]] – поддерживает только таблицы разделов [[MBR]].<br />
<br />
* [[Wikipedia:gdisk|gdisk]] – поддерживает только таблицы разделов [[GPT]].<br />
<br />
* [[Wikipedia:parted|parted]] – поддерживает обе таблицы разделов.<br />
<br />
Приводимый ниже пример использует утилиту '''cfdisk''', но с той же легкостью может быть использована и утилита '''gdisk''' для разделов GPT.<br />
<br />
{{Note|Если у вас материнская плата [[UEFI]], вам потребуется создать дополнительный раздел, именуемый системным разделом UEFI. Обратитесь к [[Unified_Extensible_Firmware_Interface#Create_an_UEFI_System_Partition_in_Linux|данной статье]].}}<br />
<br />
{{Note|Если вы хотите установить загрузчик GRUB в режиме BIOS-GPT, то вам потребуется создать "загрузочный раздел BIOS" размером в 2 Мб. Обратитесь к [[GRUB#GPT_specific_instructions|особым инструкциям по использованию GPT]] за дальнейшей информацией.}}<br />
<br />
{{Note|Если вы производите установку на USB-флешку, смотрите [[Installing Arch Linux on a USB key]].}}<br />
<br />
{{Note|Если вы не будете использовать двойную загрузку с Windows, то предпочтительнее использовать таблицу разделов [[GPT]] вместо [[MBR]]. Разбиение на разделы GPT может быть проведено только с использованием '''gdisk''' или '''parted'''. Прочтите статью [[GPT]] для выяснения преимуществ такого разбиения.}}<br />
<br />
# cfdisk /dev/sda<br />
<br />
Система в данном примере будет содержать корневой раздел (root) ({{ic|/}}) размером 15 Гб, раздел подкачки {{ic|swap}} в 1 Гб и домашний раздел {{ic|/home}}, занимающий всё оставшееся место.<br />
<br />
Следует особо отметить, что разбиение диска отвечает личным предпочтениям пользователя и данный пример имеет исключительно иллюстративный характер. См. [[Partitioning]].<br />
<br />
'''Root:'''<br />
<br />
* Выберите пункт New/Новый (или нажмите {{Keypress|N}}) – {{Keypress|Enter}} для Primary/Основного раздела - введите размер "15360" – {{Keypress|Enter}} для пункта Beginning/Начало – {{Keypress|Enter}} для того, чтобы сделать этот диск Bootable/Загрузочным.<br />
<br />
'''Swap:'''<br />
<br />
* Клавишей со стрелкой вниз перейдите на свободное пространство диска.<br />
* Выберите пункт New/Новый (или нажмите {{Keypress|N}}) – {{Keypress|Enter}} для Primary/Основного раздела - введите размер "1024" – {{Keypress|Enter}} для пункта Beginning/Начало.<br />
* Выберите Type/Тип (или нажмите {{Keypress|T}}) – нажмите любую клавишу, чтобы прокрутить список вниз – {{Keypress|Enter}} для выбора типа 82.<br />
<br />
'''Home:'''<br />
<br />
* Клавишей со стрелкой вниз перейдите на свободное пространство диска.<br />
* Выберите пункт New/Новый (или нажмите {{Keypress|N}}) – {{Keypress|Enter}} для Primary/Основного раздела – {{Keypress|Enter}} для использования оставшегося дискового пространства (или вы можете вручную ввести требуемый размер раздела).<br />
<br />
Вот как это должно выглядеть:<br />
<br />
Name Flags Part Type FS Type [Label] Size (MB)<br />
-----------------------------------------------------------------------<br />
sda1 Boot Primary Linux 15360<br />
sda2 Primary Linux swap / Solaris 1024<br />
sda3 Primary Linux 133000*<br />
<br />
или в русскоязычном варианте:<br />
<br />
Имя Флаги Тип раздела Тип ФС [Метка] Размер (MБ)<br />
-------------------------------------------------------------------------<br />
sda1 Загрузочный Основной Linux 15360<br />
sda2 Основной Linux своп / Solaris 1024<br />
sda3 Основной Linux 133000*<br />
<br />
Прежде чем продолжить, проверьте несколько раз сделанные изменения и убедитесь что вы довольны как размерами разделов, так и раскладкой таблицы разбиения.<br />
<br />
Если захотите начать все сначала, можете просто выбрать Quit/Выход (или нажмите {{Keypress|Q}}) для выхода без сохранения изменений, а затем перезапустить cfdisk.<br />
<br />
Если вас устраивает разбивка, выберите Write/Запись (или нажмите {{Keypress|Shift+W}}), чтобы завершить разбиение и записать таблицу разделов на диск. Наберите "yes"/"да" и выберите Quit/Выход (или нажмите {{Keypress|Q}}), чтобы выйти из cfdisk без каких-либо изменений.<br />
<br />
Простого разбиения на разделы недостаточно, необходимо также явно задать [[File Systems|файловую систему]]. Для форматирования разделов с файловой системой ext4 выполните:<br />
<br />
# mkfs.ext4 /dev/sda1<br />
# mkfs.ext4 /dev/sda3<br />
<br />
Форматирование и подключение раздела подкачки:<br />
<br />
# mkswap /dev/sda2<br />
# swapon /dev/sda2<br />
<br />
===Монтирование разделов===<br />
<br />
Каждый раздел отождествляется определенным числовым суффиксом. Например, раздел {{ic|sda1}} указывает на первый раздел первого диска, в то время как {{ic|sda}} обозначает весь диск.<br />
<br />
Чтобы увидеть текущую таблицу разделов выполните команду:<br />
<br />
# lsblk /dev/sda<br />
<br />
Обратите внимание, что для установки вашей системы важен порядок монтирования разделов.<br />
<br />
Сперва монтируется корневой раздел (root) в {{ic|/mnt}}. В приводимом ниже примере (у вас могут быть отличия) это выглядит так:<br />
<br />
# mount /dev/sda1 /mnt<br />
<br />
Затем монтируется домашний ({{ic|/home}}) раздел и все остальные отдельные разделы ({{ic|/boot}}, {{ic|/var}} и др.), если они у вас имеются:<br />
<br />
# mkdir /mnt/home<br />
# mount /dev/sda3 /mnt/home<br />
<br />
В случае, если у вас имеется отдельный загрузочный ({{ic|/boot}}) раздел:<br />
<br />
# mkdir /mnt/boot<br />
# mount /dev/sda''x'' /mnt/boot<br />
<br />
Если у вас материнская плата UEFI, монтируется раздел UEFI:<br />
<br />
# mkdir /mnt/boot/efi<br />
# mount /dev/sda''x'' /mnt/boot/efi<br />
<br />
===Выбор зеркал===<br />
<br />
Зеркала перечислены в файле {{ic|/etc/pacman.d/mirrorlist}} и должны располагаться по приоритету. Перед установкой вы можете отредактировать файл {{ic|mirrorlist}}и поместите нужные зеркала на первые позиции. Копия этого файла будет установлена скриптом {{ic|pacstrap}} в вашу новую систему, так что стоит проделать эту работу.<br />
<br />
{{hc|# nano /etc/pacman.d/mirrorlist|<br />
##<br />
## Arch Linux repository mirrorlist<br />
## Sorted by mirror score from mirror status page<br />
## Generated on 2012-MM-DD<br />
##<br />
<br />
<nowiki>Server = http://mirror.example.xyz/archlinux/$repo/os/$arch</nowiki><br />
...}}<br />
<br />
* {{Keypress|Alt+6}} для копирования строки {{ic|Server}}.<br />
* {{Keypress|PageUp}} клавиша для прокрутки.<br />
* {{Keypress|Ctrl+U}}, чтобы вставить скопированное наверх часть списка.<br />
* {{Keypress|Ctrl+X}} для выхода, когда будет предложено сохранить изменения - нажмите {{Keypress|Y}} и {{Keypress|Enter}} для сохранения в файл с тем же именем.<br />
<br />
Если вы захотите, что можете сделать доступным ''только одно'' зеркало, удалив все остальные (используя {{Keypress|Ctrl+K}}), но обычно правильной идеей является использование нескольких зеркал, которые будут доступны, если первое из списка уйдет в offline.<br />
<br />
{{Tip|<br />
* Используйте генератор зеркал [https://www.archlinux.org/mirrorlist/ Mirrorlist Generator] для получения обновленного списка зеркал, доступных в вашей стране. Зеркала HTTP быстрее чем зеркала FTP из-за использования сообщений типа [[Wikipedia:Keepalive|keepalive]]. В случае с FTP, pacman каждый раз, когда он загружает пакет, будет посылать сигнал, завершающийся короткой паузой. Помните, что сгенерированный таким образом список зеркал будет содержать строки не только с серверами, но и указанием их статуса (если вы включили опцию {{ic|Use mirror status}}):<br />
<br />
## Score: 4.8, Russian Federation<br />
<nowiki>#Server = http://mirror.rol.ru/archlinux/$repo/os/$arch</nowiki><br />
<br />
Требуется раскомментировать только строки, содержащие сервера (начинающиеся с {{ic|Server}})!<br />
Чтобы узнать о других способах создания собственного списка зеркал, обратитесь к статьям [[Mirrors#Sorting_mirrors|Sorting mirrors]] и [[Reflector]]<br />
<br />
* [https://archlinux.org/mirrors/status/ Arch Linux MirrorStatus] сообщает различную информацию о зеркалах, такую, как сетевые проблемы с зеркалами, проблемы со сбором данных, последнее время синхронизации зеркал и т.д.}}<br />
{{Note|<br />
* При любом изменении списка зеркал всегда формируйте обновление списка пакетов с помощью команды {{ic|pacman -Syy}}. Такой способ рассматривается как правильный и поможет избежать головной боли. Смотрите статью [[Mirrors]] для получения дальнейшей информации.<br />
* Если вы используете устаревший установочный носитель, ваш список зеркал также, скорее всего, устарел, что может привести к проблемам с обновлением Arch Linux (см. {{Bug|22510}}). В силу этого настоятельно рекомендуется получить свежую информацию о зеркалах, как описано выше.<br />
* На [https://bbs.archlinux.org/ форумах Arch Linux] сообщалось о некоторых сетевых проблемах, мешающих pacman произвести обновление/синхронизацию репозиториев (см. [https://bbs.archlinux.org/viewtopic.php?id&#61;68944] и [https://bbs.archlinux.org/viewtopic.php?id&#61;65728]). Во время установки Arch Linux на реальную машину эти проблемы разрешались путем замены загрузчика файлов по умолчанию, используемого в pacman, альтернативным загрузчиком (см. [[Improve Pacman Performance]] для более детальной информации). В случае же установки Arch Linux в качестве гостевой машины в [[VirtualBox]], данная проблема также решалась путем использования типа подключения "Виртуальный адаптер хоста" вместо "NAT" в настройках виртуальной машины.}}<br />
<br />
===Установка базовой системы===<br />
<br />
Базовая система устанавливается с использованием скрипта [https://github.com/falconindy/arch-install-scripts/blob/master/pacstrap.in pacstrap].<br />
<br />
# pacstrap /mnt base base-devel<br />
<br />
{{Note|Если pacman не может проверить подписи ваших пакетов, убедитесь в правильной установке системного времени. Если системное время выставлено неверно (например, показывает 2010 год), срок ключей будут считаться истекшими или неверными, проверка подписей пакетов окажется неудачной и установка будет прервана. Скорректируйте системное время вручную или с использованием клиента {{Pkg|ntp}} и вновь запустите команду pacstrap. Обратитесь к странице [[Time_(Русский)|Time (Русский)]] за дальнейшей информацией о корректировке системного времени.}}<br />
<br />
* {{Grp|base}}: пакеты программного обеспечения из репозитория [core], обеспечивающие минимальное рабочее окружение.<br />
<br />
* {{Grp|base-devel}}: дополнительные утилиты из репозитория [core], такие, как {{ic|make}} и {{ic|automake}}. Большинству новичков лучше их установить сразу, так как в дальнейшем они, скорее всего, всё равно понадобятся для наращивания установленной системы. В частности, группа ''base-devel'' необходима для установки программ из [[Arch User Repository]].<br />
<br />
Таким образом, вы получили базовую систему Arch. Остальные пакеты могут быть установлены позднее с использованием [[pacman]].<br />
<br />
===Генерированиеe fstab===<br />
<br />
Сгенерируйте файл [[fstab]] приводимой ниже командой. Если вы предпочитаете использовать в данном файле UUID или метки дисков, соответственно добавьте опции {{ic|-U}} или {{ic|-L}}. Хорошей идеей станет проверка данного файла перед продолжением работы:<br />
<br />
{{Note|Если вы столкнетесь с ошибками при запуске genfstab или с ошибками, возникающими позже в процессе установки, '''не''' выполняйте команду genfstab вновь; просто отредактируйте файл fstab.}}<br />
<br />
# genfstab -p /mnt > /mnt/etc/fstab<br />
# nano /mnt/etc/fstab<br />
<br />
Только корневой раздел ({{ic|/}}) нуждается в значении {{ic|1}}, указываемом в последнем поле. Все остальные должны быть помечены или значением {{ic|2}}, или значением {{ic|0}} (см.[[Fstab#Field_definitions|Field definitions]]).<br />
<br />
Также, опция {{ic|1=data=ordered}} должна быть удалена, потому что она используется автоматически вне зависимости от того, указали вы ее или нет. Нет смысла загромождать ваш fstab.<br />
<br />
===Chroot и конфигурирование базовой системы===<br />
<br />
Затем, мы входим с помощью [[chroot]] во вновь установленную систему:<br />
<br />
# arch-chroot /mnt<br />
<br />
На этом этапе установки вам предстоит настроить основные файлы конфигурации своей базовой системы Arch Linux. Эти файлы могут быть созданы, если они не существуют, или отредактированы, если вы хотите изменить настройки по умолчанию.<br />
<br />
Внимательное следование приведенным ниже шагам и понимание сути своих действий имеет ключевое значение для правильной настройки системы.<br />
<br />
====Локализация====<br />
<br />
Локали используются '''glibc''' и другими программами или библиотеками для рендеринга текста, корректного отображения значений региональных валют, формата времени и даты, алфавитных особенностей и других специфических языковых и локальных стандартов.<br />
<br />
Необходимо отредактировать два файла: {{ic|locale.gen}} и {{ic|locale.conf}}.<br />
<br />
* Файл {{ic|locale.gen}} по умолчанию пустой (точнее, все значения в нем закомментированы) и вам потребуется удалить символ комментария {{ic|#}} в начале избранной (избранных) вами строки (строк) с нужными локалями. Вы можете раскомментировать больше строк, чем просто строка с американским английским языком (English (US)), одновременно выбирая свою кодировку (предпочтительно {{ic|UTF-8}}):<br />
<br />
{{hc|# nano /etc/locale.gen|<br />
en_US.UTF-8 UTF-8<br />
ru_RU.UTF-8 UTF-8}}<br />
<br />
# locale-gen<br />
<br />
Эта команда запускается при каждом обновлении '''glibc''', генерируя локали, указанные в {{ic|/etc/locale.gen}}. Не забудьте запустить ее после правки файла {{ic|locale.gen}}<br />
<br />
* Файл {{ic|locale.conf}} по умолчанию отсутствует. Его необходимо создать, при этом достаточно указать в нем только лишь значение переменной {{ic|LANG}}. Данное значение будет использоваться по умолчанию остальными переменными. Для американского английского языка:<br />
<br />
# echo LANG=en_US.UTF-8 > /etc/locale.conf<br />
# export LANG=en_US.UTF-8<br />
<br />
Для русского языка:<br />
<br />
# echo LANG=ru_RU.UTF-8 > /etc/locale.conf<br />
# export LANG=ru_RU.UTF-8<br />
<br />
{{Note|если в начале процесса установки вы определили язык, отличный от американского английского языка, приводимая выше команда уже будет выглядеть так:<br />
# echo LANG<nowiki>=</nowiki>ru_RU.UTF-8 > /etc/locale.conf<br />
# export LANG<nowiki>=</nowiki>ru_RU.UTF-8<br />
}}<br />
<br />
Для использования других переменных {{ic|LC_*}}, сначала выполните {{ic|locale}}, чтобы увидеть доступные опции. Дополнительные сведения могут быть получены [[Locale#Setting_system-wide_locale|здесь]].<br />
<br />
{{Warning|Использовать переменную {{ic|LC_ALL}} категорически не рекомендуется, так как она изменяет значение всех остальных переменных.}}<br />
<br />
====Консольный шрифт и раскладка клавиатуры====<br />
<br />
Если вы выбрали раскладку клавиатуры на [[#Изменение_языка|начальной]] стадии процесса установки, загрузите её вновь точно таким же образом, поскольку рабочее окружение изменилось. Например:<br />
<br />
# loadkeys ''ru''<br />
# setfont cyr-sun16<br />
<br />
Чтобы эти настройки сохранились после перезагрузки, отредактируте файл {{ic|vconsole.conf}}:<br />
<br />
{{hc|# nano /etc/vconsole.conf|2=<br />
KEYMAP=ru<br />
FONT=cyr-sun16<br />
FONT_MAP=}}<br />
<br />
* {{ic|KEYMAP}} – имейте в виду, что эта настройка действует только для ваших TTY, а не графических оконных менеджеров или X.Org.<br />
<br />
* {{ic|FONT}} – доступны и другие консольные шрифты, расположенные в директории {{ic|/usr/share/kbd/consolefonts/}}. Значение по умолчанию (шрифт не указан) является безопаасным для системы, но некоторые символы на языках, отличных от английского, могут отображаться как белые квадраты или другие знаки. Рекомендуется изменить значение по умолчанию (для выбора шрифта {{ic|cyr-sun16}} или другого шрифта смотрите файлы {{ic|КREADME}} в указанной директории {{ic|/usr/share/kbd/consolefonts}}.<br />
<br />
* {{ic|FONT_MAP}} – определяет консольную таблицу символов при загрузке. Для уточнения деталей смотрите {{ic|man setfont}}. Значение по умолчанию (не установлено) является безопасным для системы.<br />
<br />
Смотрите [[Fonts (Русский)#Шрифт в консоли|Шрифт в консоли]] и {{ic|man vconsole.conf}} для получения дальнейшей информации.<br />
<br />
====Временная зона====<br />
<br />
Доступные временные зона и субзоны находятся в директориях {{ic|/usr/share/zoneinfo/<Zone>/<SubZone>}}.<br />
<br />
Чтобы увидеть доступные зоны (<Zone>), проверьте директорию {{ic|/usr/share/zoneinfo/}}:<br />
<br />
# ls /usr/share/zoneinfo/<br />
<br />
Таким же образом можно проверить содержимое директорий, относящихся к субзонам (<SubZone>):<br />
<br />
# ls /usr/share/zoneinfo/Europe<br />
<br />
Создайте символическую ссылку {{ic|/etc/localtime}} на файл со своей временной зоной {{ic|/usr/share/zoneinfo/<Zone>/<SubZone>}}, используя данную команду:<br />
<br />
# ln -s {{ic|/usr/share/zoneinfo/<Zone>/<SubZone>}} /etc/localtime<br />
<br />
'''Пример:'''<br />
<br />
# ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime<br />
<br />
====Аппаратные часы====<br />
<br />
Установите аппаратные часы единообразно во всех используемых вами операционных системах. В противном случае, ОС могут менять значения аппаратных часов и вызывать временные сдвиги.<br />
<br />
Можно сгненерировать {{ic|/etc/adjtime}} автоматически с помощью одной из следующих команд:<br />
<br />
* '''UTC''' (рекомендуется)<br />
<br />
: {{Note|Использование [[Wikipedia:Coordinated Universal Time|UTC]] для аппаратных часов не означает, что программное обеспечение будет отображать время в UTC.}}<br />
<br />
: {{bc|# hwclock --systohc --utc}}<br />
<br />
* '''localtime''' (не рекомендуется, используется по умолчанию в Windows)<br />
<br />
: {{Warning|Использование ''localtime'' может привести к ряду известных и до сих пор не исправленных ошибок. Тем не менее, не планируется отказаться от поддержки ''localtime''.}}<br />
<br />
: {{bc|# hwclock --systohc --localtime}}<br />
<br />
Если у вас уже есть (или планируется использовать) двойная загрузка с Windows:<br />
<br />
* Рекомендуется: Установить обе системы (и Arch Linux, и Windows) с использованием UTC. Потребуется быстрое [[Time#UTC_in_Windows|исправление реестра]]. Кроме того, убедитесь, что Windows не будет синхронизировать время on-line, поскольку в этом случае аппаратные часы вернутся по умолчанию к ''localtime''. Если вам нужна такая функциональность (синхронизация с использованием NTP), вместо этого следует использовать [[ntpd]] на установленной системе Arch Linux.<br />
<br />
* Не рекомендуется: Установка в Arch Linux значения по ''localtime'' и остановка любых связанных с синхронизацией времени сервисов, наподобие {{ic|ntpd.service}}. Это позволит Windows корректировать значение аппаратных часов и вам нужно будет не забывать о необходимости загружаться в Windows по меньшей мере дважды в годr (весной и осенью) когда осуществляется переход от зимнего времени к летнему и наоборот ([[Wikipedia:Daylight_savings_time|DST]], если такая смена времени вновь будет введена в России). Поэтому, пожалуйста, не задавайте на форумах вопросов о том, почему ваши часы ушли на один час вперед или назад, как это случается в течение нескольких дней или недель без загрузки Windows.<br />
<br />
====Модули ядра====<br />
<br />
{{Tip|Это просто пример, вам не обязательно ему следовать. Все необходимые модули автоматически подгружаются udev, поэтому редко возникает необходимость добавить еще какой-то модуль. Добавляйте только те модули, о которых вам точно известно, что они пропущены при загрузке ядра.}}<br />
<br />
Для того, чтобы модуль ядра подгрузился во время загрузки, поместите в директорию {{ic|/etc/modules-load.d/}} файл {{ic|*.conf}} с именем используемой программы (чтобы удобнее было запомнить имя конфигурационного файла).<br />
<br />
{{hc|# nano /etc/modules-load.d/virtio-net.conf|<br />
# Load 'virtio-net.ko' at boot.<br />
<br />
virtio-net}}<br />
<br />
Если в файле {{ic|*.conf}} указан более чем один модуль, имена модулей записываются с новой строки. Хороший пример можно посмотреть [[VirtualBox#Auto-start_modules|здесь]].<br />
<br />
Пустые строки и строки, начинающиеся с символов {{ic|#}} или {{ic|;}}, игнорируются.<br />
<br />
====Имя компьютера====<br />
<br />
Добавьте свой [[Wikipedia:hostname|hostname]] (например ''arch''):<br />
<br />
# echo ''myhostname'' > /etc/hostname <br />
<br />
{{Note|Редактировать {{ic|/etc/hosts}} нет необходимости.}}<br />
<br />
===Настройка сети===<br />
<br />
Вам надо заново сконфигурировать сетевое соединение, но на этот раз во вновь установленном окружении. Порядок и условия настройки сети очень похожи на те, что описаны [[#Настройка_сети|выше]], за исключением того, что мы собираемся сделать сетевое соединение постоянным и автоматически запускаемым при загрузке системы.<br />
<br />
{{Note|Для получения более подробной информации о конфигурации сети, посетите страницы [[Configuring Network (Русский)]] и [[Wireless Setup]].}}<br />
<br />
====Проводное соединение====<br />
<br />
; Динамический IP<br />
<br />
Если у вас только одно фиксированное проводное подключение к сети, вам необходим сервис управления сетью, доступ к которому просто получить с помощью сервиса {{ic|dhcpcd}}, где <interface> ваше проводное соединение:<br />
<br />
# systemctl enable dhcpcd@<interface>.service<br />
<br />
{{Warning|1={{ic|systemd}} теперь [https://bbs.archlinux.org/viewtopic.php?id=156375 переименовывает] сетевые соединения. Более того, {{ic|dhcpcd@.service}} всегда [https://bbs.archlinux.org/viewtopic.php?pid=1218527#p1218527 создает] символическую ссылку {{ic|dhcpcd@eth0.service}}, что бы вы ни поставли вместо {{ic|<interface>}}.}}<br />
<br />
Чтобы исправить это, скопируйте {{ic|dhcpcd@.service}} в /etc/systemd/system/ и отредактируйте строку Alias= для вашего правильного {{ic|<interface>}} или удалите ее и замените на WantedBy=multi-user.target<br />
# cp /usr/share/lib/system/dhcpcd@.service /etc/systemd/system/<br />
# nano /etc/systemd/system/dhcpcd@.service<br />
<br />
В качестве альтернативного варианта вы можете использовать инструмент {{ic|net-auto-wired}} из пакета {{Pkg|netcfg}}, который корректно создает подключение к новым сетям:<br />
<br />
Установите {{Pkg|ifplugd}}, который требуется для {{ic|net-auto-wired}}:<br />
<br />
# pacman -S ifplugd<br />
<br />
Установите dhcp профиль и включите сервис {{ic|net-auto-wired}}:<br />
<br />
# cd /etc/network.d<br />
# ln -s examples/ethernet-dhcp .<br />
# systemctl enable net-auto-wired.service<br />
<br />
; Статический IP<br />
Установите {{Pkg|ifplugd}}, который требуется для {{ic|net-auto-wired}}:<br />
<br />
# pacman -S ifplugd<br />
<br />
Установите пакет {{Pkg|netcfg}} (если вы еще не сделали этого):<br />
<br />
# pacman -S netcfg<br />
<br />
Скопируйте образец профиля из {{ic|/etc/network.d/examples}} в {{ic|/etc/network.d}}:<br />
<br />
# cd /etc/network.d<br />
# cp examples/ethernet-static .<br />
<br />
При необходимости, настройте профиль:<br />
<br />
# nano ethernet-static<br />
<br />
Измените имя сетевого интерфейса в {{ic|/etc/conf.d/netcfg}} так как скорее всего это не eth0. Вы можете узнать больше об именовании в предупреждении выше.<br />
<br />
{{ic|<nowiki>WIRED_INTERFACE="<interface>"</nowiki>}}<br />
<br />
Сделайте доступным сервис {{ic|net-auto-wired}}:<br />
<br />
# systemctl enable net-auto-wired.service<br />
<br />
====Беспроводное соединение====<br />
<br />
Для настройки и управления профилями беспроводных соединений вам необходимо установить дополнительные программы, такие, как [[netcfg]].<br />
<br />
Также популярные программы - [[NetworkManager]] и [[Wicd]].<br />
<br />
* Установите требуемые пакеты:<br />
<br />
# pacman -S wireless_tools wpa_supplicant wpa_actiond netcfg dialog<br />
<br />
Если вашему адаптеру беспроводной сети требуется проприетарная прошивка (как описано выше в секции [[#Настройка_беспроводного_соединения|Настройка сети]], а также [[Wireless_Setup#Drivers_and_firmware|здесь]]), установите пакет, содержащий эту прошивку. Например:<br />
<br />
# pacman -S zd1211-firmware<br />
После окончания остальной части этой установки и перезагрузки, вы можете подключиться к сети с помощью {{ic|wifi-menu <interface>}} (где <interface> является интерфейсом беспроводных чипсетов), который будет генерировать файл профиля в {{ic|/etc/network.d}} после имени SSID. Для ручной настройки также доступны шаблоны в {{ic|/etc/network.d/examples/}}<br />
<br />
# wifi-menu <interface><br />
<br />
{{Warning| Если вы используете wifi-menu, это должно быть сделано *после* перезагрузки, когда вы больше не в chroot. Этот процесс будет конфликтовать если запускается за пределами корня. Кроме того, можно просто настроить профиль сети вручную, используя шаблоны о которых уже упоминалось ранее, так что вам не придется беспокоиться об использовании WiFi-меню вообще.}} <br />
<br />
<br />
* Сделайте доступным (для автозагрузки) сервис {{ic|net-auto-wireless}}, который будет подключаться к известным сетям и корректно обрабатывать роуминг и обрывы соединения.<br />
<br />
# systemctl enable net-auto-wireless.service<br />
<br />
{{Note|Пакет [[Netcfg]] также включает {{ic|net-auto-wired}}, который может использоваться совместно с {{ic|net-auto-wireless}}.}}<br />
<br />
* Убедитесь в правильном установлении беспроводного интерфейса (обычно {{ic|wlan0}}) в файле {{ic|/etc/conf.d/netcfg}}:<br />
<br />
{{hc|# nano /etc/conf.d/netcfg|2=<br />
WIRELESS_INTERFACE="wlp3s0"}}<br />
<br />
Также возможно определить список сетевых профилей для автоматического соединения при использовании переменной {{ic|AUTO_PROFILES}} в {{ic|/etc/conf.d/netcfg}}. Если переменная {{ic|AUTO_PROFILES}} не установлена, система будет пытаться подключиться ко всем известным сетям.<br />
<br />
====xDSL (PPPoE), аналоговый модем или ISDN====<br />
<br />
Для xDSL, аналогового модема (dial-up) и ISDN, смотрите [[Direct Modem Connection]].<br />
<br />
===Конфигурирование pacman===<br />
<br />
Pacman - пакетный менеджер Arch Linux (аббревиатура от '''pac'''kage '''man'''ager). Настоятельно рекомендуется изучить его и научиться им пользоваться. Прочтите {{ic|man pacman}}, просмотрите статью [[pacman (Русский)]], или же сверьтесь со статьей [[Pacman Rosetta]] для сравнения данной утилиты с другими популярными пакетными менеджерами.<br />
<br />
Для выбора репозиториев (хранилищ пакетов) и настройки pacman, отредактируйте конфигурационный файл {{ic|pacman.conf}}:<br />
<br />
# nano /etc/pacman.conf<br />
<br />
{{Note|Выбирая репозитории, убедитесь, что раскомментировали как строки заголовка {{ic|[''repo_name'']}}, так и строку {{ic|Include}}. Если это не будет сделано, то выбранные репозитории будут пропущены! Это довольно распространенная ошибка. Ваши репозитории должны выглядеть так:<br />
<br />
{{hc|# nano /etc/pacman.conf|2=<br />
# The testing repositories are disabled by default. To enable, uncomment the<br />
# repo name header and Include lines. You can add preferred servers immediately<br />
# after the header, and they will be used before the default mirrors.<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 = PackageRequired<br />
Include = /etc/pacman.d/mirrorlist<br />
<br />
#[community-testing]<br />
#SigLevel = PackageRequired<br />
#Include = /etc/pacman.d/mirrorlist<br />
<br />
[community]<br />
SigLevel = PackageRequired<br />
Include = /etc/pacman.d/mirrorlist}}<br />
}}<br />
<br />
Большинство людей используют репозитории {{ic|[core]}}, {{ic|[extra]}} и{{ic|[community]}}.<br />
<br />
Если вы устанавливаете x86_64 версию Arch Linux, то рекомендуется сделать доступным также и репозиторий {{ic|[multilib]}} (позволяющий запускать в вашей системе как 32-битные, так и 64-битные приложения):<br />
<br />
[multilib]<br />
SigLevel = PackageRequired<br />
Include = /etc/pacman.d/mirrorlist<br />
<br />
Смотрите статью [[Official Repositories (Русский)]] для получения дальнейшей информации, включая детальное описание предназначения каждого репозитория.<br />
<br />
Для установки программ, которые недоступные посредством pacman, смотрите статью [[Arch User Repository (Русский)]].<br />
<br />
===Создание начального окружения виртуального диска===<br />
<br />
{{Tip|Большинство пользователей могут пропустить данный шаг и использовать загрузочный диск по умолчанию, создаваемый {{ic|mkinitcpio.conf}}. Образ initramfs (из директории {{ic|/boot}}) уже был сгенерирован на основе данного файла на предшествующем этапе установки, когда при помощи {{ic|pacstrap}} устанавливалось ядро Linux - пакет {{Pkg|linux}}.}}<br />
<br />
Тем не менее, вам необходимо установить правильные [[Mkinitcpio#HOOKS|хуки]], если корень системы расположен на USB-диске, а также если вы используете RAID, LVM, или если директория {{ic|/usr}} расположена на отдельном разделе.<br />
<br />
Отредактируйте конфигурационный файл {{ic|/etc/mkinitcpio.conf}} и сгенерируйте заново образ initramfs командой:<br />
<br />
# mkinitcpio -p linux<br />
<br />
===Установка пароля суперпользователя и добавление пользователя===<br />
<br />
Вы можете установить пароль суперпользователя (root) командой:<br />
<br />
# passwd<br />
<br />
{{Warning|Linux - многопользовательская система. Вы не должны использовать в повседневной работе учетную запись суперпользователя root. Это более, чем нежелательно - это опасно. Используйте суперпользователя только для задач управления системой.}}<br />
<br />
Создайте обычного пользователя (без повышенных привилегий) одним из двух приведенных ниже способов. Пользователь под именем ''archie'' здесь приведен исключительно в качестве примера.<br />
<br />
====Интерактивный метод====<br />
<br />
Команда {{ic|adduser}} будет работать в интерактивном режиме:<br />
<br />
{{hc|# adduser|<br />
<br />
Login name for new user []: '''archie''' #Имя (логин) нового пользователя<br />
<br />
User ID ('UID') [ defaults to next available ]: #ID пользователя (по умолчанию следующее свободное)<br />
<br />
Initial group [ users ]: #Группа, в которую первоначально входит пользователь<br />
<br />
Additional groups (comma separated) []: '''audio,games,lp,optical,power,scanner,storage,video''' #Дополнительные группы (разделяемые запятой)<br />
<br />
Home directory [ /home/archie ]: #Домашняя директория пользователя<br />
<br />
Shell [ /bin/bash ]: #Оболочка (в примере указана оболочка Bash)<br />
<br />
Expiry date (YYYY-MM-DD) []: #Дата, когда истечет срок использования данного логина}}<br />
<br />
Как показано в приведенном примере, вам следует указать только лишь имя пользователя (еще именуемое его "логином" - {{ic|Login name}}) и дополнительные группы, в которые должен входить ваш пользователь ({{ic|Additional groups}}), а остальные поля оставить незаполненными.<br />
<br />
Список дополнительных групп {{ic|Additional groups}} из примера является типичным выбором для настольной системы, поэтому он и рекомендуется для новичков:<br />
<br />
* '''audio''' - для задач управления звуком и музыкального программного обеспечения.<br />
* '''games''' - для разрешения играм из группы games осуществлять операции записи.<br />
* '''lp''' - для управления функциями печати.<br />
* '''optical''' - для доступа к приводам оптических дисков.<br />
* '''power''' - для использования функций управления питанием (например выключение кнопкой power на корпусе).<br />
* '''scanner''' - для использования сканера.<br />
* '''storage''' - для управления устройствами хранения данных.<br />
* '''video''' - для задач, связанных с видео.<br />
<br />
Для получения дальнейшей информации о приведенных выше группах или других группах, смотрите [[Groups#User_groups|User groups]].<br />
<br />
Теперь вам будет представлен предварительный просмотр нового аккаунта, а также возможность отменить или продолжить операцию. После нажатия {{Keypress|Enter}} будет создана новая учетная запись и вам будет предложено ввести дополнительные (необязательные) сведения о новом пользователе (например, его полное имя). После этого вам будет предложено ввести пароль для данной учетной записи.<br />
<br />
====Неинтерактивный метод====<br />
<br />
# useradd -m -g users -G audio,games,lp,optical,power,scanner,storage,video -s /bin/bash archie<br />
<br />
Вам надо будет установить пароль командой {{ic|passwd}}. Для ввода дополнительной информации используйте команду {{ic|chfn}}.<br />
<br />
====Удаление учетной записи пользователя====<br />
<br />
В случае ошибки, а также если вы пожелаете удалить данный пользовательский аккаунт в связи со сменой имени (логина) или по какой-нибудь другой причине, используйте команду {{ic|userdel}} (где username - имя пользователя):<br />
<br />
# userdel -r [username]<br />
<br />
Ключ {{ic|-r}} удалит также и домашнюю директорию пользователя со всем ее содержимым, включая пользовательские настройки (так называемые "файлы с точкой" - англ. "dot" files, поскольку перед именами конфигурационных файлов и директорий в пользовательском каталоге проставляется точка, чтобы они не были видны без специальных ухищрений).<br />
<br />
====Дальнейшая информация====<br />
<br />
Обратитесь к статье [[Users and Groups]] для получения дальнейшей информации. Если вы хотите просто сменить имя пользователя (своего пользователя или любого из существующих в системе), обратитесь к странице [[Change username]]. Также ознакомьтесь со страницами руководства для команд {{ic|usermod(8)}} и {{ic|gpasswd(8)}}.<br />
<br />
===Установка и конфигурирование загрузчика===<br />
<br />
====Для материнских плат с BIOS====<br />
<br />
Для систем с BIOS существуют три загрузчика - Syslinux, GRUB и [[LILO]]. Выберите тот загрузчик, который вам наиболее удобен. Ниже будет объяснена установка только загрузчиков Syslinux и GRUB. <br />
<br />
* Syslinux ограничен в своей функциональности(в настоящее время) - он может загружать только разделы с того диска, на котором он установлен. Считается, что его конфигурационный файл легче понять. Пример конфигурации смотрите [https://bbs.archlinux.org/viewtopic.php?pid=1109328#p1109328 здесь].<br />
<br />
* GRUB функционально богаче и поддерживает более сложные сценарии. Его конфигурационный файл больше напоминает скриптовый язык и может вызвать трудности у начинающих пользователей при ручном конфигурировании. Рекомендуется, чтобы новички автоматически генерировали данный конфигурационный файл.<br />
<br />
===== Syslinux =====<br />
<br />
Установите пакет {{Pkg|syslinux}} и затем используйте скрипт {{ic|syslinux-install_update}} для автоматической ''установки'' файлов ({{ic|-i}}), обозначения ''активного'' раздела путем установки флага загрузки ({{ic|-a}}) и установки загрузочного кода ''MBR'' ({{ic|-m}}):<br />
<br />
{{Note|Если вы размечали диск как GPT, поставьте также пакет {{Pkg|gptfdisk}} - ({{ic|pacman -S gptfdisk}}), поскольку он содержит утилиту {{ic|sgdisk}}, позволяющую устанавливать специфичный для GPT флаг загрузки.}}<br />
<br />
# pacman -S syslinux<br />
# syslinux-install_update -iam<br />
<br />
Настройте {{ic|syslinux.cfg}} для указания правильного загрузочного раздела. Этот шаг жизненно необходим. Если конфигурационный файл будет содержать неверное указание раздела загрузки, то Arch Linux не загрузится. Измените {{ic|/dev/sda3}} на соответствующий загрузочный раздел вашей системы ''(если вы разбили ваш диск так, как было указано в [[#Подготовка_жесткого_диска|данном примере]], вышим загрузочным разделом является sda1)''. Сделайте тоже самое для пункта fallback.<br />
<br />
{{hc|# nano /boot/syslinux/syslinux.cfg|2=<br />
...<br />
LABEL arch<br />
...<br />
APPEND root=/dev/sda3 ro<br />
...}}<br />
<br />
Для получения более детальной информации о конфигурировании и использовании Syslinux, смотрите [[Syslinux]].<br />
<br />
===== GRUB =====<br />
<br />
{{Note|При GPT-разметке дисков на материнских платах с BIOS, GRUB нуждается в 2-мегабайтном "[[GRUB#GPT_specific_instructions|загрузочном разделе BIOS]]".}}<br />
<br />
{{Note|Пожалуйста, не пользуйтесь обозначениями разделов наподобие {{ic|/dev/sda1}} в приведенной ниже команде.}}<br />
<br />
# pacman -S grub-bios<br />
# grub-install --target=i386-pc --recheck /dev/sda<br />
# cp /usr/share/locale/en\@quot/LC_MESSAGES/grub.mo /boot/grub/locale/en.mo<br />
<br />
Хотя использование созданного вручную файла конфигурации {{ic|grub.cfg}} полностью допустимо, начинающим пользователям рекомендуется генерировать данный файл автоматически:<br />
<br />
{{Tip|Для автоматического поиска других операционных систем на вашем компьютере, перед генерированием конфигурационного файла установите {{Pkg|os-prober}}:<br />
# pacman -S os-prober<br />
}}<br />
<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
Для получения более детальной информации о конфигурировании и использовании GRUB, смотрите [[GRUB]].<br />
<br />
====Для материнских плат UEFI====<br />
<br />
Для загрузки UEFI, требуется GPT-разметка диска и разметка системы под UEFI (512 Мб или больше, FAT32, должен присутствовать тип {{ic|EF00}}) и диск должен быть смонтирован в {{ic|/boot/efi}}. Если вы с самого начала следовали указаниям данного руководства, у вас уже соблюдены все необходимые требования.<br />
<br />
Несмотря на наличие других [[UEFI_Bootloaders|загрузчиков UEFI]], рекомендуется использовать EFISTUB. Ниже приведены инструкции по установке EFISTUB и GRUB.<br />
<br />
{{Note|Syslinux не поддерживает UEFI.}}<br />
<br />
===== EFISTUB =====<br />
<br />
Используя EFISTUB, ядро Linux может выступать как свой собственный загрузчик. Вот загрузочный метод UEFI, рекомендованный разработчиками и более простой, чем {{ic|grub-efi-x86_64}}. Приведенные ниже шаги устанавливают rEFInd (форк rEFIt), чтобы обеспечить меню для ядер EFISTUB, равно как и для загрузки других загрузчиков UEFI. Вы можете пользоваться такжеe [[UEFI_Bootloaders#Using_gummiboot|gummiboot]] (не протестирован) вместо rEFInd. И rEFInd, и gummiboot могут обнаружить загрузчик Windows UEFI при двойной загрузке.<br />
<br />
1. Загрузитесь в режиме UEFI и подгрузите модуль ядра {{ic|efivars}} перед выполнением chroot:<br />
<br />
# modprobe efivars # перед выполнением chroot<br />
<br />
2. Примонтируйте раздел UEFISYS в {{ic|/mnt/boot/efi}}, выполните chroot и [[UEFI_Bootloaders#Setting_up_EFISTUB|скопируйте ядро и файлы initramfs]] в {{ic|/boot/efi}}.<br />
<br />
3. Каждый раз при обновлении ядра и файлом initramfs files в {{ic|/boot}} их необходимо обновлять и в {{ic|/boot/efi/EFI/arch}}. Этот процесс может быть автоматизирован или [[UEFI_Bootloaders#Sync_EFISTUB_Kernel_in_UEFISYS_partition_using_Systemd|с использованием systemd]] или же [[UEFI_Bootloaders#Sync_EFISTUB_Kernel_in_UEFISYS_partition_using_Incron|с использованием incron]] (для установок, не использующих systemd).<br />
<br />
4. Установите следующие пакеты:<br />
<br />
# pacman -S refind-efi-x86_64 efibootmgr<br />
<br />
5. Установите rEFInd в раздел UEFISYS (кратко из статьи [[UEFI Bootloaders#Using rEFInd]]):<br />
<br />
# mkdir -p /boot/efi/EFI/arch/refind<br />
# cp /usr/lib/refind/refindx64.efi /boot/efi/EFI/arch/refind/refindx64.efi<br />
# cp /usr/lib/refind/config/refind.conf /boot/efi/EFI/arch/refind/refind.conf<br />
# cp -r /usr/share/refind/icons /boot/efi/EFI/arch/refind/icons<br />
<br />
6. Создайте файл {{ic|refind_linux.conf}} с параметрами ядра, которые будут использоваться rEFInd:<br />
<br />
{{hc|# nano /boot/efi/EFI/arch/refind_linux.conf|2=<br />
"Boot to X" "root=/dev/sdaX ro rootfstype=ext4 systemd.unit=graphical.target"<br />
"Boot to console" "root=/dev/sdaX ro rootfstype=ext4 systemd.unit=multi-user.target"}}<br />
<br />
7. Добавьте rEFInd в загрузочное меню UEFI, используя [[UEFI#efibootmgr|efibootmgr]]. <br />
<br />
{{Warning|Использование {{ic|efibootmgr}} на компьютерах Apple Macs может повредить прошивку и потребовать перепрошивки ROM на материнской плате. Для компьютеров Mac, используйте {{AUR|mactel-boot}}, или "благословите" данное использование из самой Mac OS X.}}<br />
<br />
# efibootmgr -c -g -d /dev/sdX -p Y -w -L "Arch Linux (rEFInd)" -l '\\EFI\\arch\\refind\\refindx64.efi'<br />
<br />
{{Note|В приведенной выше команде, X и Y обозначают диски и разделы раздела UEFISYS. Например, в {{ic|/dev/sdc5}}, X обозначает "c" и Y обозначает "5".}}<br />
<br />
8. (не обязательно) Как запасный вариант, в случае, когда созданный {{ic|efibootmgr}} загрузочная запись не работает, скопируйте {{ic|refindx64.efi}} в {{ic|/boot/efi/EFI/boot/bootx64.efi}} как показано ниже:<br />
<br />
# cp -r /boot/efi/EFI/arch/refind/* /boot/efi/EFI/boot/<br />
# mv /boot/efi/EFI/boot/refindx64.efi to /boot/efi/EFI/boot/bootx64.efi<br />
<br />
===== GRUB =====<br />
<br />
{{Note|В случае системы с 32-битным EFI, как Mac до 2008 года, вместо этого установите {{ic|grub-efi-i386}} и используйте опцию {{ic|1=--target=i386-efi}}.}}<br />
<br />
# pacman -S grub-efi-x86_64 efibootmgr<br />
# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=arch_grub --recheck<br />
# cp /usr/share/locale/en\@quot/LC_MESSAGES/grub.mo /boot/grub/locale/en.mo<br />
<br />
Выполните следующую команду для создания пункта меню GRUB в загрузочном меню UEFI. Смотрите [[UEFI#efibootmgr|efibootmgr]] для получения дальнейшей информации.<br />
<br />
# efibootmgr -c -g -d /dev/sdX -p Y -w -L "Arch Linux (GRUB)" -l '\\EFI\\arch_grub\\grubx64.efi'<br />
<br />
Хотя использование созданного вручную файла конфигурации {{ic|grub.cfg}} полностью допустимо, начинающим пользователям рекомендуется генерировать данный файл автоматически:<br />
<br />
{{Tip|Для автоматического поиска других операционных систем на вашем компьютере, перед генерированием конфигурационного файла установите {{Pkg|os-prober}}:<br />
# pacman -S os-prober<br />
}}<br />
<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
Для получения более детальной информации о конфигурировании и использовании GRUB, смотрите [[GRUB]].<br />
<br />
===Обновление системы===<br />
<br />
{{Warning|1=Обновление системы каждый раз должно выполняться c осторожностью. Очень важно прочитать и понять [https://bbs.archlinux.org/viewtopic.php?id=57205 эти правила (англ.)], прежде чем продолжить.}}<br />
<br />
Часто разработчики предоставляют важную информацию о требованиях к конфигурации и изменениях с указанием известных проблем. От пользователя Arch Linux ожидается, что он обратит внимание на данные сведения перед выполнением обновления:<br />
<br />
* [http://archlinux.org.ru/ Новости на главной странице Arch]. Если вы не прочитали их перед обновлением и затем обнаружили ошибку, проверьте раздел новостей ''до'' того, как зададите вопрос на форуме!<br />
<br />
* [https://archlinux.org/pipermail/arch-announce/ списки рассылки (англ.)].<br />
<br />
Синхронизуйте и обновите базу данных пакетов, выполните обновление системы в целом командой:<br />
<br />
# pacman -Syu<br />
<br />
Или, что то же самое:<br />
<br />
# pacman --sync --refresh --sysupgrade<br />
<br />
Если в этот момент вам будет предложено обновить pacman, согласитесь, нажав клавишу {{Keypress|Y}}, а по окончании обновления установщика повторите команду {{ic|pacman -Syu}}.<br />
<br />
{{Note|Иногда изменения в конфигурации могут потребовать от пользователя определенных действий в процессе обновления; читайте вывод программы pacman для получения соответствующей информации. Смотрите статью [[Pacnew and Pacsave Files]] для получения более подробной информации.}}<br />
<br />
{{Note|Перезагрузитесь, если обновили пакет ядра {{Pkg|linux}}.}}<br />
<br />
Имейте в виду, что дистрибутив Arch придерживается модели '''rolling release'''. Это означает, что пользователю не придется переустановить или выполнять сложную пересборку системы для обновления её до новейшей версии. Периодическое использование команды {{ic|pacman -Syu}} (с учетом приведенных выше предупреждений) позволяет сохранять всю систему в актуальном состоянии и на переднем крае. По итогам этого обновления будет получена система с текущими версиями всех пакетов.<br />
<br />
Смотрите раздел [[FAQ_(Русский)#Управление пакетами|Управление пакетами]] статьи [[FAQ (Русский)]] для получения ответов на вопросы, касающиеся обновления системы и управления пакетами.<br />
<br />
=====Игнорирование обновления пакетов=====<br />
<br />
Команда {{ic|pacman -Syu}} выполнит обновление вашей системы. Существует возможность защитить какой-либо пакет от обновления. Обычно это касается пакета, обновление которого может создать проблемы для стабильной работы вашей системы. <br />
<br />
В этом случае у вас есть два варианта: <br />
<br />
* Обозначить пакет/пакеты, который/которые вы не хотите обновлять, указав при обновлении ключ {{ic|--ignore}}:<br />
<br />
# pacman -Syu --ignore libass filesystem<br />
<br />
* Указать игнориуемый пакет/пакеты в конфигурационном файле {{ic|pacman.conf}}:<br />
<br />
{{hc|# nano /etc/pacman.conf|2=<br />
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup<br />
IgnorePkg = libass filesystem}}<br />
<br />
Ожидается, что опытные пользователи будут поддерживать '''всю''' систему в актуальном состоянии при помощи {{ic|pacman -Syu}}, а не обновлять отдельные пакеты. Конечно, вы можете отклониться от такого типичного использования, если пожелаете; однако, имейте в виду: в таком случае гораздо вероятнее, что программы не будут работать, как ожидается, и такие действия могут повредить всю систему. Большинство проблем возникает, когда производится выборочное обновление пакетов или нестандартная компиляция. Поэтому использование секции {{ic|IgnorePkg}} в файле {{ic|/etc/pacman.conf}} не рекомендуется и должно применяться крайне редко, и только если вы знаете, что вы делаете. Используйте {{ic|IgnorePkg}} на свой страх и риск.<br />
<br />
===Отмонтирование разделов и перезагрузка===<br />
<br />
Покиньте окружение chroot:<br />
<br />
# exit<br />
<br />
Так как разделы были примонтированы в {{ic|/mnt}}, мы используем следующую команду, чтобы отмонитровать их:<br />
<br />
# umount /mnt/{boot,home,}<br />
<br />
Перезагрузите компьютер:<br />
<br />
# reboot<br />
<br />
{{Tip|Не забудьте вынуть установочный диск из привода, иначе вы снова попадете в установщик системы.}}<noinclude><br />
{{Beginners' Guide navigation (Русский)}}</noinclude></div>Nobushttps://wiki.archlinux.org/index.php?title=Beginners%27_Guide/Installation_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=251819Beginners' Guide/Installation (Русский)2013-03-24T11:23:04Z<p>Nobus: /* Настройка сети */</p>
<hr />
<div><noinclude><br />
[[Category:Русский]]<br />
[[da:Beginners' Guide/Installation]]<br />
[[en:Beginners' Guide/Installation]]<br />
[[es:Beginners' Guide/Installation]]<br />
[[hr:Beginners' Guide/Installation]]<br />
[[hu:Beginners' Guide/Installation]]<br />
[[it:Beginners' Guide/Installation]]<br />
[[ko:Beginners' Guide/Installation]]<br />
[[nl:Beginners' Guide/Installatie]]<br />
[[pt:Beginners' Guide/Installation]]<br />
[[sr:Beginners' Guide/Installation]]<br />
[[zh-CN:Beginners' Guide/Installation]]<br />
{{Note| Это часть более обширной статьи '''[[Beginners' Guide_(Русский)|Руководство для новичков]]'''.}}<br />
</noinclude><br />
<br />
==Установка==<br />
<br />
Теперь вы видите приглашение командной строки от имени пользователя root.<br />
<br />
====Изменение языка====<br />
<br />
{{Tip|Эти действия выполнять не обязательно, если вам не нужно вносить записи в конфигурационные файлы на русском языке, или же использовать отличные от стандартных английских символы при установлении пароля Wi-Fi, а также получать системные сообщения на родном языке (например, сообщения об ошибках).}}<br />
<br />
По умолчанию, раскладка клавиатуры установлена в {{ic|us}}. Если вам нужна не раскладка, отличная от американской ([[Wikipedia:File:KB_United_States-NoAltGr.svg|US]]), как, впрочем, и предполагается для русскоязычного пользователя, выполните:<br />
<br />
# loadkeys ''layout''<br />
<br />
...где ''layout'' может быть {{ic|ru}} (для русской раскладки), {{ic|ua}} (для украинской) и др. Другие раскладки можно найти в {{ic|/usr/share/kbd/keymaps/}} (можно не указывать полный путь и расширение файла с раскладкой при использовании команды loadkeys). См. соответствующий список раскладок [[KEYMAP#Keyboard_layouts|здесь]].<br />
<br />
Шрифт также должен быть изменен, поскольку большинство языков используют больше символов, чем 26 букв [[Wikipedia:English_alphabet|английского алфавита]]. В противном случае некоторые символы, отличные от стандартных английских, могут отображаться как белые квадраты или другие знаки. Обратите внимание, что наименование шрифта чувствительно к регистру, поэтому, пожалуйста, введите его ''точно'' так, как вы его видите, например:<br />
<br />
# setfont cyr-sun16<br />
<br />
Другие шрифты, в том числе кириллические, можно найти в {{ic|/usr/share/kbd/consolefonts}}.<br />
<br />
По умолчанию языком системы является английский (US/США). Если вы хотите изменить настройки языка, используемые в процессе установки ''(русский, в данном примере)'', удалите символ комментария {{ic|#}} перед нужной вам [http://www.greendesktiny.com/support/knowledgebase_detail.php?ref=EUH-483 локалью] в файле {{ic|/etc/locale.gen}}, наряду с английской локалью (US). Пожалуйста, выбирайте юникодовскую локаль {{ic|UTF-8}}.<br />
<br />
Используйте клавиши {{Keypress|Ctrl+X}} для выхода, когда же вам будет предложено сохранить изменения, нажмите {{Keypress|Y}} и {{Keypress|Enter}} для сохранения файла под тем же именем.<br />
<br />
{{hc|# nano /etc/locale.gen|<br />
en_US.UTF-8 UTF-8<br />
ru_RU.UTF-8 UTF-8}}<br />
<br />
# locale-gen<br />
# export LANG=ru_RU.UTF-8<br />
<br />
Помните, раскладка переключается установленным для нее и неизменяемым сочетанием клавиш (для {{ic|ru}} - {{Keypress|LCtrl+LShift}}).<br />
<br />
===Настройка сети===<br />
<br />
{{Warning| udev теперь не присваивает имена сетевых интерфейсов по схеме wlanX и ethX. Если вы пришли с другого дистрибутива или переустанавливаете Arch и не осведомлены о новом стиле именования интерфейсов, пожалуйста не думайте что Ваше беспроводное соединение имеет имя wlan0, или проводное соединение имеет имя eth0. Вы можете использовать утилиту "ip" для того чтобы узнать имена интерфейсов.}}<br />
<br />
Начиная с релиза systemd-197's и далее, udev теперь назначае предсказуемое, стабильное имя сети которое отличается от привычного именования (wlan0, wlan1, и т.д.). Эти имена интерфейсов гарантированно сохраняются и после перезагрузки, которые решают проблему отсутствия предсказуемости назначения имени сетевого интерфейса. Для получения дополнительной информации о том, почему это было необходимо, читайте http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames .<br />
<br />
Сетевой демон {{ic|dhcpcd}} стартует при загрузке автоматически и попытается подключиться к проводному соединению, если оно доступно. Попробуйте пропинговать какой-нибудь сайт.<br />
<br />
{{hc|# ping -c 3 ya.ru|2=<br />
PING ya.ru (93.158.134.203) 56(84) bytes of data.<br />
64 bytes from www.yandex.ru (93.158.134.203): icmp_req=1 ttl=54 time=62.4 ms<br />
64 bytes from www.yandex.ru (93.158.134.203): icmp_req=2 ttl=54 time=63.0 ms<br />
64 bytes from www.yandex.ru (93.158.134.203): icmp_req=3 ttl=54 time=62.4 ms<br />
<br />
--- ya.ru ping statistics ---<br />
3 packets transmitted, 3 received, 0% packet loss, time 2002ms<br />
rtt min/avg/max/mdev = 62.423/62.623/63.009/0.273 ms<br />
}}<br />
<br />
Если вместо этого вы увидели ошибку {{ic|ping: unknown host}}, Вам необходимо настроить соединение в ручную как описано ниже<br />
<br />
В противном случае переходите к [[#Подготовка жесткого диска|Подготовка жесткого диска]].<br />
<br />
====Настройка проводного соединения====<br />
<br />
Выполните эту процедуру, если вам нужно установить проводное соединение через статический IP адрес.<br />
Во-первых, определите название вашего интерфейса.<br />
{{hc|# ip link|<br />
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT <br />
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00<br />
2: enp2s0f0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000<br />
link/ether 00:11:25:31:69:20 brd ff:ff:ff:ff:ff:ff<br />
3: wlp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT qlen 1000<br />
link/ether 01:02:03:04:05:06 brd ff:ff:ff:ff:ff:ff}}<br />
<br />
В этом примере сетевой интерфейсом Ethernet является enp2s0f0. Если вы не уверены, что ваш Ethernet интерфейс может начинаться с буквы "e", и вряд ли будет "lo" или начинаться с "w". Вы также можете использовать iwconfig и посмотреть, какие интерфейсы не являются беспроводными:<br />
<br />
<br />
{{hc|# iwconfig|2=<br />
enp2s0f0 no wireless extensions.<br />
wlp3s0 IEEE 802.11bgn ESSID:"NETGEAR97" <br />
Mode:Managed Frequency:2.427 GHz Access Point: 2C:B0:5D:9C:72:BF <br />
Bit Rate=65 Mb/s Tx-Power=16 dBm <br />
Retry long limit:7 RTS thr:off Fragment thr:off<br />
Power Management:on<br />
Link Quality=61/70 Signal level=-49 dBm <br />
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0<br />
Tx excessive retries:0 Invalid misc:430 Missed beacon:0<br />
lo no wireless extensions.}}<br />
<br />
В этом примере, ни enp2s0f0 ни lo не имеют беспроводных дополнений, то есть enp2s0f0 наш интерфейс Ethernet.<br />
<br />
Вам необходимо знать следующие настройки:<br />
<br />
* Ваш статический IP адрес.<br />
* Маска сети.<br />
* Широковещательный адрес<br />
* Ваш шлюз.<br />
* Адреса ваших DNS серверов.<br />
* Доменное имя.<br />
<br />
Поднимите сетевое соединение, например, для {{ic|enp2s0f0}}:<br />
<br />
# ip link set enp2s0f0 up<br />
<br />
Добавьте адрес:<br />
<br />
# ip addr add <ip address>/<subnetmask> dev <interface><br />
<br />
Например:<br />
<br />
# ip addr add 192.168.1.2/24 dev enp2s0f0<br />
<br />
Для дополнительной настройки обратитесь к {{ic|man ip}}.<br />
<br />
Добавьте ваш шлюз как показано ниже, вставив IP-адрес своего шлюза:<br />
<br />
# ip route add default via <ip address><br />
<br />
Например:<br />
<br />
# ip route add default via 192.168.1.1<br />
<br />
Отредактируйте {{ic|resolv.conf}}, сменив адреса ваших DNS серверов и доменное имя:<br />
<br />
{{hc|# nano /etc/resolv.conf|<br />
nameserver 61.23.173.5<br />
nameserver 61.95.849.8<br />
search example.com}}<br />
<br />
{{Note|Сейчас у вас может быть включено максимум 3 строки {{ic|nameserver}}.}}<br />
<br />
Теперь у вас должно появиться работающее сетевое соединение. Если этого не произошло, обратитесь к странице [[Configuring Network (Русский)]].<br />
<br />
====Настройка беспроводного соединения====<br />
<br />
Следуйте указанной процедуре, если вам в процессе установки необходимо беспроводное соединение.<br />
Если вы в первый раз уставливаете Arch Linux, вы будете удивлены что названия беспроводных интерфейсов теперь не именуются по схеме "wlanX". Не паникуйте, используйте {{ic|iwconfig}} чтобы узнать имя вашего беспроводного соединения.<br />
<br />
Драйверы и утилиты для настройки беспроводного соединения теперь доступны на установочном диске. Для успешной настройки имеет большое значение хорошее представление о собственном оборудовании для беспроводных сетей, . Учтите, что ''описываемый процесс настройки'' действителен только ''на время установки в live-системе''. Вам нужно будет повторить его уже ''в установленной системе после загрузки в нее''.<br />
<br />
Имейте также в виду, что настройка беспроводного соединения необязательна для установки системы, если во время установки такое соединение не доступно. Функциональность, обеспечиваемая беспроводным соединением, всегда может быть добавлена позже.<br />
<br />
{{Note|Данный пример использует {{ic|wlp3s0}} в качестве имени интерфейса и {{ic|linksys}} для ESSID. Не забудьте изменить эти настройки применительно к вашей ситуации.}}<br />
<br />
Основные этапы:<br />
* (необязательно) Определите используемое беспроводное оборудование:<br />
<br />
# lspci | grep -i net<br />
или же при использовании USB-адаптера:<br />
<br />
# lsusb<br />
<br />
* Удостоверьтесь командой {{ic|/usr/sbin/iwconfig}}, что udev загрузил нужный драйвер, который создал беспроводный интерфейс:<br />
<br />
{{Note|Если вы не увидели аналогичный вывод, значит драйвер для вашего беспроводного оборудования не был загружен. В этом случае вы должны загрузить драйвер самостоятельно. Обратитесь к статье [[Wireless Setup]] для получения дополнительной информации.}}<br />
<br />
{{hc|# iwconfig|2=<br />
enp2s0f0 no wireless extensions.<br />
wlp3s0 IEEE 802.11bgn ESSID:"NETGEAR97" <br />
Mode:Managed Frequency:2.427 GHz Access Point: 2C:B0:5D:9C:72:BF <br />
Bit Rate=65 Mb/s Tx-Power=16 dBm <br />
Retry long limit:7 RTS thr:off Fragment thr:off<br />
Power Management:on<br />
Link Quality=61/70 Signal level=-49 dBm <br />
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0<br />
Tx excessive retries:0 Invalid misc:430 Missed beacon:0<br />
lo no wireless extensions.}}<br />
<br />
В этом примере {{ic|wlp3s0}} - имя беспроводного интерфейса. <br />
<br />
* Поднимите интерфейс:<br />
<br />
# ip link set wlp3s0 up<br />
<br />
Некоторое беспроводное оборудование в дополнение к драйверу требует также загрузки проприетарной прошивки. В этом случае вы, скорее всего, увидите такое сообщение:<br />
<br />
{{hc|# ip link set wlp3s0 up|<br />
SIOCSIFFLAGS: No such file or directory}}<br />
<br />
Если вы не уверены в необходимости проприетарной прошивки для вашего оборудования, выполните команду {{ic|/usr/bin/dmesg}} для того, чтобы увидеть сообщения ядра системы, где должна быть строка с требованием загрузить прошивку. <br />
<br />
Вот пример для чипсета Intel:<br />
<br />
{{hc|# dmesg <nowiki>|</nowiki> grep firmware|<br />
firmware: requesting iwlwifi-5000-1.ucode}}<br />
<br />
Если подобного сообщения нет, значит, ваше оборудование не требует загрузки прошивки.<br />
<br />
{{Note|Прошивки для беспроводного оборудования во время установки расположены в директории {{ic|/usr/lib/firmware}}, ''но должны быть установлены явным образом в новую систему на этапе выбора пакетов!'' Процесс установки пакетов описан ниже в этом руководстве. Убедитесь, что вы устанавливаете как драйвера, так и прошивки для вашего беспроводного оборудования. Прочтите статью [[Wireless Setup]], если вы не уверены насчет прошивки, требуемой для Вашего оборудования. Это типичная ошибка.}}<br />
<br />
Наконец, используйте интерактивное меню для установки подключения по Wi-Fi, предлагаемое пакетом {{pkg|netcfg}}:<br />
<br />
# wifi-menu wlp3s0<br />
<br />
Теперь у вас должно появиться работающее сетевое соединение. Если этого не произошло, обратитесь к странице [[Wireless Setup]].<br />
<br />
====xDSL (PPPoE), аналоговый модем или ISDN====<br />
<br />
Если у вас роутер в режиме моста, выполните:<br />
<br />
# pppoe-setup<br />
<br />
* Введите свое имя (логин), выданный провайдером.<br />
* Нажмите {{Keypress|Enter}} для "eth0".<br />
* Нажмите {{Keypress|Enter}} для выбора опции "no", так что эта настройка останется постоянной.<br />
* Нажмите {{ic|server}} (выбор в большинстве случаев).<br />
* Нажмите {{Keypress|1}} для брандмауэра.<br />
* Введите пароль, выданный провайдером.<br />
* В конце нажмите {{Keypress|y}}.<br />
<br />
Для использования этих настроек и подключения к провайдеру, выполните:<br />
<br />
# pppoe-start<br />
<br />
Вам также может потребоваться настроить свой конфигурационный файл {{ic|resolv.conf}}:<br />
<br />
# echo nameserver 8.8.8.8 > /etc/resolv.conf<br />
<br />
Для аналогового модема (dial-up) и ISDN, см. [[Direct Modem Connection]].<br />
<br />
====Использование прокси-сервера====<br />
<br />
Если вы используете прокси-сервер, вам необходимо экспортировать переменные среды {{ic|http_proxy}} и {{ic|ftp_proxy}}. '''[[Proxy|Нажмите здесь]]''' для получения информации по данной теме.<br />
<br />
{{Note|В установленной системе данные переменные должны быть указаны в файле {{ic|/etc/wgetrc}}.}}<br />
<br />
===Подготовка жесткого диска===<br />
<br />
{{Warning| Ошибка в разбиении диска на разделы может уничтожить данные. Поэтому настоятельно рекомендуется сделать резервную копию наиболее важных данных.}}<br />
Новичкам рекомендуется использовать графическую утилиту для разметки диска. Хороший пример подобной утилиты -[http://gparted.sourceforge.net/download.php GParted], запускаемый из live-дистрибутива Linux, такого как [[Wikipedia:Parted_Magic|Parted Magic]], [[Wikipedia:Ubuntu_(operating_system)|Ubuntu]], [[Wikipedia:Linux_Mint|Linux Mint]] и др. Смотрите [[Partitioning]] для получения общих сведений и убедитесь, что отформатировали разделы с файловой системой (например, '''ext4''', '''btrfs''' и др.) до перезагрузки компьютера.<br />
<br />
Если вы уже произвели разметку жесткого диска, переходите к разделу [[#Монтирование_разделов|монтированию разделов]].<br />
<br />
В противном случае, посмотрите следующий пример.<br />
<br />
====Пример====<br />
<br />
Установочный образ Arch Linux включает следующие утилиты разбиения диска:<br />
<br />
* [[Wikipedia:cfdisk|cfdisk]] – поддерживает только таблицы разделов [[MBR]].<br />
<br />
* [[Wikipedia:gdisk|gdisk]] – поддерживает только таблицы разделов [[GPT]].<br />
<br />
* [[Wikipedia:parted|parted]] – поддерживает обе таблицы разделов.<br />
<br />
Приводимый ниже пример использует утилиту '''cfdisk''', но с той же легкостью может быть использована и утилита '''gdisk''' для разделов GPT.<br />
<br />
{{Note|Если у вас материнская плата [[UEFI]], вам потребуется создать дополнительный раздел, именуемый системным разделом UEFI. Обратитесь к [[Unified_Extensible_Firmware_Interface#Create_an_UEFI_System_Partition_in_Linux|данной статье]].}}<br />
<br />
{{Note|Если вы хотите установить загрузчик GRUB в режиме BIOS-GPT, то вам потребуется создать "загрузочный раздел BIOS" размером в 2 Мб. Обратитесь к [[GRUB#GPT_specific_instructions|особым инструкциям по использованию GPT]] за дальнейшей информацией.}}<br />
<br />
{{Note|Если вы производите установку на USB-флешку, смотрите [[Installing Arch Linux on a USB key]].}}<br />
<br />
{{Note|Если вы не будете использовать двойную загрузку с Windows, то предпочтительнее использовать таблицу разделов [[GPT]] вместо [[MBR]]. Разбиение на разделы GPT может быть проведено только с использованием '''gdisk''' или '''parted'''. Прочтите статью [[GPT]] для выяснения преимуществ такого разбиения.}}<br />
<br />
# cfdisk /dev/sda<br />
<br />
Система в данном примере будет содержать корневой раздел (root) ({{ic|/}}) размером 15 Гб, раздел подкачки {{ic|swap}} в 1 Гб и домашний раздел {{ic|/home}}, занимающий всё оставшееся место.<br />
<br />
Следует особо отметить, что разбиение диска отвечает личным предпочтениям пользователя и данный пример имеет исключительно иллюстративный характер. См. [[Partitioning]].<br />
<br />
'''Root:'''<br />
<br />
* Выберите пункт New/Новый (или нажмите {{Keypress|N}}) – {{Keypress|Enter}} для Primary/Основного раздела - введите размер "15360" – {{Keypress|Enter}} для пункта Beginning/Начало – {{Keypress|Enter}} для того, чтобы сделать этот диск Bootable/Загрузочным.<br />
<br />
'''Swap:'''<br />
<br />
* Клавишей со стрелкой вниз перейдите на свободное пространство диска.<br />
* Выберите пункт New/Новый (или нажмите {{Keypress|N}}) – {{Keypress|Enter}} для Primary/Основного раздела - введите размер "1024" – {{Keypress|Enter}} для пункта Beginning/Начало.<br />
* Выберите Type/Тип (или нажмите {{Keypress|T}}) – нажмите любую клавишу, чтобы прокрутить список вниз – {{Keypress|Enter}} для выбора типа 82.<br />
<br />
'''Home:'''<br />
<br />
* Клавишей со стрелкой вниз перейдите на свободное пространство диска.<br />
* Выберите пункт New/Новый (или нажмите {{Keypress|N}}) – {{Keypress|Enter}} для Primary/Основного раздела – {{Keypress|Enter}} для использования оставшегося дискового пространства (или вы можете вручную ввести требуемый размер раздела).<br />
<br />
Вот как это должно выглядеть:<br />
<br />
Name Flags Part Type FS Type [Label] Size (MB)<br />
-----------------------------------------------------------------------<br />
sda1 Boot Primary Linux 15360<br />
sda2 Primary Linux swap / Solaris 1024<br />
sda3 Primary Linux 133000*<br />
<br />
или в русскоязычном варианте:<br />
<br />
Имя Флаги Тип раздела Тип ФС [Метка] Размер (MБ)<br />
-------------------------------------------------------------------------<br />
sda1 Загрузочный Основной Linux 15360<br />
sda2 Основной Linux своп / Solaris 1024<br />
sda3 Основной Linux 133000*<br />
<br />
Прежде чем продолжить, проверьте несколько раз сделанные изменения и убедитесь что вы довольны как размерами разделов, так и раскладкой таблицы разбиения.<br />
<br />
Если захотите начать все сначала, можете просто выбрать Quit/Выход (или нажмите {{Keypress|Q}}) для выхода без сохранения изменений, а затем перезапустить cfdisk.<br />
<br />
Если вас устраивает разбивка, выберите Write/Запись (или нажмите {{Keypress|Shift+W}}), чтобы завершить разбиение и записать таблицу разделов на диск. Наберите "yes"/"да" и выберите Quit/Выход (или нажмите {{Keypress|Q}}), чтобы выйти из cfdisk без каких-либо изменений.<br />
<br />
Простого разбиения на разделы недостаточно, необходимо также явно задать [[File Systems|файловую систему]]. Для форматирования разделов с файловой системой ext4 выполните:<br />
<br />
# mkfs.ext4 /dev/sda1<br />
# mkfs.ext4 /dev/sda3<br />
<br />
Форматирование и подключение раздела подкачки:<br />
<br />
# mkswap /dev/sda2<br />
# swapon /dev/sda2<br />
<br />
===Монтирование разделов===<br />
<br />
Каждый раздел отождествляется определенным числовым суффиксом. Например, раздел {{ic|sda1}} указывает на первый раздел первого диска, в то время как {{ic|sda}} обозначает весь диск.<br />
<br />
Чтобы увидеть текущую таблицу разделов выполните команду:<br />
<br />
# lsblk /dev/sda<br />
<br />
Обратите внимание, что для установки вашей системы важен порядок монтирования разделов.<br />
<br />
Сперва монтируется корневой раздел (root) в {{ic|/mnt}}. В приводимом ниже примере (у вас могут быть отличия) это выглядит так:<br />
<br />
# mount /dev/sda1 /mnt<br />
<br />
Затем монтируется домашний ({{ic|/home}}) раздел и все остальные отдельные разделы ({{ic|/boot}}, {{ic|/var}} и др.), если они у вас имеются:<br />
<br />
# mkdir /mnt/home<br />
# mount /dev/sda3 /mnt/home<br />
<br />
В случае, если у вас имеется отдельный загрузочный ({{ic|/boot}}) раздел:<br />
<br />
# mkdir /mnt/boot<br />
# mount /dev/sda''x'' /mnt/boot<br />
<br />
Если у вас материнская плата UEFI, монтируется раздел UEFI:<br />
<br />
# mkdir /mnt/boot/efi<br />
# mount /dev/sda''x'' /mnt/boot/efi<br />
<br />
===Выбор зеркал===<br />
<br />
Зеркала перечислены в файле {{ic|/etc/pacman.d/mirrorlist}} и должны располагаться по приоритету. Перед установкой вы можете отредактировать файл {{ic|mirrorlist}}и поместите нужные зеркала на первые позиции. Копия этого файла будет установлена скриптом {{ic|pacstrap}} в вашу новую систему, так что стоит проделать эту работу.<br />
<br />
{{hc|# nano /etc/pacman.d/mirrorlist|<br />
##<br />
## Arch Linux repository mirrorlist<br />
## Sorted by mirror score from mirror status page<br />
## Generated on 2012-MM-DD<br />
##<br />
<br />
<nowiki>Server = http://mirror.example.xyz/archlinux/$repo/os/$arch</nowiki><br />
...}}<br />
<br />
* {{Keypress|Alt+6}} для копирования строки {{ic|Server}}.<br />
* {{Keypress|PageUp}} клавиша для прокрутки.<br />
* {{Keypress|Ctrl+U}}, чтобы вставить скопированное наверх часть списка.<br />
* {{Keypress|Ctrl+X}} для выхода, когда будет предложено сохранить изменения - нажмите {{Keypress|Y}} и {{Keypress|Enter}} для сохранения в файл с тем же именем.<br />
<br />
Если вы захотите, что можете сделать доступным ''только одно'' зеркало, удалив все остальные (используя {{Keypress|Ctrl+K}}), но обычно правильной идеей является использование нескольких зеркал, которые будут доступны, если первое из списка уйдет в offline.<br />
<br />
{{Tip|<br />
* Используйте генератор зеркал [https://www.archlinux.org/mirrorlist/ Mirrorlist Generator] для получения обновленного списка зеркал, доступных в вашей стране. Зеркала HTTP быстрее чем зеркала FTP из-за использования сообщений типа [[Wikipedia:Keepalive|keepalive]]. В случае с FTP, pacman каждый раз, когда он загружает пакет, будет посылать сигнал, завершающийся короткой паузой. Помните, что сгенерированный таким образом список зеркал будет содержать строки не только с серверами, но и указанием их статуса (если вы включили опцию {{ic|Use mirror status}}):<br />
<br />
## Score: 4.8, Russian Federation<br />
<nowiki>#Server = http://mirror.rol.ru/archlinux/$repo/os/$arch</nowiki><br />
<br />
Требуется раскомментировать только строки, содержащие сервера (начинающиеся с {{ic|Server}})!<br />
Чтобы узнать о других способах создания собственного списка зеркал, обратитесь к статьям [[Mirrors#Sorting_mirrors|Sorting mirrors]] и [[Reflector]]<br />
<br />
* [https://archlinux.org/mirrors/status/ Arch Linux MirrorStatus] сообщает различную информацию о зеркалах, такую, как сетевые проблемы с зеркалами, проблемы со сбором данных, последнее время синхронизации зеркал и т.д.}}<br />
{{Note|<br />
* При любом изменении списка зеркал всегда формируйте обновление списка пакетов с помощью команды {{ic|pacman -Syy}}. Такой способ рассматривается как правильный и поможет избежать головной боли. Смотрите статью [[Mirrors]] для получения дальнейшей информации.<br />
* Если вы используете устаревший установочный носитель, ваш список зеркал также, скорее всего, устарел, что может привести к проблемам с обновлением Arch Linux (см. {{Bug|22510}}). В силу этого настоятельно рекомендуется получить свежую информацию о зеркалах, как описано выше.<br />
* На [https://bbs.archlinux.org/ форумах Arch Linux] сообщалось о некоторых сетевых проблемах, мешающих pacman произвести обновление/синхронизацию репозиториев (см. [https://bbs.archlinux.org/viewtopic.php?id&#61;68944] и [https://bbs.archlinux.org/viewtopic.php?id&#61;65728]). Во время установки Arch Linux на реальную машину эти проблемы разрешались путем замены загрузчика файлов по умолчанию, используемого в pacman, альтернативным загрузчиком (см. [[Improve Pacman Performance]] для более детальной информации). В случае же установки Arch Linux в качестве гостевой машины в [[VirtualBox]], данная проблема также решалась путем использования типа подключения "Виртуальный адаптер хоста" вместо "NAT" в настройках виртуальной машины.}}<br />
<br />
===Установка базовой системы===<br />
<br />
Базовая система устанавливается с использованием скрипта [https://github.com/falconindy/arch-install-scripts/blob/master/pacstrap.in pacstrap].<br />
<br />
# pacstrap /mnt base base-devel<br />
<br />
{{Note|Если pacman не может проверить подписи ваших пакетов, убедитесь в правильной установке системного времени. Если системное время выставлено неверно (например, показывает 2010 год), срок ключей будут считаться истекшими или неверными, проверка подписей пакетов окажется неудачной и установка будет прервана. Скорректируйте системное время вручную или с использованием клиента {{Pkg|ntp}} и вновь запустите команду pacstrap. Обратитесь к странице [[Time_(Русский)|Time (Русский)]] за дальнейшей информацией о корректировке системного времени.}}<br />
<br />
* {{Grp|base}}: пакеты программного обеспечения из репозитория [core], обеспечивающие минимальное рабочее окружение.<br />
<br />
* {{Grp|base-devel}}: дополнительные утилиты из репозитория [core], такие, как {{ic|make}} и {{ic|automake}}. Большинству новичков лучше их установить сразу, так как в дальнейшем они, скорее всего, всё равно понадобятся для наращивания установленной системы. В частности, группа ''base-devel'' необходима для установки программ из [[Arch User Repository]].<br />
<br />
Таким образом, вы получили базовую систему Arch. Остальные пакеты могут быть установлены позднее с использованием [[pacman]].<br />
<br />
===Генерированиеe fstab===<br />
<br />
Сгенерируйте файл [[fstab]] приводимой ниже командой. Если вы предпочитаете использовать в данном файле UUID или метки дисков, соответственно добавьте опции {{ic|-U}} или {{ic|-L}}. Хорошей идеей станет проверка данного файла перед продолжением работы:<br />
<br />
{{Note|Если вы столкнетесь с ошибками при запуске genfstab или с ошибками, возникающими позже в процессе установки, '''не''' выполняйте команду genfstab вновь; просто отредактируйте файл fstab.}}<br />
<br />
# genfstab -p /mnt > /mnt/etc/fstab<br />
# nano /mnt/etc/fstab<br />
<br />
Только корневой раздел ({{ic|/}}) нуждается в значении {{ic|1}}, указываемом в последнем поле. Все остальные должны быть помечены или значением {{ic|2}}, или значением {{ic|0}} (см.[[Fstab#Field_definitions|Field definitions]]).<br />
<br />
Также, опция {{ic|1=data=ordered}} должна быть удалена, потому что она используется автоматически вне зависимости от того, указали вы ее или нет. Нет смысла загромождать ваш fstab.<br />
<br />
===Chroot и конфигурирование базовой системы===<br />
<br />
Затем, мы входим с помощью [[chroot]] во вновь установленную систему:<br />
<br />
# arch-chroot /mnt<br />
<br />
На этом этапе установки вам предстоит настроить основные файлы конфигурации своей базовой системы Arch Linux. Эти файлы могут быть созданы, если они не существуют, или отредактированы, если вы хотите изменить настройки по умолчанию.<br />
<br />
Внимательное следование приведенным ниже шагам и понимание сути своих действий имеет ключевое значение для правильной настройки системы.<br />
<br />
====Локализация====<br />
<br />
Локали используются '''glibc''' и другими программами или библиотеками для рендеринга текста, корректного отображения значений региональных валют, формата времени и даты, алфавитных особенностей и других специфических языковых и локальных стандартов.<br />
<br />
Необходимо отредактировать два файла: {{ic|locale.gen}} и {{ic|locale.conf}}.<br />
<br />
* Файл {{ic|locale.gen}} по умолчанию пустой (точнее, все значения в нем закомментированы) и вам потребуется удалить символ комментария {{ic|#}} в начале избранной (избранных) вами строки (строк) с нужными локалями. Вы можете раскомментировать больше строк, чем просто строка с американским английским языком (English (US)), одновременно выбирая свою кодировку (предпочтительно {{ic|UTF-8}}):<br />
<br />
{{hc|# nano /etc/locale.gen|<br />
en_US.UTF-8 UTF-8<br />
ru_RU.UTF-8 UTF-8}}<br />
<br />
# locale-gen<br />
<br />
Эта команда запускается при каждом обновлении '''glibc''', генерируя локали, указанные в {{ic|/etc/locale.gen}}. Не забудьте запустить ее после правки файла {{ic|locale.gen}}<br />
<br />
* Файл {{ic|locale.conf}} по умолчанию отсутствует. Его необходимо создать, при этом достаточно указать в нем только лишь значение переменной {{ic|LANG}}. Данное значение будет использоваться по умолчанию остальными переменными. Для американского английского языка:<br />
<br />
# echo LANG=en_US.UTF-8 > /etc/locale.conf<br />
# export LANG=en_US.UTF-8<br />
<br />
Для русского языка:<br />
<br />
# echo LANG=ru_RU.UTF-8 > /etc/locale.conf<br />
# export LANG=ru_RU.UTF-8<br />
<br />
{{Note|если в начале процесса установки вы определили язык, отличный от американского английского языка, приводимая выше команда уже будет выглядеть так:<br />
# echo LANG<nowiki>=</nowiki>ru_RU.UTF-8 > /etc/locale.conf<br />
# export LANG<nowiki>=</nowiki>ru_RU.UTF-8<br />
}}<br />
<br />
Для использования других переменных {{ic|LC_*}}, сначала выполните {{ic|locale}}, чтобы увидеть доступные опции. Дополнительные сведения могут быть получены [[Locale#Setting_system-wide_locale|здесь]].<br />
<br />
{{Warning|Использовать переменную {{ic|LC_ALL}} категорически не рекомендуется, так как она изменяет значение всех остальных переменных.}}<br />
<br />
====Консольный шрифт и раскладка клавиатуры====<br />
<br />
Если вы выбрали раскладку клавиатуры на [[#Изменение_языка|начальной]] стадии процесса установки, загрузите её вновь точно таким же образом, поскольку рабочее окружение изменилось. Например:<br />
<br />
# loadkeys ''ru''<br />
# setfont cyr-sun16<br />
<br />
Чтобы эти настройки сохранились после перезагрузки, отредактируте файл {{ic|vconsole.conf}}:<br />
<br />
{{hc|# nano /etc/vconsole.conf|2=<br />
KEYMAP=ru<br />
FONT=cyr-sun16<br />
FONT_MAP=}}<br />
<br />
* {{ic|KEYMAP}} – имейте в виду, что эта настройка действует только для ваших TTY, а не графических оконных менеджеров или X.Org.<br />
<br />
* {{ic|FONT}} – доступны и другие консольные шрифты, расположенные в директории {{ic|/usr/share/kbd/consolefonts/}}. Значение по умолчанию (шрифт не указан) является безопаасным для системы, но некоторые символы на языках, отличных от английского, могут отображаться как белые квадраты или другие знаки. Рекомендуется изменить значение по умолчанию (для выбора шрифта {{ic|cyr-sun16}} или другого шрифта смотрите файлы {{ic|КREADME}} в указанной директории {{ic|/usr/share/kbd/consolefonts}}.<br />
<br />
* {{ic|FONT_MAP}} – определяет консольную таблицу символов при загрузке. Для уточнения деталей смотрите {{ic|man setfont}}. Значение по умолчанию (не установлено) является безопасным для системы.<br />
<br />
Смотрите [[Fonts (Русский)#Шрифт в консоли|Шрифт в консоли]] и {{ic|man vconsole.conf}} для получения дальнейшей информации.<br />
<br />
====Временная зона====<br />
<br />
Доступные временные зона и субзоны находятся в директориях {{ic|/usr/share/zoneinfo/<Zone>/<SubZone>}}.<br />
<br />
Чтобы увидеть доступные зоны (<Zone>), проверьте директорию {{ic|/usr/share/zoneinfo/}}:<br />
<br />
# ls /usr/share/zoneinfo/<br />
<br />
Таким же образом можно проверить содержимое директорий, относящихся к субзонам (<SubZone>):<br />
<br />
# ls /usr/share/zoneinfo/Europe<br />
<br />
Создайте символическую ссылку {{ic|/etc/localtime}} на файл со своей временной зоной {{ic|/usr/share/zoneinfo/<Zone>/<SubZone>}}, используя данную команду:<br />
<br />
# ln -s {{ic|/usr/share/zoneinfo/<Zone>/<SubZone>}} /etc/localtime<br />
<br />
'''Пример:'''<br />
<br />
# ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime<br />
<br />
====Аппаратные часы====<br />
<br />
Установите аппаратные часы единообразно во всех используемых вами операционных системах. В противном случае, ОС могут менять значения аппаратных часов и вызывать временные сдвиги.<br />
<br />
Можно сгненерировать {{ic|/etc/adjtime}} автоматически с помощью одной из следующих команд:<br />
<br />
* '''UTC''' (рекомендуется)<br />
<br />
: {{Note|Использование [[Wikipedia:Coordinated Universal Time|UTC]] для аппаратных часов не означает, что программное обеспечение будет отображать время в UTC.}}<br />
<br />
: {{bc|# hwclock --systohc --utc}}<br />
<br />
* '''localtime''' (не рекомендуется, используется по умолчанию в Windows)<br />
<br />
: {{Warning|Использование ''localtime'' может привести к ряду известных и до сих пор не исправленных ошибок. Тем не менее, не планируется отказаться от поддержки ''localtime''.}}<br />
<br />
: {{bc|# hwclock --systohc --localtime}}<br />
<br />
Если у вас уже есть (или планируется использовать) двойная загрузка с Windows:<br />
<br />
* Рекомендуется: Установить обе системы (и Arch Linux, и Windows) с использованием UTC. Потребуется быстрое [[Time#UTC_in_Windows|исправление реестра]]. Кроме того, убедитесь, что Windows не будет синхронизировать время on-line, поскольку в этом случае аппаратные часы вернутся по умолчанию к ''localtime''. Если вам нужна такая функциональность (синхронизация с использованием NTP), вместо этого следует использовать [[ntpd]] на установленной системе Arch Linux.<br />
<br />
* Не рекомендуется: Установка в Arch Linux значения по ''localtime'' и остановка любых связанных с синхронизацией времени сервисов, наподобие {{ic|ntpd.service}}. Это позволит Windows корректировать значение аппаратных часов и вам нужно будет не забывать о необходимости загружаться в Windows по меньшей мере дважды в годr (весной и осенью) когда осуществляется переход от зимнего времени к летнему и наоборот ([[Wikipedia:Daylight_savings_time|DST]], если такая смена времени вновь будет введена в России). Поэтому, пожалуйста, не задавайте на форумах вопросов о том, почему ваши часы ушли на один час вперед или назад, как это случается в течение нескольких дней или недель без загрузки Windows.<br />
<br />
====Модули ядра====<br />
<br />
{{Tip|Это просто пример, вам не обязательно ему следовать. Все необходимые модули автоматически подгружаются udev, поэтому редко возникает необходимость добавить еще какой-то модуль. Добавляйте только те модули, о которых вам точно известно, что они пропущены при загрузке ядра.}}<br />
<br />
Для того, чтобы модуль ядра подгрузился во время загрузки, поместите в директорию {{ic|/etc/modules-load.d/}} файл {{ic|*.conf}} с именем используемой программы (чтобы удобнее было запомнить имя конфигурационного файла).<br />
<br />
{{hc|# nano /etc/modules-load.d/virtio-net.conf|<br />
# Load 'virtio-net.ko' at boot.<br />
<br />
virtio-net}}<br />
<br />
Если в файле {{ic|*.conf}} указан более чем один модуль, имена модулей записываются с новой строки. Хороший пример можно посмотреть [[VirtualBox#Auto-start_modules|здесь]].<br />
<br />
Пустые строки и строки, начинающиеся с символов {{ic|#}} или {{ic|;}}, игнорируются.<br />
<br />
====Имя компьютера====<br />
<br />
Добавьте свой [[Wikipedia:hostname|hostname]] (например ''arch''):<br />
<br />
# echo ''myhostname'' > /etc/hostname <br />
<br />
{{Note|Редактировать {{ic|/etc/hosts}} нет необходимости.}}<br />
<br />
===Настройка сети===<br />
<br />
Вам надо заново сконфигурировать сетевое соединение, но на этот раз во вновь установленном окружении. Порядок и условия настройки сети очень похожи на те, что описаны [[#Настройка_сети|выше]], за исключением того, что мы собираемся сделать сетевое соединение постоянным и автоматически запускаемым при загрузке системы.<br />
<br />
{{Note|Для получения более подробной информации о конфигурации сети, посетите страницы [[Configuring Network (Русский)]] и [[Wireless Setup]].}}<br />
<br />
====Проводное соединение====<br />
<br />
; Динамический IP<br />
<br />
Если у вас только одно фиксированное проводное подключение к сети, вам необходим сервис управления сетью, доступ к которому просто получить с помощью сервиса {{ic|dhcpcd}}, где <interface> ваше проводное соединение:<br />
<br />
# systemctl enable dhcpcd@<interface>.service<br />
<br />
{{Warning|1={{ic|systemd}} теперь [https://bbs.archlinux.org/viewtopic.php?id=156375 переименовывает] сетевые соединения. Более того, {{ic|dhcpcd@.service}} всегда [https://bbs.archlinux.org/viewtopic.php?pid=1218527#p1218527 создает] символическую ссылку {{ic|dhcpcd@eth0.service}}, что бы вы ни поставли вместо {{ic|<interface>}}.}}<br />
<br />
Чтобы исправить это, скопируйте {{ic|dhcpcd@.service}} в /etc/systemd/system/ и отредактируйте строку Alias= для вашего правильного {{ic|<interface>}} или удалите ее и замените на WantedBy=multi-user.target<br />
# cp /usr/share/lib/system/dhcpcd@.service /etc/systemd/system/<br />
# nano /etc/systemd/system/dhcpcd@.service<br />
<br />
В качестве альтернативного варианта вы можете использовать инструмент {{ic|net-auto-wired}} из пакета {{Pkg|netcfg}}, который корректно создает подключение к новым сетям:<br />
<br />
Установите {{Pkg|ifplugd}}, который требуется для {{ic|net-auto-wired}}:<br />
<br />
# pacman -S ifplugd<br />
<br />
Установите dhcp профиль и включите сервис {{ic|net-auto-wired}}:<br />
<br />
# cd /etc/network.d<br />
# ln -s examples/ethernet-dhcp .<br />
# systemctl enable net-auto-wired.service<br />
<br />
; Статический IP<br />
Установите {{Pkg|ifplugd}}, который требуется для {{ic|net-auto-wired}}:<br />
<br />
# pacman -S ifplugd<br />
<br />
Установите пакет {{Pkg|netcfg}} (если вы еще не сделали этого):<br />
<br />
# pacman -S netcfg<br />
<br />
Скопируйте образец профиля из {{ic|/etc/network.d/examples}} в {{ic|/etc/network.d}}:<br />
<br />
# cd /etc/network.d<br />
# cp examples/ethernet-static .<br />
<br />
При необходимости, настройте профиль:<br />
<br />
# nano ethernet-static<br />
<br />
Измените имя сетевого интерфейса в {{ic|/etc/conf.d/netcfg}} так как скорее всего это не eth0. Вы можете узнать больше об именовании в предупреждении выше.<br />
<br />
{{ic|<nowiki>WIRED_INTERFACE="<interface>"</nowiki>}}<br />
<br />
Сделайте доступным сервис {{ic|net-auto-wired}}:<br />
<br />
# systemctl enable net-auto-wired.service<br />
<br />
====Беспроводное соединение====<br />
<br />
Для настройки и управления профилями беспроводных соединений вам необходимо установить дополнительные программы, такие, как [[netcfg]].<br />
<br />
Также популярные программы - [[NetworkManager]] и [[Wicd]].<br />
<br />
* Установите требуемые пакеты:<br />
<br />
# pacman -S wireless_tools wpa_supplicant wpa_actiond netcfg dialog<br />
<br />
Если вашему адаптеру беспроводной сети требуется проприетарная прошивка (как описано выше в секции [[#Настройка_беспроводного_соединения|Настройка сети]], а также [[Wireless_Setup#Drivers_and_firmware|здесь]]), установите пакет, содержащий эту прошивку. Например:<br />
<br />
# pacman -S zd1211-firmware<br />
После окончания остальной части этой установки и перезагрузки, вы можете подключиться к сети с помощью {{ic|wifi-menu <interface>}} (где <interface> является интерфейсом беспроводных чипсетов), который будет генерировать файл профиля в {{ic|/etc/network.d}} после имени SSID. Для ручной настройки также доступны шаблоны в {{ic|/etc/network.d/examples/}}<br />
<br />
# wifi-menu <interface><br />
<br />
{{Warning| Если вы используете wifi-menu, это должно быть сделано *после* перезагрузки, когда вы больше не в chroot. Этот процесс будет конфликтовать если запускается за пределами корня. Кроме того, можно просто настроить профиль сети вручную, используя шаблоны о которых уже упоминалось ранее, так что вам не придется беспокоиться об использовании WiFi-меню вообще.}} <br />
<br />
<br />
* Сделайте доступным (для автозагрузки) сервис {{ic|net-auto-wireless}}, который будет подключаться к известным сетям и корректно обрабатывать роуминг и обрывы соединения.<br />
<br />
# systemctl enable net-auto-wireless.service<br />
<br />
{{Note|Пакет [[Netcfg]] также включает {{ic|net-auto-wired}}, который может использоваться совместно с {{ic|net-auto-wireless}}.}}<br />
<br />
* Убедитесь в правильном установлении беспроводного интерфейса (обычно {{ic|wlan0}}) в файле {{ic|/etc/conf.d/netcfg}}:<br />
<br />
{{hc|# nano /etc/conf.d/netcfg|2=<br />
WIRELESS_INTERFACE="wlp3s0"}}<br />
<br />
Также возможно определить список сетевых профилей для автоматического соединения при использовании переменной {{ic|AUTO_PROFILES}} в {{ic|/etc/conf.d/netcfg}}. Если переменная {{ic|AUTO_PROFILES}} не установлена, система будет пытаться подключиться ко всем известным сетям.<br />
<br />
====xDSL (PPPoE), аналоговый модем или ISDN====<br />
<br />
Для xDSL, аналогового модема (dial-up) и ISDN, смотрите [[Direct Modem Connection]].<br />
<br />
===Конфигурирование pacman===<br />
<br />
Pacman - пакетный менеджер Arch Linux (аббревиатура от '''pac'''kage '''man'''ager). Настоятельно рекомендуется изучить его и научиться им пользоваться. Прочтите {{ic|man pacman}}, просмотрите статью [[pacman (Русский)]], или же сверьтесь со статьей [[Pacman Rosetta]] для сравнения данной утилиты с другими популярными пакетными менеджерами.<br />
<br />
Для выбора репозиториев (хранилищ пакетов) и настройки pacman, отредактируйте конфигурационный файл {{ic|pacman.conf}}:<br />
<br />
# nano /etc/pacman.conf<br />
<br />
{{Note|Выбирая репозитории, убедитесь, что раскомментировали как строки заголовка {{ic|[''repo_name'']}}, так и строку {{ic|Include}}. Если это не будет сделано, то выбранные репозитории будут пропущены! Это довольно распространенная ошибка. Ваши репозитории должны выглядеть так:<br />
<br />
{{hc|# nano /etc/pacman.conf|2=<br />
# The testing repositories are disabled by default. To enable, uncomment the<br />
# repo name header and Include lines. You can add preferred servers immediately<br />
# after the header, and they will be used before the default mirrors.<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 = PackageRequired<br />
Include = /etc/pacman.d/mirrorlist<br />
<br />
#[community-testing]<br />
#SigLevel = PackageRequired<br />
#Include = /etc/pacman.d/mirrorlist<br />
<br />
[community]<br />
SigLevel = PackageRequired<br />
Include = /etc/pacman.d/mirrorlist}}<br />
}}<br />
<br />
Большинство людей используют репозитории {{ic|[core]}}, {{ic|[extra]}} и{{ic|[community]}}.<br />
<br />
Если вы устанавливаете x86_64 версию Arch Linux, то рекомендуется сделать доступным также и репозиторий {{ic|[multilib]}} (позволяющий запускать в вашей системе как 32-битные, так и 64-битные приложения):<br />
<br />
[multilib]<br />
SigLevel = PackageRequired<br />
Include = /etc/pacman.d/mirrorlist<br />
<br />
Смотрите статью [[Official Repositories (Русский)]] для получения дальнейшей информации, включая детальное описание предназначения каждого репозитория.<br />
<br />
Для установки программ, которые недоступные посредством pacman, смотрите статью [[Arch User Repository (Русский)]].<br />
<br />
===Создание начального окружения виртуального диска===<br />
<br />
{{Tip|Большинство пользователей могут пропустить данный шаг и использовать загрузочный диск по умолчанию, создаваемый {{ic|mkinitcpio.conf}}. Образ initramfs (из директории {{ic|/boot}}) уже был сгенерирован на основе данного файла на предшествующем этапе установки, когда при помощи {{ic|pacstrap}} устанавливалось ядро Linux - пакет {{Pkg|linux}}.}}<br />
<br />
Тем не менее, вам необходимо установить правильные [[Mkinitcpio#HOOKS|хуки]], если корень системы расположен на USB-диске, а также если вы используете RAID, LVM, или если директория {{ic|/usr}} расположена на отдельном разделе.<br />
<br />
Отредактируйте конфигурационный файл {{ic|/etc/mkinitcpio.conf}} и сгенерируйте заново образ initramfs командой:<br />
<br />
# mkinitcpio -p linux<br />
<br />
===Установка пароля суперпользователя и добавление пользователя===<br />
<br />
Вы можете установить пароль суперпользователя (root) командой:<br />
<br />
# passwd<br />
<br />
{{Warning|Linux - многопользовательская система. Вы не должны использовать в повседневной работе учетную запись суперпользователя root. Это более, чем нежелательно - это опасно. Используйте суперпользователя только для задач управления системой.}}<br />
<br />
Создайте обычного пользователя (без повышенных привилегий) одним из двух приведенных ниже способов. Пользователь под именем ''archie'' здесь приведен исключительно в качестве примера.<br />
<br />
====Интерактивный метод====<br />
<br />
Команда {{ic|adduser}} будет работать в интерактивном режиме:<br />
<br />
{{hc|# adduser|<br />
<br />
Login name for new user []: '''archie''' #Имя (логин) нового пользователя<br />
<br />
User ID ('UID') [ defaults to next available ]: #ID пользователя (по умолчанию следующее свободное)<br />
<br />
Initial group [ users ]: #Группа, в которую первоначально входит пользователь<br />
<br />
Additional groups (comma separated) []: '''audio,games,lp,optical,power,scanner,storage,video''' #Дополнительные группы (разделяемые запятой)<br />
<br />
Home directory [ /home/archie ]: #Домашняя директория пользователя<br />
<br />
Shell [ /bin/bash ]: #Оболочка (в примере указана оболочка Bash)<br />
<br />
Expiry date (YYYY-MM-DD) []: #Дата, когда истечет срок использования данного логина}}<br />
<br />
Как показано в приведенном примере, вам следует указать только лишь имя пользователя (еще именуемое его "логином" - {{ic|Login name}}) и дополнительные группы, в которые должен входить ваш пользователь ({{ic|Additional groups}}), а остальные поля оставить незаполненными.<br />
<br />
Список дополнительных групп {{ic|Additional groups}} из примера является типичным выбором для настольной системы, поэтому он и рекомендуется для новичков:<br />
<br />
* '''audio''' - для задач управления звуком и музыкального программного обеспечения.<br />
* '''games''' - для разрешения играм из группы games осуществлять операции записи.<br />
* '''lp''' - для управления функциями печати.<br />
* '''optical''' - для доступа к приводам оптических дисков.<br />
* '''power''' - для использования функций управления питанием (например выключение кнопкой power на корпусе).<br />
* '''scanner''' - для использования сканера.<br />
* '''storage''' - для управления устройствами хранения данных.<br />
* '''video''' - для задач, связанных с видео.<br />
<br />
Для получения дальнейшей информации о приведенных выше группах или других группах, смотрите [[Groups#User_groups|User groups]].<br />
<br />
Теперь вам будет представлен предварительный просмотр нового аккаунта, а также возможность отменить или продолжить операцию. После нажатия {{Keypress|Enter}} будет создана новая учетная запись и вам будет предложено ввести дополнительные (необязательные) сведения о новом пользователе (например, его полное имя). После этого вам будет предложено ввести пароль для данной учетной записи.<br />
<br />
====Неинтерактивный метод====<br />
<br />
# useradd -m -g users -G audio,games,lp,optical,power,scanner,storage,video -s /bin/bash archie<br />
<br />
Вам надо будет установить пароль командой {{ic|passwd}}. Для ввода дополнительной информации используйте команду {{ic|chfn}}.<br />
<br />
====Удаление учетной записи пользователя====<br />
<br />
В случае ошибки, а также если вы пожелаете удалить данный пользовательский аккаунт в связи со сменой имени (логина) или по какой-нибудь другой причине, используйте команду {{ic|userdel}} (где username - имя пользователя):<br />
<br />
# userdel -r [username]<br />
<br />
Ключ {{ic|-r}} удалит также и домашнюю директорию пользователя со всем ее содержимым, включая пользовательские настройки (так называемые "файлы с точкой" - англ. "dot" files, поскольку перед именами конфигурационных файлов и директорий в пользовательском каталоге проставляется точка, чтобы они не были видны без специальных ухищрений).<br />
<br />
====Дальнейшая информация====<br />
<br />
Обратитесь к статье [[Users and Groups]] для получения дальнейшей информации. Если вы хотите просто сменить имя пользователя (своего пользователя или любого из существующих в системе), обратитесь к странице [[Change username]]. Также ознакомьтесь со страницами руководства для команд {{ic|usermod(8)}} и {{ic|gpasswd(8)}}.<br />
<br />
===Установка и конфигурирование загрузчика===<br />
<br />
====Для материнских плат с BIOS====<br />
<br />
Для систем с BIOS существуют три загрузчика - Syslinux, GRUB и [[LILO]]. Выберите тот загрузчик, который вам наиболее удобен. Ниже будет объяснена установка только загрузчиков Syslinux и GRUB. <br />
<br />
* Syslinux ограничен в своей функциональности(в настоящее время) - он может загружать только разделы с того диска, на котором он установлен. Считается, что его конфигурационный файл легче понять. Пример конфигурации смотрите [https://bbs.archlinux.org/viewtopic.php?pid=1109328#p1109328 здесь].<br />
<br />
* GRUB функционально богаче и поддерживает более сложные сценарии. Его конфигурационный файл больше напоминает скриптовый язык и может вызвать трудности у начинающих пользователей при ручном конфигурировании. Рекомендуется, чтобы новички автоматически генерировали данный конфигурационный файл.<br />
<br />
===== Syslinux =====<br />
<br />
Установите пакет {{Pkg|syslinux}} и затем используйте скрипт {{ic|syslinux-install_update}} для автоматической ''установки'' файлов ({{ic|-i}}), обозначения ''активного'' раздела путем установки флага загрузки ({{ic|-a}}) и установки загрузочного кода ''MBR'' ({{ic|-m}}):<br />
<br />
{{Note|Если вы размечали диск как GPT, поставьте также пакет {{Pkg|gptfdisk}} - ({{ic|pacman -S gptfdisk}}), поскольку он содержит утилиту {{ic|sgdisk}}, позволяющую устанавливать специфичный для GPT флаг загрузки.}}<br />
<br />
# pacman -S syslinux<br />
# syslinux-install_update -iam<br />
<br />
Настройте {{ic|syslinux.cfg}} для указания правильного загрузочного раздела. Этот шаг жизненно необходим. Если конфигурационный файл будет содержать неверное указание раздела загрузки, то Arch Linux не загрузится. Измените {{ic|/dev/sda3}} на соответствующий загрузочный раздел вашей системы ''(если вы разбили ваш диск так, как было указано в [[#Подготовка_жесткого_диска|данном примере]], вышим загрузочным разделом является sda1)''. Сделайте тоже самое для пункта fallback.<br />
<br />
{{hc|# nano /boot/syslinux/syslinux.cfg|2=<br />
...<br />
LABEL arch<br />
...<br />
APPEND root=/dev/sda3 ro<br />
...}}<br />
<br />
Для получения более детальной информации о конфигурировании и использовании Syslinux, смотрите [[Syslinux]].<br />
<br />
===== GRUB =====<br />
<br />
{{Note|При GPT-разметке дисков на материнских платах с BIOS, GRUB нуждается в 2-мегабайтном "[[GRUB#GPT_specific_instructions|загрузочном разделе BIOS]]".}}<br />
<br />
{{Note|Пожалуйста, не пользуйтесь обозначениями разделов наподобие {{ic|/dev/sda1}} в приведенной ниже команде.}}<br />
<br />
# pacman -S grub-bios<br />
# grub-install --target=i386-pc --recheck /dev/sda<br />
# cp /usr/share/locale/en\@quot/LC_MESSAGES/grub.mo /boot/grub/locale/en.mo<br />
<br />
Хотя использование созданного вручную файла конфигурации {{ic|grub.cfg}} полностью допустимо, начинающим пользователям рекомендуется генерировать данный файл автоматически:<br />
<br />
{{Tip|Для автоматического поиска других операционных систем на вашем компьютере, перед генерированием конфигурационного файла установите {{Pkg|os-prober}}:<br />
# pacman -S os-prober<br />
}}<br />
<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
Для получения более детальной информации о конфигурировании и использовании GRUB, смотрите [[GRUB]].<br />
<br />
====Для материнских плат UEFI====<br />
<br />
Для загрузки UEFI, требуется GPT-разметка диска и разметка системы под UEFI (512 Мб или больше, FAT32, должен присутствовать тип {{ic|EF00}}) и диск должен быть смонтирован в {{ic|/boot/efi}}. Если вы с самого начала следовали указаниям данного руководства, у вас уже соблюдены все необходимые требования.<br />
<br />
Несмотря на наличие других [[UEFI_Bootloaders|загрузчиков UEFI]], рекомендуется использовать EFISTUB. Ниже приведены инструкции по установке EFISTUB и GRUB.<br />
<br />
{{Note|Syslinux не поддерживает UEFI.}}<br />
<br />
===== EFISTUB =====<br />
<br />
Используя EFISTUB, ядро Linux может выступать как свой собственный загрузчик. Вот загрузочный метод UEFI, рекомендованный разработчиками и более простой, чем {{ic|grub-efi-x86_64}}. Приведенные ниже шаги устанавливают rEFInd (форк rEFIt), чтобы обеспечить меню для ядер EFISTUB, равно как и для загрузки других загрузчиков UEFI. Вы можете пользоваться такжеe [[UEFI_Bootloaders#Using_gummiboot|gummiboot]] (не протестирован) вместо rEFInd. И rEFInd, и gummiboot могут обнаружить загрузчик Windows UEFI при двойной загрузке.<br />
<br />
1. Загрузитесь в режиме UEFI и подгрузите модуль ядра {{ic|efivars}} перед выполнением chroot:<br />
<br />
# modprobe efivars # перед выполнением chroot<br />
<br />
2. Примонтируйте раздел UEFISYS в {{ic|/mnt/boot/efi}}, выполните chroot и [[UEFI_Bootloaders#Setting_up_EFISTUB|скопируйте ядро и файлы initramfs]] в {{ic|/boot/efi}}.<br />
<br />
3. Каждый раз при обновлении ядра и файлом initramfs files в {{ic|/boot}} их необходимо обновлять и в {{ic|/boot/efi/EFI/arch}}. Этот процесс может быть автоматизирован или [[UEFI_Bootloaders#Sync_EFISTUB_Kernel_in_UEFISYS_partition_using_Systemd|с использованием systemd]] или же [[UEFI_Bootloaders#Sync_EFISTUB_Kernel_in_UEFISYS_partition_using_Incron|с использованием incron]] (для установок, не использующих systemd).<br />
<br />
4. Установите следующие пакеты:<br />
<br />
# pacman -S refind-efi-x86_64 efibootmgr<br />
<br />
5. Установите rEFInd в раздел UEFISYS (кратко из статьи [[UEFI Bootloaders#Using rEFInd]]):<br />
<br />
# mkdir -p /boot/efi/EFI/arch/refind<br />
# cp /usr/lib/refind/refindx64.efi /boot/efi/EFI/arch/refind/refindx64.efi<br />
# cp /usr/lib/refind/config/refind.conf /boot/efi/EFI/arch/refind/refind.conf<br />
# cp -r /usr/share/refind/icons /boot/efi/EFI/arch/refind/icons<br />
<br />
6. Создайте файл {{ic|refind_linux.conf}} с параметрами ядра, которые будут использоваться rEFInd:<br />
<br />
{{hc|# nano /boot/efi/EFI/arch/refind_linux.conf|2=<br />
"Boot to X" "root=/dev/sdaX ro rootfstype=ext4 systemd.unit=graphical.target"<br />
"Boot to console" "root=/dev/sdaX ro rootfstype=ext4 systemd.unit=multi-user.target"}}<br />
<br />
7. Добавьте rEFInd в загрузочное меню UEFI, используя [[UEFI#efibootmgr|efibootmgr]]. <br />
<br />
{{Warning|Использование {{ic|efibootmgr}} на компьютерах Apple Macs может повредить прошивку и потребовать перепрошивки ROM на материнской плате. Для компьютеров Mac, используйте {{AUR|mactel-boot}}, или "благословите" данное использование из самой Mac OS X.}}<br />
<br />
# efibootmgr -c -g -d /dev/sdX -p Y -w -L "Arch Linux (rEFInd)" -l '\\EFI\\arch\\refind\\refindx64.efi'<br />
<br />
{{Note|В приведенной выше команде, X и Y обозначают диски и разделы раздела UEFISYS. Например, в {{ic|/dev/sdc5}}, X обозначает "c" и Y обозначает "5".}}<br />
<br />
8. (не обязательно) Как запасный вариант, в случае, когда созданный {{ic|efibootmgr}} загрузочная запись не работает, скопируйте {{ic|refindx64.efi}} в {{ic|/boot/efi/EFI/boot/bootx64.efi}} как показано ниже:<br />
<br />
# cp -r /boot/efi/EFI/arch/refind/* /boot/efi/EFI/boot/<br />
# mv /boot/efi/EFI/boot/refindx64.efi to /boot/efi/EFI/boot/bootx64.efi<br />
<br />
===== GRUB =====<br />
<br />
{{Note|В случае системы с 32-битным EFI, как Mac до 2008 года, вместо этого установите {{ic|grub-efi-i386}} и используйте опцию {{ic|1=--target=i386-efi}}.}}<br />
<br />
# pacman -S grub-efi-x86_64 efibootmgr<br />
# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=arch_grub --recheck<br />
# cp /usr/share/locale/en\@quot/LC_MESSAGES/grub.mo /boot/grub/locale/en.mo<br />
<br />
Выполните следующую команду для создания пункта меню GRUB в загрузочном меню UEFI. Смотрите [[UEFI#efibootmgr|efibootmgr]] для получения дальнейшей информации.<br />
<br />
# efibootmgr -c -g -d /dev/sdX -p Y -w -L "Arch Linux (GRUB)" -l '\\EFI\\arch_grub\\grubx64.efi'<br />
<br />
Хотя использование созданного вручную файла конфигурации {{ic|grub.cfg}} полностью допустимо, начинающим пользователям рекомендуется генерировать данный файл автоматически:<br />
<br />
{{Tip|Для автоматического поиска других операционных систем на вашем компьютере, перед генерированием конфигурационного файла установите {{Pkg|os-prober}}:<br />
# pacman -S os-prober<br />
}}<br />
<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
Для получения более детальной информации о конфигурировании и использовании GRUB, смотрите [[GRUB]].<br />
<br />
===Обновление системы===<br />
<br />
{{Warning|1=Обновление системы каждый раз должно выполняться c осторожностью. Очень важно прочитать и понять [https://bbs.archlinux.org/viewtopic.php?id=57205 эти правила (англ.)], прежде чем продолжить.}}<br />
<br />
Часто разработчики предоставляют важную информацию о требованиях к конфигурации и изменениях с указанием известных проблем. От пользователя Arch Linux ожидается, что он обратит внимание на данные сведения перед выполнением обновления:<br />
<br />
* [http://archlinux.org.ru/ Новости на главной странице Arch]. Если вы не прочитали их перед обновлением и затем обнаружили ошибку, проверьте раздел новостей ''до'' того, как зададите вопрос на форуме!<br />
<br />
* [https://archlinux.org/pipermail/arch-announce/ списки рассылки (англ.)].<br />
<br />
Синхронизуйте и обновите базу данных пакетов, выполните обновление системы в целом командой:<br />
<br />
# pacman -Syu<br />
<br />
Или, что то же самое:<br />
<br />
# pacman --sync --refresh --sysupgrade<br />
<br />
Если в этот момент вам будет предложено обновить pacman, согласитесь, нажав клавишу {{Keypress|Y}}, а по окончании обновления установщика повторите команду {{ic|pacman -Syu}}.<br />
<br />
{{Note|Иногда изменения в конфигурации могут потребовать от пользователя определенных действий в процессе обновления; читайте вывод программы pacman для получения соответствующей информации. Смотрите статью [[Pacnew and Pacsave Files]] для получения более подробной информации.}}<br />
<br />
{{Note|Перезагрузитесь, если обновили пакет ядра {{Pkg|linux}}.}}<br />
<br />
Имейте в виду, что дистрибутив Arch придерживается модели '''rolling release'''. Это означает, что пользователю не придется переустановить или выполнять сложную пересборку системы для обновления её до новейшей версии. Периодическое использование команды {{ic|pacman -Syu}} (с учетом приведенных выше предупреждений) позволяет сохранять всю систему в актуальном состоянии и на переднем крае. По итогам этого обновления будет получена система с текущими версиями всех пакетов.<br />
<br />
Смотрите раздел [[FAQ_(Русский)#Управление пакетами|Управление пакетами]] статьи [[FAQ (Русский)]] для получения ответов на вопросы, касающиеся обновления системы и управления пакетами.<br />
<br />
=====Игнорирование обновления пакетов=====<br />
<br />
Команда {{ic|pacman -Syu}} выполнит обновление вашей системы. Существует возможность защитить какой-либо пакет от обновления. Обычно это касается пакета, обновление которого может создать проблемы для стабильной работы вашей системы. <br />
<br />
В этом случае у вас есть два варианта: <br />
<br />
* Обозначить пакет/пакеты, который/которые вы не хотите обновлять, указав при обновлении ключ {{ic|--ignore}}:<br />
<br />
# pacman -Syu --ignore libass filesystem<br />
<br />
* Указать игнориуемый пакет/пакеты в конфигурационном файле {{ic|pacman.conf}}:<br />
<br />
{{hc|# nano /etc/pacman.conf|2=<br />
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup<br />
IgnorePkg = libass filesystem}}<br />
<br />
Ожидается, что опытные пользователи будут поддерживать '''всю''' систему в актуальном состоянии при помощи {{ic|pacman -Syu}}, а не обновлять отдельные пакеты. Конечно, вы можете отклониться от такого типичного использования, если пожелаете; однако, имейте в виду: в таком случае гораздо вероятнее, что программы не будут работать, как ожидается, и такие действия могут повредить всю систему. Большинство проблем возникает, когда производится выборочное обновление пакетов или нестандартная компиляция. Поэтому использование секции {{ic|IgnorePkg}} в файле {{ic|/etc/pacman.conf}} не рекомендуется и должно применяться крайне редко, и только если вы знаете, что вы делаете. Используйте {{ic|IgnorePkg}} на свой страх и риск.<br />
<br />
===Отмонтирование разделов и перезагрузка===<br />
<br />
Покиньте окружение chroot:<br />
<br />
# exit<br />
<br />
Так как разделы были примонтированы в {{ic|/mnt}}, мы используем следующую команду, чтобы отмонитровать их:<br />
<br />
# umount /mnt/{boot,home,}<br />
<br />
Перезагрузите компьютер:<br />
<br />
# reboot<br />
<br />
{{Tip|Не забудьте вынуть установочный диск из привода, иначе вы снова попадете в установщик системы.}}<noinclude><br />
{{Beginners' Guide navigation (Русский)}}</noinclude></div>Nobushttps://wiki.archlinux.org/index.php?title=Installation_guide_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=251818Installation guide (Русский)2013-03-24T11:19:00Z<p>Nobus: /* Шрифты */</p>
<hr />
<div>[[Category:About Arch (Русский)]]<br />
[[Category:Getting and installing Arch (Русский)]]<br />
[[En:Installation_Guide]]<br />
[[de:Arch Install Scripts]]<br />
[[fr:Arch_install_scripts]]<br />
[[it:Installation Guide]]<br />
[[uk:Installation Guide]]<br />
[[zh-CN:Installation Guide]]<br />
[[zh-TW:Installation Guide]]<br />
Этот документ проведет вас через процесс установки [[Arch Linux (Русский)|Arch Linux]] c использованием [https://github.com/falconindy/arch-install-scripts Arch Install Scripts]. Рекомендуется перед установкой ознакомиться с [[FAQ (Русский)]]._<br />
Поддерживаемая сообществом [[Main Page (Русский)|вики Arch'а]] является превосходным ресурсом, к которому следует обращаться в первую очередь при возникновении каких-либо проблем. Если ответ на интересующий вас вопрос в другом месте не найден, доступны [[Wikipedia:IRC|IRC]]-канал (irc://irc.mibbit.net/#archlinux-ru) и [http://archlinux.org.ru/forum/ форумы]. Также обращайтесь к страницам руководств ({{ic|man}}) тех команд, с которыми вы незнакомы; обычно они вызываются при помощи {{ic|man ''command''}} (где ''command'' - имя интересующей вас команды).<br />
<br />
{{Tip|Новички могут обратиться к [[Beginners' Guide (Русский)|подробному руководству]] по установке.}}<br />
<br />
== Получение установочного образа ==<br />
Загрузите новый установочный образ диска Arch Linux с [https://www.archlinux.org/download/ соответствующей страницы] на главном сайте дистрибутива.<br />
* Предлагается единый установочный образ, с помощью которого вы сможете загрузиться как на i686, так и на x86_64 системах, чтобы провести установку по сети. Диск с репозиторием [core] для оффлайн-установки больше не доступен и не поддерживается.<br />
* Установочный образ подписан цифровой подписью, и вы можете проверить ее перед установкой командой {{bc|pacman-key -v <iso-file>.sig}}<br />
* Образ может быть записан на CD, смонтирован как iso-файл или записан на usb устройство (флешку) с помощью команды {{ic|dd}}. Он предназначен только для установки системы - обновление уже установленной системы производится стандартным способом, командой {{ic|pacman -Syu}}.<br />
<br />
== Установка ==<br />
<br />
=== Раскладка клавиатуры ===<br />
Для большинства стран и видов клавиатур уже доступны соответствующие раскладки, нужная из которых может быть выбрана командой, например {{ic|loadkeys ru}}. Другие раскладки можно найти в {{ic|/usr/share/kbd/keymaps/}} (можно не указывать полный путь и расширение файла с раскладкой при использовании команды loadkeys).<br />
<br />
=== Создание разделов ===<br />
Для подробностей обратитесь к разделу [[Partitioning]].<br />
<br />
При необходимости не забудьте создать [[lvm|LVM]], [[Dm-crypt_with_LUKS|LUKS]] или [[RAID|RAID]] устройства.<br />
<br />
=== Форматирование разделов ===<br />
Более подробно вы можете прочитать [[Format_a_device#Step_2:_create_the_new_file_system|здесь]].<br />
<br />
Если вы используете (U)EFI, вам, скорее всего, понадобится отдельный раздел для размещения служебного раздела UEFI. Подробнее можно прочитать [[Unified_Extensible_Firmware_Interface (Русский)#Создание UEFI раздела в Linux|здесь]].<br />
<br />
=== Монтирование разделов ===<br />
Как минимум, вы должны смонтировать корневой раздел в {{ic|/mnt}}. Например:<br />
# mount /dev/sda2 /mnt<br />
Если вы хотите, чтобы еще какие-либо разделы были автоматически учтены скриптом установки {{ic|genfstab}}, необходимо создать соответствующие директории внутри /mnt и смонтировать туда нужные разделы. Например для отдельных загрузочного и домашнего разделов:<br />
# mkdir /mnt/boot && mount /dev/sda1 /mnt/boot<br />
# mkdir /mnt/home && mount /dev/sda3 /mnt/home<br />
<br />
=== Подключение к интернету ===<br />
Сервис DHCP уже доступен для всех подходящих устройств. Для проводного подключения просто запустите {{ic|dhcpcd}}. Если вам необходимо установить статический IP или вы хотите использовать средства настройки наподобие [[Netcfg (Русский)#Настройка|Netcfg]], вам сначала надо остановить данный сервис: {{ic|systemctl stop dhcpcd.service}}. Для получения дополнительной информации обратитесь к [[Configuring Network (Русский)|руководству по настройке сети]].<br />
<br />
==== Беспроводное соединение ====<br />
Если у вас беспроводное соединение, запустите {{ic|wifi-menu}} для его настройки. Смотрите разделы [[Wireless Setup (Русский)|Wireless Setup]] и [[Netcfg (Русский)#Настройка|Netcfg]], чтобы определить, какие дополнительные драйверы требуются для вашего устройства.<br />
<br />
=== Установка базовой системы ===<br />
Перед началом установки вы, возможно, захотите отредактировать {{ic|/etc/pacman.d/mirrorlist}} для выбора подходящего зеркала. Это стоит сделать, поскольку копия данного файла будет также установлена в вашу систему с помощью {{ic|pacstrap}}.<br />
<br />
Скрипт [https://github.com/falconindy/arch-install-scripts/blob/master/pacstrap.in pacstrap] установит базовую систему. Группа пакетов ''base-devel'' должна также быть установлена, если вы собираетесь компилировать программы из [[Arch_User_Repository_(Русский)|AUR]] или с использованием [[Arch_Build_System_(Русский)|ABS]].<br />
<br />
# pacstrap /mnt base base-devel<br />
<br />
Также можно установить и другие пакеты, добавив их имена, разделенные пробелами, к команде выше.<br />
<br />
=== Установка загрузчика ===<br />
[[GRUB2 (Русский)|Grub]]<br />
<br />
* Для BIOS<br />
<br />
# arch-chroot /mnt pacman -S grub-bios<br />
<br />
* Для EFI (иногда вместо него нужно установить {{ic|grub-efi-i386}} )<br />
<br />
# arch-chroot /mnt pacman -S grub-efi-x86_64<br />
<br />
* Устанавливайте GRUB после выполнения chroot (обратитесь к разделу [[#Настройка системы|Настройка системы]] ниже).<br />
<br />
[[Syslinux|Syslinux]]<br />
<br />
# arch-chroot /mnt pacman -S syslinux<br />
<br />
=== Настройка системы ===<br />
Создайте [[fstab (Русский)|fstab]] следующей командой. (Если вы хотите использовать UUID или метки, используйте опции {{ic|-U}} или {{ic|-L}} соответственно.)<br />
# genfstab -p /mnt >> /mnt/etc/fstab<br />
Далее перейдите в свою установленную систему с помощью [[Change Root|chroot]].<br />
# arch-chroot /mnt<br />
<br />
* Укажите имя хоста в файле {{ic|/etc/hostname}}.<br />
* Создайте ссылку {{ic|/etc/localtime}} на {{ic|/usr/share/zoneinfo/Zone/SubZone}}. Где {{ic|Zone}} и {{ic|Subzone}} замените на то, что вам нужно. Например<br />
<br />
# ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime<br />
<br />
* Установите используемый в системе язык, настроив [[Locale (Русский)#Установка системной локали|locale]] в {{ic|/etc/locale.conf}}.<br />
<br />
* Раскомментируйте нужные [https://wiki.archlinux.org/index.php/Locale локали] в {{ic|/etc/locale.gen}} и сгенерируйте {{ic|locale-gen}}.<br />
* Настройте {{ic|/etc/mkinitcpio.conf}} как вам нужно (см. [[mkinitcpio (Русский)|mkinitcpio]]) и создайте ramdisk:<br />
<br />
# mkinitcpio -p linux<br />
<br />
* Настройте загрузчик.<br />
<br />
* Для syslinux отредактируйте {{ic|/boot/syslinux/syslinux.cfg}} и укажите нужный {{ic|/boot}} раздел. Далее введите следующую команду чтобы установить (-i), добавить загрузочный флаг (-a) и установить mbr (-m).<br />
<br />
# /usr/sbin/syslinux-install_update -iam<br />
<br />
* Для установки GRUB прочитайте статью [[GRUB2 (Русский)|GRUB]]<br />
* Установка GRUB на жесткий диск, содержащий /boot раздел<br />
<br />
# grub-install /dev/sda<br />
<br />
* Сгенерируйте конфигурационный файл {{ic|grub.cfg}}:<br />
<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
* Установите root пароль с помощью команды {{ic|passwd}}.<br />
<br />
=== Размонтирование разделов ===<br />
Если вы все еще в окружении chroot, введите {{ic|exit}} или нажмите {{ic|Ctrl+D}}.<br />
В шаге 3 мы смонтировали разделы в {{ic|/mnt}}. Теперь отмонтируем их. <br />
# umount /mnt/{boot,home,}<br />
<br />
== После установки ==<br />
<br />
=== Управление пользователями ===<br />
Добавьте добавьте необходимые вам аккаунты пользователей, как это описано на странице [[Users and Groups#User management|User management]]. Считается плохим выбором использование аккаунта суперпользователя для регулярной работы с системой, или подключения к ней через сервер [[SSH]]. Используйте аккаунт суперпользователя только для решения задач администрирования системы.<br />
<br />
=== Управление пакетами ===<br />
Смотрите статьи [[pacman (Русский)| pacman]] и [[FAQ#Package Management|FAQ: Package Management]] для получения ответов на вопросы, касающиеся установки, обновления и и управления пакетами.<br />
<br />
=== Управление сервисами ===<br />
<br />
Arch Linux использует [[systemd (Русский)| systemd]] в качестве системы инициализации и менеджера служб (сервисов) для Linux. Для обслуживания установленного Arch Linux было бы неплохо изучить основы данной системы. Взаимодействие с systemd происходит посредством команды {{ic|systemctl}}. Обратитесь к разделу [[systemd (Русский)#Основы использования systemctl| Основы использования systemctl]] для получения более подробной информации.<br />
<br />
=== Pder ===<br />
<br />
[[ALSA]] обычно работает "из коробки", только лишь требуется включить звук. Установите пакет {{Pkg|alsa-utils}} (который содержит утилиту {{ic|alsamixer}}) и следуйте инструкциям из [[Advanced Linux Sound Architecture#Unmuting the channels| данного раздела]].<br />
<br />
ALSA включена в ядро и рекомендуется к использованию. Если данная архитектура не работает, то работоспособной альтернативой является [[OSS]]. Если у вас повышенные требования к звуку, обратитесь к статье [[Sound system]] для просмотра различных вариантов решения.<br />
<br />
=== Video driver ===<br />
<br />
The Linux kernel includes open-source video drivers and support for hardware accelerated framebuffers. However, userland support is required for OpenGL and 2D acceleration in X11.<br />
<br />
If you don't know which video chipset is available on your machine, run:<br />
<br />
$ lspci | grep VGA<br />
<br />
For a complete list of open-source video drivers, search the package database:<br />
<br />
$ pacman -Ss xf86-video | less<br />
<br />
The {{ic|vesa}} driver is a generic mode-setting driver that will work with almost every GPU, but will not provide any 2D or 3D acceleration. If a better driver cannot be found or fails to load, Xorg will fall back to vesa. To install it:<br />
<br />
# pacman -S xf86-video-vesa<br />
<br />
In order for video acceleration to work, and often to expose all the modes that the GPU can set, a proper video driver is required:<br />
<br />
{| class="wikitable" style="text-align:center"<br />
|-<br />
! Brand !! Type !! Driver !! [[Multilib]] Package<br><span style="font-weight: normal;">(for 32-bit applications on Arch x86_64)</span> !! Documentation<br />
|-<br />
| rowspan="2" bgcolor=#f7e3e3| '''<span style="color: #e62c2c;">AMD/ATI</span>'''<br />
| Open source || {{Pkg|xf86-video-ati}} || {{Pkg|lib32-ati-dri}} || [[ATI]]<br />
|-<br />
| Proprietary || {{Pkg|catalyst-dkms}} || {{Pkg|lib32-catalyst-utils}} || [[AMD Catalyst]]<br />
|-<br />
| bgcolor=#e3ecf7| '''<span style="color: #2a6dc8;">Intel</span>'''<br />
| Open source<br />
| {{Pkg|xf86-video-intel}} || {{Pkg|lib32-intel-dri}} || [[Intel Graphics]]<br />
|-<br />
| rowspan="4" bgcolor=#e3f7e6| '''<span style="color: #409044;">Nvidia</span>'''<br />
| rowspan="2"| Open source<br />
| {{Pkg|xf86-video-nouveau}} || {{Pkg|lib32-nouveau-dri}} || [[Nouveau]]<br />
|-<br />
| {{Pkg|xf86-video-nv}} || – || (legacy driver)<br />
|-<br />
| rowspan="2"| Proprietary || {{Pkg|nvidia}} || {{Pkg|lib32-nvidia-utils}} || rowspan="2"| [[NVIDIA]]<br />
|-<br />
| {{Pkg|nvidia-304xx}} || {{Pkg|lib32-nvidia-304xx-utils}}<br />
|}<br />
<br />
=== Display server ===<br />
<br />
The X Window System (commonly X11, or X) is a networking and display protocol which provides windowing on bitmap displays. It is the de-facto standard for implementating graphical user interfaces. See the [[Xorg]] article for details.<br />
<br />
[[Wayland]] is a new display server protocol and the Weston reference implementation is available. There is very little support for it from applications at this early stage of development.<br />
<br />
=== Шрифты ===<br />
<br />
Вы по желанию можете установить набор шрифтов TrueType, поскольку по умолчанию в свежеустановленной системе будут только немасштабируемые шрифты. DejaVu - набор высококачественных неспециализированных шрифтов с хорошим покрытием таблицы [[Wikipedia:Юникод| Юникода]]:<br />
<br />
# pacman -S ttf-dejavu<br />
<br />
Обратитесь к статье [[Font Configuration]] за советами по настройке рендеринга шрифтов и к статье [[Fonts]] за инструкциями по выбору и установке шрифтов.<br />
<br />
== Приложение ==<br />
<br />
Обратитесь к статье [[List of Applications]] для просмотра списка приложений, которые могут вас заинтересовать.<br />
<br />
Также смотрите статью [[General Recommendations (Русский)| General Recommendations]], содержащую руководства по послеустановочной настройке системы, например, настройке тачпада или рендерингу шрифтов.</div>Nobushttps://wiki.archlinux.org/index.php?title=Installation_guide_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=251815Installation guide (Русский)2013-03-24T11:16:09Z<p>Nobus: /* Fonts */</p>
<hr />
<div>[[Category:About Arch (Русский)]]<br />
[[Category:Getting and installing Arch (Русский)]]<br />
[[En:Installation_Guide]]<br />
[[de:Arch Install Scripts]]<br />
[[fr:Arch_install_scripts]]<br />
[[it:Installation Guide]]<br />
[[uk:Installation Guide]]<br />
[[zh-CN:Installation Guide]]<br />
[[zh-TW:Installation Guide]]<br />
Этот документ проведет вас через процесс установки [[Arch Linux (Русский)|Arch Linux]] c использованием [https://github.com/falconindy/arch-install-scripts Arch Install Scripts]. Рекомендуется перед установкой ознакомиться с [[FAQ (Русский)]]._<br />
Поддерживаемая сообществом [[Main Page (Русский)|вики Arch'а]] является превосходным ресурсом, к которому следует обращаться в первую очередь при возникновении каких-либо проблем. Если ответ на интересующий вас вопрос в другом месте не найден, доступны [[Wikipedia:IRC|IRC]]-канал (irc://irc.mibbit.net/#archlinux-ru) и [http://archlinux.org.ru/forum/ форумы]. Также обращайтесь к страницам руководств ({{ic|man}}) тех команд, с которыми вы незнакомы; обычно они вызываются при помощи {{ic|man ''command''}} (где ''command'' - имя интересующей вас команды).<br />
<br />
{{Tip|Новички могут обратиться к [[Beginners' Guide (Русский)|подробному руководству]] по установке.}}<br />
<br />
== Получение установочного образа ==<br />
Загрузите новый установочный образ диска Arch Linux с [https://www.archlinux.org/download/ соответствующей страницы] на главном сайте дистрибутива.<br />
* Предлагается единый установочный образ, с помощью которого вы сможете загрузиться как на i686, так и на x86_64 системах, чтобы провести установку по сети. Диск с репозиторием [core] для оффлайн-установки больше не доступен и не поддерживается.<br />
* Установочный образ подписан цифровой подписью, и вы можете проверить ее перед установкой командой {{bc|pacman-key -v <iso-file>.sig}}<br />
* Образ может быть записан на CD, смонтирован как iso-файл или записан на usb устройство (флешку) с помощью команды {{ic|dd}}. Он предназначен только для установки системы - обновление уже установленной системы производится стандартным способом, командой {{ic|pacman -Syu}}.<br />
<br />
== Установка ==<br />
<br />
=== Раскладка клавиатуры ===<br />
Для большинства стран и видов клавиатур уже доступны соответствующие раскладки, нужная из которых может быть выбрана командой, например {{ic|loadkeys ru}}. Другие раскладки можно найти в {{ic|/usr/share/kbd/keymaps/}} (можно не указывать полный путь и расширение файла с раскладкой при использовании команды loadkeys).<br />
<br />
=== Создание разделов ===<br />
Для подробностей обратитесь к разделу [[Partitioning]].<br />
<br />
При необходимости не забудьте создать [[lvm|LVM]], [[Dm-crypt_with_LUKS|LUKS]] или [[RAID|RAID]] устройства.<br />
<br />
=== Форматирование разделов ===<br />
Более подробно вы можете прочитать [[Format_a_device#Step_2:_create_the_new_file_system|здесь]].<br />
<br />
Если вы используете (U)EFI, вам, скорее всего, понадобится отдельный раздел для размещения служебного раздела UEFI. Подробнее можно прочитать [[Unified_Extensible_Firmware_Interface (Русский)#Создание UEFI раздела в Linux|здесь]].<br />
<br />
=== Монтирование разделов ===<br />
Как минимум, вы должны смонтировать корневой раздел в {{ic|/mnt}}. Например:<br />
# mount /dev/sda2 /mnt<br />
Если вы хотите, чтобы еще какие-либо разделы были автоматически учтены скриптом установки {{ic|genfstab}}, необходимо создать соответствующие директории внутри /mnt и смонтировать туда нужные разделы. Например для отдельных загрузочного и домашнего разделов:<br />
# mkdir /mnt/boot && mount /dev/sda1 /mnt/boot<br />
# mkdir /mnt/home && mount /dev/sda3 /mnt/home<br />
<br />
=== Подключение к интернету ===<br />
Сервис DHCP уже доступен для всех подходящих устройств. Для проводного подключения просто запустите {{ic|dhcpcd}}. Если вам необходимо установить статический IP или вы хотите использовать средства настройки наподобие [[Netcfg (Русский)#Настройка|Netcfg]], вам сначала надо остановить данный сервис: {{ic|systemctl stop dhcpcd.service}}. Для получения дополнительной информации обратитесь к [[Configuring Network (Русский)|руководству по настройке сети]].<br />
<br />
==== Беспроводное соединение ====<br />
Если у вас беспроводное соединение, запустите {{ic|wifi-menu}} для его настройки. Смотрите разделы [[Wireless Setup (Русский)|Wireless Setup]] и [[Netcfg (Русский)#Настройка|Netcfg]], чтобы определить, какие дополнительные драйверы требуются для вашего устройства.<br />
<br />
=== Установка базовой системы ===<br />
Перед началом установки вы, возможно, захотите отредактировать {{ic|/etc/pacman.d/mirrorlist}} для выбора подходящего зеркала. Это стоит сделать, поскольку копия данного файла будет также установлена в вашу систему с помощью {{ic|pacstrap}}.<br />
<br />
Скрипт [https://github.com/falconindy/arch-install-scripts/blob/master/pacstrap.in pacstrap] установит базовую систему. Группа пакетов ''base-devel'' должна также быть установлена, если вы собираетесь компилировать программы из [[Arch_User_Repository_(Русский)|AUR]] или с использованием [[Arch_Build_System_(Русский)|ABS]].<br />
<br />
# pacstrap /mnt base base-devel<br />
<br />
Также можно установить и другие пакеты, добавив их имена, разделенные пробелами, к команде выше.<br />
<br />
=== Установка загрузчика ===<br />
[[GRUB2 (Русский)|Grub]]<br />
<br />
* Для BIOS<br />
<br />
# arch-chroot /mnt pacman -S grub-bios<br />
<br />
* Для EFI (иногда вместо него нужно установить {{ic|grub-efi-i386}} )<br />
<br />
# arch-chroot /mnt pacman -S grub-efi-x86_64<br />
<br />
* Устанавливайте GRUB после выполнения chroot (обратитесь к разделу [[#Настройка системы|Настройка системы]] ниже).<br />
<br />
[[Syslinux|Syslinux]]<br />
<br />
# arch-chroot /mnt pacman -S syslinux<br />
<br />
=== Настройка системы ===<br />
Создайте [[fstab (Русский)|fstab]] следующей командой. (Если вы хотите использовать UUID или метки, используйте опции {{ic|-U}} или {{ic|-L}} соответственно.)<br />
# genfstab -p /mnt >> /mnt/etc/fstab<br />
Далее перейдите в свою установленную систему с помощью [[Change Root|chroot]].<br />
# arch-chroot /mnt<br />
<br />
* Укажите имя хоста в файле {{ic|/etc/hostname}}.<br />
* Создайте ссылку {{ic|/etc/localtime}} на {{ic|/usr/share/zoneinfo/Zone/SubZone}}. Где {{ic|Zone}} и {{ic|Subzone}} замените на то, что вам нужно. Например<br />
<br />
# ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime<br />
<br />
* Установите используемый в системе язык, настроив [[Locale (Русский)#Установка системной локали|locale]] в {{ic|/etc/locale.conf}}.<br />
<br />
* Раскомментируйте нужные [https://wiki.archlinux.org/index.php/Locale локали] в {{ic|/etc/locale.gen}} и сгенерируйте {{ic|locale-gen}}.<br />
* Настройте {{ic|/etc/mkinitcpio.conf}} как вам нужно (см. [[mkinitcpio (Русский)|mkinitcpio]]) и создайте ramdisk:<br />
<br />
# mkinitcpio -p linux<br />
<br />
* Настройте загрузчик.<br />
<br />
* Для syslinux отредактируйте {{ic|/boot/syslinux/syslinux.cfg}} и укажите нужный {{ic|/boot}} раздел. Далее введите следующую команду чтобы установить (-i), добавить загрузочный флаг (-a) и установить mbr (-m).<br />
<br />
# /usr/sbin/syslinux-install_update -iam<br />
<br />
* Для установки GRUB прочитайте статью [[GRUB2 (Русский)|GRUB]]<br />
* Установка GRUB на жесткий диск, содержащий /boot раздел<br />
<br />
# grub-install /dev/sda<br />
<br />
* Сгенерируйте конфигурационный файл {{ic|grub.cfg}}:<br />
<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
* Установите root пароль с помощью команды {{ic|passwd}}.<br />
<br />
=== Размонтирование разделов ===<br />
Если вы все еще в окружении chroot, введите {{ic|exit}} или нажмите {{ic|Ctrl+D}}.<br />
В шаге 3 мы смонтировали разделы в {{ic|/mnt}}. Теперь отмонтируем их. <br />
# umount /mnt/{boot,home,}<br />
<br />
== После установки ==<br />
<br />
=== Управление пользователями ===<br />
Добавьте добавьте необходимые вам аккаунты пользователей, как это описано на странице [[Users and Groups#User management|User management]]. Считается плохим выбором использование аккаунта суперпользователя для регулярной работы с системой, или подключения к ней через сервер [[SSH]]. Используйте аккаунт суперпользователя только для решения задач администрирования системы.<br />
<br />
=== Управление пакетами ===<br />
Смотрите статьи [[pacman (Русский)| pacman]] и [[FAQ#Package Management|FAQ: Package Management]] для получения ответов на вопросы, касающиеся установки, обновления и и управления пакетами.<br />
<br />
=== Управление сервисами ===<br />
<br />
Arch Linux использует [[systemd (Русский)| systemd]] в качестве системы инициализации и менеджера служб (сервисов) для Linux. Для обслуживания установленного Arch Linux было бы неплохо изучить основы данной системы. Взаимодействие с systemd происходит посредством команды {{ic|systemctl}}. Обратитесь к разделу [[systemd (Русский)#Основы использования systemctl| Основы использования systemctl]] для получения более подробной информации.<br />
<br />
=== Pder ===<br />
<br />
[[ALSA]] обычно работает "из коробки", только лишь требуется включить звук. Установите пакет {{Pkg|alsa-utils}} (который содержит утилиту {{ic|alsamixer}}) и следуйте инструкциям из [[Advanced Linux Sound Architecture#Unmuting the channels| данного раздела]].<br />
<br />
ALSA включена в ядро и рекомендуется к использованию. Если данная архитектура не работает, то работоспособной альтернативой является [[OSS]]. Если у вас повышенные требования к звуку, обратитесь к статье [[Sound system]] для просмотра различных вариантов решения.<br />
<br />
=== Video driver ===<br />
<br />
The Linux kernel includes open-source video drivers and support for hardware accelerated framebuffers. However, userland support is required for OpenGL and 2D acceleration in X11.<br />
<br />
If you don't know which video chipset is available on your machine, run:<br />
<br />
$ lspci | grep VGA<br />
<br />
For a complete list of open-source video drivers, search the package database:<br />
<br />
$ pacman -Ss xf86-video | less<br />
<br />
The {{ic|vesa}} driver is a generic mode-setting driver that will work with almost every GPU, but will not provide any 2D or 3D acceleration. If a better driver cannot be found or fails to load, Xorg will fall back to vesa. To install it:<br />
<br />
# pacman -S xf86-video-vesa<br />
<br />
In order for video acceleration to work, and often to expose all the modes that the GPU can set, a proper video driver is required:<br />
<br />
{| class="wikitable" style="text-align:center"<br />
|-<br />
! Brand !! Type !! Driver !! [[Multilib]] Package<br><span style="font-weight: normal;">(for 32-bit applications on Arch x86_64)</span> !! Documentation<br />
|-<br />
| rowspan="2" bgcolor=#f7e3e3| '''<span style="color: #e62c2c;">AMD/ATI</span>'''<br />
| Open source || {{Pkg|xf86-video-ati}} || {{Pkg|lib32-ati-dri}} || [[ATI]]<br />
|-<br />
| Proprietary || {{Pkg|catalyst-dkms}} || {{Pkg|lib32-catalyst-utils}} || [[AMD Catalyst]]<br />
|-<br />
| bgcolor=#e3ecf7| '''<span style="color: #2a6dc8;">Intel</span>'''<br />
| Open source<br />
| {{Pkg|xf86-video-intel}} || {{Pkg|lib32-intel-dri}} || [[Intel Graphics]]<br />
|-<br />
| rowspan="4" bgcolor=#e3f7e6| '''<span style="color: #409044;">Nvidia</span>'''<br />
| rowspan="2"| Open source<br />
| {{Pkg|xf86-video-nouveau}} || {{Pkg|lib32-nouveau-dri}} || [[Nouveau]]<br />
|-<br />
| {{Pkg|xf86-video-nv}} || – || (legacy driver)<br />
|-<br />
| rowspan="2"| Proprietary || {{Pkg|nvidia}} || {{Pkg|lib32-nvidia-utils}} || rowspan="2"| [[NVIDIA]]<br />
|-<br />
| {{Pkg|nvidia-304xx}} || {{Pkg|lib32-nvidia-304xx-utils}}<br />
|}<br />
<br />
=== Display server ===<br />
<br />
The X Window System (commonly X11, or X) is a networking and display protocol which provides windowing on bitmap displays. It is the de-facto standard for implementating graphical user interfaces. See the [[Xorg]] article for details.<br />
<br />
[[Wayland]] is a new display server protocol and the Weston reference implementation is available. There is very little support for it from applications at this early stage of development.<br />
<br />
=== Шрифты ===<br />
<br />
Вы по желанию можете установить набор шрифтов TrueType, поскольку по умолчанию в свежеустановленной системе будут только немасштабируемые шрифты. DejaVu - набор высококачественных неспециализированных шрифтов с хорошитм покрытием таблицы [[Wikipedia:Юникод|Юникода]]:<br />
<br />
# pacman -S ttf-dejavu<br />
<br />
Refer to [[Font Configuration]] for how to configure font rendering and [[Fonts]] for font suggestions and installation instructions.<br />
<br />
== Приложение ==<br />
<br />
Обратитесь к статье [[List of Applications]] для просмотра списка приложений, которые могут вас заинтересовать.<br />
<br />
Также смотрите статью [[General Recommendations (Русский)| General Recommendations]], содержащую руководства по послеустановочной настройке системы, например, настройке тачпада или рендерингу шрифтов.</div>Nobushttps://wiki.archlinux.org/index.php?title=Installation_guide_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=251812Installation guide (Русский)2013-03-24T11:11:24Z<p>Nobus: /* Fonts */</p>
<hr />
<div>[[Category:About Arch (Русский)]]<br />
[[Category:Getting and installing Arch (Русский)]]<br />
[[En:Installation_Guide]]<br />
[[de:Arch Install Scripts]]<br />
[[fr:Arch_install_scripts]]<br />
[[it:Installation Guide]]<br />
[[uk:Installation Guide]]<br />
[[zh-CN:Installation Guide]]<br />
[[zh-TW:Installation Guide]]<br />
Этот документ проведет вас через процесс установки [[Arch Linux (Русский)|Arch Linux]] c использованием [https://github.com/falconindy/arch-install-scripts Arch Install Scripts]. Рекомендуется перед установкой ознакомиться с [[FAQ (Русский)]]._<br />
Поддерживаемая сообществом [[Main Page (Русский)|вики Arch'а]] является превосходным ресурсом, к которому следует обращаться в первую очередь при возникновении каких-либо проблем. Если ответ на интересующий вас вопрос в другом месте не найден, доступны [[Wikipedia:IRC|IRC]]-канал (irc://irc.mibbit.net/#archlinux-ru) и [http://archlinux.org.ru/forum/ форумы]. Также обращайтесь к страницам руководств ({{ic|man}}) тех команд, с которыми вы незнакомы; обычно они вызываются при помощи {{ic|man ''command''}} (где ''command'' - имя интересующей вас команды).<br />
<br />
{{Tip|Новички могут обратиться к [[Beginners' Guide (Русский)|подробному руководству]] по установке.}}<br />
<br />
== Получение установочного образа ==<br />
Загрузите новый установочный образ диска Arch Linux с [https://www.archlinux.org/download/ соответствующей страницы] на главном сайте дистрибутива.<br />
* Предлагается единый установочный образ, с помощью которого вы сможете загрузиться как на i686, так и на x86_64 системах, чтобы провести установку по сети. Диск с репозиторием [core] для оффлайн-установки больше не доступен и не поддерживается.<br />
* Установочный образ подписан цифровой подписью, и вы можете проверить ее перед установкой командой {{bc|pacman-key -v <iso-file>.sig}}<br />
* Образ может быть записан на CD, смонтирован как iso-файл или записан на usb устройство (флешку) с помощью команды {{ic|dd}}. Он предназначен только для установки системы - обновление уже установленной системы производится стандартным способом, командой {{ic|pacman -Syu}}.<br />
<br />
== Установка ==<br />
<br />
=== Раскладка клавиатуры ===<br />
Для большинства стран и видов клавиатур уже доступны соответствующие раскладки, нужная из которых может быть выбрана командой, например {{ic|loadkeys ru}}. Другие раскладки можно найти в {{ic|/usr/share/kbd/keymaps/}} (можно не указывать полный путь и расширение файла с раскладкой при использовании команды loadkeys).<br />
<br />
=== Создание разделов ===<br />
Для подробностей обратитесь к разделу [[Partitioning]].<br />
<br />
При необходимости не забудьте создать [[lvm|LVM]], [[Dm-crypt_with_LUKS|LUKS]] или [[RAID|RAID]] устройства.<br />
<br />
=== Форматирование разделов ===<br />
Более подробно вы можете прочитать [[Format_a_device#Step_2:_create_the_new_file_system|здесь]].<br />
<br />
Если вы используете (U)EFI, вам, скорее всего, понадобится отдельный раздел для размещения служебного раздела UEFI. Подробнее можно прочитать [[Unified_Extensible_Firmware_Interface (Русский)#Создание UEFI раздела в Linux|здесь]].<br />
<br />
=== Монтирование разделов ===<br />
Как минимум, вы должны смонтировать корневой раздел в {{ic|/mnt}}. Например:<br />
# mount /dev/sda2 /mnt<br />
Если вы хотите, чтобы еще какие-либо разделы были автоматически учтены скриптом установки {{ic|genfstab}}, необходимо создать соответствующие директории внутри /mnt и смонтировать туда нужные разделы. Например для отдельных загрузочного и домашнего разделов:<br />
# mkdir /mnt/boot && mount /dev/sda1 /mnt/boot<br />
# mkdir /mnt/home && mount /dev/sda3 /mnt/home<br />
<br />
=== Подключение к интернету ===<br />
Сервис DHCP уже доступен для всех подходящих устройств. Для проводного подключения просто запустите {{ic|dhcpcd}}. Если вам необходимо установить статический IP или вы хотите использовать средства настройки наподобие [[Netcfg (Русский)#Настройка|Netcfg]], вам сначала надо остановить данный сервис: {{ic|systemctl stop dhcpcd.service}}. Для получения дополнительной информации обратитесь к [[Configuring Network (Русский)|руководству по настройке сети]].<br />
<br />
==== Беспроводное соединение ====<br />
Если у вас беспроводное соединение, запустите {{ic|wifi-menu}} для его настройки. Смотрите разделы [[Wireless Setup (Русский)|Wireless Setup]] и [[Netcfg (Русский)#Настройка|Netcfg]], чтобы определить, какие дополнительные драйверы требуются для вашего устройства.<br />
<br />
=== Установка базовой системы ===<br />
Перед началом установки вы, возможно, захотите отредактировать {{ic|/etc/pacman.d/mirrorlist}} для выбора подходящего зеркала. Это стоит сделать, поскольку копия данного файла будет также установлена в вашу систему с помощью {{ic|pacstrap}}.<br />
<br />
Скрипт [https://github.com/falconindy/arch-install-scripts/blob/master/pacstrap.in pacstrap] установит базовую систему. Группа пакетов ''base-devel'' должна также быть установлена, если вы собираетесь компилировать программы из [[Arch_User_Repository_(Русский)|AUR]] или с использованием [[Arch_Build_System_(Русский)|ABS]].<br />
<br />
# pacstrap /mnt base base-devel<br />
<br />
Также можно установить и другие пакеты, добавив их имена, разделенные пробелами, к команде выше.<br />
<br />
=== Установка загрузчика ===<br />
[[GRUB2 (Русский)|Grub]]<br />
<br />
* Для BIOS<br />
<br />
# arch-chroot /mnt pacman -S grub-bios<br />
<br />
* Для EFI (иногда вместо него нужно установить {{ic|grub-efi-i386}} )<br />
<br />
# arch-chroot /mnt pacman -S grub-efi-x86_64<br />
<br />
* Устанавливайте GRUB после выполнения chroot (обратитесь к разделу [[#Настройка системы|Настройка системы]] ниже).<br />
<br />
[[Syslinux|Syslinux]]<br />
<br />
# arch-chroot /mnt pacman -S syslinux<br />
<br />
=== Настройка системы ===<br />
Создайте [[fstab (Русский)|fstab]] следующей командой. (Если вы хотите использовать UUID или метки, используйте опции {{ic|-U}} или {{ic|-L}} соответственно.)<br />
# genfstab -p /mnt >> /mnt/etc/fstab<br />
Далее перейдите в свою установленную систему с помощью [[Change Root|chroot]].<br />
# arch-chroot /mnt<br />
<br />
* Укажите имя хоста в файле {{ic|/etc/hostname}}.<br />
* Создайте ссылку {{ic|/etc/localtime}} на {{ic|/usr/share/zoneinfo/Zone/SubZone}}. Где {{ic|Zone}} и {{ic|Subzone}} замените на то, что вам нужно. Например<br />
<br />
# ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime<br />
<br />
* Установите используемый в системе язык, настроив [[Locale (Русский)#Установка системной локали|locale]] в {{ic|/etc/locale.conf}}.<br />
<br />
* Раскомментируйте нужные [https://wiki.archlinux.org/index.php/Locale локали] в {{ic|/etc/locale.gen}} и сгенерируйте {{ic|locale-gen}}.<br />
* Настройте {{ic|/etc/mkinitcpio.conf}} как вам нужно (см. [[mkinitcpio (Русский)|mkinitcpio]]) и создайте ramdisk:<br />
<br />
# mkinitcpio -p linux<br />
<br />
* Настройте загрузчик.<br />
<br />
* Для syslinux отредактируйте {{ic|/boot/syslinux/syslinux.cfg}} и укажите нужный {{ic|/boot}} раздел. Далее введите следующую команду чтобы установить (-i), добавить загрузочный флаг (-a) и установить mbr (-m).<br />
<br />
# /usr/sbin/syslinux-install_update -iam<br />
<br />
* Для установки GRUB прочитайте статью [[GRUB2 (Русский)|GRUB]]<br />
* Установка GRUB на жесткий диск, содержащий /boot раздел<br />
<br />
# grub-install /dev/sda<br />
<br />
* Сгенерируйте конфигурационный файл {{ic|grub.cfg}}:<br />
<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
* Установите root пароль с помощью команды {{ic|passwd}}.<br />
<br />
=== Размонтирование разделов ===<br />
Если вы все еще в окружении chroot, введите {{ic|exit}} или нажмите {{ic|Ctrl+D}}.<br />
В шаге 3 мы смонтировали разделы в {{ic|/mnt}}. Теперь отмонтируем их. <br />
# umount /mnt/{boot,home,}<br />
<br />
== После установки ==<br />
<br />
=== Управление пользователями ===<br />
Добавьте добавьте необходимые вам аккаунты пользователей, как это описано на странице [[Users and Groups#User management|User management]]. Считается плохим выбором использование аккаунта суперпользователя для регулярной работы с системой, или подключения к ней через сервер [[SSH]]. Используйте аккаунт суперпользователя только для решения задач администрирования системы.<br />
<br />
=== Управление пакетами ===<br />
Смотрите статьи [[pacman (Русский)| pacman]] и [[FAQ#Package Management|FAQ: Package Management]] для получения ответов на вопросы, касающиеся установки, обновления и и управления пакетами.<br />
<br />
=== Управление сервисами ===<br />
<br />
Arch Linux использует [[systemd (Русский)| systemd]] в качестве системы инициализации и менеджера служб (сервисов) для Linux. Для обслуживания установленного Arch Linux было бы неплохо изучить основы данной системы. Взаимодействие с systemd происходит посредством команды {{ic|systemctl}}. Обратитесь к разделу [[systemd (Русский)#Основы использования systemctl| Основы использования systemctl]] для получения более подробной информации.<br />
<br />
=== Pder ===<br />
<br />
[[ALSA]] обычно работает "из коробки", только лишь требуется включить звук. Установите пакет {{Pkg|alsa-utils}} (который содержит утилиту {{ic|alsamixer}}) и следуйте инструкциям из [[Advanced Linux Sound Architecture#Unmuting the channels| данного раздела]].<br />
<br />
ALSA включена в ядро и рекомендуется к использованию. Если данная архитектура не работает, то работоспособной альтернативой является [[OSS]]. Если у вас повышенные требования к звуку, обратитесь к статье [[Sound system]] для просмотра различных вариантов решения.<br />
<br />
=== Video driver ===<br />
<br />
The Linux kernel includes open-source video drivers and support for hardware accelerated framebuffers. However, userland support is required for OpenGL and 2D acceleration in X11.<br />
<br />
If you don't know which video chipset is available on your machine, run:<br />
<br />
$ lspci | grep VGA<br />
<br />
For a complete list of open-source video drivers, search the package database:<br />
<br />
$ pacman -Ss xf86-video | less<br />
<br />
The {{ic|vesa}} driver is a generic mode-setting driver that will work with almost every GPU, but will not provide any 2D or 3D acceleration. If a better driver cannot be found or fails to load, Xorg will fall back to vesa. To install it:<br />
<br />
# pacman -S xf86-video-vesa<br />
<br />
In order for video acceleration to work, and often to expose all the modes that the GPU can set, a proper video driver is required:<br />
<br />
{| class="wikitable" style="text-align:center"<br />
|-<br />
! Brand !! Type !! Driver !! [[Multilib]] Package<br><span style="font-weight: normal;">(for 32-bit applications on Arch x86_64)</span> !! Documentation<br />
|-<br />
| rowspan="2" bgcolor=#f7e3e3| '''<span style="color: #e62c2c;">AMD/ATI</span>'''<br />
| Open source || {{Pkg|xf86-video-ati}} || {{Pkg|lib32-ati-dri}} || [[ATI]]<br />
|-<br />
| Proprietary || {{Pkg|catalyst-dkms}} || {{Pkg|lib32-catalyst-utils}} || [[AMD Catalyst]]<br />
|-<br />
| bgcolor=#e3ecf7| '''<span style="color: #2a6dc8;">Intel</span>'''<br />
| Open source<br />
| {{Pkg|xf86-video-intel}} || {{Pkg|lib32-intel-dri}} || [[Intel Graphics]]<br />
|-<br />
| rowspan="4" bgcolor=#e3f7e6| '''<span style="color: #409044;">Nvidia</span>'''<br />
| rowspan="2"| Open source<br />
| {{Pkg|xf86-video-nouveau}} || {{Pkg|lib32-nouveau-dri}} || [[Nouveau]]<br />
|-<br />
| {{Pkg|xf86-video-nv}} || – || (legacy driver)<br />
|-<br />
| rowspan="2"| Proprietary || {{Pkg|nvidia}} || {{Pkg|lib32-nvidia-utils}} || rowspan="2"| [[NVIDIA]]<br />
|-<br />
| {{Pkg|nvidia-304xx}} || {{Pkg|lib32-nvidia-304xx-utils}}<br />
|}<br />
<br />
=== Display server ===<br />
<br />
The X Window System (commonly X11, or X) is a networking and display protocol which provides windowing on bitmap displays. It is the de-facto standard for implementating graphical user interfaces. See the [[Xorg]] article for details.<br />
<br />
[[Wayland]] is a new display server protocol and the Weston reference implementation is available. There is very little support for it from applications at this early stage of development.<br />
<br />
=== Fonts ===<br />
<br />
You may wish to install a set of TrueType fonts, as only unscalable bitmap fonts are included by default. DejaVu is a set of high quality, general-purpose fonts with good [[Wikipedia:Unicode|Unicode]] coverage:<br />
<br />
# pacman -S ttf-dejavu<br />
<br />
Refer to [[Font Configuration]] for how to configure font rendering and [[Fonts]] for font suggestions and installation instructions.<br />
<br />
== Приложение ==<br />
<br />
Обратитесь к статье [[List of Applications]] для просмотра списка приложений, которые могут вас заинтересовать.<br />
<br />
Также смотрите статью [[General Recommendations (Русский)| General Recommendations]], содержащую руководства по послеустановочной настройке системы, например, настройке тачпада или рендерингу шрифтов.</div>Nobushttps://wiki.archlinux.org/index.php?title=Installation_guide_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=251811Installation guide (Русский)2013-03-24T11:07:30Z<p>Nobus: /* Sound */</p>
<hr />
<div>[[Category:About Arch (Русский)]]<br />
[[Category:Getting and installing Arch (Русский)]]<br />
[[En:Installation_Guide]]<br />
[[de:Arch Install Scripts]]<br />
[[fr:Arch_install_scripts]]<br />
[[it:Installation Guide]]<br />
[[uk:Installation Guide]]<br />
[[zh-CN:Installation Guide]]<br />
[[zh-TW:Installation Guide]]<br />
Этот документ проведет вас через процесс установки [[Arch Linux (Русский)|Arch Linux]] c использованием [https://github.com/falconindy/arch-install-scripts Arch Install Scripts]. Рекомендуется перед установкой ознакомиться с [[FAQ (Русский)]]._<br />
Поддерживаемая сообществом [[Main Page (Русский)|вики Arch'а]] является превосходным ресурсом, к которому следует обращаться в первую очередь при возникновении каких-либо проблем. Если ответ на интересующий вас вопрос в другом месте не найден, доступны [[Wikipedia:IRC|IRC]]-канал (irc://irc.mibbit.net/#archlinux-ru) и [http://archlinux.org.ru/forum/ форумы]. Также обращайтесь к страницам руководств ({{ic|man}}) тех команд, с которыми вы незнакомы; обычно они вызываются при помощи {{ic|man ''command''}} (где ''command'' - имя интересующей вас команды).<br />
<br />
{{Tip|Новички могут обратиться к [[Beginners' Guide (Русский)|подробному руководству]] по установке.}}<br />
<br />
== Получение установочного образа ==<br />
Загрузите новый установочный образ диска Arch Linux с [https://www.archlinux.org/download/ соответствующей страницы] на главном сайте дистрибутива.<br />
* Предлагается единый установочный образ, с помощью которого вы сможете загрузиться как на i686, так и на x86_64 системах, чтобы провести установку по сети. Диск с репозиторием [core] для оффлайн-установки больше не доступен и не поддерживается.<br />
* Установочный образ подписан цифровой подписью, и вы можете проверить ее перед установкой командой {{bc|pacman-key -v <iso-file>.sig}}<br />
* Образ может быть записан на CD, смонтирован как iso-файл или записан на usb устройство (флешку) с помощью команды {{ic|dd}}. Он предназначен только для установки системы - обновление уже установленной системы производится стандартным способом, командой {{ic|pacman -Syu}}.<br />
<br />
== Установка ==<br />
<br />
=== Раскладка клавиатуры ===<br />
Для большинства стран и видов клавиатур уже доступны соответствующие раскладки, нужная из которых может быть выбрана командой, например {{ic|loadkeys ru}}. Другие раскладки можно найти в {{ic|/usr/share/kbd/keymaps/}} (можно не указывать полный путь и расширение файла с раскладкой при использовании команды loadkeys).<br />
<br />
=== Создание разделов ===<br />
Для подробностей обратитесь к разделу [[Partitioning]].<br />
<br />
При необходимости не забудьте создать [[lvm|LVM]], [[Dm-crypt_with_LUKS|LUKS]] или [[RAID|RAID]] устройства.<br />
<br />
=== Форматирование разделов ===<br />
Более подробно вы можете прочитать [[Format_a_device#Step_2:_create_the_new_file_system|здесь]].<br />
<br />
Если вы используете (U)EFI, вам, скорее всего, понадобится отдельный раздел для размещения служебного раздела UEFI. Подробнее можно прочитать [[Unified_Extensible_Firmware_Interface (Русский)#Создание UEFI раздела в Linux|здесь]].<br />
<br />
=== Монтирование разделов ===<br />
Как минимум, вы должны смонтировать корневой раздел в {{ic|/mnt}}. Например:<br />
# mount /dev/sda2 /mnt<br />
Если вы хотите, чтобы еще какие-либо разделы были автоматически учтены скриптом установки {{ic|genfstab}}, необходимо создать соответствующие директории внутри /mnt и смонтировать туда нужные разделы. Например для отдельных загрузочного и домашнего разделов:<br />
# mkdir /mnt/boot && mount /dev/sda1 /mnt/boot<br />
# mkdir /mnt/home && mount /dev/sda3 /mnt/home<br />
<br />
=== Подключение к интернету ===<br />
Сервис DHCP уже доступен для всех подходящих устройств. Для проводного подключения просто запустите {{ic|dhcpcd}}. Если вам необходимо установить статический IP или вы хотите использовать средства настройки наподобие [[Netcfg (Русский)#Настройка|Netcfg]], вам сначала надо остановить данный сервис: {{ic|systemctl stop dhcpcd.service}}. Для получения дополнительной информации обратитесь к [[Configuring Network (Русский)|руководству по настройке сети]].<br />
<br />
==== Беспроводное соединение ====<br />
Если у вас беспроводное соединение, запустите {{ic|wifi-menu}} для его настройки. Смотрите разделы [[Wireless Setup (Русский)|Wireless Setup]] и [[Netcfg (Русский)#Настройка|Netcfg]], чтобы определить, какие дополнительные драйверы требуются для вашего устройства.<br />
<br />
=== Установка базовой системы ===<br />
Перед началом установки вы, возможно, захотите отредактировать {{ic|/etc/pacman.d/mirrorlist}} для выбора подходящего зеркала. Это стоит сделать, поскольку копия данного файла будет также установлена в вашу систему с помощью {{ic|pacstrap}}.<br />
<br />
Скрипт [https://github.com/falconindy/arch-install-scripts/blob/master/pacstrap.in pacstrap] установит базовую систему. Группа пакетов ''base-devel'' должна также быть установлена, если вы собираетесь компилировать программы из [[Arch_User_Repository_(Русский)|AUR]] или с использованием [[Arch_Build_System_(Русский)|ABS]].<br />
<br />
# pacstrap /mnt base base-devel<br />
<br />
Также можно установить и другие пакеты, добавив их имена, разделенные пробелами, к команде выше.<br />
<br />
=== Установка загрузчика ===<br />
[[GRUB2 (Русский)|Grub]]<br />
<br />
* Для BIOS<br />
<br />
# arch-chroot /mnt pacman -S grub-bios<br />
<br />
* Для EFI (иногда вместо него нужно установить {{ic|grub-efi-i386}} )<br />
<br />
# arch-chroot /mnt pacman -S grub-efi-x86_64<br />
<br />
* Устанавливайте GRUB после выполнения chroot (обратитесь к разделу [[#Настройка системы|Настройка системы]] ниже).<br />
<br />
[[Syslinux|Syslinux]]<br />
<br />
# arch-chroot /mnt pacman -S syslinux<br />
<br />
=== Настройка системы ===<br />
Создайте [[fstab (Русский)|fstab]] следующей командой. (Если вы хотите использовать UUID или метки, используйте опции {{ic|-U}} или {{ic|-L}} соответственно.)<br />
# genfstab -p /mnt >> /mnt/etc/fstab<br />
Далее перейдите в свою установленную систему с помощью [[Change Root|chroot]].<br />
# arch-chroot /mnt<br />
<br />
* Укажите имя хоста в файле {{ic|/etc/hostname}}.<br />
* Создайте ссылку {{ic|/etc/localtime}} на {{ic|/usr/share/zoneinfo/Zone/SubZone}}. Где {{ic|Zone}} и {{ic|Subzone}} замените на то, что вам нужно. Например<br />
<br />
# ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime<br />
<br />
* Установите используемый в системе язык, настроив [[Locale (Русский)#Установка системной локали|locale]] в {{ic|/etc/locale.conf}}.<br />
<br />
* Раскомментируйте нужные [https://wiki.archlinux.org/index.php/Locale локали] в {{ic|/etc/locale.gen}} и сгенерируйте {{ic|locale-gen}}.<br />
* Настройте {{ic|/etc/mkinitcpio.conf}} как вам нужно (см. [[mkinitcpio (Русский)|mkinitcpio]]) и создайте ramdisk:<br />
<br />
# mkinitcpio -p linux<br />
<br />
* Настройте загрузчик.<br />
<br />
* Для syslinux отредактируйте {{ic|/boot/syslinux/syslinux.cfg}} и укажите нужный {{ic|/boot}} раздел. Далее введите следующую команду чтобы установить (-i), добавить загрузочный флаг (-a) и установить mbr (-m).<br />
<br />
# /usr/sbin/syslinux-install_update -iam<br />
<br />
* Для установки GRUB прочитайте статью [[GRUB2 (Русский)|GRUB]]<br />
* Установка GRUB на жесткий диск, содержащий /boot раздел<br />
<br />
# grub-install /dev/sda<br />
<br />
* Сгенерируйте конфигурационный файл {{ic|grub.cfg}}:<br />
<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
* Установите root пароль с помощью команды {{ic|passwd}}.<br />
<br />
=== Размонтирование разделов ===<br />
Если вы все еще в окружении chroot, введите {{ic|exit}} или нажмите {{ic|Ctrl+D}}.<br />
В шаге 3 мы смонтировали разделы в {{ic|/mnt}}. Теперь отмонтируем их. <br />
# umount /mnt/{boot,home,}<br />
<br />
== После установки ==<br />
<br />
=== Управление пользователями ===<br />
Добавьте добавьте необходимые вам аккаунты пользователей, как это описано на странице [[Users and Groups#User management|User management]]. Считается плохим выбором использование аккаунта суперпользователя для регулярной работы с системой, или подключения к ней через сервер [[SSH]]. Используйте аккаунт суперпользователя только для решения задач администрирования системы.<br />
<br />
=== Управление пакетами ===<br />
Смотрите статьи [[pacman (Русский)| pacman]] и [[FAQ#Package Management|FAQ: Package Management]] для получения ответов на вопросы, касающиеся установки, обновления и и управления пакетами.<br />
<br />
=== Управление сервисами ===<br />
<br />
Arch Linux использует [[systemd (Русский)| systemd]] в качестве системы инициализации и менеджера служб (сервисов) для Linux. Для обслуживания установленного Arch Linux было бы неплохо изучить основы данной системы. Взаимодействие с systemd происходит посредством команды {{ic|systemctl}}. Обратитесь к разделу [[systemd (Русский)#Основы использования systemctl| Основы использования systemctl]] для получения более подробной информации.<br />
<br />
=== Pder ===<br />
<br />
[[ALSA]] обычно работает "из коробки", только лишь требуется включить звук. Установите пакет {{Pkg|alsa-utils}} (который содержит утилиту {{ic|alsamixer}}) и следуйте инструкциям из [[Advanced Linux Sound Architecture#Unmuting the channels| данного раздела]].<br />
<br />
ALSA включена в ядро и рекомендуется к использованию. Если данная архитектура не работает, то работоспособной альтернативой является [[OSS]]. Если у вас повышенные требования к звуку, обратитесь к статье [[Sound system]] для просмотра различных вариантов решения.<br />
<br />
=== Video driver ===<br />
<br />
The Linux kernel includes open-source video drivers and support for hardware accelerated framebuffers. However, userland support is required for OpenGL and 2D acceleration in X11.<br />
<br />
If you don't know which video chipset is available on your machine, run:<br />
<br />
$ lspci | grep VGA<br />
<br />
For a complete list of open-source video drivers, search the package database:<br />
<br />
$ pacman -Ss xf86-video | less<br />
<br />
The {{ic|vesa}} driver is a generic mode-setting driver that will work with almost every GPU, but will not provide any 2D or 3D acceleration. If a better driver cannot be found or fails to load, Xorg will fall back to vesa. To install it:<br />
<br />
# pacman -S xf86-video-vesa<br />
<br />
In order for video acceleration to work, and often to expose all the modes that the GPU can set, a proper video driver is required:<br />
<br />
{| class="wikitable" style="text-align:center"<br />
|-<br />
! Brand !! Type !! Driver !! [[Multilib]] Package<br><span style="font-weight: normal;">(for 32-bit applications on Arch x86_64)</span> !! Documentation<br />
|-<br />
| rowspan="2" bgcolor=#f7e3e3| '''<span style="color: #e62c2c;">AMD/ATI</span>'''<br />
| Open source || {{Pkg|xf86-video-ati}} || {{Pkg|lib32-ati-dri}} || [[ATI]]<br />
|-<br />
| Proprietary || {{Pkg|catalyst-dkms}} || {{Pkg|lib32-catalyst-utils}} || [[AMD Catalyst]]<br />
|-<br />
| bgcolor=#e3ecf7| '''<span style="color: #2a6dc8;">Intel</span>'''<br />
| Open source<br />
| {{Pkg|xf86-video-intel}} || {{Pkg|lib32-intel-dri}} || [[Intel Graphics]]<br />
|-<br />
| rowspan="4" bgcolor=#e3f7e6| '''<span style="color: #409044;">Nvidia</span>'''<br />
| rowspan="2"| Open source<br />
| {{Pkg|xf86-video-nouveau}} || {{Pkg|lib32-nouveau-dri}} || [[Nouveau]]<br />
|-<br />
| {{Pkg|xf86-video-nv}} || – || (legacy driver)<br />
|-<br />
| rowspan="2"| Proprietary || {{Pkg|nvidia}} || {{Pkg|lib32-nvidia-utils}} || rowspan="2"| [[NVIDIA]]<br />
|-<br />
| {{Pkg|nvidia-304xx}} || {{Pkg|lib32-nvidia-304xx-utils}}<br />
|}<br />
<br />
=== Display server ===<br />
<br />
The X Window System (commonly X11, or X) is a networking and display protocol which provides windowing on bitmap displays. It is the de-facto standard for implementating graphical user interfaces. See the [[Xorg]] article for details.<br />
<br />
[[Wayland]] is a new display server protocol and the Weston reference implementation is available. There is very little support for it from applications at this early stage of development.<br />
<br />
=== Fonts ===<br />
<br />
You may wish to install a set of TrueType fonts, as only unscalable bitmap fonts are included by default. DejaVu is a set of high quality, general-purpose fonts with good [[Wikipedia:Unicode|Unicode]] coverage:<br />
<br />
# pacman -S ttf-dejavu<br />
<br />
Refer to [[Font Configuration]] for how to configure font rendering and [[Fonts]] for font suggestions and installation instructions.</div>Nobushttps://wiki.archlinux.org/index.php?title=Installation_guide_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=251809Installation guide (Русский)2013-03-24T11:01:20Z<p>Nobus: /* Управление сервисами */</p>
<hr />
<div>[[Category:About Arch (Русский)]]<br />
[[Category:Getting and installing Arch (Русский)]]<br />
[[En:Installation_Guide]]<br />
[[de:Arch Install Scripts]]<br />
[[fr:Arch_install_scripts]]<br />
[[it:Installation Guide]]<br />
[[uk:Installation Guide]]<br />
[[zh-CN:Installation Guide]]<br />
[[zh-TW:Installation Guide]]<br />
Этот документ проведет вас через процесс установки [[Arch Linux (Русский)|Arch Linux]] c использованием [https://github.com/falconindy/arch-install-scripts Arch Install Scripts]. Рекомендуется перед установкой ознакомиться с [[FAQ (Русский)]]._<br />
Поддерживаемая сообществом [[Main Page (Русский)|вики Arch'а]] является превосходным ресурсом, к которому следует обращаться в первую очередь при возникновении каких-либо проблем. Если ответ на интересующий вас вопрос в другом месте не найден, доступны [[Wikipedia:IRC|IRC]]-канал (irc://irc.mibbit.net/#archlinux-ru) и [http://archlinux.org.ru/forum/ форумы]. Также обращайтесь к страницам руководств ({{ic|man}}) тех команд, с которыми вы незнакомы; обычно они вызываются при помощи {{ic|man ''command''}} (где ''command'' - имя интересующей вас команды).<br />
<br />
{{Tip|Новички могут обратиться к [[Beginners' Guide (Русский)|подробному руководству]] по установке.}}<br />
<br />
== Получение установочного образа ==<br />
Загрузите новый установочный образ диска Arch Linux с [https://www.archlinux.org/download/ соответствующей страницы] на главном сайте дистрибутива.<br />
* Предлагается единый установочный образ, с помощью которого вы сможете загрузиться как на i686, так и на x86_64 системах, чтобы провести установку по сети. Диск с репозиторием [core] для оффлайн-установки больше не доступен и не поддерживается.<br />
* Установочный образ подписан цифровой подписью, и вы можете проверить ее перед установкой командой {{bc|pacman-key -v <iso-file>.sig}}<br />
* Образ может быть записан на CD, смонтирован как iso-файл или записан на usb устройство (флешку) с помощью команды {{ic|dd}}. Он предназначен только для установки системы - обновление уже установленной системы производится стандартным способом, командой {{ic|pacman -Syu}}.<br />
<br />
== Установка ==<br />
<br />
=== Раскладка клавиатуры ===<br />
Для большинства стран и видов клавиатур уже доступны соответствующие раскладки, нужная из которых может быть выбрана командой, например {{ic|loadkeys ru}}. Другие раскладки можно найти в {{ic|/usr/share/kbd/keymaps/}} (можно не указывать полный путь и расширение файла с раскладкой при использовании команды loadkeys).<br />
<br />
=== Создание разделов ===<br />
Для подробностей обратитесь к разделу [[Partitioning]].<br />
<br />
При необходимости не забудьте создать [[lvm|LVM]], [[Dm-crypt_with_LUKS|LUKS]] или [[RAID|RAID]] устройства.<br />
<br />
=== Форматирование разделов ===<br />
Более подробно вы можете прочитать [[Format_a_device#Step_2:_create_the_new_file_system|здесь]].<br />
<br />
Если вы используете (U)EFI, вам, скорее всего, понадобится отдельный раздел для размещения служебного раздела UEFI. Подробнее можно прочитать [[Unified_Extensible_Firmware_Interface (Русский)#Создание UEFI раздела в Linux|здесь]].<br />
<br />
=== Монтирование разделов ===<br />
Как минимум, вы должны смонтировать корневой раздел в {{ic|/mnt}}. Например:<br />
# mount /dev/sda2 /mnt<br />
Если вы хотите, чтобы еще какие-либо разделы были автоматически учтены скриптом установки {{ic|genfstab}}, необходимо создать соответствующие директории внутри /mnt и смонтировать туда нужные разделы. Например для отдельных загрузочного и домашнего разделов:<br />
# mkdir /mnt/boot && mount /dev/sda1 /mnt/boot<br />
# mkdir /mnt/home && mount /dev/sda3 /mnt/home<br />
<br />
=== Подключение к интернету ===<br />
Сервис DHCP уже доступен для всех подходящих устройств. Для проводного подключения просто запустите {{ic|dhcpcd}}. Если вам необходимо установить статический IP или вы хотите использовать средства настройки наподобие [[Netcfg (Русский)#Настройка|Netcfg]], вам сначала надо остановить данный сервис: {{ic|systemctl stop dhcpcd.service}}. Для получения дополнительной информации обратитесь к [[Configuring Network (Русский)|руководству по настройке сети]].<br />
<br />
==== Беспроводное соединение ====<br />
Если у вас беспроводное соединение, запустите {{ic|wifi-menu}} для его настройки. Смотрите разделы [[Wireless Setup (Русский)|Wireless Setup]] и [[Netcfg (Русский)#Настройка|Netcfg]], чтобы определить, какие дополнительные драйверы требуются для вашего устройства.<br />
<br />
=== Установка базовой системы ===<br />
Перед началом установки вы, возможно, захотите отредактировать {{ic|/etc/pacman.d/mirrorlist}} для выбора подходящего зеркала. Это стоит сделать, поскольку копия данного файла будет также установлена в вашу систему с помощью {{ic|pacstrap}}.<br />
<br />
Скрипт [https://github.com/falconindy/arch-install-scripts/blob/master/pacstrap.in pacstrap] установит базовую систему. Группа пакетов ''base-devel'' должна также быть установлена, если вы собираетесь компилировать программы из [[Arch_User_Repository_(Русский)|AUR]] или с использованием [[Arch_Build_System_(Русский)|ABS]].<br />
<br />
# pacstrap /mnt base base-devel<br />
<br />
Также можно установить и другие пакеты, добавив их имена, разделенные пробелами, к команде выше.<br />
<br />
=== Установка загрузчика ===<br />
[[GRUB2 (Русский)|Grub]]<br />
<br />
* Для BIOS<br />
<br />
# arch-chroot /mnt pacman -S grub-bios<br />
<br />
* Для EFI (иногда вместо него нужно установить {{ic|grub-efi-i386}} )<br />
<br />
# arch-chroot /mnt pacman -S grub-efi-x86_64<br />
<br />
* Устанавливайте GRUB после выполнения chroot (обратитесь к разделу [[#Настройка системы|Настройка системы]] ниже).<br />
<br />
[[Syslinux|Syslinux]]<br />
<br />
# arch-chroot /mnt pacman -S syslinux<br />
<br />
=== Настройка системы ===<br />
Создайте [[fstab (Русский)|fstab]] следующей командой. (Если вы хотите использовать UUID или метки, используйте опции {{ic|-U}} или {{ic|-L}} соответственно.)<br />
# genfstab -p /mnt >> /mnt/etc/fstab<br />
Далее перейдите в свою установленную систему с помощью [[Change Root|chroot]].<br />
# arch-chroot /mnt<br />
<br />
* Укажите имя хоста в файле {{ic|/etc/hostname}}.<br />
* Создайте ссылку {{ic|/etc/localtime}} на {{ic|/usr/share/zoneinfo/Zone/SubZone}}. Где {{ic|Zone}} и {{ic|Subzone}} замените на то, что вам нужно. Например<br />
<br />
# ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime<br />
<br />
* Установите используемый в системе язык, настроив [[Locale (Русский)#Установка системной локали|locale]] в {{ic|/etc/locale.conf}}.<br />
<br />
* Раскомментируйте нужные [https://wiki.archlinux.org/index.php/Locale локали] в {{ic|/etc/locale.gen}} и сгенерируйте {{ic|locale-gen}}.<br />
* Настройте {{ic|/etc/mkinitcpio.conf}} как вам нужно (см. [[mkinitcpio (Русский)|mkinitcpio]]) и создайте ramdisk:<br />
<br />
# mkinitcpio -p linux<br />
<br />
* Настройте загрузчик.<br />
<br />
* Для syslinux отредактируйте {{ic|/boot/syslinux/syslinux.cfg}} и укажите нужный {{ic|/boot}} раздел. Далее введите следующую команду чтобы установить (-i), добавить загрузочный флаг (-a) и установить mbr (-m).<br />
<br />
# /usr/sbin/syslinux-install_update -iam<br />
<br />
* Для установки GRUB прочитайте статью [[GRUB2 (Русский)|GRUB]]<br />
* Установка GRUB на жесткий диск, содержащий /boot раздел<br />
<br />
# grub-install /dev/sda<br />
<br />
* Сгенерируйте конфигурационный файл {{ic|grub.cfg}}:<br />
<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
* Установите root пароль с помощью команды {{ic|passwd}}.<br />
<br />
=== Размонтирование разделов ===<br />
Если вы все еще в окружении chroot, введите {{ic|exit}} или нажмите {{ic|Ctrl+D}}.<br />
В шаге 3 мы смонтировали разделы в {{ic|/mnt}}. Теперь отмонтируем их. <br />
# umount /mnt/{boot,home,}<br />
<br />
== После установки ==<br />
<br />
=== Управление пользователями ===<br />
Добавьте добавьте необходимые вам аккаунты пользователей, как это описано на странице [[Users and Groups#User management|User management]]. Считается плохим выбором использование аккаунта суперпользователя для регулярной работы с системой, или подключения к ней через сервер [[SSH]]. Используйте аккаунт суперпользователя только для решения задач администрирования системы.<br />
<br />
=== Управление пакетами ===<br />
Смотрите статьи [[pacman (Русский)| pacman]] и [[FAQ#Package Management|FAQ: Package Management]] для получения ответов на вопросы, касающиеся установки, обновления и и управления пакетами.<br />
<br />
=== Управление сервисами ===<br />
<br />
Arch Linux использует [[systemd (Русский)| systemd]] в качестве системы инициализации и менеджера служб (сервисов) для Linux. Для обслуживания установленного Arch Linux было бы неплохо изучить основы данной системы. Взаимодействие с systemd происходит посредством команды {{ic|systemctl}}. Обратитесь к разделу [[systemd (Русский)#Основы использования systemctl| Основы использования systemctl]] для получения более подробной информации.<br />
<br />
=== Sound ===<br />
<br />
[[ALSA]] usually works out-of-the-box. It just needs to be unmuted. Install {{Pkg|alsa-utils}} (which contains {{ic|alsamixer}}) and follow [[Advanced Linux Sound Architecture#Unmuting the channels|these]] instructions.<br />
<br />
ALSA is included with the kernel and it is recommended. If it does not work, [[OSS]] is a viable alternative. If you have advanced audio requirements, take a look at [[Sound system]] for an overview of various articles.<br />
<br />
=== Video driver ===<br />
<br />
The Linux kernel includes open-source video drivers and support for hardware accelerated framebuffers. However, userland support is required for OpenGL and 2D acceleration in X11.<br />
<br />
If you don't know which video chipset is available on your machine, run:<br />
<br />
$ lspci | grep VGA<br />
<br />
For a complete list of open-source video drivers, search the package database:<br />
<br />
$ pacman -Ss xf86-video | less<br />
<br />
The {{ic|vesa}} driver is a generic mode-setting driver that will work with almost every GPU, but will not provide any 2D or 3D acceleration. If a better driver cannot be found or fails to load, Xorg will fall back to vesa. To install it:<br />
<br />
# pacman -S xf86-video-vesa<br />
<br />
In order for video acceleration to work, and often to expose all the modes that the GPU can set, a proper video driver is required:<br />
<br />
{| class="wikitable" style="text-align:center"<br />
|-<br />
! Brand !! Type !! Driver !! [[Multilib]] Package<br><span style="font-weight: normal;">(for 32-bit applications on Arch x86_64)</span> !! Documentation<br />
|-<br />
| rowspan="2" bgcolor=#f7e3e3| '''<span style="color: #e62c2c;">AMD/ATI</span>'''<br />
| Open source || {{Pkg|xf86-video-ati}} || {{Pkg|lib32-ati-dri}} || [[ATI]]<br />
|-<br />
| Proprietary || {{Pkg|catalyst-dkms}} || {{Pkg|lib32-catalyst-utils}} || [[AMD Catalyst]]<br />
|-<br />
| bgcolor=#e3ecf7| '''<span style="color: #2a6dc8;">Intel</span>'''<br />
| Open source<br />
| {{Pkg|xf86-video-intel}} || {{Pkg|lib32-intel-dri}} || [[Intel Graphics]]<br />
|-<br />
| rowspan="4" bgcolor=#e3f7e6| '''<span style="color: #409044;">Nvidia</span>'''<br />
| rowspan="2"| Open source<br />
| {{Pkg|xf86-video-nouveau}} || {{Pkg|lib32-nouveau-dri}} || [[Nouveau]]<br />
|-<br />
| {{Pkg|xf86-video-nv}} || – || (legacy driver)<br />
|-<br />
| rowspan="2"| Proprietary || {{Pkg|nvidia}} || {{Pkg|lib32-nvidia-utils}} || rowspan="2"| [[NVIDIA]]<br />
|-<br />
| {{Pkg|nvidia-304xx}} || {{Pkg|lib32-nvidia-304xx-utils}}<br />
|}<br />
<br />
=== Display server ===<br />
<br />
The X Window System (commonly X11, or X) is a networking and display protocol which provides windowing on bitmap displays. It is the de-facto standard for implementating graphical user interfaces. See the [[Xorg]] article for details.<br />
<br />
[[Wayland]] is a new display server protocol and the Weston reference implementation is available. There is very little support for it from applications at this early stage of development.<br />
<br />
=== Fonts ===<br />
<br />
You may wish to install a set of TrueType fonts, as only unscalable bitmap fonts are included by default. DejaVu is a set of high quality, general-purpose fonts with good [[Wikipedia:Unicode|Unicode]] coverage:<br />
<br />
# pacman -S ttf-dejavu<br />
<br />
Refer to [[Font Configuration]] for how to configure font rendering and [[Fonts]] for font suggestions and installation instructions.</div>Nobushttps://wiki.archlinux.org/index.php?title=Installation_guide_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=251808Installation guide (Русский)2013-03-24T11:00:51Z<p>Nobus: /* Управление пакетами */</p>
<hr />
<div>[[Category:About Arch (Русский)]]<br />
[[Category:Getting and installing Arch (Русский)]]<br />
[[En:Installation_Guide]]<br />
[[de:Arch Install Scripts]]<br />
[[fr:Arch_install_scripts]]<br />
[[it:Installation Guide]]<br />
[[uk:Installation Guide]]<br />
[[zh-CN:Installation Guide]]<br />
[[zh-TW:Installation Guide]]<br />
Этот документ проведет вас через процесс установки [[Arch Linux (Русский)|Arch Linux]] c использованием [https://github.com/falconindy/arch-install-scripts Arch Install Scripts]. Рекомендуется перед установкой ознакомиться с [[FAQ (Русский)]]._<br />
Поддерживаемая сообществом [[Main Page (Русский)|вики Arch'а]] является превосходным ресурсом, к которому следует обращаться в первую очередь при возникновении каких-либо проблем. Если ответ на интересующий вас вопрос в другом месте не найден, доступны [[Wikipedia:IRC|IRC]]-канал (irc://irc.mibbit.net/#archlinux-ru) и [http://archlinux.org.ru/forum/ форумы]. Также обращайтесь к страницам руководств ({{ic|man}}) тех команд, с которыми вы незнакомы; обычно они вызываются при помощи {{ic|man ''command''}} (где ''command'' - имя интересующей вас команды).<br />
<br />
{{Tip|Новички могут обратиться к [[Beginners' Guide (Русский)|подробному руководству]] по установке.}}<br />
<br />
== Получение установочного образа ==<br />
Загрузите новый установочный образ диска Arch Linux с [https://www.archlinux.org/download/ соответствующей страницы] на главном сайте дистрибутива.<br />
* Предлагается единый установочный образ, с помощью которого вы сможете загрузиться как на i686, так и на x86_64 системах, чтобы провести установку по сети. Диск с репозиторием [core] для оффлайн-установки больше не доступен и не поддерживается.<br />
* Установочный образ подписан цифровой подписью, и вы можете проверить ее перед установкой командой {{bc|pacman-key -v <iso-file>.sig}}<br />
* Образ может быть записан на CD, смонтирован как iso-файл или записан на usb устройство (флешку) с помощью команды {{ic|dd}}. Он предназначен только для установки системы - обновление уже установленной системы производится стандартным способом, командой {{ic|pacman -Syu}}.<br />
<br />
== Установка ==<br />
<br />
=== Раскладка клавиатуры ===<br />
Для большинства стран и видов клавиатур уже доступны соответствующие раскладки, нужная из которых может быть выбрана командой, например {{ic|loadkeys ru}}. Другие раскладки можно найти в {{ic|/usr/share/kbd/keymaps/}} (можно не указывать полный путь и расширение файла с раскладкой при использовании команды loadkeys).<br />
<br />
=== Создание разделов ===<br />
Для подробностей обратитесь к разделу [[Partitioning]].<br />
<br />
При необходимости не забудьте создать [[lvm|LVM]], [[Dm-crypt_with_LUKS|LUKS]] или [[RAID|RAID]] устройства.<br />
<br />
=== Форматирование разделов ===<br />
Более подробно вы можете прочитать [[Format_a_device#Step_2:_create_the_new_file_system|здесь]].<br />
<br />
Если вы используете (U)EFI, вам, скорее всего, понадобится отдельный раздел для размещения служебного раздела UEFI. Подробнее можно прочитать [[Unified_Extensible_Firmware_Interface (Русский)#Создание UEFI раздела в Linux|здесь]].<br />
<br />
=== Монтирование разделов ===<br />
Как минимум, вы должны смонтировать корневой раздел в {{ic|/mnt}}. Например:<br />
# mount /dev/sda2 /mnt<br />
Если вы хотите, чтобы еще какие-либо разделы были автоматически учтены скриптом установки {{ic|genfstab}}, необходимо создать соответствующие директории внутри /mnt и смонтировать туда нужные разделы. Например для отдельных загрузочного и домашнего разделов:<br />
# mkdir /mnt/boot && mount /dev/sda1 /mnt/boot<br />
# mkdir /mnt/home && mount /dev/sda3 /mnt/home<br />
<br />
=== Подключение к интернету ===<br />
Сервис DHCP уже доступен для всех подходящих устройств. Для проводного подключения просто запустите {{ic|dhcpcd}}. Если вам необходимо установить статический IP или вы хотите использовать средства настройки наподобие [[Netcfg (Русский)#Настройка|Netcfg]], вам сначала надо остановить данный сервис: {{ic|systemctl stop dhcpcd.service}}. Для получения дополнительной информации обратитесь к [[Configuring Network (Русский)|руководству по настройке сети]].<br />
<br />
==== Беспроводное соединение ====<br />
Если у вас беспроводное соединение, запустите {{ic|wifi-menu}} для его настройки. Смотрите разделы [[Wireless Setup (Русский)|Wireless Setup]] и [[Netcfg (Русский)#Настройка|Netcfg]], чтобы определить, какие дополнительные драйверы требуются для вашего устройства.<br />
<br />
=== Установка базовой системы ===<br />
Перед началом установки вы, возможно, захотите отредактировать {{ic|/etc/pacman.d/mirrorlist}} для выбора подходящего зеркала. Это стоит сделать, поскольку копия данного файла будет также установлена в вашу систему с помощью {{ic|pacstrap}}.<br />
<br />
Скрипт [https://github.com/falconindy/arch-install-scripts/blob/master/pacstrap.in pacstrap] установит базовую систему. Группа пакетов ''base-devel'' должна также быть установлена, если вы собираетесь компилировать программы из [[Arch_User_Repository_(Русский)|AUR]] или с использованием [[Arch_Build_System_(Русский)|ABS]].<br />
<br />
# pacstrap /mnt base base-devel<br />
<br />
Также можно установить и другие пакеты, добавив их имена, разделенные пробелами, к команде выше.<br />
<br />
=== Установка загрузчика ===<br />
[[GRUB2 (Русский)|Grub]]<br />
<br />
* Для BIOS<br />
<br />
# arch-chroot /mnt pacman -S grub-bios<br />
<br />
* Для EFI (иногда вместо него нужно установить {{ic|grub-efi-i386}} )<br />
<br />
# arch-chroot /mnt pacman -S grub-efi-x86_64<br />
<br />
* Устанавливайте GRUB после выполнения chroot (обратитесь к разделу [[#Настройка системы|Настройка системы]] ниже).<br />
<br />
[[Syslinux|Syslinux]]<br />
<br />
# arch-chroot /mnt pacman -S syslinux<br />
<br />
=== Настройка системы ===<br />
Создайте [[fstab (Русский)|fstab]] следующей командой. (Если вы хотите использовать UUID или метки, используйте опции {{ic|-U}} или {{ic|-L}} соответственно.)<br />
# genfstab -p /mnt >> /mnt/etc/fstab<br />
Далее перейдите в свою установленную систему с помощью [[Change Root|chroot]].<br />
# arch-chroot /mnt<br />
<br />
* Укажите имя хоста в файле {{ic|/etc/hostname}}.<br />
* Создайте ссылку {{ic|/etc/localtime}} на {{ic|/usr/share/zoneinfo/Zone/SubZone}}. Где {{ic|Zone}} и {{ic|Subzone}} замените на то, что вам нужно. Например<br />
<br />
# ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime<br />
<br />
* Установите используемый в системе язык, настроив [[Locale (Русский)#Установка системной локали|locale]] в {{ic|/etc/locale.conf}}.<br />
<br />
* Раскомментируйте нужные [https://wiki.archlinux.org/index.php/Locale локали] в {{ic|/etc/locale.gen}} и сгенерируйте {{ic|locale-gen}}.<br />
* Настройте {{ic|/etc/mkinitcpio.conf}} как вам нужно (см. [[mkinitcpio (Русский)|mkinitcpio]]) и создайте ramdisk:<br />
<br />
# mkinitcpio -p linux<br />
<br />
* Настройте загрузчик.<br />
<br />
* Для syslinux отредактируйте {{ic|/boot/syslinux/syslinux.cfg}} и укажите нужный {{ic|/boot}} раздел. Далее введите следующую команду чтобы установить (-i), добавить загрузочный флаг (-a) и установить mbr (-m).<br />
<br />
# /usr/sbin/syslinux-install_update -iam<br />
<br />
* Для установки GRUB прочитайте статью [[GRUB2 (Русский)|GRUB]]<br />
* Установка GRUB на жесткий диск, содержащий /boot раздел<br />
<br />
# grub-install /dev/sda<br />
<br />
* Сгенерируйте конфигурационный файл {{ic|grub.cfg}}:<br />
<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
* Установите root пароль с помощью команды {{ic|passwd}}.<br />
<br />
=== Размонтирование разделов ===<br />
Если вы все еще в окружении chroot, введите {{ic|exit}} или нажмите {{ic|Ctrl+D}}.<br />
В шаге 3 мы смонтировали разделы в {{ic|/mnt}}. Теперь отмонтируем их. <br />
# umount /mnt/{boot,home,}<br />
<br />
== После установки ==<br />
<br />
=== Управление пользователями ===<br />
Добавьте добавьте необходимые вам аккаунты пользователей, как это описано на странице [[Users and Groups#User management|User management]]. Считается плохим выбором использование аккаунта суперпользователя для регулярной работы с системой, или подключения к ней через сервер [[SSH]]. Используйте аккаунт суперпользователя только для решения задач администрирования системы.<br />
<br />
=== Управление пакетами ===<br />
Смотрите статьи [[pacman (Русский)| pacman]] и [[FAQ#Package Management|FAQ: Package Management]] для получения ответов на вопросы, касающиеся установки, обновления и и управления пакетами.<br />
<br />
=== Управление сервисами ===<br />
<br />
Arch Linux использует [[systemd (Русский)]] в качестве системы инициализации и менеджера служб (сервисов) для Linux. Для обслуживания установленного Arch Linux было бы неплохо изучить основы данной системы. Взаимодействие с systemd происходит посредством команды {{ic|systemctl}}. Обратитесь к разделу [[systemd (Русский)#Основы использования systemctl]] для получения более подробной информации.<br />
<br />
=== Sound ===<br />
<br />
[[ALSA]] usually works out-of-the-box. It just needs to be unmuted. Install {{Pkg|alsa-utils}} (which contains {{ic|alsamixer}}) and follow [[Advanced Linux Sound Architecture#Unmuting the channels|these]] instructions.<br />
<br />
ALSA is included with the kernel and it is recommended. If it does not work, [[OSS]] is a viable alternative. If you have advanced audio requirements, take a look at [[Sound system]] for an overview of various articles.<br />
<br />
=== Video driver ===<br />
<br />
The Linux kernel includes open-source video drivers and support for hardware accelerated framebuffers. However, userland support is required for OpenGL and 2D acceleration in X11.<br />
<br />
If you don't know which video chipset is available on your machine, run:<br />
<br />
$ lspci | grep VGA<br />
<br />
For a complete list of open-source video drivers, search the package database:<br />
<br />
$ pacman -Ss xf86-video | less<br />
<br />
The {{ic|vesa}} driver is a generic mode-setting driver that will work with almost every GPU, but will not provide any 2D or 3D acceleration. If a better driver cannot be found or fails to load, Xorg will fall back to vesa. To install it:<br />
<br />
# pacman -S xf86-video-vesa<br />
<br />
In order for video acceleration to work, and often to expose all the modes that the GPU can set, a proper video driver is required:<br />
<br />
{| class="wikitable" style="text-align:center"<br />
|-<br />
! Brand !! Type !! Driver !! [[Multilib]] Package<br><span style="font-weight: normal;">(for 32-bit applications on Arch x86_64)</span> !! Documentation<br />
|-<br />
| rowspan="2" bgcolor=#f7e3e3| '''<span style="color: #e62c2c;">AMD/ATI</span>'''<br />
| Open source || {{Pkg|xf86-video-ati}} || {{Pkg|lib32-ati-dri}} || [[ATI]]<br />
|-<br />
| Proprietary || {{Pkg|catalyst-dkms}} || {{Pkg|lib32-catalyst-utils}} || [[AMD Catalyst]]<br />
|-<br />
| bgcolor=#e3ecf7| '''<span style="color: #2a6dc8;">Intel</span>'''<br />
| Open source<br />
| {{Pkg|xf86-video-intel}} || {{Pkg|lib32-intel-dri}} || [[Intel Graphics]]<br />
|-<br />
| rowspan="4" bgcolor=#e3f7e6| '''<span style="color: #409044;">Nvidia</span>'''<br />
| rowspan="2"| Open source<br />
| {{Pkg|xf86-video-nouveau}} || {{Pkg|lib32-nouveau-dri}} || [[Nouveau]]<br />
|-<br />
| {{Pkg|xf86-video-nv}} || – || (legacy driver)<br />
|-<br />
| rowspan="2"| Proprietary || {{Pkg|nvidia}} || {{Pkg|lib32-nvidia-utils}} || rowspan="2"| [[NVIDIA]]<br />
|-<br />
| {{Pkg|nvidia-304xx}} || {{Pkg|lib32-nvidia-304xx-utils}}<br />
|}<br />
<br />
=== Display server ===<br />
<br />
The X Window System (commonly X11, or X) is a networking and display protocol which provides windowing on bitmap displays. It is the de-facto standard for implementating graphical user interfaces. See the [[Xorg]] article for details.<br />
<br />
[[Wayland]] is a new display server protocol and the Weston reference implementation is available. There is very little support for it from applications at this early stage of development.<br />
<br />
=== Fonts ===<br />
<br />
You may wish to install a set of TrueType fonts, as only unscalable bitmap fonts are included by default. DejaVu is a set of high quality, general-purpose fonts with good [[Wikipedia:Unicode|Unicode]] coverage:<br />
<br />
# pacman -S ttf-dejavu<br />
<br />
Refer to [[Font Configuration]] for how to configure font rendering and [[Fonts]] for font suggestions and installation instructions.</div>Nobushttps://wiki.archlinux.org/index.php?title=Installation_guide_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=251807Installation guide (Русский)2013-03-24T11:00:18Z<p>Nobus: /* Управление пакетами */</p>
<hr />
<div>[[Category:About Arch (Русский)]]<br />
[[Category:Getting and installing Arch (Русский)]]<br />
[[En:Installation_Guide]]<br />
[[de:Arch Install Scripts]]<br />
[[fr:Arch_install_scripts]]<br />
[[it:Installation Guide]]<br />
[[uk:Installation Guide]]<br />
[[zh-CN:Installation Guide]]<br />
[[zh-TW:Installation Guide]]<br />
Этот документ проведет вас через процесс установки [[Arch Linux (Русский)|Arch Linux]] c использованием [https://github.com/falconindy/arch-install-scripts Arch Install Scripts]. Рекомендуется перед установкой ознакомиться с [[FAQ (Русский)]]._<br />
Поддерживаемая сообществом [[Main Page (Русский)|вики Arch'а]] является превосходным ресурсом, к которому следует обращаться в первую очередь при возникновении каких-либо проблем. Если ответ на интересующий вас вопрос в другом месте не найден, доступны [[Wikipedia:IRC|IRC]]-канал (irc://irc.mibbit.net/#archlinux-ru) и [http://archlinux.org.ru/forum/ форумы]. Также обращайтесь к страницам руководств ({{ic|man}}) тех команд, с которыми вы незнакомы; обычно они вызываются при помощи {{ic|man ''command''}} (где ''command'' - имя интересующей вас команды).<br />
<br />
{{Tip|Новички могут обратиться к [[Beginners' Guide (Русский)|подробному руководству]] по установке.}}<br />
<br />
== Получение установочного образа ==<br />
Загрузите новый установочный образ диска Arch Linux с [https://www.archlinux.org/download/ соответствующей страницы] на главном сайте дистрибутива.<br />
* Предлагается единый установочный образ, с помощью которого вы сможете загрузиться как на i686, так и на x86_64 системах, чтобы провести установку по сети. Диск с репозиторием [core] для оффлайн-установки больше не доступен и не поддерживается.<br />
* Установочный образ подписан цифровой подписью, и вы можете проверить ее перед установкой командой {{bc|pacman-key -v <iso-file>.sig}}<br />
* Образ может быть записан на CD, смонтирован как iso-файл или записан на usb устройство (флешку) с помощью команды {{ic|dd}}. Он предназначен только для установки системы - обновление уже установленной системы производится стандартным способом, командой {{ic|pacman -Syu}}.<br />
<br />
== Установка ==<br />
<br />
=== Раскладка клавиатуры ===<br />
Для большинства стран и видов клавиатур уже доступны соответствующие раскладки, нужная из которых может быть выбрана командой, например {{ic|loadkeys ru}}. Другие раскладки можно найти в {{ic|/usr/share/kbd/keymaps/}} (можно не указывать полный путь и расширение файла с раскладкой при использовании команды loadkeys).<br />
<br />
=== Создание разделов ===<br />
Для подробностей обратитесь к разделу [[Partitioning]].<br />
<br />
При необходимости не забудьте создать [[lvm|LVM]], [[Dm-crypt_with_LUKS|LUKS]] или [[RAID|RAID]] устройства.<br />
<br />
=== Форматирование разделов ===<br />
Более подробно вы можете прочитать [[Format_a_device#Step_2:_create_the_new_file_system|здесь]].<br />
<br />
Если вы используете (U)EFI, вам, скорее всего, понадобится отдельный раздел для размещения служебного раздела UEFI. Подробнее можно прочитать [[Unified_Extensible_Firmware_Interface (Русский)#Создание UEFI раздела в Linux|здесь]].<br />
<br />
=== Монтирование разделов ===<br />
Как минимум, вы должны смонтировать корневой раздел в {{ic|/mnt}}. Например:<br />
# mount /dev/sda2 /mnt<br />
Если вы хотите, чтобы еще какие-либо разделы были автоматически учтены скриптом установки {{ic|genfstab}}, необходимо создать соответствующие директории внутри /mnt и смонтировать туда нужные разделы. Например для отдельных загрузочного и домашнего разделов:<br />
# mkdir /mnt/boot && mount /dev/sda1 /mnt/boot<br />
# mkdir /mnt/home && mount /dev/sda3 /mnt/home<br />
<br />
=== Подключение к интернету ===<br />
Сервис DHCP уже доступен для всех подходящих устройств. Для проводного подключения просто запустите {{ic|dhcpcd}}. Если вам необходимо установить статический IP или вы хотите использовать средства настройки наподобие [[Netcfg (Русский)#Настройка|Netcfg]], вам сначала надо остановить данный сервис: {{ic|systemctl stop dhcpcd.service}}. Для получения дополнительной информации обратитесь к [[Configuring Network (Русский)|руководству по настройке сети]].<br />
<br />
==== Беспроводное соединение ====<br />
Если у вас беспроводное соединение, запустите {{ic|wifi-menu}} для его настройки. Смотрите разделы [[Wireless Setup (Русский)|Wireless Setup]] и [[Netcfg (Русский)#Настройка|Netcfg]], чтобы определить, какие дополнительные драйверы требуются для вашего устройства.<br />
<br />
=== Установка базовой системы ===<br />
Перед началом установки вы, возможно, захотите отредактировать {{ic|/etc/pacman.d/mirrorlist}} для выбора подходящего зеркала. Это стоит сделать, поскольку копия данного файла будет также установлена в вашу систему с помощью {{ic|pacstrap}}.<br />
<br />
Скрипт [https://github.com/falconindy/arch-install-scripts/blob/master/pacstrap.in pacstrap] установит базовую систему. Группа пакетов ''base-devel'' должна также быть установлена, если вы собираетесь компилировать программы из [[Arch_User_Repository_(Русский)|AUR]] или с использованием [[Arch_Build_System_(Русский)|ABS]].<br />
<br />
# pacstrap /mnt base base-devel<br />
<br />
Также можно установить и другие пакеты, добавив их имена, разделенные пробелами, к команде выше.<br />
<br />
=== Установка загрузчика ===<br />
[[GRUB2 (Русский)|Grub]]<br />
<br />
* Для BIOS<br />
<br />
# arch-chroot /mnt pacman -S grub-bios<br />
<br />
* Для EFI (иногда вместо него нужно установить {{ic|grub-efi-i386}} )<br />
<br />
# arch-chroot /mnt pacman -S grub-efi-x86_64<br />
<br />
* Устанавливайте GRUB после выполнения chroot (обратитесь к разделу [[#Настройка системы|Настройка системы]] ниже).<br />
<br />
[[Syslinux|Syslinux]]<br />
<br />
# arch-chroot /mnt pacman -S syslinux<br />
<br />
=== Настройка системы ===<br />
Создайте [[fstab (Русский)|fstab]] следующей командой. (Если вы хотите использовать UUID или метки, используйте опции {{ic|-U}} или {{ic|-L}} соответственно.)<br />
# genfstab -p /mnt >> /mnt/etc/fstab<br />
Далее перейдите в свою установленную систему с помощью [[Change Root|chroot]].<br />
# arch-chroot /mnt<br />
<br />
* Укажите имя хоста в файле {{ic|/etc/hostname}}.<br />
* Создайте ссылку {{ic|/etc/localtime}} на {{ic|/usr/share/zoneinfo/Zone/SubZone}}. Где {{ic|Zone}} и {{ic|Subzone}} замените на то, что вам нужно. Например<br />
<br />
# ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime<br />
<br />
* Установите используемый в системе язык, настроив [[Locale (Русский)#Установка системной локали|locale]] в {{ic|/etc/locale.conf}}.<br />
<br />
* Раскомментируйте нужные [https://wiki.archlinux.org/index.php/Locale локали] в {{ic|/etc/locale.gen}} и сгенерируйте {{ic|locale-gen}}.<br />
* Настройте {{ic|/etc/mkinitcpio.conf}} как вам нужно (см. [[mkinitcpio (Русский)|mkinitcpio]]) и создайте ramdisk:<br />
<br />
# mkinitcpio -p linux<br />
<br />
* Настройте загрузчик.<br />
<br />
* Для syslinux отредактируйте {{ic|/boot/syslinux/syslinux.cfg}} и укажите нужный {{ic|/boot}} раздел. Далее введите следующую команду чтобы установить (-i), добавить загрузочный флаг (-a) и установить mbr (-m).<br />
<br />
# /usr/sbin/syslinux-install_update -iam<br />
<br />
* Для установки GRUB прочитайте статью [[GRUB2 (Русский)|GRUB]]<br />
* Установка GRUB на жесткий диск, содержащий /boot раздел<br />
<br />
# grub-install /dev/sda<br />
<br />
* Сгенерируйте конфигурационный файл {{ic|grub.cfg}}:<br />
<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
* Установите root пароль с помощью команды {{ic|passwd}}.<br />
<br />
=== Размонтирование разделов ===<br />
Если вы все еще в окружении chroot, введите {{ic|exit}} или нажмите {{ic|Ctrl+D}}.<br />
В шаге 3 мы смонтировали разделы в {{ic|/mnt}}. Теперь отмонтируем их. <br />
# umount /mnt/{boot,home,}<br />
<br />
== После установки ==<br />
<br />
=== Управление пользователями ===<br />
Добавьте добавьте необходимые вам аккаунты пользователей, как это описано на странице [[Users and Groups#User management|User management]]. Считается плохим выбором использование аккаунта суперпользователя для регулярной работы с системой, или подключения к ней через сервер [[SSH]]. Используйте аккаунт суперпользователя только для решения задач администрирования системы.<br />
<br />
=== Управление пакетами ===<br />
Смотрите статьи [[pacman (Русский)]] и [[FAQ#Package Management|FAQ: Package Management]] для получения ответов на вопросы, касающиеся установки, обновления и и управления пакетами.<br />
<br />
=== Управление сервисами ===<br />
<br />
Arch Linux использует [[systemd (Русский)]] в качестве системы инициализации и менеджера служб (сервисов) для Linux. Для обслуживания установленного Arch Linux было бы неплохо изучить основы данной системы. Взаимодействие с systemd происходит посредством команды {{ic|systemctl}}. Обратитесь к разделу [[systemd (Русский)#Основы использования systemctl]] для получения более подробной информации.<br />
<br />
=== Sound ===<br />
<br />
[[ALSA]] usually works out-of-the-box. It just needs to be unmuted. Install {{Pkg|alsa-utils}} (which contains {{ic|alsamixer}}) and follow [[Advanced Linux Sound Architecture#Unmuting the channels|these]] instructions.<br />
<br />
ALSA is included with the kernel and it is recommended. If it does not work, [[OSS]] is a viable alternative. If you have advanced audio requirements, take a look at [[Sound system]] for an overview of various articles.<br />
<br />
=== Video driver ===<br />
<br />
The Linux kernel includes open-source video drivers and support for hardware accelerated framebuffers. However, userland support is required for OpenGL and 2D acceleration in X11.<br />
<br />
If you don't know which video chipset is available on your machine, run:<br />
<br />
$ lspci | grep VGA<br />
<br />
For a complete list of open-source video drivers, search the package database:<br />
<br />
$ pacman -Ss xf86-video | less<br />
<br />
The {{ic|vesa}} driver is a generic mode-setting driver that will work with almost every GPU, but will not provide any 2D or 3D acceleration. If a better driver cannot be found or fails to load, Xorg will fall back to vesa. To install it:<br />
<br />
# pacman -S xf86-video-vesa<br />
<br />
In order for video acceleration to work, and often to expose all the modes that the GPU can set, a proper video driver is required:<br />
<br />
{| class="wikitable" style="text-align:center"<br />
|-<br />
! Brand !! Type !! Driver !! [[Multilib]] Package<br><span style="font-weight: normal;">(for 32-bit applications on Arch x86_64)</span> !! Documentation<br />
|-<br />
| rowspan="2" bgcolor=#f7e3e3| '''<span style="color: #e62c2c;">AMD/ATI</span>'''<br />
| Open source || {{Pkg|xf86-video-ati}} || {{Pkg|lib32-ati-dri}} || [[ATI]]<br />
|-<br />
| Proprietary || {{Pkg|catalyst-dkms}} || {{Pkg|lib32-catalyst-utils}} || [[AMD Catalyst]]<br />
|-<br />
| bgcolor=#e3ecf7| '''<span style="color: #2a6dc8;">Intel</span>'''<br />
| Open source<br />
| {{Pkg|xf86-video-intel}} || {{Pkg|lib32-intel-dri}} || [[Intel Graphics]]<br />
|-<br />
| rowspan="4" bgcolor=#e3f7e6| '''<span style="color: #409044;">Nvidia</span>'''<br />
| rowspan="2"| Open source<br />
| {{Pkg|xf86-video-nouveau}} || {{Pkg|lib32-nouveau-dri}} || [[Nouveau]]<br />
|-<br />
| {{Pkg|xf86-video-nv}} || – || (legacy driver)<br />
|-<br />
| rowspan="2"| Proprietary || {{Pkg|nvidia}} || {{Pkg|lib32-nvidia-utils}} || rowspan="2"| [[NVIDIA]]<br />
|-<br />
| {{Pkg|nvidia-304xx}} || {{Pkg|lib32-nvidia-304xx-utils}}<br />
|}<br />
<br />
=== Display server ===<br />
<br />
The X Window System (commonly X11, or X) is a networking and display protocol which provides windowing on bitmap displays. It is the de-facto standard for implementating graphical user interfaces. See the [[Xorg]] article for details.<br />
<br />
[[Wayland]] is a new display server protocol and the Weston reference implementation is available. There is very little support for it from applications at this early stage of development.<br />
<br />
=== Fonts ===<br />
<br />
You may wish to install a set of TrueType fonts, as only unscalable bitmap fonts are included by default. DejaVu is a set of high quality, general-purpose fonts with good [[Wikipedia:Unicode|Unicode]] coverage:<br />
<br />
# pacman -S ttf-dejavu<br />
<br />
Refer to [[Font Configuration]] for how to configure font rendering and [[Fonts]] for font suggestions and installation instructions.</div>Nobushttps://wiki.archlinux.org/index.php?title=Installation_guide_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=251806Installation guide (Русский)2013-03-24T10:59:02Z<p>Nobus: /* Service management */</p>
<hr />
<div>[[Category:About Arch (Русский)]]<br />
[[Category:Getting and installing Arch (Русский)]]<br />
[[En:Installation_Guide]]<br />
[[de:Arch Install Scripts]]<br />
[[fr:Arch_install_scripts]]<br />
[[it:Installation Guide]]<br />
[[uk:Installation Guide]]<br />
[[zh-CN:Installation Guide]]<br />
[[zh-TW:Installation Guide]]<br />
Этот документ проведет вас через процесс установки [[Arch Linux (Русский)|Arch Linux]] c использованием [https://github.com/falconindy/arch-install-scripts Arch Install Scripts]. Рекомендуется перед установкой ознакомиться с [[FAQ (Русский)]]._<br />
Поддерживаемая сообществом [[Main Page (Русский)|вики Arch'а]] является превосходным ресурсом, к которому следует обращаться в первую очередь при возникновении каких-либо проблем. Если ответ на интересующий вас вопрос в другом месте не найден, доступны [[Wikipedia:IRC|IRC]]-канал (irc://irc.mibbit.net/#archlinux-ru) и [http://archlinux.org.ru/forum/ форумы]. Также обращайтесь к страницам руководств ({{ic|man}}) тех команд, с которыми вы незнакомы; обычно они вызываются при помощи {{ic|man ''command''}} (где ''command'' - имя интересующей вас команды).<br />
<br />
{{Tip|Новички могут обратиться к [[Beginners' Guide (Русский)|подробному руководству]] по установке.}}<br />
<br />
== Получение установочного образа ==<br />
Загрузите новый установочный образ диска Arch Linux с [https://www.archlinux.org/download/ соответствующей страницы] на главном сайте дистрибутива.<br />
* Предлагается единый установочный образ, с помощью которого вы сможете загрузиться как на i686, так и на x86_64 системах, чтобы провести установку по сети. Диск с репозиторием [core] для оффлайн-установки больше не доступен и не поддерживается.<br />
* Установочный образ подписан цифровой подписью, и вы можете проверить ее перед установкой командой {{bc|pacman-key -v <iso-file>.sig}}<br />
* Образ может быть записан на CD, смонтирован как iso-файл или записан на usb устройство (флешку) с помощью команды {{ic|dd}}. Он предназначен только для установки системы - обновление уже установленной системы производится стандартным способом, командой {{ic|pacman -Syu}}.<br />
<br />
== Установка ==<br />
<br />
=== Раскладка клавиатуры ===<br />
Для большинства стран и видов клавиатур уже доступны соответствующие раскладки, нужная из которых может быть выбрана командой, например {{ic|loadkeys ru}}. Другие раскладки можно найти в {{ic|/usr/share/kbd/keymaps/}} (можно не указывать полный путь и расширение файла с раскладкой при использовании команды loadkeys).<br />
<br />
=== Создание разделов ===<br />
Для подробностей обратитесь к разделу [[Partitioning]].<br />
<br />
При необходимости не забудьте создать [[lvm|LVM]], [[Dm-crypt_with_LUKS|LUKS]] или [[RAID|RAID]] устройства.<br />
<br />
=== Форматирование разделов ===<br />
Более подробно вы можете прочитать [[Format_a_device#Step_2:_create_the_new_file_system|здесь]].<br />
<br />
Если вы используете (U)EFI, вам, скорее всего, понадобится отдельный раздел для размещения служебного раздела UEFI. Подробнее можно прочитать [[Unified_Extensible_Firmware_Interface (Русский)#Создание UEFI раздела в Linux|здесь]].<br />
<br />
=== Монтирование разделов ===<br />
Как минимум, вы должны смонтировать корневой раздел в {{ic|/mnt}}. Например:<br />
# mount /dev/sda2 /mnt<br />
Если вы хотите, чтобы еще какие-либо разделы были автоматически учтены скриптом установки {{ic|genfstab}}, необходимо создать соответствующие директории внутри /mnt и смонтировать туда нужные разделы. Например для отдельных загрузочного и домашнего разделов:<br />
# mkdir /mnt/boot && mount /dev/sda1 /mnt/boot<br />
# mkdir /mnt/home && mount /dev/sda3 /mnt/home<br />
<br />
=== Подключение к интернету ===<br />
Сервис DHCP уже доступен для всех подходящих устройств. Для проводного подключения просто запустите {{ic|dhcpcd}}. Если вам необходимо установить статический IP или вы хотите использовать средства настройки наподобие [[Netcfg (Русский)#Настройка|Netcfg]], вам сначала надо остановить данный сервис: {{ic|systemctl stop dhcpcd.service}}. Для получения дополнительной информации обратитесь к [[Configuring Network (Русский)|руководству по настройке сети]].<br />
<br />
==== Беспроводное соединение ====<br />
Если у вас беспроводное соединение, запустите {{ic|wifi-menu}} для его настройки. Смотрите разделы [[Wireless Setup (Русский)|Wireless Setup]] и [[Netcfg (Русский)#Настройка|Netcfg]], чтобы определить, какие дополнительные драйверы требуются для вашего устройства.<br />
<br />
=== Установка базовой системы ===<br />
Перед началом установки вы, возможно, захотите отредактировать {{ic|/etc/pacman.d/mirrorlist}} для выбора подходящего зеркала. Это стоит сделать, поскольку копия данного файла будет также установлена в вашу систему с помощью {{ic|pacstrap}}.<br />
<br />
Скрипт [https://github.com/falconindy/arch-install-scripts/blob/master/pacstrap.in pacstrap] установит базовую систему. Группа пакетов ''base-devel'' должна также быть установлена, если вы собираетесь компилировать программы из [[Arch_User_Repository_(Русский)|AUR]] или с использованием [[Arch_Build_System_(Русский)|ABS]].<br />
<br />
# pacstrap /mnt base base-devel<br />
<br />
Также можно установить и другие пакеты, добавив их имена, разделенные пробелами, к команде выше.<br />
<br />
=== Установка загрузчика ===<br />
[[GRUB2 (Русский)|Grub]]<br />
<br />
* Для BIOS<br />
<br />
# arch-chroot /mnt pacman -S grub-bios<br />
<br />
* Для EFI (иногда вместо него нужно установить {{ic|grub-efi-i386}} )<br />
<br />
# arch-chroot /mnt pacman -S grub-efi-x86_64<br />
<br />
* Устанавливайте GRUB после выполнения chroot (обратитесь к разделу [[#Настройка системы|Настройка системы]] ниже).<br />
<br />
[[Syslinux|Syslinux]]<br />
<br />
# arch-chroot /mnt pacman -S syslinux<br />
<br />
=== Настройка системы ===<br />
Создайте [[fstab (Русский)|fstab]] следующей командой. (Если вы хотите использовать UUID или метки, используйте опции {{ic|-U}} или {{ic|-L}} соответственно.)<br />
# genfstab -p /mnt >> /mnt/etc/fstab<br />
Далее перейдите в свою установленную систему с помощью [[Change Root|chroot]].<br />
# arch-chroot /mnt<br />
<br />
* Укажите имя хоста в файле {{ic|/etc/hostname}}.<br />
* Создайте ссылку {{ic|/etc/localtime}} на {{ic|/usr/share/zoneinfo/Zone/SubZone}}. Где {{ic|Zone}} и {{ic|Subzone}} замените на то, что вам нужно. Например<br />
<br />
# ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime<br />
<br />
* Установите используемый в системе язык, настроив [[Locale (Русский)#Установка системной локали|locale]] в {{ic|/etc/locale.conf}}.<br />
<br />
* Раскомментируйте нужные [https://wiki.archlinux.org/index.php/Locale локали] в {{ic|/etc/locale.gen}} и сгенерируйте {{ic|locale-gen}}.<br />
* Настройте {{ic|/etc/mkinitcpio.conf}} как вам нужно (см. [[mkinitcpio (Русский)|mkinitcpio]]) и создайте ramdisk:<br />
<br />
# mkinitcpio -p linux<br />
<br />
* Настройте загрузчик.<br />
<br />
* Для syslinux отредактируйте {{ic|/boot/syslinux/syslinux.cfg}} и укажите нужный {{ic|/boot}} раздел. Далее введите следующую команду чтобы установить (-i), добавить загрузочный флаг (-a) и установить mbr (-m).<br />
<br />
# /usr/sbin/syslinux-install_update -iam<br />
<br />
* Для установки GRUB прочитайте статью [[GRUB2 (Русский)|GRUB]]<br />
* Установка GRUB на жесткий диск, содержащий /boot раздел<br />
<br />
# grub-install /dev/sda<br />
<br />
* Сгенерируйте конфигурационный файл {{ic|grub.cfg}}:<br />
<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
* Установите root пароль с помощью команды {{ic|passwd}}.<br />
<br />
=== Размонтирование разделов ===<br />
Если вы все еще в окружении chroot, введите {{ic|exit}} или нажмите {{ic|Ctrl+D}}.<br />
В шаге 3 мы смонтировали разделы в {{ic|/mnt}}. Теперь отмонтируем их. <br />
# umount /mnt/{boot,home,}<br />
<br />
== После установки ==<br />
<br />
=== Управление пользователями ===<br />
Добавьте добавьте необходимые вам аккаунты пользователей, как это описано на странице [[Users and Groups#User management|User management]]. Считается плохим выбором использование аккаунта суперпользователя для регулярной работы с системой, или подключения к ней через сервер [[SSH]]. Используйте аккаунт суперпользователя только для решения задач администрирования системы.<br />
<br />
=== Управление пакетами ===<br />
Смотрите статьи [[pacman (Русский)]] и [[FAQ#Package Management]] для получения ответов на вопросы, касающиеся установки, обновления и и управления пакетами.<br />
<br />
=== Управление сервисами ===<br />
<br />
Arch Linux использует [[systemd (Русский)]] в качестве системы инициализации и менеджера служб (сервисов) для Linux. Для обслуживания установленного Arch Linux было бы неплохо изучить основы данной системы. Взаимодействие с systemd происходит посредством команды {{ic|systemctl}}. Обратитесь к разделу [[systemd (Русский)#Основы использования systemctl]] для получения более подробной информации.<br />
<br />
=== Sound ===<br />
<br />
[[ALSA]] usually works out-of-the-box. It just needs to be unmuted. Install {{Pkg|alsa-utils}} (which contains {{ic|alsamixer}}) and follow [[Advanced Linux Sound Architecture#Unmuting the channels|these]] instructions.<br />
<br />
ALSA is included with the kernel and it is recommended. If it does not work, [[OSS]] is a viable alternative. If you have advanced audio requirements, take a look at [[Sound system]] for an overview of various articles.<br />
<br />
=== Video driver ===<br />
<br />
The Linux kernel includes open-source video drivers and support for hardware accelerated framebuffers. However, userland support is required for OpenGL and 2D acceleration in X11.<br />
<br />
If you don't know which video chipset is available on your machine, run:<br />
<br />
$ lspci | grep VGA<br />
<br />
For a complete list of open-source video drivers, search the package database:<br />
<br />
$ pacman -Ss xf86-video | less<br />
<br />
The {{ic|vesa}} driver is a generic mode-setting driver that will work with almost every GPU, but will not provide any 2D or 3D acceleration. If a better driver cannot be found or fails to load, Xorg will fall back to vesa. To install it:<br />
<br />
# pacman -S xf86-video-vesa<br />
<br />
In order for video acceleration to work, and often to expose all the modes that the GPU can set, a proper video driver is required:<br />
<br />
{| class="wikitable" style="text-align:center"<br />
|-<br />
! Brand !! Type !! Driver !! [[Multilib]] Package<br><span style="font-weight: normal;">(for 32-bit applications on Arch x86_64)</span> !! Documentation<br />
|-<br />
| rowspan="2" bgcolor=#f7e3e3| '''<span style="color: #e62c2c;">AMD/ATI</span>'''<br />
| Open source || {{Pkg|xf86-video-ati}} || {{Pkg|lib32-ati-dri}} || [[ATI]]<br />
|-<br />
| Proprietary || {{Pkg|catalyst-dkms}} || {{Pkg|lib32-catalyst-utils}} || [[AMD Catalyst]]<br />
|-<br />
| bgcolor=#e3ecf7| '''<span style="color: #2a6dc8;">Intel</span>'''<br />
| Open source<br />
| {{Pkg|xf86-video-intel}} || {{Pkg|lib32-intel-dri}} || [[Intel Graphics]]<br />
|-<br />
| rowspan="4" bgcolor=#e3f7e6| '''<span style="color: #409044;">Nvidia</span>'''<br />
| rowspan="2"| Open source<br />
| {{Pkg|xf86-video-nouveau}} || {{Pkg|lib32-nouveau-dri}} || [[Nouveau]]<br />
|-<br />
| {{Pkg|xf86-video-nv}} || – || (legacy driver)<br />
|-<br />
| rowspan="2"| Proprietary || {{Pkg|nvidia}} || {{Pkg|lib32-nvidia-utils}} || rowspan="2"| [[NVIDIA]]<br />
|-<br />
| {{Pkg|nvidia-304xx}} || {{Pkg|lib32-nvidia-304xx-utils}}<br />
|}<br />
<br />
=== Display server ===<br />
<br />
The X Window System (commonly X11, or X) is a networking and display protocol which provides windowing on bitmap displays. It is the de-facto standard for implementating graphical user interfaces. See the [[Xorg]] article for details.<br />
<br />
[[Wayland]] is a new display server protocol and the Weston reference implementation is available. There is very little support for it from applications at this early stage of development.<br />
<br />
=== Fonts ===<br />
<br />
You may wish to install a set of TrueType fonts, as only unscalable bitmap fonts are included by default. DejaVu is a set of high quality, general-purpose fonts with good [[Wikipedia:Unicode|Unicode]] coverage:<br />
<br />
# pacman -S ttf-dejavu<br />
<br />
Refer to [[Font Configuration]] for how to configure font rendering and [[Fonts]] for font suggestions and installation instructions.</div>Nobushttps://wiki.archlinux.org/index.php?title=Installation_guide_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=251805Installation guide (Русский)2013-03-24T10:53:45Z<p>Nobus: /* Управление пакетами */</p>
<hr />
<div>[[Category:About Arch (Русский)]]<br />
[[Category:Getting and installing Arch (Русский)]]<br />
[[En:Installation_Guide]]<br />
[[de:Arch Install Scripts]]<br />
[[fr:Arch_install_scripts]]<br />
[[it:Installation Guide]]<br />
[[uk:Installation Guide]]<br />
[[zh-CN:Installation Guide]]<br />
[[zh-TW:Installation Guide]]<br />
Этот документ проведет вас через процесс установки [[Arch Linux (Русский)|Arch Linux]] c использованием [https://github.com/falconindy/arch-install-scripts Arch Install Scripts]. Рекомендуется перед установкой ознакомиться с [[FAQ (Русский)]]._<br />
Поддерживаемая сообществом [[Main Page (Русский)|вики Arch'а]] является превосходным ресурсом, к которому следует обращаться в первую очередь при возникновении каких-либо проблем. Если ответ на интересующий вас вопрос в другом месте не найден, доступны [[Wikipedia:IRC|IRC]]-канал (irc://irc.mibbit.net/#archlinux-ru) и [http://archlinux.org.ru/forum/ форумы]. Также обращайтесь к страницам руководств ({{ic|man}}) тех команд, с которыми вы незнакомы; обычно они вызываются при помощи {{ic|man ''command''}} (где ''command'' - имя интересующей вас команды).<br />
<br />
{{Tip|Новички могут обратиться к [[Beginners' Guide (Русский)|подробному руководству]] по установке.}}<br />
<br />
== Получение установочного образа ==<br />
Загрузите новый установочный образ диска Arch Linux с [https://www.archlinux.org/download/ соответствующей страницы] на главном сайте дистрибутива.<br />
* Предлагается единый установочный образ, с помощью которого вы сможете загрузиться как на i686, так и на x86_64 системах, чтобы провести установку по сети. Диск с репозиторием [core] для оффлайн-установки больше не доступен и не поддерживается.<br />
* Установочный образ подписан цифровой подписью, и вы можете проверить ее перед установкой командой {{bc|pacman-key -v <iso-file>.sig}}<br />
* Образ может быть записан на CD, смонтирован как iso-файл или записан на usb устройство (флешку) с помощью команды {{ic|dd}}. Он предназначен только для установки системы - обновление уже установленной системы производится стандартным способом, командой {{ic|pacman -Syu}}.<br />
<br />
== Установка ==<br />
<br />
=== Раскладка клавиатуры ===<br />
Для большинства стран и видов клавиатур уже доступны соответствующие раскладки, нужная из которых может быть выбрана командой, например {{ic|loadkeys ru}}. Другие раскладки можно найти в {{ic|/usr/share/kbd/keymaps/}} (можно не указывать полный путь и расширение файла с раскладкой при использовании команды loadkeys).<br />
<br />
=== Создание разделов ===<br />
Для подробностей обратитесь к разделу [[Partitioning]].<br />
<br />
При необходимости не забудьте создать [[lvm|LVM]], [[Dm-crypt_with_LUKS|LUKS]] или [[RAID|RAID]] устройства.<br />
<br />
=== Форматирование разделов ===<br />
Более подробно вы можете прочитать [[Format_a_device#Step_2:_create_the_new_file_system|здесь]].<br />
<br />
Если вы используете (U)EFI, вам, скорее всего, понадобится отдельный раздел для размещения служебного раздела UEFI. Подробнее можно прочитать [[Unified_Extensible_Firmware_Interface (Русский)#Создание UEFI раздела в Linux|здесь]].<br />
<br />
=== Монтирование разделов ===<br />
Как минимум, вы должны смонтировать корневой раздел в {{ic|/mnt}}. Например:<br />
# mount /dev/sda2 /mnt<br />
Если вы хотите, чтобы еще какие-либо разделы были автоматически учтены скриптом установки {{ic|genfstab}}, необходимо создать соответствующие директории внутри /mnt и смонтировать туда нужные разделы. Например для отдельных загрузочного и домашнего разделов:<br />
# mkdir /mnt/boot && mount /dev/sda1 /mnt/boot<br />
# mkdir /mnt/home && mount /dev/sda3 /mnt/home<br />
<br />
=== Подключение к интернету ===<br />
Сервис DHCP уже доступен для всех подходящих устройств. Для проводного подключения просто запустите {{ic|dhcpcd}}. Если вам необходимо установить статический IP или вы хотите использовать средства настройки наподобие [[Netcfg (Русский)#Настройка|Netcfg]], вам сначала надо остановить данный сервис: {{ic|systemctl stop dhcpcd.service}}. Для получения дополнительной информации обратитесь к [[Configuring Network (Русский)|руководству по настройке сети]].<br />
<br />
==== Беспроводное соединение ====<br />
Если у вас беспроводное соединение, запустите {{ic|wifi-menu}} для его настройки. Смотрите разделы [[Wireless Setup (Русский)|Wireless Setup]] и [[Netcfg (Русский)#Настройка|Netcfg]], чтобы определить, какие дополнительные драйверы требуются для вашего устройства.<br />
<br />
=== Установка базовой системы ===<br />
Перед началом установки вы, возможно, захотите отредактировать {{ic|/etc/pacman.d/mirrorlist}} для выбора подходящего зеркала. Это стоит сделать, поскольку копия данного файла будет также установлена в вашу систему с помощью {{ic|pacstrap}}.<br />
<br />
Скрипт [https://github.com/falconindy/arch-install-scripts/blob/master/pacstrap.in pacstrap] установит базовую систему. Группа пакетов ''base-devel'' должна также быть установлена, если вы собираетесь компилировать программы из [[Arch_User_Repository_(Русский)|AUR]] или с использованием [[Arch_Build_System_(Русский)|ABS]].<br />
<br />
# pacstrap /mnt base base-devel<br />
<br />
Также можно установить и другие пакеты, добавив их имена, разделенные пробелами, к команде выше.<br />
<br />
=== Установка загрузчика ===<br />
[[GRUB2 (Русский)|Grub]]<br />
<br />
* Для BIOS<br />
<br />
# arch-chroot /mnt pacman -S grub-bios<br />
<br />
* Для EFI (иногда вместо него нужно установить {{ic|grub-efi-i386}} )<br />
<br />
# arch-chroot /mnt pacman -S grub-efi-x86_64<br />
<br />
* Устанавливайте GRUB после выполнения chroot (обратитесь к разделу [[#Настройка системы|Настройка системы]] ниже).<br />
<br />
[[Syslinux|Syslinux]]<br />
<br />
# arch-chroot /mnt pacman -S syslinux<br />
<br />
=== Настройка системы ===<br />
Создайте [[fstab (Русский)|fstab]] следующей командой. (Если вы хотите использовать UUID или метки, используйте опции {{ic|-U}} или {{ic|-L}} соответственно.)<br />
# genfstab -p /mnt >> /mnt/etc/fstab<br />
Далее перейдите в свою установленную систему с помощью [[Change Root|chroot]].<br />
# arch-chroot /mnt<br />
<br />
* Укажите имя хоста в файле {{ic|/etc/hostname}}.<br />
* Создайте ссылку {{ic|/etc/localtime}} на {{ic|/usr/share/zoneinfo/Zone/SubZone}}. Где {{ic|Zone}} и {{ic|Subzone}} замените на то, что вам нужно. Например<br />
<br />
# ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime<br />
<br />
* Установите используемый в системе язык, настроив [[Locale (Русский)#Установка системной локали|locale]] в {{ic|/etc/locale.conf}}.<br />
<br />
* Раскомментируйте нужные [https://wiki.archlinux.org/index.php/Locale локали] в {{ic|/etc/locale.gen}} и сгенерируйте {{ic|locale-gen}}.<br />
* Настройте {{ic|/etc/mkinitcpio.conf}} как вам нужно (см. [[mkinitcpio (Русский)|mkinitcpio]]) и создайте ramdisk:<br />
<br />
# mkinitcpio -p linux<br />
<br />
* Настройте загрузчик.<br />
<br />
* Для syslinux отредактируйте {{ic|/boot/syslinux/syslinux.cfg}} и укажите нужный {{ic|/boot}} раздел. Далее введите следующую команду чтобы установить (-i), добавить загрузочный флаг (-a) и установить mbr (-m).<br />
<br />
# /usr/sbin/syslinux-install_update -iam<br />
<br />
* Для установки GRUB прочитайте статью [[GRUB2 (Русский)|GRUB]]<br />
* Установка GRUB на жесткий диск, содержащий /boot раздел<br />
<br />
# grub-install /dev/sda<br />
<br />
* Сгенерируйте конфигурационный файл {{ic|grub.cfg}}:<br />
<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
* Установите root пароль с помощью команды {{ic|passwd}}.<br />
<br />
=== Размонтирование разделов ===<br />
Если вы все еще в окружении chroot, введите {{ic|exit}} или нажмите {{ic|Ctrl+D}}.<br />
В шаге 3 мы смонтировали разделы в {{ic|/mnt}}. Теперь отмонтируем их. <br />
# umount /mnt/{boot,home,}<br />
<br />
== После установки ==<br />
<br />
=== Управление пользователями ===<br />
Добавьте добавьте необходимые вам аккаунты пользователей, как это описано на странице [[Users and Groups#User management|User management]]. Считается плохим выбором использование аккаунта суперпользователя для регулярной работы с системой, или подключения к ней через сервер [[SSH]]. Используйте аккаунт суперпользователя только для решения задач администрирования системы.<br />
<br />
=== Управление пакетами ===<br />
Смотрите статьи [[pacman (Русский)]] и [[FAQ#Package Management]] для получения ответов на вопросы, касающиеся установки, обновления и и управления пакетами.<br />
<br />
=== Service management ===<br />
<br />
Arch Linux uses [[systemd]] as init, which is a system and service manager for Linux. For maintaining your Arch Linux installation, it is a good idea to learn the basics about it. Interaction with systemd is done through the {{ic|systemctl}} command. Read [[systemd#Basic systemctl usage]] for more information.<br />
<br />
=== Sound ===<br />
<br />
[[ALSA]] usually works out-of-the-box. It just needs to be unmuted. Install {{Pkg|alsa-utils}} (which contains {{ic|alsamixer}}) and follow [[Advanced Linux Sound Architecture#Unmuting the channels|these]] instructions.<br />
<br />
ALSA is included with the kernel and it is recommended. If it does not work, [[OSS]] is a viable alternative. If you have advanced audio requirements, take a look at [[Sound system]] for an overview of various articles.<br />
<br />
=== Video driver ===<br />
<br />
The Linux kernel includes open-source video drivers and support for hardware accelerated framebuffers. However, userland support is required for OpenGL and 2D acceleration in X11.<br />
<br />
If you don't know which video chipset is available on your machine, run:<br />
<br />
$ lspci | grep VGA<br />
<br />
For a complete list of open-source video drivers, search the package database:<br />
<br />
$ pacman -Ss xf86-video | less<br />
<br />
The {{ic|vesa}} driver is a generic mode-setting driver that will work with almost every GPU, but will not provide any 2D or 3D acceleration. If a better driver cannot be found or fails to load, Xorg will fall back to vesa. To install it:<br />
<br />
# pacman -S xf86-video-vesa<br />
<br />
In order for video acceleration to work, and often to expose all the modes that the GPU can set, a proper video driver is required:<br />
<br />
{| class="wikitable" style="text-align:center"<br />
|-<br />
! Brand !! Type !! Driver !! [[Multilib]] Package<br><span style="font-weight: normal;">(for 32-bit applications on Arch x86_64)</span> !! Documentation<br />
|-<br />
| rowspan="2" bgcolor=#f7e3e3| '''<span style="color: #e62c2c;">AMD/ATI</span>'''<br />
| Open source || {{Pkg|xf86-video-ati}} || {{Pkg|lib32-ati-dri}} || [[ATI]]<br />
|-<br />
| Proprietary || {{Pkg|catalyst-dkms}} || {{Pkg|lib32-catalyst-utils}} || [[AMD Catalyst]]<br />
|-<br />
| bgcolor=#e3ecf7| '''<span style="color: #2a6dc8;">Intel</span>'''<br />
| Open source<br />
| {{Pkg|xf86-video-intel}} || {{Pkg|lib32-intel-dri}} || [[Intel Graphics]]<br />
|-<br />
| rowspan="4" bgcolor=#e3f7e6| '''<span style="color: #409044;">Nvidia</span>'''<br />
| rowspan="2"| Open source<br />
| {{Pkg|xf86-video-nouveau}} || {{Pkg|lib32-nouveau-dri}} || [[Nouveau]]<br />
|-<br />
| {{Pkg|xf86-video-nv}} || – || (legacy driver)<br />
|-<br />
| rowspan="2"| Proprietary || {{Pkg|nvidia}} || {{Pkg|lib32-nvidia-utils}} || rowspan="2"| [[NVIDIA]]<br />
|-<br />
| {{Pkg|nvidia-304xx}} || {{Pkg|lib32-nvidia-304xx-utils}}<br />
|}<br />
<br />
=== Display server ===<br />
<br />
The X Window System (commonly X11, or X) is a networking and display protocol which provides windowing on bitmap displays. It is the de-facto standard for implementating graphical user interfaces. See the [[Xorg]] article for details.<br />
<br />
[[Wayland]] is a new display server protocol and the Weston reference implementation is available. There is very little support for it from applications at this early stage of development.<br />
<br />
=== Fonts ===<br />
<br />
You may wish to install a set of TrueType fonts, as only unscalable bitmap fonts are included by default. DejaVu is a set of high quality, general-purpose fonts with good [[Wikipedia:Unicode|Unicode]] coverage:<br />
<br />
# pacman -S ttf-dejavu<br />
<br />
Refer to [[Font Configuration]] for how to configure font rendering and [[Fonts]] for font suggestions and installation instructions.</div>Nobushttps://wiki.archlinux.org/index.php?title=Installation_guide_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=251804Installation guide (Русский)2013-03-24T10:53:34Z<p>Nobus: /* Package management */</p>
<hr />
<div>[[Category:About Arch (Русский)]]<br />
[[Category:Getting and installing Arch (Русский)]]<br />
[[En:Installation_Guide]]<br />
[[de:Arch Install Scripts]]<br />
[[fr:Arch_install_scripts]]<br />
[[it:Installation Guide]]<br />
[[uk:Installation Guide]]<br />
[[zh-CN:Installation Guide]]<br />
[[zh-TW:Installation Guide]]<br />
Этот документ проведет вас через процесс установки [[Arch Linux (Русский)|Arch Linux]] c использованием [https://github.com/falconindy/arch-install-scripts Arch Install Scripts]. Рекомендуется перед установкой ознакомиться с [[FAQ (Русский)]]._<br />
Поддерживаемая сообществом [[Main Page (Русский)|вики Arch'а]] является превосходным ресурсом, к которому следует обращаться в первую очередь при возникновении каких-либо проблем. Если ответ на интересующий вас вопрос в другом месте не найден, доступны [[Wikipedia:IRC|IRC]]-канал (irc://irc.mibbit.net/#archlinux-ru) и [http://archlinux.org.ru/forum/ форумы]. Также обращайтесь к страницам руководств ({{ic|man}}) тех команд, с которыми вы незнакомы; обычно они вызываются при помощи {{ic|man ''command''}} (где ''command'' - имя интересующей вас команды).<br />
<br />
{{Tip|Новички могут обратиться к [[Beginners' Guide (Русский)|подробному руководству]] по установке.}}<br />
<br />
== Получение установочного образа ==<br />
Загрузите новый установочный образ диска Arch Linux с [https://www.archlinux.org/download/ соответствующей страницы] на главном сайте дистрибутива.<br />
* Предлагается единый установочный образ, с помощью которого вы сможете загрузиться как на i686, так и на x86_64 системах, чтобы провести установку по сети. Диск с репозиторием [core] для оффлайн-установки больше не доступен и не поддерживается.<br />
* Установочный образ подписан цифровой подписью, и вы можете проверить ее перед установкой командой {{bc|pacman-key -v <iso-file>.sig}}<br />
* Образ может быть записан на CD, смонтирован как iso-файл или записан на usb устройство (флешку) с помощью команды {{ic|dd}}. Он предназначен только для установки системы - обновление уже установленной системы производится стандартным способом, командой {{ic|pacman -Syu}}.<br />
<br />
== Установка ==<br />
<br />
=== Раскладка клавиатуры ===<br />
Для большинства стран и видов клавиатур уже доступны соответствующие раскладки, нужная из которых может быть выбрана командой, например {{ic|loadkeys ru}}. Другие раскладки можно найти в {{ic|/usr/share/kbd/keymaps/}} (можно не указывать полный путь и расширение файла с раскладкой при использовании команды loadkeys).<br />
<br />
=== Создание разделов ===<br />
Для подробностей обратитесь к разделу [[Partitioning]].<br />
<br />
При необходимости не забудьте создать [[lvm|LVM]], [[Dm-crypt_with_LUKS|LUKS]] или [[RAID|RAID]] устройства.<br />
<br />
=== Форматирование разделов ===<br />
Более подробно вы можете прочитать [[Format_a_device#Step_2:_create_the_new_file_system|здесь]].<br />
<br />
Если вы используете (U)EFI, вам, скорее всего, понадобится отдельный раздел для размещения служебного раздела UEFI. Подробнее можно прочитать [[Unified_Extensible_Firmware_Interface (Русский)#Создание UEFI раздела в Linux|здесь]].<br />
<br />
=== Монтирование разделов ===<br />
Как минимум, вы должны смонтировать корневой раздел в {{ic|/mnt}}. Например:<br />
# mount /dev/sda2 /mnt<br />
Если вы хотите, чтобы еще какие-либо разделы были автоматически учтены скриптом установки {{ic|genfstab}}, необходимо создать соответствующие директории внутри /mnt и смонтировать туда нужные разделы. Например для отдельных загрузочного и домашнего разделов:<br />
# mkdir /mnt/boot && mount /dev/sda1 /mnt/boot<br />
# mkdir /mnt/home && mount /dev/sda3 /mnt/home<br />
<br />
=== Подключение к интернету ===<br />
Сервис DHCP уже доступен для всех подходящих устройств. Для проводного подключения просто запустите {{ic|dhcpcd}}. Если вам необходимо установить статический IP или вы хотите использовать средства настройки наподобие [[Netcfg (Русский)#Настройка|Netcfg]], вам сначала надо остановить данный сервис: {{ic|systemctl stop dhcpcd.service}}. Для получения дополнительной информации обратитесь к [[Configuring Network (Русский)|руководству по настройке сети]].<br />
<br />
==== Беспроводное соединение ====<br />
Если у вас беспроводное соединение, запустите {{ic|wifi-menu}} для его настройки. Смотрите разделы [[Wireless Setup (Русский)|Wireless Setup]] и [[Netcfg (Русский)#Настройка|Netcfg]], чтобы определить, какие дополнительные драйверы требуются для вашего устройства.<br />
<br />
=== Установка базовой системы ===<br />
Перед началом установки вы, возможно, захотите отредактировать {{ic|/etc/pacman.d/mirrorlist}} для выбора подходящего зеркала. Это стоит сделать, поскольку копия данного файла будет также установлена в вашу систему с помощью {{ic|pacstrap}}.<br />
<br />
Скрипт [https://github.com/falconindy/arch-install-scripts/blob/master/pacstrap.in pacstrap] установит базовую систему. Группа пакетов ''base-devel'' должна также быть установлена, если вы собираетесь компилировать программы из [[Arch_User_Repository_(Русский)|AUR]] или с использованием [[Arch_Build_System_(Русский)|ABS]].<br />
<br />
# pacstrap /mnt base base-devel<br />
<br />
Также можно установить и другие пакеты, добавив их имена, разделенные пробелами, к команде выше.<br />
<br />
=== Установка загрузчика ===<br />
[[GRUB2 (Русский)|Grub]]<br />
<br />
* Для BIOS<br />
<br />
# arch-chroot /mnt pacman -S grub-bios<br />
<br />
* Для EFI (иногда вместо него нужно установить {{ic|grub-efi-i386}} )<br />
<br />
# arch-chroot /mnt pacman -S grub-efi-x86_64<br />
<br />
* Устанавливайте GRUB после выполнения chroot (обратитесь к разделу [[#Настройка системы|Настройка системы]] ниже).<br />
<br />
[[Syslinux|Syslinux]]<br />
<br />
# arch-chroot /mnt pacman -S syslinux<br />
<br />
=== Настройка системы ===<br />
Создайте [[fstab (Русский)|fstab]] следующей командой. (Если вы хотите использовать UUID или метки, используйте опции {{ic|-U}} или {{ic|-L}} соответственно.)<br />
# genfstab -p /mnt >> /mnt/etc/fstab<br />
Далее перейдите в свою установленную систему с помощью [[Change Root|chroot]].<br />
# arch-chroot /mnt<br />
<br />
* Укажите имя хоста в файле {{ic|/etc/hostname}}.<br />
* Создайте ссылку {{ic|/etc/localtime}} на {{ic|/usr/share/zoneinfo/Zone/SubZone}}. Где {{ic|Zone}} и {{ic|Subzone}} замените на то, что вам нужно. Например<br />
<br />
# ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime<br />
<br />
* Установите используемый в системе язык, настроив [[Locale (Русский)#Установка системной локали|locale]] в {{ic|/etc/locale.conf}}.<br />
<br />
* Раскомментируйте нужные [https://wiki.archlinux.org/index.php/Locale локали] в {{ic|/etc/locale.gen}} и сгенерируйте {{ic|locale-gen}}.<br />
* Настройте {{ic|/etc/mkinitcpio.conf}} как вам нужно (см. [[mkinitcpio (Русский)|mkinitcpio]]) и создайте ramdisk:<br />
<br />
# mkinitcpio -p linux<br />
<br />
* Настройте загрузчик.<br />
<br />
* Для syslinux отредактируйте {{ic|/boot/syslinux/syslinux.cfg}} и укажите нужный {{ic|/boot}} раздел. Далее введите следующую команду чтобы установить (-i), добавить загрузочный флаг (-a) и установить mbr (-m).<br />
<br />
# /usr/sbin/syslinux-install_update -iam<br />
<br />
* Для установки GRUB прочитайте статью [[GRUB2 (Русский)|GRUB]]<br />
* Установка GRUB на жесткий диск, содержащий /boot раздел<br />
<br />
# grub-install /dev/sda<br />
<br />
* Сгенерируйте конфигурационный файл {{ic|grub.cfg}}:<br />
<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
* Установите root пароль с помощью команды {{ic|passwd}}.<br />
<br />
=== Размонтирование разделов ===<br />
Если вы все еще в окружении chroot, введите {{ic|exit}} или нажмите {{ic|Ctrl+D}}.<br />
В шаге 3 мы смонтировали разделы в {{ic|/mnt}}. Теперь отмонтируем их. <br />
# umount /mnt/{boot,home,}<br />
<br />
== После установки ==<br />
<br />
=== Управление пользователями ===<br />
Добавьте добавьте необходимые вам аккаунты пользователей, как это описано на странице [[Users and Groups#User management|User management]]. Считается плохим выбором использование аккаунта суперпользователя для регулярной работы с системой, или подключения к ней через сервер [[SSH]]. Используйте аккаунт суперпользователя только для решения задач администрирования системы.<br />
<br />
=== Управление пакетами ===<br />
<br />
Смотрите статьи [[pacman (Русский)]] и [[FAQ#Package Management]] для получения ответов на вопросы, касающиеся установки, обновления и и управления пакетами.<br />
<br />
=== Service management ===<br />
<br />
Arch Linux uses [[systemd]] as init, which is a system and service manager for Linux. For maintaining your Arch Linux installation, it is a good idea to learn the basics about it. Interaction with systemd is done through the {{ic|systemctl}} command. Read [[systemd#Basic systemctl usage]] for more information.<br />
<br />
=== Sound ===<br />
<br />
[[ALSA]] usually works out-of-the-box. It just needs to be unmuted. Install {{Pkg|alsa-utils}} (which contains {{ic|alsamixer}}) and follow [[Advanced Linux Sound Architecture#Unmuting the channels|these]] instructions.<br />
<br />
ALSA is included with the kernel and it is recommended. If it does not work, [[OSS]] is a viable alternative. If you have advanced audio requirements, take a look at [[Sound system]] for an overview of various articles.<br />
<br />
=== Video driver ===<br />
<br />
The Linux kernel includes open-source video drivers and support for hardware accelerated framebuffers. However, userland support is required for OpenGL and 2D acceleration in X11.<br />
<br />
If you don't know which video chipset is available on your machine, run:<br />
<br />
$ lspci | grep VGA<br />
<br />
For a complete list of open-source video drivers, search the package database:<br />
<br />
$ pacman -Ss xf86-video | less<br />
<br />
The {{ic|vesa}} driver is a generic mode-setting driver that will work with almost every GPU, but will not provide any 2D or 3D acceleration. If a better driver cannot be found or fails to load, Xorg will fall back to vesa. To install it:<br />
<br />
# pacman -S xf86-video-vesa<br />
<br />
In order for video acceleration to work, and often to expose all the modes that the GPU can set, a proper video driver is required:<br />
<br />
{| class="wikitable" style="text-align:center"<br />
|-<br />
! Brand !! Type !! Driver !! [[Multilib]] Package<br><span style="font-weight: normal;">(for 32-bit applications on Arch x86_64)</span> !! Documentation<br />
|-<br />
| rowspan="2" bgcolor=#f7e3e3| '''<span style="color: #e62c2c;">AMD/ATI</span>'''<br />
| Open source || {{Pkg|xf86-video-ati}} || {{Pkg|lib32-ati-dri}} || [[ATI]]<br />
|-<br />
| Proprietary || {{Pkg|catalyst-dkms}} || {{Pkg|lib32-catalyst-utils}} || [[AMD Catalyst]]<br />
|-<br />
| bgcolor=#e3ecf7| '''<span style="color: #2a6dc8;">Intel</span>'''<br />
| Open source<br />
| {{Pkg|xf86-video-intel}} || {{Pkg|lib32-intel-dri}} || [[Intel Graphics]]<br />
|-<br />
| rowspan="4" bgcolor=#e3f7e6| '''<span style="color: #409044;">Nvidia</span>'''<br />
| rowspan="2"| Open source<br />
| {{Pkg|xf86-video-nouveau}} || {{Pkg|lib32-nouveau-dri}} || [[Nouveau]]<br />
|-<br />
| {{Pkg|xf86-video-nv}} || – || (legacy driver)<br />
|-<br />
| rowspan="2"| Proprietary || {{Pkg|nvidia}} || {{Pkg|lib32-nvidia-utils}} || rowspan="2"| [[NVIDIA]]<br />
|-<br />
| {{Pkg|nvidia-304xx}} || {{Pkg|lib32-nvidia-304xx-utils}}<br />
|}<br />
<br />
=== Display server ===<br />
<br />
The X Window System (commonly X11, or X) is a networking and display protocol which provides windowing on bitmap displays. It is the de-facto standard for implementating graphical user interfaces. See the [[Xorg]] article for details.<br />
<br />
[[Wayland]] is a new display server protocol and the Weston reference implementation is available. There is very little support for it from applications at this early stage of development.<br />
<br />
=== Fonts ===<br />
<br />
You may wish to install a set of TrueType fonts, as only unscalable bitmap fonts are included by default. DejaVu is a set of high quality, general-purpose fonts with good [[Wikipedia:Unicode|Unicode]] coverage:<br />
<br />
# pacman -S ttf-dejavu<br />
<br />
Refer to [[Font Configuration]] for how to configure font rendering and [[Fonts]] for font suggestions and installation instructions.</div>Nobus