Uruchomienie wizualizacji sterownika przez VNC na komputerze panelowym (tryb kiosk)
Kontakt w sprawie artykułu: Wojciech Talik - 2026-11-10

Ten poradnik prowadzi od pustego panelu z zainstalowaną Remminą do stanu, w którym komputer po włączeniu sam wyświetla wizualizację ze sterownika na pełnym ekranie, bez pasków i bez ingerencji operatora.
Założenia:
1. Komputer pracuje pod Ubuntu z sesją LXDE, użytkownik root.
2. Remmina wraz z wtyczką remmina-plugin-vnc jest już zainstalowana.
3. Sterownik to Astraada One, adres 192.168.1.201.
4. Komputer ma adres np. 192.168.1.101, interfejs eth0.
5. Komputer i sterownik są połączone kablem w tej samej podsieci.
6. Wizualizacja (TargetVisu) jest wgrana na sterownik i pozostawiona w trybie RUN.
Jeżeli adresy w Twojej instalacji są inne, podmień je we wszystkich poleceniach.
1. Konfiguracja sieci na komputerze
Komputer panelowy musi mieć stały adres w podsieci sterownika, szczegółową konfigurację przedstawiono poniżej.
1.1. Sprawdzenie, kto zarządza siecią
nmcli device statusJeżeli przy eth0 widnieje unmanaged, NetworkManager nie zarządza tym interfejsem i jego profile nigdy nie wstaną. Przyczynę potwierdzisz tutaj:
cat /etc/NetworkManager/NetworkManager.confWpis managed=false w sekcji [ifupdown] oznacza, że konfiguracja należy do starszego mechanizmu ifupdown i tam trzeba ją wpisać – jest to opisane w punkcie 1.2.
Jeżeli eth0 jest natomiast managed, pomiń punkt 1.2 i użyj:
nmcli connection add type ethernet con-name sterownik ifname eth0 ip4 192.168.1.101/24 autoconnect yes
nmcli connection up sterownik1.2. Stały adres przez ifupdown
tee /etc/network/interfaces.d/eth0 > /dev/null << 'EOF'
auto eth0
iface eth0 inet static
address 192.168.1.101
netmask 255.255.255.0
EOFBrak bramy i serwerów DNS jest zamierzony, ponieważ chcemy korzystać wyłącznie z sieci wewnętrznej. Słowo auto odpowiada za automatyczne podniesienie interfejsu przy starcie systemu.
Aktywacja bez restartu:
ip addr flush dev eth0
ifup eth01.3. Weryfikacja
ip -br a
ping -c 2 192.168.1.201Przy eth0 powinien widnieć adres 192.168.1.101, a sterownik powinien odpowiadać.
2. Test połączenia
Zanim zajmiemy się automatyzacją, sprawdźmy, czy połączenie w ogóle działa:
remmina -c vnc://192.168.1.201Powinna pojawić się wizualizacja ze sterownika.
Jeżeli widzimy czarny ekran, połączenie działa, ale sterownik nie renderuje wizualizacji lokalnej. Trzeba sprawdzić, czy TargetVisu został dodany, a aplikacja jest w trybie RUN.
Jeżeli pojawi się okno o treści „The login keyring did not get unlocked”, jest to komunikat systemowego magazynu haseł panelu, niezwiązany ze sterownikiem. Panel loguje się automatycznie, bez podawania hasła, więc magazyn pozostaje zablokowany. Na tym etapie kliknij Anuluj, nie ma to wpływu na połączenie.
3. Profil połączenia
Uruchomienie przez vnc:// nie pozwala zapisać ustawień, takich jak tryb pełnoekranowy. Potrzebny jest profil, który wygenerujemy wpisując poniższe linie:
mkdir -p /root/.local/share/remmina
cat > /root/.local/share/remmina/sterownik.remmina << 'EOF'
[remmina]
name=sterownik
protocol=VNC
server=192.168.1.201
colordepth=32
viewmode=4
scale=1
window_maximize=1
EOFZnaczenie poszczególnych pól jest następujące:
Nagłówek [remmina] otwiera sekcję konfiguracyjną i musi znajdować się na początku pliku. Pole name=sterownik to nazwa profilu widoczna na liście połączeń w oknie programu. Wpis protocol=VNC określa protokół, którym Remmina ma się połączyć, natomiast pole server zawiera adres sterownika. Ustawienie colordepth=32 definiuje głębię kolorów przesyłanego obrazu, przy czym wartość ta odpowiada pełnej palecie barw. Wpis viewmode=4 odpowiada za uruchomienie połączenia w trybie pełnoekranowym, a scale=1 włącza dopasowanie obrazu do rozdzielczości panelu, dzięki czemu wizualizacja wypełnia cały ekran niezależnie od rozdzielczości, w jakiej pracuje sterownik. Ostatnie pole, window_maximize=1, powoduje maksymalizację okna, więc stanowi uzupełnienie trybu pełnoekranowego.
Uwaga. Plik to format klucz=wartość. Pomyłka w znaku równości, na przykład name+sterownik, powoduje, że Remmina zgłasza „the file is corrupted, unreadable or could not be found”, mimo że plik istnieje. Należy więc dokładnie sprawdzać wpisywane komendy.
Sprawdzenie zawartości i uruchomienie:
cat /root/.local/share/remmina/sterownik.remmina
remmina -c /root/.local/share/remmina/sterownik.remminaWyjście z trybu pełnoekranowego: F11
Zamknięcie wizualizacji: po naciśnięciu F11 wchodzimy w konsolę i klikamy Ctrl+C.
4. Tryb kiosk
Tryb kiosk usuwa paski narzędzi i blokuje wyjście oraz przełączanie połączeń. To docelowy tryb pracy panelu.
remmina --kiosk -c /root/.local/share/remmina/sterownik.remminaUWAGA:
Z trybu kiosk nie da się wyjść za pomocą myszki. Aby wyjść, trzeba nacisnąć klawisz F11, następnie wybierając terminal również klikamy Ctrl+C.
Zatrzymanie działającej sesji (jeśli nie mamy dostępu do pulpitu konfiguracji domyślnej):
pkill remmina5. Autostart
5.1. Skrypt startowy
Opóźnienie jest konieczne, ponieważ sesja graficzna wstaje szybciej niż sieć. Bez niego Remmina próbuje się połączyć, zanim interfejs uzyska adres.
cat > /root/start-vnc.sh << 'EOF'
#!/bin/bash
sleep 15
remmina --kiosk -c /root/.local/share/remmina/sterownik.remmina
EOF
chmod +x /root/start-vnc.shPolecenie chmod +x nadaje prawo wykonywania. Bez niego sesja pominie skrypt bez żadnego komunikatu.
5.2. Wpis w autostarcie sesji
echo "@/root/start-vnc.sh" >> /root/.config/lxsession/LXDE/autostart
cat /root/.config/lxsession/LXDE/autostartPlik powinien wyglądać mniej więcej tak:
@lxpanel --profile LXDE
@pcmanfm --desktop --profile LXDE
@xscreensaver -no-splash
@/root/start-vnc.shZnak @ na początku oznacza, że sesja uruchomi program ponownie, gdyby ten się zakończył. W komputerze operatorskim jest to pożądane, ponieważ po zerwaniu połączenia wizualizacja wróci samoczynnie.
Trzy pierwsze polecenia informują nas, że komputer wystartuje z początkową konfiguracją, a następnie z konfiguracją kiosku. Jeśli jesteśmy pewni, możemy zmienić nasz autostart wyłącznie na konfigurację kioskową – wtedy przepisujemy skrypt z początku tej sekcji z jedną zmianą, a dokładniej w tej linijce:
echo "@/root/start-vnc.sh" >> /root/.config/lxsession/LXDE/autostartzamiast >> piszemy >.
Upewniamy się też, że katalog sesji nazywa się dokładnie tak, jak używana sesja:
echo $DESKTOP_SESSION
ls /root/.config/lxsession/Obie wartości muszą się zgadzać.
6. Usunięcie konfiguracji
Konfigurację usuwa się przy pracach serwisowych, przy zmianie adresu sterownika albo gdy stanowisko ma wrócić do zwykłej pracy z pulpitem. Poniższe kroki cofają wszystko, co utworzono w krokach od 1 do 5.
Kolejność ma znaczenie. Autostart usuwa się jako pierwszy. Znak @ w pliku sesji powoduje, że środowisko uruchamia program ponownie po jego zamknięciu, więc wyłączenie Remminy przed usunięciem wpisu skończy się jej natychmiastowym powrotem.
6.1. Wyłączenie autostartu
Wariant trwały, usuwający wpis z pliku sesji:
sed -i '/start-vnc/d' /root/.config/lxsession/LXDE/autostart
cat /root/.config/lxsession/LXDE/autostartPo wykonaniu w pliku powinny pozostać wyłącznie wpisy początkowej konfiguracji środowiska.
Jeżeli autostart ma zostać wyłączony jedynie na czas prac, wystarczy zakomentować linię znakiem #:
sed -i 's|^@/root/start-vnc.sh|#@/root/start-vnc.sh|' /root/.config/lxsession/LXDE/autostartPrzywrócenie polega na usunięciu tego znaku.
Jeżeli plik autostartu został wcześniej nadpisany pojedynczym > i pozostał w nim wyłącznie wpis kiosku, początkową konfigurację środowiska odtwarza się poleceniem:
cp /etc/xdg/lxsession/LXDE/autostart /root/.config/lxsession/LXDE/autostart6.2. Zatrzymanie działającej sesji
pkill remmina
ps aux | grep remmina | grep -v grepDrugie polecenie służy wyłącznie do sprawdzenia. Pusty wynik oznacza, że proces został zatrzymany. Jeżeli program nie ustępuje, można wymusić zamknięcie poleceniem:
pkill -9 remminaJeżeli Remmina uruchamia się ponownie mimo zatrzymania, nie oznacza to błędu polecenia, lecz że coś ją wznawia. Środowisko wczytuje plik autostartu jednorazowo, przy starcie sesji i przez cały czas jej trwania pilnuje uruchomionych z niego programów oznaczonych znakiem @. Usunięcie wpisu z pliku odnosi więc skutek dopiero po ponownym zalogowaniu lub restarcie komputera.
Przed zatrzymaniem procesu warto sprawdzić, czy nie działa jeszcze skrypt oczekujący na uruchomienie połączenia:
pkill -f start-vncNależy również sprawdzić, czy w katalogu autostartu użytkownika nie pozostał osobny wpis uruchamiający program:
ls -la /root/.config/autostart/Jeżeli znajduje się tam plik utworzony przy wcześniejszych próbach konfiguracji, należy go usunąć:
rm -f /root/.config/autostart/remmina-kiosk.desktop6.3. Usunięcie skryptu i profilu
rm -f /root/start-vnc.sh
rm -f /root/.local/share/remmina/sterownik.remminaJeżeli katalog profili ma zostać usunięty w całości:
rm -rf /root/.local/share/remminaPolecenie rm -rf usuwa katalog wraz z zawartością i bez potwierdzenia, dlatego przed jego wykonaniem należy sprawdzić poprawność ścieżki.
Przy instalacji Remminy do katalogu autostartu dodawany jest również wpis uruchamiający ikonę programu w zasobniku systemowym. Na stanowisku operatorskim jest on zbędny i można go usunąć:
rm -f /root/.config/autostart/remmina-applet.desktop6.4. Usunięcie konfiguracji sieciowej
Ten krok wykonuje się wyłącznie wtedy, gdy stanowisko ma całkowicie zapomnieć adres z podsieci sterownika. Po jego wykonaniu komputer traci łączność ze sterownikiem, dlatego czynność należy przeprowadzić lokalnie, a nie przez połączenie zdalne.
rm -f /etc/network/interfaces.d/eth0
ip addr flush dev eth0Jeżeli adres był nadany profilem NetworkManagera, usuwa się go poleceniem:
nmcli connection delete sterownik6.5. Weryfikacja
Po restarcie komputera:
ip -br a
ls /root/
cat /root/.config/lxsession/LXDE/autostartstanowisko powinno uruchomić się do zwykłego pulpitu, bez wizualizacji, a w pliku autostartu nie powinno być odwołania do skryptu.
Uwaga. Powyższe kroki dotyczą wyłącznie komputera. Ustawienia serwera VNC oraz obiekt TargetVisu pozostają w sterowniku bez zmian i w razie potrzeby wyłącza się je osobno, w interfejsie webowym urządzenia oraz w projekcie.
Autor artykułu:
Bartosz Leśniak
Praktykant ASTOR
Student kierunku Automatyka i robotyka na Akademii Górniczo-Hutniczej w Krakowie
Współpraca i wsparcie merytoryczne: Wojciech Talik