Die Pakete qemu-user-static
und qemu-user-static-binfmt
werden für das
chroot in das Raspberry-Pi-System benötigt.
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/
# 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
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.
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