Не совсем чистый интернет-киоск, т. к. пользователю нужно, помимо интернета, иметь возможность воткнуть свою флешку или диск и распечатать документ или веб-страницу.
ОС 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
https://askubuntu.com/questions/16225/how-can-i-accept-the-microsoft-eula-agreement-for-ttf-mscorefonts-installer
==== Офис ====
# Убрать заставку, 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=
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/\\