Ventoy/LiveCDGUI/VTOY/init
2021-09-29 19:26:50 +08:00

99 lines
3.0 KiB
Bash

#!/bin/sh
#
# Porteus Kiosk initialization script.
# Author: T.Jokiel <http://porteus-kiosk.org>
#
# 2021 longpanda admin@ventoy.net
#
/bin/busybox --install -s
mount -nt proc proc /proc
grep -q -w debug /proc/cmdline || { echo 0 >/proc/sys/kernel/printk 2>/dev/null; clear; }
mount -nt sysfs sysfs /sys
mount -nt devtmpfs none /dev
mkdir -p /dev/shm; chmod 1777 /dev/shm
grep -q -w debug /proc/cmdline && touch /tmp/lspci || quiet=yes
# Use memory as aufs
mount -nt tmpfs -o size=75% tmpfs /memory
mkdir -p /memory/xino /memory/changes /memory/images /memory/copy2ram
# Setup aufs
mount -nt aufs -o nowarn_perm,xino=/memory/xino/.aufs.xino,br:/memory/changes=rw aufs /union
#Draw background
if [ -z "$quiet" ]; then
echo "##################################################"
echo "Starting Ventoy Live GUI <https://www.ventoy.net>"
echo "##################################################"
else
mkdir -p /lib /opt/000 /opt/001; lspci >/tmp/lspci
mount -o loop /000-kernel.xzm /opt/000
mount -o loop /001-core.xzm /opt/001
[ `uname -m` = x86_64 ] && prefix="-x86-64"
ln -sf /opt/000/lib/firmware /lib/firmware
ln -sf /opt/000/lib/modules /lib/modules
ln -sf /opt/001/lib64/libc.so.6 /lib/libc.so.6
ln -sf /opt/001/lib64/ld-linux"$prefix".so.2 /lib/ld-linux"$prefix".so.2
ln -s /opt/001/bin/kmod /bin/modprobe
vga=`lspci | grep 0300: | head -n1 | cut -d: -f3-4 | sed s/:/d0000/g`; [ "$vga" ] && driver="$(grep -i $vga /lib/modules/`uname -r`/modules.alias 2>/dev/null | head -n1 | rev | cut -d" " -f1 | rev)"
# Nvidia quirk:
[ "$driver" ] || { lspci | grep 0300: | head -n1 | cut -d: -f3 | grep -q "10de" && driver=nouveau; }
# VirtualBox quirk:
[ "$driver" = vboxvideo ] || modprobe $driver 2>/dev/null
test -e /dev/fb0 || { cp /opt/001/sbin/v86d /sbin; modprobe uvesafb mode_option=1024x768-32; }
if test -e /dev/fb0; then
rm -r /lib; ln -sf /opt/001/lib64 /lib; ln -sf /opt/001/usr/lib64 /usr/lib
/opt/001/usr/bin/fbv -a -c -u -i -k -e -r /VTOY/background.png 2>/dev/null &
fi
fi
cp -a /*.xzm /memory/copy2ram/
# Populate aufs with modules:
for x in `ls -1 /memory/copy2ram/ | grep \\.xzm$`; do
mkdir -p /memory/images/$x
mount -nt squashfs -o loop /memory/copy2ram/$x /memory/images/$x 2>/dev/null
if [ $? -eq 0 ]; then
mount -no remount,add:1:/memory/images/$x=rr aufs /union
fi
done
#clean
if [ -n "$quiet" ]; then
while [ "`pidof fbv`" ]; do
usleep 500000
done
umount /opt/000 /opt/001 2>/dev/null
rm -r /lib
fi
mkdir -p /union/opt/scripts/
echo 123 > /union/opt/scripts/extras
rm -f /union/lib64/udev/rules.d/10-kiosk-auto_mount.rules
cp -a /VTOY/autostart /union/etc/xdg/openbox/autostart
cp -a /VTOY/*.png /union/ventoy/
cp -a /bin/busybox /union/bin; ln -sf /union/lib /lib
cp -a /VTOY/wallpaper.png /union/usr/share/wallpapers/ 2>/dev/null
#to suppress error message
mkdir -p /mnt/fake/docs
echo 11 > /mnt/fake/docs/kiosk.sgn
# swith_root
exec /sbin/switch_root /union /sbin/init