Automatyka w praktyce

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 status

Jeżeli przy eth0 widnieje unmanaged, NetworkManager nie zarządza tym interfejsem i jego profile nigdy nie wstaną. Przyczynę potwierdzisz tutaj:

cat /etc/NetworkManager/NetworkManager.conf

Wpis 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 sterownik

1.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
EOF

Brak 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 eth0

1.3. Weryfikacja

ip -br a
ping -c 2 192.168.1.201

Przy 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.201

Powinna 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
EOF

Znaczenie 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.remmina

Wyjś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.remmina

UWAGA:

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 remmina

5. 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.sh

Polecenie 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/autostart

Plik powinien wyglądać mniej więcej tak:

@lxpanel --profile LXDE
@pcmanfm --desktop --profile LXDE
@xscreensaver -no-splash
@/root/start-vnc.sh

Znak @ 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/autostart

zamiast  >> 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/autostart

Po 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/autostart

Przywró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/autostart

6.2. Zatrzymanie działającej sesji

pkill remmina
ps aux | grep remmina | grep -v grep

Drugie 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 remmina

Jeż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-vnc

Należ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.desktop

6.3. Usunięcie skryptu i profilu

rm -f /root/start-vnc.sh
rm -f /root/.local/share/remmina/sterownik.remmina

Jeżeli katalog profili ma zostać usunięty w całości:

rm -rf /root/.local/share/remmina

Polecenie 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.desktop

6.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 eth0

Jeżeli adres był nadany profilem NetworkManagera, usuwa się go poleceniem:

nmcli connection delete sterownik

6.5. Weryfikacja

Po restarcie komputera:

ip -br a
ls /root/
cat /root/.config/lxsession/LXDE/autostart

stanowisko 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

Newsletter Poradnika Automatyka

Czytaj trendy i inspiracje, podstawy automatyki, automatykę w praktyce

Please wait...

Dziękujemy za zapis do newslettera!

Czy ten artykuł był dla Ciebie przydatny?

Średnia ocena artykułu: 0 / 5. Ilość ocen: 0

Ten artykuł nie był jeszcze oceniony.

Zadaj pytanie

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *