Bölüm bitiminde aşağıdaki konularda deneyim kazanacaksınız.
  • Kiosk imajının ne olduğu ve nerelerde kullanılabileceği hakkında bilgi sahibi olmak.
  • Gemstone Kiosk imajını karta yükledikten sonra grafik arayüzü bulunan bir uygulamayı sistem açıldığında otomatik başlatmak
Kiosk ifadesi genellikle, kullanıcının dokunmatik bir ekran aracılığıyla sistemle etkileşimde bulunduğu bilgisayarlar için kullanılmaktadır. Dokunmatik desteği ve grafik arayüzü bulunmakla birlikte, Masaüstü bilgisayarlarındaki uygulamaları barındırmayıp çok daha küçük boyutlu hızlı açılan sistemlerdir. Otonom araçların sürücü konsolları, komuta kontrol panellerindeki yönetim ekranları, ATM ekranları, sıramatikler vs. örnek olarak verilebilir.
Örnek görselleri inceleyiniz.

1. Özellikler

Linux sistemlerde grafik uygulamalarını çalıştırmak için birden fazla yöntem ve grafik alt sistemi bulunur. Bu yöntemler, uygulamaların görsel içeriği işleme ve ekrana yansıtma şekillerine göre farklılık gösterir.
  • X11 (X Window System), geleneksel ve en yaygın kullanılan pencere sistemidir; istemci-sunucu mimarisiyle çalışır ve ağ üzerinden uygulamaların görüntülenmesine izin verir.
  • Wayland ise X11’in yerini almak üzere tasarlanan modern bir protokoldür ve daha basit, performans odaklı bir yapı sunar; doğrudan çekirdek modülü olan DRM/KMS ile iletişim kurarak daha az gecikmeli bir deneyim sağlar.
  • DirectFB, gömülü sistemlerde sıklıkla tercih edilen hafif bir grafik kütüphanesidir ve doğrudan framebuffer üzerinden çizim yapar, bu da X11 veya Wayland gibi karmaşık katmanlar olmadan hızlı grafik işleme imkanı tanır.
  • LinuxFB, doğrudan Linux çekirdeğinin framebuffer aygıtına erişen basit bir yöntemdir ve özellikle düşük kaynaklı sistemlerde kullanışlıdır, ancak gelişmiş grafik özelliklerinden yoksundur.
Bunların haricinde GUI projelerinde kullanılan Qt veya GTK gibi grafik araçları da çeşitli grafik sistemleriyle entegre çalışabilir. Örneğin, Qt uygulamaları eglfs (Embedded OpenGL Full Screen) gibi platform eklentileriyle doğrudan framebuffer veya Wayland üzerinde çalıştırılabilir. Her bir yöntem, farklı kullanım senaryolarına hitap eder ve performans, uyumluluk veya kaynak kullanımı gibi faktörlere göre seçilebilir. Gemstone Kiosk imajında X11 tercih edilmiştir. Bu seçimde X11’in en yaygın grafik sistemi olması ve birçok yazılımla uyumlu olması etkili olmuştur. X11 üzerinde kiosk uygulamasını tam ekran göstermek için son derece konfigüre edilebilir olan ve az sistem kaynağı kullanan Openbox pencere yöneticisi tercih edilmiştir. Kiosk ihtiyaçlarına uygun olması için Openbox ayarlarından ($HOME/.config/openbox/rc.xml) pencere kenarlıkları, başlık, yönetim tuşları, sürükleme, klavye kısayol tuşları vb. işlevler devre dışı bırakılmıştır.

2. Kurulum

Hızlı Başlangıç bölümündeki anlatıldığı şekilde Gemstone’u bilgisayarınıza bağlayarak Gemstone Imager isimli uygulamayı başlatarak Operating System bölümüne tıklayınız.
Operating System seçim ekranında Ubuntu veya Debian imajlarına tıkladığınızda aşağıdaki gibi Desktop, Kiosk ve Minimal seçenekleri listelenecektir. Kiosk imajını seçerek yazma işlemini tamamlayınız.
İmaj yükleme işlemi tamamlandıktan sonra Gemstone’a güç verdiğinizde varsayılan olarak aşağıdaki gibi Demo uygulaması açılacaktır. Demo uygulaması PyQt6 ile geliştirilmiştir. Kaynak kodlarına t3gemstone/examples reposundan erişebilirsiniz.

Todo: Kiosk GCS

3. Konfigürasyon

X11 istemcileri DISPLAY çevre değişkenini kullanarak görüntünün nerede gösterileceğine karar verir. Seri terminal ya da SSH ile bağlanıldığında DISPLAY çevre değişkeninin manuel olarak ayarlanması gerekir. Bu değişkenin formatı <host adı>:<görüntü sunucusu numarası>.<ekran numarası> şeklindedir. Görüntü sunucusu localhost’ta çalışıyorsa host adı boş bırakılır. Aşağıda örnek kullanıma yer verilmiştir. Uç durumlar haricinde DISPLAY=:0.0 kullanımı yaygındır.
ubuntu@host:~$ ssh gemstone@10.0.0.1 DISPLAY=:0.0 xrandr --query
  • Görüntü sunucusu Gemstone kart içinde çalıştığından biz de SSH ile bu karta bağlandığımızdan host adı boş bırakılmıştır.
  • Modern sistemlerde tek görüntü sunucusu çalıştığı için 0 numaralı sunucuya bağlanılmıştır.
  • Modern sistemlerde çoklu monitör kullanılsa bile tek sanal ekran şeklinde ayarlandığı için 0 numaralı ekrana bağlanılmıştır.
Gemstone karta seri port ya da SSH aracılığıyla bağlandıktan sonra gerekli ayarları $HOME/kiosk.environment dosyasından çevre değişkenler yardımıyla yapabilirsiniz. Bu dosyada yer alan çevre değişkenler ve işlevleri aşağıdaki tabloda listelenmiştir.
Çevre DeğişkenVarsayılan Değerİşlev
PATH$HOME/bin:$PATHUygulamaların aranacağı dizinler
LD_LIBRARY_PATH/usr/local/qt6:$LD_LIBRARY_PATHDinamik kütüphanelerin (.so) aranacağı dizinler
KIOSK_RESOLUTION800x600Ekran çözünürlüğü
KIOSK_REFRESH_RATE60Ekran yenileme hızı
KIOSK_LOG_PATH$HOME/kiosk.logUygulama stdout ve stderr çıktılarının kaydedileceği dizin
KIOSK_LOG_MAX_SIZE_BYTES104857600Byte cinsinden log dosyasının maksimum boyutu
KIOSK_BINkioskÇalıştırılacak uygulama
Ayarlarda yapılan değişikliklerin geçerli olması için aşağıdaki komut yardımıyla Openbox oturumunu yeniden başlatmanız yeterlidir.
gemstone@t3-gem-o1:~$ DISPLAY=:0.0 openbox --exit
Ekranınız için geçerli çözünürlük ve yenileme hızı değerlerini aşağıdaki komut ile listeleyebilirsiniz.
gemstone@t3-gem-o1:~$ DISPLAY=:0.0 xrandr --query
# Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 8096 x 8096
# HDMI-1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 527mm x 296mm
#    1920x1080     60.00*+  50.00    59.94
#    1680x1050     59.88
#    1600x900      60.00
#    1280x1024     75.02    60.02
#    1440x900      59.90
#    1366x768      59.79
#    1152x864      75.00
#    1280x720      60.00    50.00    59.94
#    1024x768      75.03    70.07    60.00
#    832x624       74.55
#    800x600       72.19    75.00    60.32    56.25
#    720x576       50.00
#    720x480       60.00    59.94
#    640x480       75.00    72.81    60.00    59.94
#    720x400       70.08
Kiosk uygulaması varsayılan olarak $HOME/bin/kiosk dizininde yer alır. Uygulamayı değiştirmek ya da güncellemek için aşağıda gösterildiği şekilde scp ile bu dizine yeni uygulamayı gönderdikten sonra Openbox oturumunu yeniden başlatınız.
ubuntu@host:~$ scp kiosk gemstone@10.0.0.1:bin/kiosk
ubuntu@host:~$ ssh gemstone@10.0.0.1 DISPLAY=:0.0 openbox --exit

4. Mimari

Gemstone karta güç verilmesinden kiosk uygulamasının gösterilmesine kadar gerçekleşen aşamalar aşağıda listelenmiştir.
  1. Systemd getty@tty1 servisini başlatır. Bu servis tty1 isimli terminalden gemstone kullanıcısına otomatik login olur.
  2. gemstone kullanıcısının varsayılan shell’i yani /bin/bash başlatılır.
  3. Bash shell tarafından $HOME/.profile scripti çalıştırılır. Bu script içinde X11’in görüntü sunucusu olan Xserver’ı başlatan startx komutu yer alır. Xserver herhangi bir sebeple çökerse durum systemd journal’a kiosk etiketi ile kaydedilir ve startx tekrar çalıştırılır.
  4. Xserver tarafından $HOME/.xinitrc scripti çalıştırılır. Bu script içinde Openbox oturumunu başlatan exec openbox-session komutu yer alır.
  5. Openbox tarafından $HOME/.config/openbox/autostart scripti çalıştırılır. Bu script içinde KIOSK_BIN çevre değişkeni ile tanımlanan uygulama çalıştırılır. Bu uygulamanın stdout ve stderr çıktıları KIOSK_LOG_PATH çevre değişkeni ile tanımlanan dosyaya kaydedilir. Kiosk uygulaması herhangi bir sebeple çökerse durum systemd journal’a kiosk etiketi ile kaydedilir ve uygulama tekrar çalıştırılır.

5. Son

Desktop imajına kullanıcı adı ve şifre ile giriş yapılabilirken, Kiosk isimli imaj yalnızca belirlediğiniz uygulamanın otomatik başlatıldığı ve sisteme ekran üzerinden erişim imkanının olmadığı imaj türüdür.