To źródło jest dobrym przykładem wykorzystania ZimaOS jako hosta urządzeniowego zamiast próby przekształcenia jego warstwy systemowej tylko do odczytu w dystrybucję desktopową. Ponieważ ZimaOS nie ma standardowego apt środowisko ani wbudowany pulpit X.Org autor zbudował cały stos kiosku wewnątrz Dockera: Debian + X.Org + Chromium do wyświetlania oraz mały kontener nginx do lokalnego pulpitu.
Rezultatem był działający 22-calowy kiosk z ekranem dotykowym, podłączony do ZimaBoard 2 1664. Nadal jest to zaawansowana konstrukcja społecznościowa, a nie tryb pulpitu obsługiwany przez IceWhale. Wykorzystuje sieć hosta, bezpośredni dostęp do grafiki i urządzeń wejściowych oraz uprzywilejowany kontener kiosku, dlatego przed skopiowaniem tej konfiguracji należy zrozumieć związane z nią kompromisy dotyczące bezpieczeństwa i dostępu do urządzeń.
Kiosk uruchamia stos graficzny wewnątrz Dockera
Źródłowy plik Dockerfile bazuje na Debianie Bookworm Slim i instaluje X.Org, libinput, Openbox, Chromium, narzędzia X11, czcionki oraz Mesa. Hostem pozostaje ZimaOS, a graficzne środowisko użytkownika działa wewnątrz kontenera.
To dokładnie ten rodzaj izolacji obciążenia, do którego zachęca model urządzenia ZimaOS.
Układ GPU Intel jest udostępniany kontenerowi kiosku
W poradniku użyto modesetting sterownik i przekazuje urządzenie Intel DRM do kontenera. Autor wyraźnie stwierdził, że wymagana obsługa Mesa wymagała backportów Bookworm dla stosu graficznego N100 używanego przez ZimaBoard 2.
Obecny sprzęt ZimaBoard 2 korzysta z układu Intel N150, dlatego osoby odtwarzające tę konfigurację powinny sprawdzić aktualną obsługę Mesa/X.Org, zamiast zakładać, że historyczne informacje o N100 są identyczne.
Wejście dotykowe pochodzi z warstwy wejściowej/Udev hosta
Sygnał obrazu był przesyłany przez HDMI/miniDP, natomiast kontroler ekranu dotykowego był podłączony przez USB. W poradniku sprawdzane jest /proc/bus/input/devicesmapuje właściwe urządzenie zdarzeń w X.Org i udostępnia /run/udev aby kontener mógł identyfikować sprzęt wejściowy.
Osobny kontener nginx udostępnia pulpit
Źródło uruchamia się nginx:alpine na porcie innym niż port ZimaOS (w przykładzie 8888) i montuje pliki pulpitu w trybie tylko do odczytu. Chromium otwiera ten lokalny adres URL w trybie kiosku.
Korzystanie z osobnego kontenera webowego ułatwia aktualizowanie plików pulpitu bez konieczności ponownego budowania kontenera graficznego.
Nie używaj ponownie portu 80 ZimaOS dla pulpitu nawigacyjnego
W przewodniku wyraźnie zaznaczono, że ZimaOS używa już portu 80 dla swojego pulpitu nawigacyjnego. Jeśli Chromium otwiera niewłaściwą stronę, sprawdź port niestandardowego pulpitu nawigacyjnego oraz KIOSK_URL wartość zamiast zmieniać nieoczekiwanie ZimaOS.
Autor dodał obejście oparte na zdarzeniach wskaźnika dla dotknięć ekranu
W pulpicie nawigacyjnym źródła niewielki ruch palca mógł uniemożliwić Chromium wywołanie tradycyjnych onclick obsługi zdarzeń. Autor zastąpił obsługę kliknięć przez pointerup oraz progu ruchu.
Ten kod JavaScript jest specyficzny dla aplikacji. Nowoczesne interfejsy internetowe przeznaczone do obsługi dotykiem powinny preferować elementy sterujące przyjazne dla wskaźnika i dotyku zamiast globalnego wykonywania wbudowanych onclick ciągi.
Tryb uprzywilejowany to największy kompromis w zakresie bezpieczeństwa
Źródło uruchamia kontener kiosku z użyciem --privileged. Zapewnia to szeroki dostęp do urządzeń i jądra hosta oraz jest znacznie bardziej liberalne niż w przypadku zwykłego kontenera pulpitu.
Jeśli odtwarzasz tę kompilację, najpierw sprawdź, czy jawne /dev/driwystarczają montowania , urządzenia wejściowego i udev oraz precyzyjnie ograniczone uprawnienia. Pulpit powinien znajdować się w zaufanej sieci LAN.
Źródło używa opcji unless-stopped do automatycznego odzyskiwania
Oba kontenery — nginx i kiosk — używają restart: unless-stopped zachowanie, dzięki któremu obraz wraca po ponownym uruchomieniu ZimaOS. Przechowuj plik Dockerfile, konfigurację X.Org, punkt wejścia i pulpit w trwałej /DATA pamięci masowej.
Bieżąca wersja ZimaOS może zapewnić bardziej powtarzalne pakowanie za pomocą Compose
Bieżąca wersja ZimaOS obsługuje standardowy import plików Docker Compose/YAML. Zamiast utrzymywać kilka długich docker run polecenia pozwalają zaawansowanemu użytkownikowi opisać obie usługi, zasady ponownego uruchamiania, urządzenia, woluminy i sieć w jednym sprawdzonym pliku Compose.
Użyj bieżącego modelu ZimaOS Compose.
FAQ dotyczące kiosku z ekranem dotykowym
Czy ZimaOS wymaga zainstalowania apt lub środowiska pulpitu na hoście?
Nie. Źródło celowo umieszcza X.Org, Openbox, Mesa i Chromium wewnątrz Dockera.
Czy jest to oficjalny tryb pulpitu ZimaOS?
Nie. To kompilacja społecznościowa, której udostępnienie IceWhale poprosiło o zgodę, z podaniem autora.
Dlaczego kontener kiosku jest obarczony wysokim ryzykiem w porównaniu ze zwykłą aplikacją?
Źródło nadaje mu tryb uprzywilejowany oraz bezpośredni dostęp do grafiki i urządzeń wejściowych, co zmniejsza izolację Dockera.
