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