Содержание
Не совсем чистый интернет-киоск, т. к. пользователю нужно, помимо интернета, иметь возможность воткнуть свою флешку или диск и распечатать документ или веб-страницу.
ОС Lubuntu 22.04 LTS.
Первичная настройка
Установить ОС, настроить сеть, далее
# Установить SSH и RDP (опционально) apt install openssh-server -y apt install xrdp -y ### Зайти по SSH # Заменить репозитории (если не сделано при установке) sed -E -i 's#(ru\.)?(security|archive)\.ubuntu\.com#mirror.yandex.ru#' /etc/apt/sources.list # Обновить систему apt update && apt upgrade -y && apt autoremove -y snap install core22
https://askubuntu.com/questions/1456802/cannot-repair-the-broken-snap-core22-on-ubuntu-22-04
Копирование обоев и значков
Скопировать картинки - обои, кнопку пуск, обои для экрана входа, здесь копируется с Windows-машины
# Кнопка меню "y" |cmd /c "D:\Downloads\pscp.exe" -P 22 -pw 123456 -v "C:\Users\User\Pictures\kiosk\portal-2-2.svg" admin@t-kiosk1:/home/admin '2>&1' # Обои "y" |cmd /c "D:\Downloads\pscp.exe" -P 22 -pw 123456 -v "C:\Users\User\Pictures\kiosk\Inet-cafe-1600x900-*.jpg" admin@t-kiosk1:/home/admin '2>&1' # Обои для экрана входа (1920x1080) "y" |cmd /c "D:\Downloads\pscp.exe" -P 22 -pw 123456 -v "C:\Users\User\Pictures\kiosk\wall.png" admin@t-kiosk1:/home/admin '2>&1'
Рассовать скопированные картинки в системе
# Кнопка меню mv /home/admin/expo-portal-2-2.svg /usr/share/lxqt/graphics # Обои mv /home/admin/Inet-ca* /usr/share/lubuntu/wallpapers # Обои для экрана входа mv /home/admin/wall.png /usr/share/sddm/themes/lubuntu
Установка/удаление программ
Здесь по требованию начальства нужно было установить Chrome как дополнительный браузер.
### Удаление apt remove 2048* transmission* quassel* qlipper -y apt autoremove -y ### Установка # Шрифты из Windows (первая команда - принять лицензию) echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | debconf-set-selections apt install ttf-mscorefonts-installer -y # Chrome snap install chromium
Офис
# Убрать заставку, tip of the day и what's new # Сначала удаление, чтобы была идемпотентность sed -i ' s# --nologo## s#Exec=.*#& --nologo# ' /usr/share/applications/libreoffice* # Установить языки # русский (шаблоны тире и словарь опционально) apt install libreoffice-l10n-ru # hyphen-ru hunspell-ru # английский # apt install hyphen-en-us hunspell-en-us
https://help.libreoffice.org/7.4/en-GB/text/shared/guide/start_parameters.html
Браузер
# Прописать опции (сначала удалить, чтобы была идемпотентность) sed -i ' s#--no-default-browser-check --no-experiments --no-first-run --disable-extensions --start-maximized ##g s#/snap/bin/chromium#/snap/bin/chromium --no-default-browser-check --no-experiments --no-first-run --disable-extensions --start-maximized#g ' /var/lib/snapd/desktop/applications/chromium_chromium.desktop
https://peter.sh/experiments/chromium-command-line-switches/
https://askubuntu.com/questions/1145514/how-to-prevent-users-from-installing-extensions-in-google-chrome-without-admin-p
https://askubuntu.com/questions/747118/where-is-the-location-of-application-shortcuts-in-gnome
Почистить кэш из командной строки
The browser cache is stored in different directories depending on whether Chromium is installed as a regular package or as a snap. Examples: # /usr/bin/chromium -> traditional package # /snap/bin/chromium -> snap # Installed from regular package rm -rf ~/.cache/chromium # Installed from snap rm -rf ~/snap/chromium/common/.cache/chromium # Google Chrome rm -rf ~/.cache/google-chrome
Список принтеров
Chromium нормально не показывает два принтера в списке, он выдаёт один по умолчанию и пункт «Ещё…».
Его нужно нажать и выбрать второй принтер, чтобы он возник в списке.
В дальнейшем при открытии диалога печати в списке будут отображаться оба.
Интерфейс
Настраивается через GUI.
Параметры -> Настройки LXQt -> Системные настройки LXQT Ассоциация файлов Приложения по умолчанию Браузер: поставить Chromium Внешний вид (необязательно) Шрифт Кегль 12 (по умолчанию 11) Клавиатура и мышь Раскладка клавиатуры Проверить раскладки, задать клавиши смены (Alt+Shift) Локаль Регион какой требуется для учётки, это будет языком системы Настройки Openbox Шрифт (необязательно) Название активного окна: Sans Serif 11 Название неактивного окна: Sans Serif 11 Заголовок меню: Sans Serif 12 Пункт меню: Sans Serif 12 Активная надпись на экране: Sans Serif 12 Неактивная надпись на экране: Sans Serif 12 Рабочие столы Показывать уведомление при переключении рабочих столов: снять галку Количество рабочих столов: 1 Настройки сеанса Основные настройки Глобальные сочетания клавиш: выключить и остановить Служба уведомлений: выключить и остановить Спрашивать подтверждения для завершения сеанса - снять галку Автозапуск upgNotifier: выключить Рабочий стол Общие (необязательно) Размер значков: 64 (по умолчанию 48) Выбрать шрифт: Ubuntu 12 (по умолчанию 11) Фон Выбрать обои, режим - растянуть по всему экрану Расширенные Снять галки с Home, Сеть и Компьютер Панель задач -> ПКМ -> Настроить панель Панель Размер: 42 пикс (по умолчанию 32) Размер значков: 32 пикс (по умолчанию 22) Виджеты Меню приложений Настроить Значок: Кнопка меню, что была загружена ранее
Сделать ярлыки на рабочем столе и в панели быстрого запуска.
Принтеры
Настроить принтеры, отключить службу обнаружения, чтобы система не предлагала пользователю список в 100500 принтеров.
sed -i 's#^BrowseRemoteProtocols.*#BrowseRemoteProtocols none#' /etc/cups/cups-browsed.conf # или sudo systemctl stop cups-browsed sudo systemctl disable cups-browsed
Идиотизм в том, что после этого лишние принтеры в приложениях всё равно видны из-за сервиса avahi.
Нужно добавить интерфейс, откуда они берутся, в запрещённые.
# Выяснить имя нужного интерфейса (одна любая команда) nmcli device status nmcli connection show tcpdump --list-interfaces ip r # Прописать его в конфиг sed -i -E '/#?deny-interfaces/c deny-interfaces=eth0' /etc/avahi/avahi-daemon.conf # Перезапустить службу systemctl restart avahi-daemon
https://bugs.launchpad.net/ubuntu/+source/cups/+bug/1753509
https://askubuntu.com/questions/345083/how-do-i-disable-automatic-remote-printer-installation
Настройка принтеров (CUPS) через браузер: http://localhost:631
Если Firefox не видит принтеры, выполнить
sudo snap connect firefox:cups-control
Migrate Linux Printer Configuration
# CUPS stores its configuration at /etc/cups directory, so all you have to do is copy /etc/cups to a new computer. Open terminal and type the commands on old Linux computer: tar -cvzf /tmp/cups-$(hostname).tar.gz /etc/cups # Copy /tmp/cups* to new system using SCP or use USB pen driver: scp /tmp/cups* new.linux.server.com:/tmp # Now login to new system and type the following commands: mv /etc/cups /etc/cups.backup cd / tar -zxvf /tmp/cups* # Finally, restart the cups service: systemctl restart cups.service
https://www.cyberciti.biz/tips/linux-migrate-printer-configuration.html
Скринсейвер
Необязательно, но можно изменить заставку, чтобы комп не сильно напрягался, например, Attraction.
Либо, если у компа есть постоянный доступ в интернет, то можно сделать FontGlide и натравить настройку на корпоративный сайт (новости, анонсы, что-то о будущем), чтобы показывались красивые строки оттуда. Поменять ссылку можно в файле настроек: ~/.xscreensaver
Ещё хорошие заставки: DecayScreen, FadePlot, FlipScreen3D, Flurry, GLSells, GLText, IFS, Pacman, Rocks, Wander.
Пользователи
Нужны 2 пользователя - с английским и русским интерфейсом.
Сначала копируем настройки из админского профиля в каталог шаблона
cp -r /home/admin/{.config,Desktop,.xscreensaver} /etc/skel
После копирования настроек все последующие пользователи будут брать их из шаблона.
# Посмотреть настройки по умолчанию # useradd -D # Завести пользователей (с созданием домашней папки, иначе не получится войти в систему) useradd -m english useradd -m russian # Удалить пароль - вход будет просто по нажатию Enter passwd -d english passwd -d russian
После создания пользователей надо зайти под ними в систему и проверить работоспособность.
Для english поставить локаль en_US и английскую стартовую страницу в браузере.
Копирование профилей
Для восстановления. Идея в том, что после перезагрузки профиль пользователя полностью переустанавливается из копии.
# Сохранение (без копирования прав, чтобы пользователь не мог изменить файлы в шаблоне) mkdir /etc/profile_templates rsync -Drl /home/russian /etc/profile_templates rsync -Drl /home/english /etc/profile_templates # Восстановление - Cron (/etc/crontab) @reboot root rsync -Drl --delete /etc/profile_templates/russian/ /home/russian; chown -R russian: /home/russian @reboot root rsync -Drl --delete /etc/profile_templates/english/ /home/english; chown -R english: /home/english # Восстановление вручную rsync -Drl --delete /etc/profile_templates/russian/ /home/russian chown -R russian: /home/russian rsync -Drl --delete /etc/profile_templates/english/ /home/english chown -R english: /home/english
Снятие и восстановление образа
Снимается образ с помощью Clonezilla.
После восстановления на новой машине нужно:
- Настроить сеть: поменять IP-адрес.
- Изменить hostname:
sudo hostnamectl set-hostname PC1234
- Сменить обои в профилях и шаблонах профилей (
.config/pcmanfm-qt/lxqt/settings.conf
)for i in $(find /home /etc/profile_templates -name 'settings.conf' |grep pcmanfm) do sed -i 's#_1600x900-.*#_1600x900-02.jpg#' $i done
Заметки
LXQt
Посмотреть список каталогов LXQt можно в About LXQt.
userhome=/home/user # Поменять локаль nano /home/english/.config/lxqt/session.conf # В шаблоне - nano /etc/skel/.config/lxqt/session.conf [Environment] LANG=en_US.UTF-8 # Этого достаточно, если не надо менять региональные настройки LC_COLLATE=en_US.UTF-8 LC_MEASUREMENT=en_US.UTF-8 LC_MONETARY=en_US.UTF-8 LC_NUMERIC=en_US.UTF-8 LC_TIME=en_US.UTF-8 # Панель меню Пуск # iconSize=22, panelSize=32 sed -i ' s/panelSize=.*/panelSize=42/ s/iconSize=.*/iconSize=32/ ' $userhome/.config/lxqt/panel.conf # Обои sed -i ' s/DesktopIconSize=.*/DesktopIconSize=64/ s/Font=.*/Font="Ubuntu,12,-1,5,50,0,0,0,0,0,Regular"/ s/DesktopShortcuts=.*/DesktopShortcuts=Trash, Computer/ s/Wallpaper=.*/Wallpaper=\/usr\/share\/lubuntu\/wallpapers\/2110-waves-dark.png/ s/WallpaperMode=.*/WallpaperMode=stretch/ ' $userhome/.config/pcmanfm-qt/lxqt/settings.conf #pcmanfm-qt --set-wallpaper /usr/share/lubuntu/wallpapers/2110-waves-dark.png --wallpaper-mode stretch # Игнор уведомлений sed -i ' s/blackList=.*/blackList=lxqt-panel,lxqt-config-monitor,lxqt-powermanagement/ ' $userhome/.config/lxqt/notifications.conf # https://github.com/lxqt/lxqt/issues/1788
# Выключить уведомление об обновлениях:
LXQt Session Settings → Autostart → upgNotifier
/home/english/.config/autostart/upg-notifier-autostart.desktop
[Desktop Entry] Exec=/usr/libexec/lubuntu-update-notifier/lubuntu-upg-notifier.sh Hidden=true Icon=system-software-update Name=upgNotifier NoDisplay=true Type=Application Version=0.1
Автологин
sudo nano /etc/sddm.conf
[Autologin] User=<your user name> Session=Lubuntu # Relogin=true # (Usually you don’t need the Relogin line (default false). # Relogin=true will relogin immediately after you logout. So you will never see the login screen.
Доверять иконкам на рабочем столе
Из крона не работает, только из командной строки под конкретным пользователем и перезахода в систему.
# crontab -e -u english @reboot for i in Desktop/*.desktop; do gio set $i metadata::trusted true; done # chown english:crontab /var/spool/cron/crontab/english sudo -u admin for i in ~/Desktop/*.desktop; do gio set $i metadata::trusted true; done
Статьи
Creating a kiosk with Linux: https://oofhours.com/2023/05/02/creating-a-kiosk-with-linux/