2012-01-21 4 views
9

У меня есть сценарий, который запрашивает числовой ввод от пользователя во время загрузки компьютера. Компьютер работает под управлением Fedora 16. Он используется работой, на Fedora 13, но после обновленияДоступ к stdin во время загрузки systemd

read INTEGER 

возвращается немедленно, без ловли любого пользовательского ввода. Я попробовал

read INTEGER 
wait $! 

но (как ожидается) это тоже не работает. Сценарий запускается из служебного файла systemd (см. Комментарии ниже). Это должно быть должно выполняться как root, а должно быть начато до входа пользователя в систему. В настоящее время он вызывает bash в качестве интерпретатора, но с некоторыми усилиями, которые могут быть изменены. Может ли кто-нибудь помочь вернуть этот сценарий в норму?

Дополнительный кредит: в F13 он использовался для остановки загрузки для ввода пользователем (по желанию), но вход не отображался в качестве введенного пользователем. Есть ли способ добавить эту функциональность?

+1

Я не знаю ответ на вашу конкретную проблему, но я знаю, где начать искать:. Изучить, как Systemd работ, что является новой инициализацией замещающей записи новый файл systemd на самом деле довольно прост, и выполнение вашего скрипта в нем также легко. Но проблема в том, что вам нужно systemd, чтобы вы могли получить доступ к stdin, и именно там я не уверен, есть ли волшебный конфиг, который позволит быстро это сделать. Быстрое чтение страницы systemd.unit не показывает ее мне быстро. –

+0

Хм. Я поместил ее в файл systemd.service, который работает как ожидалось, но все равно не будет принимайте ввод с клавиатуры. Использую 'type = oneshot',' WantedBy = graphical.target', 'After = multiuser.target'. в ближайшее время попробуйте 'WantedBy = multiuser.target', чтобы узнать, помогает ли это. –

+0

Ввод в очередь «multiuser.target» «(из-за лучшего слова» заставляет его начинать видимо, но не прерывает запуск для помощи. @WesHardaker, знаете ли вы, что запустит systemd? –

ответ

1

Во время нормальной загрузки, клавиатура подключена к Плимут (я считаю)

В Fedora, я полагаю, вы хотите что-то вроде:

plymouth ask-question --prompt="Pick a number between 0 and ∞" \ 
    --command="/usr/bin/numberguesser" 

возможно с

 --dont-pause-progress 

Это должен отобразить экран подсказки Plymouth, не отличающийся от того, как криптографические файловые системы запрашивают свои пароли.

Обратите внимание, что /usr/bin/numberguesser получит только введенную строку, введенную на стандартный вход.

Непроверено, извините :-(