Архив метки: systemd

linux: русский в консоли archlinux

Возникла проблема со шрифтами в виртуальной консоли. Квадратики вместо кириллицы. В графическом эмуляторе терминала, разумеется, всё нормально, а в /dev/ttyX беда. Выяснилось, что всё портит systemd, сначала загружая шрифты и настраивая их согласно vconsole.conf как и положено, а потом подгружая drm-модуль видеокарты, который создаёт новый фреймбуфер (например, у меня /dev/fb0), в котором уже никаких настроек не делается.

Считаю, что это косяк. Когда-нибудь это должны поправить, вероятно. Это давно было уже, до сих пор актуально, сначала долго копался, потом появилось несколько материалов в сети. Примерный механизм описан здесь. Основная тема на archlinux.org.ru здесь.

Т.к. у меня грузится с локальной ФС, то я ограничился способом добавления

MODULES="i915"

(нужно подставить свой модуль: i915, nouveau, radeon итд) в /etc/mkinitcpio.conf
и перегенерацией initramfs:

mkinitcpio -p linux

Проверить в этом ли дело можно руками поставив нужный шрифт (они лежат в /usr/share/kbd/consolefonts/):

setfont cyr-sun16[.psfu.gz]

Автор: Дмитрий

archlinux перевод на systemd

Как известно, archlinux к данному моменту почти полностью перешёл на systemd. Старый механизм sysvinit/initscripts тоже почти полноценно пока поддерживается через костыли. Чтобы вату не катать, я тоже стал переходить. В данный момент переход довольно подробно описан на арчвики, но на момент накидывания черновика этой заметки всё только начиналось, к тому же у меня чуть более сложный случай, т.к. стояло несколько специфических сервисов итд. Чтобы сразу всё не сломалось (а оно может даже если ничего не трогать), переходить решил постепенно, в принципе, на арчвики так же рекомендовано сейчас.

Смешанная установка systemd+sysvinit+initscripts

Сам systemd уже должен стоять по-любому, но если отдельно не настраивалось, то грузится пока старый init. Попробуем прописать init=/bin/systemd в параметры ядра. Очевидные вещи разжёвывать не нужно, если grub2, то в /etc/default/grub прописываем в GRUB_CMDLINE_LINUX_DEFAULT="init=/bin/systemd" , и далее grub-mkconfig, как положено.
Из /etc/rc.conf надо убрать лишние демоны. Самое простое: после перезагрузки надо изучить что поднялось (cups, sshd итд), и это убрать из DAEMONS в /etc/rc.conf . По идее, все стандартные службы должны уже иметь systemd-unit и корректно подняться. У меня остались в DAEMONS network, а также мои специфические activemq и т.д.
Это и ниже всё нужно будет включить руками через systemctl enable, читать справку по systemd в той же арчвики по ссылке выше.

Если согласно предыдущим рекомендациям (с archlinux.org или при апдейтах) журналирование меняли, то не забыть изменить в /etc/syslog-ng/syslog-ng.conf на systemd-шный.

source src {
...
unix-dgram("/run/systemd/journal/syslog");
#unix-dgram("/dev/log");
...
};

Ещё у меня был netfs, теперь он не нужен, всё работает искаропки. Но надо только включить не забыть (как и раньше) rpcbind, для него тоже есть нативный юнит.

# systemctl enable rpcbind

Также надо не забыть заенаблить нужный dm для графического входа (у меня lxdm).

Перезагружаемся и (скорее всего) радуемся.

Смешанная установка systemd+initscripts

Это вариант предыдущего этапа, но фиксируем systemd как init по дефолту. Ставим systemd-sysvcompat, оно заменяет sysvinit и прописывает линки init на systemd и прочие sysvinit бинарники на systemctl. Так что init= из grub убираем. Перегружаемся.

После проверки и написания недостающих юнитов, когда rc.conf опустел можно приступить к следующему этапу. На что, возможно, придётся до этого обратить внимание:

Сеть

Если было настроено как служба network (а не через NetworkManager или другие механизмы), то оно почти как служба осталась, но с нюансами. Итак, из rc.conf надо убрать настройку сети и загрузку демона network, а сеть включить нативно как-то так (если через dhcp, например):

systemctl enable dhcpcd@eth0

Если нужно грузить модуль ядра для сети и т.д., см. ссылку на арчвики выше.

Группы юзера

Нужно не забыть выкинуть всех локальных юзеров из дополнительных групп (audio, lock, scan итд итп) кроме wheel пожалуй только, это всё тоже написано в инструкции к арчвики. Походу, проблемы иначе действительно возникают.

Чистая установка systemd

Это такой окончательный этап на арчвики, но на самом деле отличается от предыдущего только тем, что не стартует костыль который запускает все инитскриптовские скрипты (которые называются у этого костыля легаси-юниты) и вообще как-либо парсит rc.conf. Ну и удаляем initscripts, раз он не нужен больше. Удаляются также и rc.conf, rc.local, rc.local.shutdown.

Автор: Дмитрий