test sudo apt install inotify-tools sudo dd if=/dev/zero of=/usbdisk.img bs=1M count=128 fdisk new primary partition type b fdisk -lu /usbdisk.img #=> offset losetup -o $((2048*512)) /dev/loop0 /usbdisk.img mkfs -t vfat -v /dev/loop0 -n raspberry losetup -d /dev/loop0 sudo modprobe g_mass_storage file=/usbdisk.img stall=0 removable=1 iSerialNumber=1234567890 (modinfo g_mass_storage) mount -o loop,ro,offset=$((2048*512)) -t vfat /usbdisk.img /mnt umount /mnt sudo modprobe -r g_mass_storage echo "dtoverlay=dwc2" >> /boot/config.txt echo "g_mass_storage file=/usbdisk.img stall=0 removable=1 iSerialNumber=1234567890" >> /etc/modules script: #!/bin/bash set -e -u [ -f /usr/bin/inotifywait ] || apt -y install inotify-tools [ -f /usr/bin/fim ] || apt -y install fim #tvservice -p # tvservice -e "DMT 82" # fbset -g 1920 1080 1920 1080 16 echo "18" > /sys/class/gpio/export || echo "gpio already set up" echo "23" > /sys/class/gpio/export || echo "gpio already set up" sleep 1 echo "out" > /sys/class/gpio/gpio18/direction echo "0" > /sys/class/gpio/gpio18/value echo "out" > /sys/class/gpio/gpio23/direction echo "0" > /sys/class/gpio/gpio23/value declare -g latest="" getnewestfile() { #unset -v latest shopt -s nullglob for f in /mnt/*; do [[ "$f" -nt "$latest" ]] && latest="$f" done echo "$latest" } cleanup () { echo "0" > /sys/class/gpio/gpio18/value echo "0" > /sys/class/gpio/gpio23/value killall fim umount /mnt || echo "" modprobe -r g_mass_storage || echo "" exit } trap cleanup INT TERM EXIT modprobe g_mass_storage file=/usbdisk.img stall=0 removable=1 iSerialNumber=1234567890 echo "1" > /sys/class/gpio/gpio18/value inotifywait -mq -e modify --format %w%f /usbdisk.img | while read FILE do echo "1" > /sys/class/gpio/gpio23/value echo "new screenshot" mount -o loop,ro,offset=$((2048*512)) -t vfat /usbdisk.img /mnt latest=$(getnewestfile) if [ -n "$latest" ] && [ -f "$latest" ]; then killall fim cp "$latest" /latestimage fim -d /dev/fb0 -T 1 --autozoom --quiet /latestimage & fi umount /mnt echo "0" > /sys/class/gpio/gpio23/value done examples: FILE=/usbdisk.img mkdir -p ${FILE/img/d} mount -o loop,offset=$((2048*512)) -t vfat $FILE ${FILE/img/d} inotifywait -mq -e close_write --format %w%f /usbdisk.img | while read FILE do echo "Die Datei $FILE wurde modifiziert." echo "1" > /sys/class/gpio/gpio23/value mount -o loop,ro,offset=$((2048*512)) -t vfat /usbdisk.img /mnt umount /mnt echo "0" > /sys/class/gpio/gpio23/value done while inotifywait -e modify /usbdisk.img do ... done ToDo: inotify only once!! recreate image on boot readonly-root python3-pyinotify