Загрузка непосредственно в тестовую программу

Мне нужно загружать компьютер несколько сотен раз в день, чтобы провести производственное тестирование компьютерной периферии.

У меня есть тестовая система Ubuntu 16, где я запустил sudo systemctl set-default multi-user.target для загрузки в текстовом режиме. Мне все еще нужно нажать Alt - F1 , чтобы запустить первый tty. Затем я должен войти в систему, а затем sudo my test.sh и снова ввести пароль.

Что я действительно хотел, так это нажать на выключатель питания и увидеть некоторую информацию о прохождении / сбое, а затем снова выключиться.

Тестовый скрипт загружает соответствующий драйвер, затем запускает тестовую программу, поэтому ему требуются привилегии суперпользователя.

Я попробовал кое-что, но это с треском провалилось. Я не думаю, что инструкции были для Ubuntu 16.04.

Спасибо !!!

0
задан 22 May 2019 в 04:36

2 ответа

Предварительные условия

Чтобы загрузить непосредственно с tty1, удалите splash из следующей строки в /etc/default/grub:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

... и выполните sudo update-grub. [ 1115]

Чтобы запретить systemd порождать getty в tty1, замаскируйте соответствующий сервис:

sudo systemctl mask getty@tty1.service

Создайте системный сервисный блок

Создайте следующий файл, который вы можете назвать как вам нравится, конечно:

/etc/systemd/system/example.service

[Unit]
Description=Example tty1 service
After=multi-user.target

[Service]
Type=idle
ExecStart=/bin/bash /bin/example.sh
StandardOutput=tty
StandardInput=tty
TTYPath=/dev/tty1

[Install]
WantedBy=multi-user.target

Эта служба будет запущена после достижения multi-user.target , запустите /bin/example.sh и используйте tty1 для ввода и вывода.

Запустите следующую команду, чтобы включить службу:

sudo systemctl enable example.service

Я не знаю, что делает ваш скрипт, но вот пример, который ждет нажатия клавиши и выключает компьютер (вы можете все еще переключайтесь на другой tty):

/bin/example.sh

#!/bin/bash

echo Press any key to shutdown
read -n 1 -s -r
poweroff
exit 0
0
ответ дан 22 May 2019 в 04:36

В качестве пользователя root создайте исполняемый файл /etc/rc.local. В него можно помещать любые команды, сценарии оболочки и т. Д. Я предполагаю, что то, что вы делаете, не является интерактивным. Если это так, не забудьте перенаправить вывод и ошибки в соответствующие файлы. Файл rc.local должен иметь «выход 0» в конце. Поместите ваши команды между первой и последней строкой.

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

exit 0
0
ответ дан 22 May 2019 в 04:36

Другие вопросы по тегам:

Похожие вопросы: