Не совсем чистый интернет-киоск, т. к. пользователю нужно, помимо интернета, иметь возможность воткнуть свою флешку или диск и распечатать документ или веб-страницу.
ОС 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
# 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.
После восстановления на новой машине нужно:
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 можно в 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/