Graph-IT

Erstellen eines KioskPi-Images

Voraussetzungen

Die Pakete qemu-user-static und qemu-user-static-binfmt werden für das chroot in das Raspberry-Pi-System benötigt.

Download, mount und chroot in Raspberry Pi OS

Letzte Version von “Raspeberry Pi OS with desktop” von https://www.raspberrypi.com/software/operating-systems/ herunterladen.

Entpacken und in Loopback-Device mounten:

$ cd /tmp/
$ xz --decompress --keep 2023-05-03-raspios-bullseye-armhf.img.xz
$ mv 2023-05-03-raspios-bullseye-armhf.img 2023-10-10-kioskpi.img
$ sudo losetup --find --show --partscan 2023-10-10-kioskpi.img
$ sudo mount /dev/loop0p2 /mnt/
$ sudo mount /dev/loop0p1 /mnt/boot/

In chroot wechseln:

$ TERM=xterm sudo arch-chroot /mnt/

Upgrade des Systems, Installation und Deinstallation

# apt purge cups piwiz vlc wireless-regdb wireless-tools wpasupplicant
# apt autoremove
# apt update
# apt upgrade
# apt clean
# apt install unclutter firefox-esr x11vnc
# apt clean
# apt autoremove

Grundeinstellungen

Standard-Passwort für root und pi setzen:

# passwd
# passwd pi

Das Journal soll nicht auf der SD-Karte gespeichert werden:

# rm -r /var/log/journal /var/log/lastlog

Von außerhalb des chroot aus dem git-Repository:

$ sudo rsync -rlp etc /mnt/
$ sudo rsync -rlp root /mnt/
$ rsync -rlp home/pi /mnt/home/

Dies installiert die folgenden Konfigurations-Dateien:

etc
├── X11
│   └── xorg.conf.d
│       └── 20-keyboard.conf
├── default
│   └── keyboard
├── hostname
├── hosts
├── lightdm
│   └── lightdm.conf
├── localtime -> /usr/share/zoneinfo/Europe/Berlin
└── systemd
    └── system
        ├── getty.target.wants
        │   └── getty@tty1.service -> /lib/systemd/system/getty@.service
        ├── getty@tty1.service.d
        │   └── autologin.conf
        ├── multi-user.target.wants
        │   └── ssh.service -> /lib/systemd/system/ssh.service
        ├── sysinit.target.wants
        │   └── systemd-time-wait-sync.service -> /lib/systemd/system/systemd-time-wait-sync.service
        └── systemd-user-sessions.service.d
            └── override.conf
home
└── pi
    ├── .config
    │   ├── lxsession
    │   │   └── LXDE
    │   │       └── autostart
    │   └── systemd
    │       └── user
    │           ├── default.target.wants
    │           │   ├── kiosk-watcher.path -> /home/pi/.config/systemd/user/kiosk-watcher.path
    │           │   └── kiosk.service -> /home/pi/.config/systemd/user/kiosk.service
    │           ├── kiosk-watcher.path
    │           ├── kiosk-watcher.service
    │           └── kiosk.service
    ├── .ssh
    │   └── authorized_keys
    ├── kioskpi
    │   ├── index.html
    │   └── start-kiosk.sh
    └── x11vnc.sh
root
└── .ssh
    └── authorized_keys

In /home/pi/.ssh/authorized_keys sollten die Public-Keys derjenigen hinterlegt sein, die initial Zugriff per SSH haben sollen.

Image schließen und aufspielen

Von außerhalb des chroot:

$ sudo umount /mnt/boot/
$ sudo umount /mnt/
$ sudo losetup --detach /dev/loop0
$ xz 2023-10-10-kioskpi.img
$ xz --decompress --stdout 2023-10-10-kioskpi.img.xz | sudo dd of=/dev/sdx bs=1M oflag=sync status=progress