Участник:HihinRuslan/Systemd: различия между версиями
Дым (обсуждение | вклад) |
|||
(не показано 27 промежуточных версий 3 участников) | |||
Строка 16: | Строка 16: | ||
</source> | </source> | ||
==== | ==== Указываем хранить журнал в оперативной памяти (полезно для SSD): ==== | ||
'''После перезагрузки логи будут очищаться вместе с оперативной памятью!''' | |||
Место хранения журнала указывается в переменной ''Storage'' в конфигурационном файле ''/etc/systemd/journald.conf''. | |||
Указываем хранить журнал в оперативной памяти (каталог ''/run/log/journal''): | |||
<source lang=text> | |||
Storage=volatile | |||
</source> | |||
Ограничиваем журнал в оперативной памяти размером 5 мегабайт: | |||
<source lang=text> | <source lang=text> | ||
RuntimeMaxUse=5M | |||
</source> | </source> | ||
Удаляем журнал, хранящийся на диске (если не удалить, будет показываться вместо актуального) от root: | |||
<source lang=text> | <source lang=text> | ||
rm -Rf /var/log/journal/* | |||
</source> | |||
==== Отправка вывода journald на /dev/tty12 ==== | |||
Во избежание коверканья опций последующими апдейтами сервиса, завести в каталоге /etc/systemd/journald.conf.d/ (при отсутствии — создать таковой) конфиг с иммунитетом к редактированию внешними средствами под именем, к примеру, console.conf следующего содержания: | |||
<source lang=ini> | |||
[Journal] | |||
ForwardToConsole = yes | |||
TTYPath = /dev/tty12 | |||
</source> | |||
Перечитать настройки: | |||
<source lang=bash> | |||
# systemctl daemon-reload | |||
</source> | |||
Перезапустить journald: | |||
<source lang=bash> | |||
# systemctl restart systemd-journald | # systemctl restart systemd-journald | ||
</source> | </source> | ||
==== Монтирование "чужих" разделов ==== | ==== Монтирование "чужих" разделов ==== | ||
Чтобы система не прекращала работу при невозможности монтирования какого-то раздела — например, системного с заснувшим там Windows, — а просто не монтировала его, прописать такой в /etc/fstab с параметром ''nofail'': | |||
<source lang=text> | <source lang=text> | ||
UUID="F05CC5DD5CC59F2A" /mnt/sda1 ntfs-3g locale=ru_RU.UTF-8,dmask=0,umask=111,nofail 0 0 | UUID="F05CC5DD5CC59F2A" /mnt/sda1 ntfs-3g locale=ru_RU.UTF-8,dmask=0,umask=111,nofail 0 0 | ||
</source> | </source> | ||
==== Автомонтирование по запросу ==== | |||
Если нужно монтировать раздел только в момент первого обращения к нему, прописываем его с параметром comment=systemd.automount | Если нужно монтировать раздел только в момент первого обращения к нему, прописываем его с параметром comment=systemd.automount | ||
<source lang=text> | <source lang=text> | ||
https://webdav.yandex.ru /mnt/yandex.disk davfs noauto,users,comment=systemd.automount 0 0 | https://webdav.yandex.ru /mnt/yandex.disk davfs noauto,users,uid=user,gid=user,comment=systemd.automount 0 0 | ||
</source> | |||
=== Реанимируем консоль /dev/tty1 === | |||
==== Новый способ ==== | |||
навеянный https://forum.altlinux.org/index.php?topic=38514 | |||
<source lang=bash> | |||
cp /lib/systemd/system/prefdm.service /etc/systemd/system/dm.service | |||
</source> | |||
и закомментировать в /etc/systemd/system/dm.service строчку | |||
<source lang=bash> | |||
Conflicts=getty@tty1.service | |||
</source> | |||
==== Старый (не очень правильный) способ : ==== | |||
Создаём файл /etc/systemd/system/tty1.service такого содержания: | |||
<source lang=text> | |||
# This file is part of systemd. | |||
# | |||
# systemd is free software; you can redistribute it and/or modify it | |||
# under the terms of the GNU Lesser General Public License as published by | |||
# the Free Software Foundation; either version 2.1 of the License, or | |||
# (at your option) any later version. | |||
[Unit] | |||
Description=Start agetty on tty1 | |||
Documentation=man:agetty(8) man:systemd-getty-generator(8) | |||
Documentation=http://0pointer.de/blog/projects/serial-console.html | |||
After=systemd-user-sessions.service plymouth-quit-wait.service | |||
After=rc-local.service | |||
# If additional gettys are spawned during boot then we should make | |||
# sure that this is synchronized before getty.target, even though | |||
# getty.target didn't actually pull it in. | |||
Before=getty.target | |||
IgnoreOnIsolate=yes | |||
# On systems without virtual consoles, don't start any getty. Note | |||
# that serial gettys are covered by serial-getty@.service, not this | |||
# unit. | |||
ConditionPathExists=/dev/tty0 | |||
[Service] | |||
# the VT is cleared by TTYVTDisallocate | |||
ExecStart=-/sbin/agetty tty1 linux | |||
Type=idle | |||
Restart=always | |||
RestartSec=0 | |||
UtmpIdentifier=tty1 | |||
TTYPath=/dev/tty1 | |||
TTYReset=yes | |||
TTYVHangup=yes | |||
TTYVTDisallocate=yes | |||
KillMode=process | |||
IgnoreSIGPIPE=no | |||
SendSIGHUP=yes | |||
# Unset locale for the console getty since the console has problems | |||
# displaying some internationalized messages. | |||
Environment=LANG= LANGUAGE= LC_CTYPE= LC_NUMERIC= LC_TIME= LC_COLLATE= LC_MONETARY= LC_MESSAGES= LC_PAPER= LC_NAME= LC_ADDRESS= LC_TELEPHONE= LC_MEASUREMENT= LC_IDENTIFICATION= | |||
[Install] | |||
WantedBy=getty.target | |||
DefaultInstance=tty1 | |||
</source> | </source> | ||
И даём команды: | |||
<source lang=bash> | |||
# systemctl enable tty.service | |||
# systemctl start tty.service | |||
</source> | |||
==== И ещё штрихи: ==== | |||
Чтобы первая консоль стартовала при запуске, в /etc/systemd/logind.conf задаем: | |||
<source lang=bash> | |||
ReserveVT = 1 | |||
</source> | |||
Чтобы kdm стартовал на седьмой консоли, прописываем в /etc/X11/kdm/kdmrc: | |||
<source lang=bash> | |||
ServerVTs=-7 | |||
</source> | |||
(а не 1 по умолчанию) | |||
=== Ссылки === | |||
[[systemd]] | |||
[[Journald]] | |||
[[Категория:FAQ]] | [[Категория:FAQ]] | ||
[[Категория:Systemd]] |
Текущая версия от 10:22, 15 июля 2019
Улучшаем Systemd
Источники:
Ограничение размера журнала:
Максимальный объем постоянного журнала задаёт переменная SystemMaxUse в конфигурационном файле /etc/systemd/journald.conf. Ограничиваем журнал размером 50 мегабайт:
SystemMaxUse=50M
Указываем хранить журнал в оперативной памяти (полезно для SSD):
После перезагрузки логи будут очищаться вместе с оперативной памятью!
Место хранения журнала указывается в переменной Storage в конфигурационном файле /etc/systemd/journald.conf. Указываем хранить журнал в оперативной памяти (каталог /run/log/journal):
Storage=volatile
Ограничиваем журнал в оперативной памяти размером 5 мегабайт:
RuntimeMaxUse=5M
Удаляем журнал, хранящийся на диске (если не удалить, будет показываться вместо актуального) от root:
rm -Rf /var/log/journal/*
Отправка вывода journald на /dev/tty12
Во избежание коверканья опций последующими апдейтами сервиса, завести в каталоге /etc/systemd/journald.conf.d/ (при отсутствии — создать таковой) конфиг с иммунитетом к редактированию внешними средствами под именем, к примеру, console.conf следующего содержания:
[Journal]
ForwardToConsole = yes
TTYPath = /dev/tty12
Перечитать настройки:
# systemctl daemon-reload
Перезапустить journald:
# systemctl restart systemd-journald
Монтирование "чужих" разделов
Чтобы система не прекращала работу при невозможности монтирования какого-то раздела — например, системного с заснувшим там Windows, — а просто не монтировала его, прописать такой в /etc/fstab с параметром nofail:
UUID="F05CC5DD5CC59F2A" /mnt/sda1 ntfs-3g locale=ru_RU.UTF-8,dmask=0,umask=111,nofail 0 0
Автомонтирование по запросу
Если нужно монтировать раздел только в момент первого обращения к нему, прописываем его с параметром comment=systemd.automount
https://webdav.yandex.ru /mnt/yandex.disk davfs noauto,users,uid=user,gid=user,comment=systemd.automount 0 0
Реанимируем консоль /dev/tty1
Новый способ
навеянный https://forum.altlinux.org/index.php?topic=38514
cp /lib/systemd/system/prefdm.service /etc/systemd/system/dm.service
и закомментировать в /etc/systemd/system/dm.service строчку
Conflicts=getty@tty1.service
Старый (не очень правильный) способ :
Создаём файл /etc/systemd/system/tty1.service такого содержания:
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
[Unit]
Description=Start agetty on tty1
Documentation=man:agetty(8) man:systemd-getty-generator(8)
Documentation=http://0pointer.de/blog/projects/serial-console.html
After=systemd-user-sessions.service plymouth-quit-wait.service
After=rc-local.service
# If additional gettys are spawned during boot then we should make
# sure that this is synchronized before getty.target, even though
# getty.target didn't actually pull it in.
Before=getty.target
IgnoreOnIsolate=yes
# On systems without virtual consoles, don't start any getty. Note
# that serial gettys are covered by serial-getty@.service, not this
# unit.
ConditionPathExists=/dev/tty0
[Service]
# the VT is cleared by TTYVTDisallocate
ExecStart=-/sbin/agetty tty1 linux
Type=idle
Restart=always
RestartSec=0
UtmpIdentifier=tty1
TTYPath=/dev/tty1
TTYReset=yes
TTYVHangup=yes
TTYVTDisallocate=yes
KillMode=process
IgnoreSIGPIPE=no
SendSIGHUP=yes
# Unset locale for the console getty since the console has problems
# displaying some internationalized messages.
Environment=LANG= LANGUAGE= LC_CTYPE= LC_NUMERIC= LC_TIME= LC_COLLATE= LC_MONETARY= LC_MESSAGES= LC_PAPER= LC_NAME= LC_ADDRESS= LC_TELEPHONE= LC_MEASUREMENT= LC_IDENTIFICATION=
[Install]
WantedBy=getty.target
DefaultInstance=tty1
И даём команды:
# systemctl enable tty.service
# systemctl start tty.service
И ещё штрихи:
Чтобы первая консоль стартовала при запуске, в /etc/systemd/logind.conf задаем:
ReserveVT = 1
Чтобы kdm стартовал на седьмой консоли, прописываем в /etc/X11/kdm/kdmrc:
ServerVTs=-7
(а не 1 по умолчанию)