mirror of
https://github.com/karl0ss/AnotterKiosk.git
synced 2025-07-23 09:15:00 +01:00
Compare commits
4 Commits
b04d59338d
...
8e8f51f2d8
Author | SHA1 | Date | |
---|---|---|---|
8e8f51f2d8 | |||
751a3fed26 | |||
8b25aa87db | |||
e89639703d |
2
.github/workflows/main.yml
vendored
2
.github/workflows/main.yml
vendored
@ -34,6 +34,6 @@ jobs:
|
|||||||
append_body: true
|
append_body: true
|
||||||
body_path: ./version-info
|
body_path: ./version-info
|
||||||
files: |
|
files: |
|
||||||
./anotterkiosk-*
|
./n-anotterkiosk-*
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
14
README.md
14
README.md
@ -3,7 +3,6 @@ N-AnotterKiosk (Not-AnotterKiosk)
|
|||||||
|
|
||||||
### I have hacked this about alot from the main branch, mainly Raspberry Pi changes
|
### I have hacked this about alot from the main branch, mainly Raspberry Pi changes
|
||||||
|
|
||||||
- Removed x86 support
|
|
||||||
- Added scheduled screen on/off
|
- Added scheduled screen on/off
|
||||||
- Added scheduled chrome page refresh
|
- Added scheduled chrome page refresh
|
||||||
- Rpi3 Overclock settings
|
- Rpi3 Overclock settings
|
||||||
@ -18,10 +17,9 @@ This project aims to solve a lot of those (at least for the author), it might al
|
|||||||
|
|
||||||
#### Key features
|
#### Key features
|
||||||
|
|
||||||
- [Images built via CI](https://github.com/Manawyrm/AnotterKiosk/blob/main/.github/workflows/main.yml)
|
- [Images built via CI](https://github.com/Manawyrm/N-AnotterKiosk/blob/main/.github/workflows/main.yml)
|
||||||
- WiFi connection support
|
- WiFi connection support
|
||||||
- Raspberry Pi (Arm64) compatibility
|
- Raspberry Pi (Arm64) compatibility
|
||||||
- PC (x86) compatibility
|
|
||||||
- [USB flash drive, USB SSD, etc. compatible](#how-to-use)
|
- [USB flash drive, USB SSD, etc. compatible](#how-to-use)
|
||||||
- aarch64 mode for Raspberry Pis (_significant_ performance improvements over armv7/32bit ARM)
|
- aarch64 mode for Raspberry Pis (_significant_ performance improvements over armv7/32bit ARM)
|
||||||
- Read-only filesystem handling (no more broken SD cards)
|
- Read-only filesystem handling (no more broken SD cards)
|
||||||
@ -33,6 +31,7 @@ This project aims to solve a lot of those (at least for the author), it might al
|
|||||||
- VNC support
|
- VNC support
|
||||||
- SSH tunneling support (for remote-access without port-forwarding, etc.)
|
- SSH tunneling support (for remote-access without port-forwarding, etc.)
|
||||||
- Basic API for Rpi Actions
|
- Basic API for Rpi Actions
|
||||||
|
- Hyperion-NG support for ambilight
|
||||||
|
|
||||||
#### Planned features:
|
#### Planned features:
|
||||||
|
|
||||||
@ -48,13 +47,13 @@ This project aims to solve a lot of those (at least for the author), it might al
|
|||||||
|
|
||||||
### How-To Use
|
### How-To Use
|
||||||
|
|
||||||
Like any other Raspberry Pi image: download the current .img file from the [Releases](https://github.com/Manawyrm/AnotterKiosk/releases) page and flash it to a storage device of your choice.
|
Like any other Raspberry Pi image: download the current .img file from the [Releases](https://github.com/Manawyrm/N-AnotterKiosk/releases) page and flash it to a storage device of your choice.
|
||||||
SD cards, USB flash drives, USB SSDs, SATA SSDs, NVMe SSDs are all good options.
|
SD cards, USB flash drives, USB SSDs, SATA SSDs, NVMe SSDs are all good options.
|
||||||
You can use a tool like the [Raspberry Pi Imager](https://www.raspberrypi.com/software/), [BalenaEtcher](https://etcher.balena.io/), [Win32DiskImager](https://sourceforge.net/projects/win32diskimager/) or plain "dd" on \*nix-like systems.
|
You can use a tool like the [Raspberry Pi Imager](https://www.raspberrypi.com/software/), [BalenaEtcher](https://etcher.balena.io/), [Win32DiskImager](https://sourceforge.net/projects/win32diskimager/) or plain "dd" on \*nix-like systems.
|
||||||
When using the latter two, make sure to extract the .gz compression first (using a tool like 7zip).
|
When using the latter two, make sure to extract the .gz compression first (using a tool like 7zip).
|
||||||
|
|
||||||
After flashing, re-plug the storage device and open the FAT32 partition.
|
After flashing, re-plug the storage device and open the FAT32 partition.
|
||||||
Open the [`kioskbrowser.ini`](https://github.com/Manawyrm/AnotterKiosk/blob/main/kiosk_skeleton/boot/kioskbrowser.ini) file in a text editor and change everything to your needs.
|
Open the [`kioskbrowser.ini`](https://github.com/Manawyrm/N-AnotterKiosk/blob/main/kiosk_skeleton/boot/kioskbrowser.ini) file in a text editor and change everything to your needs.
|
||||||
More complex WiFi setups (like WPA2-Enterprise) can be configured by creating a wpa_supplicant.conf.
|
More complex WiFi setups (like WPA2-Enterprise) can be configured by creating a wpa_supplicant.conf.
|
||||||
Adding your own SSH keys can be done by creating a authorized_keys file.
|
Adding your own SSH keys can be done by creating a authorized_keys file.
|
||||||
If you want to use the autossh tunneling features, copy an SSH private key as either "id_rsa" or "id_ed25519".
|
If you want to use the autossh tunneling features, copy an SSH private key as either "id_rsa" or "id_ed25519".
|
||||||
@ -123,6 +122,11 @@ Starts the screen-refresh.service to refresh the screen.
|
|||||||
`GET /script.php?action=reboot&key=YOUR_API_KEY`
|
`GET /script.php?action=reboot&key=YOUR_API_KEY`
|
||||||
Reboots the Raspberry Pi.
|
Reboots the Raspberry Pi.
|
||||||
|
|
||||||
|
### Hyperion-NG
|
||||||
|
|
||||||
|
The kiosk now supports Hyperion-NG for ambilight control.
|
||||||
|
Manage Hyperion via its web interface, which is available on port 8090.
|
||||||
|
|
||||||
### Inspiration / Other Kiosk-OSes:
|
### Inspiration / Other Kiosk-OSes:
|
||||||
|
|
||||||
- https://github.com/jareware/chilipie-kiosk/
|
- https://github.com/jareware/chilipie-kiosk/
|
||||||
|
@ -51,7 +51,7 @@ sed -i 's/vfat defaults/vfat ro,defaults/g' "${BUILD_DIR}/etc/fstab"
|
|||||||
sed -i 's/ext4 defaults/ext4 ro,defaults/g' "${BUILD_DIR}/etc/fstab"
|
sed -i 's/ext4 defaults/ext4 ro,defaults/g' "${BUILD_DIR}/etc/fstab"
|
||||||
|
|
||||||
# Include git repo version info
|
# Include git repo version info
|
||||||
echo -n "AnotterKiosk Raspberry Pi version: " > "${BUILD_DIR}/version-info"
|
echo -n "N-AnotterKiosk Raspberry Pi version: " > "${BUILD_DIR}/version-info"
|
||||||
git describe --abbrev=4 --dirty --always --tags >> "${BUILD_DIR}/version-info"
|
git describe --abbrev=4 --dirty --always --tags >> "${BUILD_DIR}/version-info"
|
||||||
|
|
||||||
# Mount system partitions (from the build host)
|
# Mount system partitions (from the build host)
|
||||||
@ -84,5 +84,5 @@ sudo umount "${BUILD_DIR}"
|
|||||||
sudo losetup -D /dev/loop0
|
sudo losetup -D /dev/loop0
|
||||||
|
|
||||||
tag=$(git describe --abbrev=4 --dirty --always --tags)
|
tag=$(git describe --abbrev=4 --dirty --always --tags)
|
||||||
mv raspikiosk.img anotterkiosk-${tag}-arm64-raspberrypi.img
|
mv raspikiosk.img n-anotterkiosk-${tag}-arm64-raspberrypi.img
|
||||||
pigz -4 anotterkiosk-${tag}-arm64-raspberrypi.img
|
pigz -4 n-anotterkiosk-${tag}-arm64-raspberrypi.img
|
90
build_x86.sh
90
build_x86.sh
@ -1,90 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# *sigh*, some docker containers don't seem to have sbin in their PATH
|
|
||||||
export PATH=$PATH:/usr/sbin
|
|
||||||
|
|
||||||
SCRIPT_DIR="$(dirname "$(realpath "$0")")"
|
|
||||||
BUILD_DIR="${SCRIPT_DIR}/work/root/"
|
|
||||||
|
|
||||||
# cleanup any previous build attempts
|
|
||||||
umount -fl "${BUILD_DIR}" || true
|
|
||||||
rm -rf "${BUILD_DIR}" || true
|
|
||||||
mkdir -p "${BUILD_DIR}"
|
|
||||||
rm x86kiosk.img || true
|
|
||||||
|
|
||||||
truncate -s 10G x86kiosk.img
|
|
||||||
|
|
||||||
PARTLAYOUT=$(cat <<-END
|
|
||||||
label: gpt
|
|
||||||
label-id: 3BC7D7CD-4BF8-4E92-AAEB-2ACD5F8D05AA
|
|
||||||
device: x86kiosk.img
|
|
||||||
unit: sectors
|
|
||||||
first-lba: 34
|
|
||||||
last-lba: 20971486
|
|
||||||
sector-size: 512
|
|
||||||
|
|
||||||
x86kiosk.img1 : start= 2048, size= 2095105, type=EBD0A0A2-B9E5-4433-87C0-68B6B72699C7, uuid=9C99F1BB-11A8-4BB5-82C2-555D7A38F85C, name="EFI system partition"
|
|
||||||
x86kiosk.img2 : start= 2099200, size= 18870272, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=93A9AB2C-BC29-4C6C-B6DD-1B4EDDED9A1E, name="Linux filesystem"
|
|
||||||
END
|
|
||||||
)
|
|
||||||
echo "${PARTLAYOUT}" | sfdisk x86kiosk.img
|
|
||||||
|
|
||||||
# Setup loop device for x86 image (with partition scanning)
|
|
||||||
ld=$(sudo losetup -P --show -f x86kiosk.img)
|
|
||||||
|
|
||||||
# Create filesystems
|
|
||||||
sudo mkfs.ext4 "${ld}p2"
|
|
||||||
sudo mkfs.fat -F 32 "${ld}p1"
|
|
||||||
|
|
||||||
# Mount partitions
|
|
||||||
sudo mount "${ld}p2" "${BUILD_DIR}"
|
|
||||||
sudo mkdir "${BUILD_DIR}/boot"
|
|
||||||
sudo mount "${ld}p1" "${BUILD_DIR}/boot"
|
|
||||||
|
|
||||||
# Debootstrap debian
|
|
||||||
sudo debootstrap --include=linux-image-amd64,grub-efi,sudo --arch amd64 bookworm "${BUILD_DIR}" http://deb.debian.org/debian/
|
|
||||||
|
|
||||||
# Copy the skeleton files
|
|
||||||
sudo rsync -a "${SCRIPT_DIR}/x86_skeleton/." "${BUILD_DIR}"
|
|
||||||
sudo rsync -a "${SCRIPT_DIR}/kiosk_skeleton/." "${BUILD_DIR}/kiosk_skeleton"
|
|
||||||
|
|
||||||
# Create fstab
|
|
||||||
fat_uuid=$(lsblk -no UUID "${ld}p1")
|
|
||||||
ext_uuid=$(lsblk -no UUID "${ld}p2")
|
|
||||||
|
|
||||||
echo "UUID=${fat_uuid} /boot vfat rw,defaults 0 2" | sudo tee "${BUILD_DIR}/etc/fstab"
|
|
||||||
echo "UUID=${ext_uuid} / ext4 rw,defaults,noatime 0 1" | sudo tee -a "${BUILD_DIR}/etc/fstab"
|
|
||||||
|
|
||||||
# Include git repo version info
|
|
||||||
echo -n "AnotterKiosk x86 version: " > "${BUILD_DIR}/version-info"
|
|
||||||
git describe --abbrev=4 --dirty --always --tags >> "${BUILD_DIR}/version-info"
|
|
||||||
|
|
||||||
# Mount system partitions (from the build host)
|
|
||||||
sudo mount proc -t proc -o nosuid,noexec,nodev "${BUILD_DIR}/proc/"
|
|
||||||
sudo mount sys -t sysfs -o nosuid,noexec,nodev,ro "${BUILD_DIR}/sys/"
|
|
||||||
sudo mount devpts -t devtmpfs -o mode=0755,nosuid "${BUILD_DIR}/dev/"
|
|
||||||
|
|
||||||
# and then actually install everything.
|
|
||||||
sudo chroot "${BUILD_DIR}" /setup.sh
|
|
||||||
sudo chroot "${BUILD_DIR}" /kiosk_skeleton/build.sh
|
|
||||||
|
|
||||||
sudo rm -r "${BUILD_DIR}/kiosk_skeleton"
|
|
||||||
|
|
||||||
cp "${BUILD_DIR}/version-info" version-info
|
|
||||||
|
|
||||||
sudo umount -fl "${BUILD_DIR}/proc"
|
|
||||||
sudo umount -fl "${BUILD_DIR}/sys"
|
|
||||||
sudo umount -fl "${BUILD_DIR}/dev"
|
|
||||||
|
|
||||||
sudo umount "${BUILD_DIR}/proc"
|
|
||||||
sudo umount "${BUILD_DIR}/sys"
|
|
||||||
sudo umount "${BUILD_DIR}/dev"
|
|
||||||
|
|
||||||
sudo umount "${BUILD_DIR}/boot"
|
|
||||||
sudo umount "${BUILD_DIR}"
|
|
||||||
|
|
||||||
sudo losetup -D "${ld}"
|
|
||||||
|
|
||||||
tag=$(git describe --abbrev=4 --dirty --always --tags)
|
|
||||||
mv x86kiosk.img anotterkiosk-${tag}-x86.img
|
|
||||||
pigz -4 anotterkiosk-${tag}-x86.img
|
|
@ -81,6 +81,7 @@ systemctl enable ssh
|
|||||||
systemctl enable kiosk-sechedule-screen.service
|
systemctl enable kiosk-sechedule-screen.service
|
||||||
systemctl enable schedule-reboot.service
|
systemctl enable schedule-reboot.service
|
||||||
systemctl enable setup-refresh-timer.service
|
systemctl enable setup-refresh-timer.service
|
||||||
|
systemctl enable hyperiond
|
||||||
|
|
||||||
# Install Hyperion
|
# Install Hyperion
|
||||||
curl -sSL https://apt.hyperion-project.org/hyperion.pub.key | gpg --dearmor -o /usr/share/keyrings/hyperion.pub.gpg
|
curl -sSL https://apt.hyperion-project.org/hyperion.pub.key | gpg --dearmor -o /usr/share/keyrings/hyperion.pub.gpg
|
||||||
@ -88,6 +89,13 @@ echo "deb [signed-by=/usr/share/keyrings/hyperion.pub.gpg] https://apt.hyperion-
|
|||||||
apt update
|
apt update
|
||||||
apt install -y hyperion
|
apt install -y hyperion
|
||||||
|
|
||||||
|
# Run Hyperion as the 'pi' user
|
||||||
|
mkdir -p /etc/systemd/system/hyperiond.service.d
|
||||||
|
echo -e "[Service]\nUser=pi\nGroup=pi" > /etc/systemd/system/hyperiond.service.d/override.conf
|
||||||
|
chown -R pi:pi /var/lib/hyperion || true
|
||||||
|
chown -R pi:pi /etc/hyperion
|
||||||
|
usermod -a -G video pi
|
||||||
|
|
||||||
# generate a version info/build info file
|
# generate a version info/build info file
|
||||||
echo -n "Chromium version: " >> /version-info
|
echo -n "Chromium version: " >> /version-info
|
||||||
dpkg --list | grep "ii chromium " >> /version-info
|
dpkg --list | grep "ii chromium " >> /version-info
|
||||||
|
@ -1,22 +0,0 @@
|
|||||||
{
|
|
||||||
"general": {
|
|
||||||
"name": "AnotterKiosk"
|
|
||||||
},
|
|
||||||
"grabber": {
|
|
||||||
"type": "framebuffer",
|
|
||||||
"device": "/dev/fb0",
|
|
||||||
"pixelformat": "rgb24"
|
|
||||||
},
|
|
||||||
"leds": [
|
|
||||||
{
|
|
||||||
"type": "ws281x",
|
|
||||||
"gpio": 18,
|
|
||||||
"dmanum": 10,
|
|
||||||
"freq": 800000,
|
|
||||||
"leds": 256,
|
|
||||||
"rewriteTime": 1000,
|
|
||||||
"rgbw": false,
|
|
||||||
"strip": "GRB"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
@ -1,2 +1,2 @@
|
|||||||
AnotterKiosk \n \l
|
N-AnotterKiosk \n \l
|
||||||
|
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
Welcome to AnotterKiosk!
|
Welcome to N-AnotterKiosk!
|
||||||
Run "mount -o remount,rw /" to make the root filesystem writeable.
|
|
||||||
FAT32 / config partition is located in /boot.
|
FAT32 / config partition is located in /boot.
|
||||||
|
@ -1,10 +0,0 @@
|
|||||||
deb http://deb.debian.org/debian bookworm main
|
|
||||||
deb-src http://deb.debian.org/debian bookworm main
|
|
||||||
|
|
||||||
deb http://deb.debian.org/debian-security/ bookworm-security main
|
|
||||||
deb-src http://deb.debian.org/debian-security/ bookworm-security main
|
|
||||||
|
|
||||||
deb http://deb.debian.org/debian bookworm-updates main
|
|
||||||
deb-src http://deb.debian.org/debian bookworm-updates main
|
|
||||||
|
|
||||||
deb http://deb.debian.org/debian bookworm-backports main
|
|
@ -1 +0,0 @@
|
|||||||
GRUB_DISTRIBUTOR="AnotterKiosk"
|
|
@ -1,26 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
apt update
|
|
||||||
# make sure we have all updates installed (from the -updates and -security repos)
|
|
||||||
APT_LISTCHANGES_FRONTEND=none DEBIAN_FRONTEND=noninteractive apt -o Dpkg::Options::="--force-confold" -f -y dist-upgrade
|
|
||||||
APT_LISTCHANGES_FRONTEND=none DEBIAN_FRONTEND=noninteractive apt install -f -y -t bookworm-backports linux-image-amd64
|
|
||||||
# to remove old kernel versions
|
|
||||||
apt --purge autoremove
|
|
||||||
apt install -y polkitd locales zstd dhcpcd wpasupplicant xserver-xorg-video-nouveau
|
|
||||||
locale-gen en_US.UTF-8
|
|
||||||
|
|
||||||
apt install -y firmware-amd-graphics firmware-iwlwifi firmware-brcm80211 firmware-atheros firmware-misc-nonfree firmware-realtek firmware-ath9k-htc
|
|
||||||
|
|
||||||
echo "grub-efi-amd64 grub2/force_efi_extra_removable boolean true" | debconf-set-selections
|
|
||||||
update-grub
|
|
||||||
grub-install --target=x86_64-efi --efi-directory=/boot --removable --bootloader-id=AnotterKiosk
|
|
||||||
|
|
||||||
useradd -U -m -s /bin/bash -u 1000 -G audio,video,users,input,adm,dialout,plugdev,render pi
|
|
||||||
|
|
||||||
systemctl enable dhcpcd
|
|
||||||
|
|
||||||
rm /etc/resolv.conf
|
|
||||||
echo "nameserver 8.8.8.8" > /etc/resolv.conf
|
|
||||||
echo "nameserver 2001:4860:4860::8888" >> /etc/resolv.conf
|
|
||||||
echo "nameserver 8.8.4.4" >> /etc/resolv.conf
|
|
||||||
echo "nameserver 2001:4860:4860::8844" >> /etc/resolv.conf
|
|
Loading…
x
Reference in New Issue
Block a user