LINUX.ORG.RU

[fedora][systemd]выполнение программы при загрузке

 ,


0

1

Всем привет!

Есть бинарный файл kb, расположенный в /usr/bin/kb (владелец: root, права доступа: -rwx-r-xr-x), который должен выполняться при инициализации ОС. Не могу разобраться, как это сделать при использовании systemd: пытался в файле /etc/systemd/system/graphical.target.wants/system-setup-keyboard.service прописать

ExecStart /usr/bin/kb

но это не помогло.

О назначении файла kb и рабочей среде: ставлю Fedora 15 (RFR) на нетбук Lenovo S10-3C, но с этим нетбуком проблема - при загрузке ядра без параметров noapic и acpi=off неработает клавиатура. Есть решение, на Launchpad-e люди говорят, что оно работает, но там рецепт для Ubuntu. Как подобное сделать для Fedora с её systemd?


>прописать

А файлик полностью процитирован? Если да, то где секция [Service]?

А вообще по-прежнему есть rc.local.

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

А файлик полностью процитирован?

Извиняюсь, вот:

[Unit]
Description=System Setup Keyboard
Before=prefdm.service

[Service]
ExecStart=/usr/bin/system-setup-keyboard
ExecStart=/usr/bin/kb //запускаем файл [b]kb[/b]

[Install]
WantedBy=graphical.target

bor-e
() автор топика
Ответ на: комментарий от legolegs

This option may not be specified more than once

Т.е. нужно прописывать ExecStartPost=/usr/bin/kb. Я попытался прописать так, но это не помогло (с учётом ниже написанного).

systemctl enable делал?

Не понимаю, что конкретно нужно сделать, говорит «Too few arguments».

Что говорит systemctl status system-setup-keyboard.service?

Loaded: loaded (/lib/systemd/system/system-setup-keyboard.service)
Active: active (running) since ... //далее дата и время
Main PID: 575 (system-setup-ke)
CGroup: name=systemd:/system/system-setup-keyboard.service
        |_ 575 /usr/bin/system-setup-keyboard

Содержимое файлов

/lib/systemd/system/system-setup-keyboard.service

и

/etc/systemd/system/graphical.target.wants/system-setup-keyboard.service

совпадает.

bor-e
() автор топика
Ответ на: комментарий от bor-e

>Active: active (running) since ... //далее дата и время

...

|_ 575 /usr/bin/system-setup-keyboard

Ну оно у тебя работает, в смысле сервис. Хотя он-же стандартный, разумеется он работает.

Вообще, этот /usr/bin/kb (кстати, раз ты его сам компилял, так правельнее его положить в /usr/local/bin, ну да ладно) - он сам по себе-то работает? Ты его от рута руками пускал?

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

ps руками - например через экранную клаву или usb-клаву.

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

он сам по себе-то работает? Ты его от рута руками пускал?

Да, если запускать бинарный файл от имени root-а вручную (я использовал внешнюю usb-клавиатуру), то клавиатура нетбука начинает функционировать.

bor-e
() автор топика

а не проще ли под этот kb создать отдельный файл kb.service и включить его потом (systemctl enable kb.service)?

madgnu ★★★★★
()
Ответ на: комментарий от madgnu
cat << EOF > /lib/systemd/system/kb.service
[Unit]
Description=kb
Before=prefdm.service

[Service]
ExecStart=/usr/bin/kb

[Install]
WantedBy=graphical.target
EOF

а потом

systemctl start kb.service # проверяем работоспособность
systemctl enable kb.service

madgnu ★★★★★
()
Ответ на: комментарий от bor-e

Файл надо положить в /etc/systemd/system/kb.service, из каталога graphical.target.wants выпилить, потом ‘systemctl enable kb.service’, в каталоге graphical.target.wants появится симлинк. И ещё надо убедиться, что используется именно graphical.target. Для надёжности лучше всё-таки заюзать multi-user.target.

ExecStart=/usr/bin/system-setup-keyboard

ExecStartPre же.

И да, /usr/bin/kb — это демон или он однажды запускается и сразу выходит? Лучше явно указать ‘Type=’ в [Service].

gentoo_root ★★★★★
()

2 madgnu, gentoo_root: скомбинировал ваши предложения в файл /lib/systemd/system/kb.service, с содержимым:

[Unit]
Description=keyboard_launcher
Before=prefdm.service

[Service]
Type=daemon #насколько я понимаю, kb должен запускаться как демон
ExecStart=/usr/bin/kb

[Install]
WantedBy=multi-user.target

затем сделал:

systemctl start kb.service
systemctl enable kb.service

Перезагрузился - клавиатура работает, acpi тоже (индикатор заряда батареи - ОК). Всем спасибо, решено!

P.S. из graphical.target.wants соотв. строку убрал, как и положено.

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