make rootfs read-only
Signed-off-by: Michel-FK <michel.stempin@funkey-project.com>
This commit is contained in:
parent
79a7be9716
commit
fd6ab2ce4c
|
@ -0,0 +1 @@
|
||||||
|
/tmp
|
|
@ -1,5 +1,5 @@
|
||||||
# <file system> <mount pt> <type> <options> <dump> <pass>
|
# <file system> <mount pt> <type> <options> <dump> <pass>
|
||||||
/dev/root / ext2 rw,noauto 0 1
|
/dev/root / ext2 ro,noauto 0 1
|
||||||
proc /proc proc defaults 0 0
|
proc /proc proc defaults 0 0
|
||||||
devpts /dev/pts devpts defaults,gid=5,mode=620,ptmxmode=0666 0 0
|
devpts /dev/pts devpts defaults,gid=5,mode=620,ptmxmode=0666 0 0
|
||||||
tmpfs /dev/shm tmpfs mode=0777 0 0
|
tmpfs /dev/shm tmpfs mode=0777 0 0
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
# Startup the system
|
# Startup the system
|
||||||
::sysinit:/bin/cat /etc/issue
|
::sysinit:/bin/cat /etc/issue
|
||||||
::sysinit:/bin/mount -t proc proc /proc
|
::sysinit:/bin/mount -t proc proc /proc
|
||||||
::sysinit:/bin/mount -o remount,rw /
|
#::sysinit:/bin/mount -o remount,rw /
|
||||||
::sysinit:/bin/mkdir -p /dev/pts /dev/shm
|
::sysinit:/bin/mkdir -p /dev/pts /dev/shm
|
||||||
::sysinit:/bin/mount -a
|
::sysinit:/bin/mount -a
|
||||||
::sysinit:/sbin/swapon -a
|
::sysinit:/sbin/swapon -a
|
||||||
|
|
|
@ -11,8 +11,4 @@
|
||||||
#
|
#
|
||||||
# By default this script does nothing.
|
# By default this script does nothing.
|
||||||
|
|
||||||
# Incremental upgrades, blocking process #
|
|
||||||
#notif_set 0 "upgrade"
|
|
||||||
#upgrade_fk_incremental
|
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
args_mmc=setenv bootargs console=ttyS0,115200 panic=5 rootwait fbcon=map:10 fbcon=font:VGA8x8 vt.global_cursor_default=0 root=/dev/mmcblk0p${bootpart} rootfstype=ext4 rootflags=commit=120,data=writeback,barrier=0,journal_async_commit ${rw} quiet
|
args_mmc=setenv bootargs console=ttyS0,115200 panic=5 rootwait fbcon=map:10 fbcon=font:VGA8x8 vt.global_cursor_default=0 root=/dev/mmcblk0p${bootpart} rootfstype=ext4 rootflags=commit=120,data=writeback,barrier=0,journal_async_commit ro quiet
|
||||||
baudrate=115200
|
baudrate=115200
|
||||||
bootcmd=run getbootpart; run check_keys; if test ${found} = 1; then setenv bootpart 1; fi; run args_mmc; run loadfdt; run loadimage; bootz ${loadaddr} - ${fdtaddr}
|
bootcmd=run getbootpart; run check_keys; if test ${found} = 1; then setenv bootpart 1; fi; run args_mmc; run loadfdt; run loadimage; bootz ${loadaddr} - ${fdtaddr}
|
||||||
bootdelay=0
|
bootdelay=0
|
||||||
check_keys=run set_pullups; setenv found 0; setenv timeout ${delay}; while test ${timeout} > 0; do run read_keys; if test ${keys} = f83f; then setenv found 1; setenv timeout 0; setenv rw ro; else setexpr timeout ${timeout} - 1; fi; done
|
check_keys=run set_pullups; setenv found 0; setenv timeout ${delay}; while test ${timeout} > 0; do run read_keys; if test ${keys} = f83f; then setenv found 1; setenv timeout 0; else setexpr timeout ${timeout} - 1; fi; done
|
||||||
console=ttyS0,115200
|
console=ttyS0,115200
|
||||||
delay=1
|
delay=1
|
||||||
fdt_high=0xffffffff
|
fdt_high=0xffffffff
|
||||||
|
@ -12,7 +12,6 @@ loadaddr=0x41000000
|
||||||
loadfdt=load mmc 0:${bootpart} ${fdtaddr} /boot/sun8i-v3s-funkey.dtb
|
loadfdt=load mmc 0:${bootpart} ${fdtaddr} /boot/sun8i-v3s-funkey.dtb
|
||||||
loadimage=load mmc 0:${bootpart} ${loadaddr} /boot/zImage
|
loadimage=load mmc 0:${bootpart} ${loadaddr} /boot/zImage
|
||||||
read_keys=i2c read 20 0 2 1c20500; setexpr.w keys *1c20500
|
read_keys=i2c read 20 0 2 1c20500; setexpr.w keys *1c20500
|
||||||
rw=rw
|
|
||||||
set_pullups=i2c mw 20 46 df; i2c mw 20 47 f8
|
set_pullups=i2c mw 20 46 df; i2c mw 20 47 f8
|
||||||
stderr=serial@01c28000
|
stderr=serial@01c28000
|
||||||
stdin=serial@01c28000
|
stdin=serial@01c28000
|
||||||
|
|
|
@ -1,263 +0,0 @@
|
||||||
[1970-01-01 02:07:39] [INFO] [RetroFE] Version 0.8.18 starting
|
|
||||||
[1970-01-01 02:07:39] [INFO] [RetroFE] OS: Linux
|
|
||||||
[1970-01-01 02:07:39] [INFO] [RetroFE] Absolute path: /root/RetroFE
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Importing "/root/RetroFE/settings.conf"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "fullscreen" = "yes"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "showFrame" = "no"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "horizontal" = "240"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "vertical" = "240"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "layout" = "FunKey Style"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "hideMouse" = "yes"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "showParenthesis" = "no"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "showSquareBrackets" = "no"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "firstCollection" = "Main"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "autoFavorites" = "false"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "rememberMenu" = "true"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "videoEnable" = "no"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "videoLoop" = "0"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "fileUsbConnected" = "/sys/class/power_supply/axp20x-usb/present"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "fileBatCapacity" = "/etc/current_battery_percentage"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "fileBatConnected" = "/sys/class/power_supply/axp20x-battery/present"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "exitOnFirstPageBack" = "no"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "initMetaDb" = "no"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "initInBackground" = "no"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "attractModeTime" = "0"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "rememberMenu" = "yes"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collectionInputClear" = "true"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "minimize_on_focus_loss" = "no"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "unloadSDL" = "true"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "baseItemPath" = "/mnt"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Importing layouts from "/root/RetroFE/layouts/layouts.list"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump layouts: "/root/RetroFE/layouts/FunKey Style"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump layouts: "/root/RetroFE/layouts/Classic"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Importing layouts from "/mnt/themes/themes.list"
|
|
||||||
[1970-01-01 02:07:39] [ERROR] [Configuration] Could not open /mnt/themes/themes.list"
|
|
||||||
[1970-01-01 02:07:39] [ERROR] [RetroFE] Could not import "/mnt/themes/themes.list"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Importing layouts from "/root/RetroFE/layout.conf"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Found layout: "/root/RetroFE/layouts/Classic" in layouts list at idx 1
|
|
||||||
[1970-01-01 02:07:39] [INFO] [RetroFE] Could not read directory "/root/RetroFE/launchers.linux"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Importing "/root/RetroFE/launchers/wonderswan.conf"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "launchers.wonderswan.executable" = "%RETROFE_PATH%/launchers/wonderswan_launch.sh"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "launchers.wonderswan.arguments" = ""%ITEM_FILEPATH%""
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Importing "/root/RetroFE/launchers/megadrive.conf"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "launchers.megadrive.executable" = "%RETROFE_PATH%/launchers/megadrive_launch.sh"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "launchers.megadrive.arguments" = ""%ITEM_FILEPATH%""
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Importing "/root/RetroFE/launchers/mame.conf"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "launchers.mame.executable" = "%RETROFE_PATH%/launchers/mame_launch_mednafen.sh"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "launchers.mame.arguments" = ""%ITEM_FILEPATH%""
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Importing "/root/RetroFE/launchers/ngp.conf"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "launchers.ngp.executable" = "%RETROFE_PATH%/launchers/ngp_launch.sh"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "launchers.ngp.arguments" = ""%ITEM_FILEPATH%""
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Importing "/root/RetroFE/launchers/sms.conf"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "launchers.sms.executable" = "%RETROFE_PATH%/launchers/sms_launch.sh"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "launchers.sms.arguments" = ""%ITEM_FILEPATH%""
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Importing "/root/RetroFE/launchers/gba.conf"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "launchers.gba.executable" = "%RETROFE_PATH%/launchers/gba_launch_gpsp.sh"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "launchers.gba.arguments" = ""%ITEM_FILEPATH%""
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Importing "/root/RetroFE/launchers/lynx.conf"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "launchers.lynx.executable" = "%RETROFE_PATH%/launchers/lynx_launch.sh"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "launchers.lynx.arguments" = ""%ITEM_FILEPATH%""
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Importing "/root/RetroFE/launchers/Main.conf"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "launchers.Main.executable" = "%ITEM_FILEPATH%"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "launchers.Main.arguments" = ""
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Importing "/root/RetroFE/launchers/NES.conf"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "launchers.NES.executable" = "%RETROFE_PATH%/launchers/nes_launch_mednafen.sh"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "launchers.NES.arguments" = ""%ITEM_FILEPATH%""
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Importing "/root/RetroFE/launchers/gameboy.conf"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "launchers.gameboy.executable" = "%RETROFE_PATH%/launchers/gb_launch.sh"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "launchers.gameboy.arguments" = ""%ITEM_FILEPATH%""
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Importing "/root/RetroFE/launchers/gamegear.conf"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "launchers.gamegear.executable" = "%RETROFE_PATH%/launchers/gamegear_launch.sh"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "launchers.gamegear.arguments" = ""%ITEM_FILEPATH%""
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Importing "/root/RetroFE/launchers/psone.conf"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "launchers.psone.executable" = "%RETROFE_PATH%/launchers/psone_launch_pcsx.sh"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "launchers.psone.arguments" = ""%ITEM_FILEPATH%""
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Importing "/root/RetroFE/launchers/snes.conf"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "launchers.snes.executable" = "%RETROFE_PATH%/launchers/snes_launch.sh"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "launchers.snes.arguments" = ""%ITEM_FILEPATH%""
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Importing "/root/RetroFE/collections/Sega Master System/info.conf"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Sega Master System.lb_manufacturer" = "Manufacturer"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Sega Master System.lb_type" = "Type"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Sega Master System.lb_generation" = "Generation"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Sega Master System.lb_year" = "Year"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Sega Master System.lb_media" = "Media"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Sega Master System.lb_cpu" = "CPU"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Sega Master System.manufacturer" = "Sega"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Sega Master System.type" = "Video Game Console"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Sega Master System.generation" = "Fourth Generation"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Sega Master System.year" = "1988 (Japan), 1989 (NA), 1990 (EU)"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Sega Master System.media" = "Cartridge"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Sega Master System.cpu" = "Motorola 68000, Zilog Z80"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Importing "/root/RetroFE/collections/Sega Master System/settings.conf"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Sega Master System.list.path" = "%BASE_ITEM_PATH%/Sega Master System"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Sega Master System.list.includeMissingItems" = "true"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Sega Master System.list.extensions" = "zip,sms"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Sega Master System.list.menuSort" = "true"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Sega Master System.launcher" = "sms"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Sega Master System.media.artwork_front" = "%BASE_ITEM_PATH%/Sega Master System"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Importing "/root/RetroFE/collections/Game Gear/info.conf"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Could not open /root/RetroFE/collections/Game Gear/info.conf"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Importing "/root/RetroFE/collections/Game Gear/settings.conf"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Game Gear.list.path" = "%BASE_ITEM_PATH%/Game Gear"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Game Gear.list.includeMissingItems" = "false"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Game Gear.list.extensions" = "zip,gg"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Game Gear.list.menuSort" = "yes"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Game Gear.launcher" = "gamegear"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Game Gear.media.artwork_front" = "%BASE_ITEM_PATH%/Game Gear"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Importing "/root/RetroFE/collections/NES/info.conf"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Could not open /root/RetroFE/collections/NES/info.conf"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Importing "/root/RetroFE/collections/NES/settings.conf"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.NES.list.path" = "%BASE_ITEM_PATH%/NES"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.NES.list.includeMissingItems" = "false"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.NES.list.extensions" = "nes"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.NES.list.menuSort" = "yes"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.NES.launcher" = "NES"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.NES.media.artwork_front" = "%BASE_ITEM_PATH%/NES"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Importing "/root/RetroFE/collections/WonderSwan/info.conf"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Could not open /root/RetroFE/collections/WonderSwan/info.conf"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Importing "/root/RetroFE/collections/WonderSwan/settings.conf"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.WonderSwan.list.path" = "%BASE_ITEM_PATH%/WonderSwan"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.WonderSwan.list.includeMissingItems" = "false"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.WonderSwan.list.extensions" = "zip,wsc"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.WonderSwan.list.menuSort" = "yes"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.WonderSwan.launcher" = "wonderswan"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.WonderSwan.media.artwork_front" = "%BASE_ITEM_PATH%/WonderSwan"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Importing "/root/RetroFE/collections/Game Boy Advance/info.conf"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Could not open /root/RetroFE/collections/Game Boy Advance/info.conf"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Importing "/root/RetroFE/collections/Game Boy Advance/settings.conf"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Game Boy Advance.list.path" = "%BASE_ITEM_PATH%/Game Boy Advance"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Game Boy Advance.list.includeMissingItems" = "false"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Game Boy Advance.list.extensions" = "gba"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Game Boy Advance.list.menuSort" = "yes"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Game Boy Advance.launcher" = "gba"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Game Boy Advance.media.artwork_front" = "%BASE_ITEM_PATH%/Game Boy Advance"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Importing "/root/RetroFE/collections/Game Boy/info.conf"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Could not open /root/RetroFE/collections/Game Boy/info.conf"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Importing "/root/RetroFE/collections/Game Boy/settings.conf"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Game Boy.list.path" = "%BASE_ITEM_PATH%/Game Boy"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Game Boy.list.includeMissingItems" = "false"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Game Boy.list.extensions" = "gb,gbc"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Game Boy.list.menuSort" = "yes"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Game Boy.launcher" = "gameboy"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Game Boy.media.artwork_front" = "%BASE_ITEM_PATH%/Game Boy"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Importing "/root/RetroFE/collections/Neo Geo Pocket/info.conf"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Could not open /root/RetroFE/collections/Neo Geo Pocket/info.conf"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Importing "/root/RetroFE/collections/Neo Geo Pocket/settings.conf"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Neo Geo Pocket.list.path" = "%BASE_ITEM_PATH%/Neo Geo Pocket"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Neo Geo Pocket.list.includeMissingItems" = "false"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Neo Geo Pocket.list.extensions" = "zip,ngp"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Neo Geo Pocket.list.menuSort" = "yes"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Neo Geo Pocket.launcher" = "ngp"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Neo Geo Pocket.media.artwork_front" = "%BASE_ITEM_PATH%/Neo Geo Pocket"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Importing "/root/RetroFE/collections/Main/info.conf"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Could not open /root/RetroFE/collections/Main/info.conf"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Importing "/root/RetroFE/collections/Main/settings.conf"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Main.list.extensions" = "exe,bat,sh"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Main.list.menuSort" = "yes"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Main.launcher" = "Main"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Importing "/root/RetroFE/collections/SNES/info.conf"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Could not open /root/RetroFE/collections/SNES/info.conf"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Importing "/root/RetroFE/collections/SNES/settings.conf"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.SNES.list.path" = "%BASE_ITEM_PATH%/SNES"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.SNES.list.includeMissingItems" = "false"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.SNES.list.extensions" = "sfc"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.SNES.list.menuSort" = "yes"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.SNES.launcher" = "snes"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.SNES.media.artwork_front" = "%BASE_ITEM_PATH%/SNES"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Importing "/root/RetroFE/collections/Sega Genesis/info.conf"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Sega Genesis.lb_manufacturer" = "Manufacturer"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Sega Genesis.lb_type" = "Type"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Sega Genesis.lb_generation" = "Generation"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Sega Genesis.lb_year" = "Year"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Sega Genesis.lb_media" = "Media"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Sega Genesis.lb_cpu" = "CPU"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Sega Genesis.manufacturer" = "Sega"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Sega Genesis.type" = "Video Game Console"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Sega Genesis.generation" = "Fourth Generation"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Sega Genesis.year" = "1988 (Japan), 1989 (NA), 1990 (EU)"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Sega Genesis.media" = "Cartridge"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Sega Genesis.cpu" = "Motorola 68000, Zilog Z80"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Importing "/root/RetroFE/collections/Sega Genesis/settings.conf"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Sega Genesis.list.path" = "%BASE_ITEM_PATH%/Sega Genesis"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Sega Genesis.list.includeMissingItems" = "true"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Sega Genesis.list.extensions" = "zip,md"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Sega Genesis.list.menuSort" = "true"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Sega Genesis.launcher" = "megadrive"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Sega Genesis.media.artwork_front" = "%BASE_ITEM_PATH%/Sega Genesis"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Importing "/root/RetroFE/collections/PS1/info.conf"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Could not open /root/RetroFE/collections/PS1/info.conf"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Importing "/root/RetroFE/collections/PS1/settings.conf"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.PS1.list.path" = "%BASE_ITEM_PATH%/PS1"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.PS1.list.includeMissingItems" = "false"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.PS1.list.extensions" = "bin,cue"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.PS1.list.menuSort" = "yes"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.PS1.launcher" = "psone"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.PS1.media.artwork_front" = "%BASE_ITEM_PATH%/PS1"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Importing "/root/RetroFE/collections/Atari lynx/info.conf"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Could not open /root/RetroFE/collections/Atari lynx/info.conf"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Importing "/root/RetroFE/collections/Atari lynx/settings.conf"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Atari lynx.list.path" = "%BASE_ITEM_PATH%/Atari lynx"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Atari lynx.list.includeMissingItems" = "false"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Atari lynx.list.extensions" = "zip,lnx"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Atari lynx.list.menuSort" = "yes"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Atari lynx.launcher" = "lynx"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [Configuration] Dump: "collections.Atari lynx.media.artwork_front" = "%BASE_ITEM_PATH%/Atari lynx"
|
|
||||||
[1970-01-01 02:07:39] [INFO] [RetroFE] Imported configuration
|
|
||||||
[1970-01-01 02:07:39] [INFO] [SDL] Initializing
|
|
||||||
[1970-01-01 02:07:39] [INFO] [SDL] Creating 240x240 window (fullscreen: yes)
|
|
||||||
[1970-01-01 02:07:40] [INFO] [Configuration] Importing "/root/RetroFE/controls.conf"
|
|
||||||
[1970-01-01 02:07:40] [INFO] [Configuration] Dump: "controls.up" = "Up, U"
|
|
||||||
[1970-01-01 02:07:40] [INFO] [Configuration] Dump: "controls.down" = "Down, D"
|
|
||||||
[1970-01-01 02:07:40] [INFO] [Configuration] Dump: "controls.left" = "Left, L"
|
|
||||||
[1970-01-01 02:07:40] [INFO] [Configuration] Dump: "controls.right" = "Right, R"
|
|
||||||
[1970-01-01 02:07:40] [INFO] [Configuration] Dump: "controls.pageUp" = "PageDown"
|
|
||||||
[1970-01-01 02:07:40] [INFO] [Configuration] Dump: "controls.pageDown" = "PageUp"
|
|
||||||
[1970-01-01 02:07:40] [INFO] [Configuration] Dump: "controls.letterUp" = "M"
|
|
||||||
[1970-01-01 02:07:40] [INFO] [Configuration] Dump: "controls.letterDown" = "N"
|
|
||||||
[1970-01-01 02:07:40] [INFO] [Configuration] Dump: "controls.favPlaylist" = "F3"
|
|
||||||
[1970-01-01 02:07:40] [INFO] [Configuration] Dump: "controls.nextPlaylist" = "F2"
|
|
||||||
[1970-01-01 02:07:40] [INFO] [Configuration] Dump: "controls.prevPlaylist" = "F1"
|
|
||||||
[1970-01-01 02:07:40] [INFO] [Configuration] Dump: "controls.addPlaylist" = "I"
|
|
||||||
[1970-01-01 02:07:40] [INFO] [Configuration] Dump: "controls.removePlaylist" = "O"
|
|
||||||
[1970-01-01 02:07:40] [INFO] [Configuration] Dump: "controls.random" = "G"
|
|
||||||
[1970-01-01 02:07:40] [INFO] [Configuration] Dump: "controls.select" = "Return, A"
|
|
||||||
[1970-01-01 02:07:40] [INFO] [Configuration] Dump: "controls.menu" = "Q"
|
|
||||||
[1970-01-01 02:07:40] [INFO] [Configuration] Dump: "controls.back" = "B"
|
|
||||||
[1970-01-01 02:07:40] [INFO] [Configuration] Dump: "controls.quit" = "Escape"
|
|
||||||
[1970-01-01 02:07:40] [INFO] [Layout] Initializing /root/RetroFE/layouts/Classic/splash.xml
|
|
||||||
[1970-01-01 02:07:40] [INFO] [RetroFE] Initializing
|
|
||||||
[1970-01-01 02:07:40] [INFO] [Input] Binding key controls.pageDown, Key Value: 280
|
|
||||||
[1970-01-01 02:07:40] [INFO] [Input] Binding key controls.pageUp, Key Value: 281
|
|
||||||
[1970-01-01 02:07:40] [INFO] [Input] Binding key controls.letterDown, Key Value: 110
|
|
||||||
[1970-01-01 02:07:40] [INFO] [Input] Binding key controls.letterUp, Key Value: 109
|
|
||||||
[1970-01-01 02:07:40] [INFO] [Input] Binding key controls.favPlaylist, Key Value: 284
|
|
||||||
[1970-01-01 02:07:40] [INFO] [Layout] Layout resolution 240x240 (scale 1x1)
|
|
||||||
[1970-01-01 02:07:40] [INFO] [Input] Binding key controls.nextPlaylist, Key Value: 283
|
|
||||||
[1970-01-01 02:07:40] [INFO] [Input] Binding key controls.prevPlaylist, Key Value: 282
|
|
||||||
[1970-01-01 02:07:40] [INFO] [Input] Binding key controls.addPlaylist, Key Value: 105
|
|
||||||
[1970-01-01 02:07:40] [INFO] [Input] Binding key controls.removePlaylist, Key Value: 111
|
|
||||||
[1970-01-01 02:07:40] [INFO] [Input] Binding key controls.random, Key Value: 103
|
|
||||||
[1970-01-01 02:07:40] [INFO] [Input] Binding key controls.up, Key Value: 273
|
|
||||||
[1970-01-01 02:07:40] [INFO] [Input] Binding key controls.up, Key Value: 117
|
|
||||||
[1970-01-01 02:07:40] [INFO] [Input] Binding key controls.left, Key Value: 276
|
|
||||||
[1970-01-01 02:07:40] [INFO] [Input] Binding key controls.left, Key Value: 108
|
|
||||||
[1970-01-01 02:07:40] [INFO] [Input] Binding key controls.down, Key Value: 274
|
|
||||||
[1970-01-01 02:07:40] [INFO] [Input] Binding key controls.down, Key Value: 100
|
|
||||||
[1970-01-01 02:07:40] [INFO] [Input] Binding key controls.right, Key Value: 275
|
|
||||||
[1970-01-01 02:07:40] [INFO] [Input] Binding key controls.right, Key Value: 114
|
|
||||||
[1970-01-01 02:07:40] [INFO] [Input] Binding key controls.select, Key Value: 13
|
|
||||||
[1970-01-01 02:07:40] [INFO] [Input] Binding key controls.select, Key Value: 97
|
|
||||||
[1970-01-01 02:07:40] [INFO] [Input] Binding key controls.back, Key Value: 98
|
|
||||||
[1970-01-01 02:07:40] [INFO] [Input] Binding key controls.quit, Key Value: 27
|
|
||||||
[1970-01-01 02:07:40] [INFO] [Input] Binding key controls.menu, Key Value: 113
|
|
||||||
[1970-01-01 02:07:40] [INFO] [RetroFE] Initialized user controls
|
|
||||||
[1970-01-01 02:07:40] [INFO] [Database] Opened database "/root/RetroFE/meta.db"
|
|
||||||
[1970-01-01 02:07:40] [INFO] [RetroFE] Initialized database
|
|
||||||
[1970-01-01 02:07:40] [INFO] [Layout] Initialized
|
|
||||||
[1970-01-01 02:07:40] [INFO] [Layout] Initializing /root/RetroFE/layouts/Classic/layout.xml
|
|
||||||
[1970-01-01 02:07:40] [INFO] [Layout] Layout resolution 240x240 (scale 1x1)
|
|
||||||
[1970-01-01 02:07:40] [INFO] [Layout] Initialized
|
|
||||||
[1970-01-01 02:07:40] [INFO] [CollectionInfoBuilder] Checking for "/root/RetroFE/collections/Main/include.txt"
|
|
||||||
[1970-01-01 02:07:40] [INFO] [CollectionInfoBuilder] Scanning directory "/mnt/Main"
|
|
||||||
[1970-01-01 02:07:40] [INFO] [CollectionInfoBuilder] Could not read directory "/mnt/Main". Ignore if this is a menu.
|
|
||||||
[1970-01-01 02:07:40] [INFO] [Menu] Found: "/root/RetroFE/collections/Main/menu.txt"
|
|
|
@ -0,0 +1 @@
|
||||||
|
/tmp/retrofe.log
|
|
@ -7,6 +7,8 @@ if [ ! -f ${RUN_FILE} ]; then
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
rw
|
||||||
|
|
||||||
## Lock file
|
## Lock file
|
||||||
LOCK_FILE=/var/lock/assembly_tests.lock
|
LOCK_FILE=/var/lock/assembly_tests.lock
|
||||||
if [ -f ${LOCK_FILE} ]; then
|
if [ -f ${LOCK_FILE} ]; then
|
||||||
|
@ -45,6 +47,7 @@ function function_magnet_detected_ok {
|
||||||
else
|
else
|
||||||
echo "0" > $MAGNET_DETECTED_FILE
|
echo "0" > $MAGNET_DETECTED_FILE
|
||||||
fi
|
fi
|
||||||
|
ro
|
||||||
|
|
||||||
## Clean shutdown
|
## Clean shutdown
|
||||||
echo " Caught SIGUSR1 signal: magnet detected"
|
echo " Caught SIGUSR1 signal: magnet detected"
|
||||||
|
@ -351,6 +354,7 @@ done
|
||||||
|
|
||||||
## Remove lock file
|
## Remove lock file
|
||||||
rm $LOCK_FILE
|
rm $LOCK_FILE
|
||||||
|
ro
|
||||||
|
|
||||||
## Exit processes
|
## Exit processes
|
||||||
if ! $test_failed; then
|
if ! $test_failed; then
|
||||||
|
|
|
@ -11,13 +11,17 @@ fi
|
||||||
|
|
||||||
# Sanity check: File does not exist
|
# Sanity check: File does not exist
|
||||||
if [ ! -f ${BRIGHTNESS_FILE} ]; then
|
if [ ! -f ${BRIGHTNESS_FILE} ]; then
|
||||||
|
rw
|
||||||
echo ${BRIGHTNESS_DEFAULT_VALUE} > ${BRIGHTNESS_FILE}
|
echo ${BRIGHTNESS_DEFAULT_VALUE} > ${BRIGHTNESS_FILE}
|
||||||
|
ro
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Sanity check: Check if integer
|
# Sanity check: Check if integer
|
||||||
brightness=$(cat ${BRIGHTNESS_FILE})
|
brightness=$(cat ${BRIGHTNESS_FILE})
|
||||||
if ! [ ! "${brightness}" -ne "${brightness}" ] 2> /dev/null; then
|
if ! [ ! "${brightness}" -ne "${brightness}" ] 2> /dev/null; then
|
||||||
|
rw
|
||||||
echo ${BRIGHTNESS_DEFAULT_VALUE} > ${BRIGHTNESS_FILE}
|
echo ${BRIGHTNESS_DEFAULT_VALUE} > ${BRIGHTNESS_FILE}
|
||||||
|
ro
|
||||||
brightness=${BRIGHTNESS_DEFAULT_VALUE}
|
brightness=${BRIGHTNESS_DEFAULT_VALUE}
|
||||||
fi
|
fi
|
||||||
echo ${brightness}
|
echo ${brightness}
|
||||||
|
|
|
@ -23,6 +23,8 @@ echo ${value} > ${SYSTEM_BRIGHTNESS}
|
||||||
|
|
||||||
# Set new brightness value in brightness file
|
# Set new brightness value in brightness file
|
||||||
if [ ${?} -eq 0 ]; then
|
if [ ${?} -eq 0 ]; then
|
||||||
|
rw
|
||||||
echo ${brightness_percentage} > ${BRIGHTNESS_FILE}
|
echo ${brightness_percentage} > ${BRIGHTNESS_FILE}
|
||||||
|
ro
|
||||||
fi
|
fi
|
||||||
exit 0
|
exit 0
|
||||||
|
|
|
@ -63,7 +63,9 @@ reload_partition_table () {
|
||||||
}
|
}
|
||||||
|
|
||||||
resize_rootfs_filesystem () {
|
resize_rootfs_filesystem () {
|
||||||
|
rw
|
||||||
resize2fs ${root_part} >/dev/null 2>&1 || die 10 "cannot resize the root filesystem, aborting"
|
resize2fs ${root_part} >/dev/null 2>&1 || die 10 "cannot resize the root filesystem, aborting"
|
||||||
|
ro
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -160,6 +162,8 @@ notif "8/8 Format share partition"
|
||||||
format_backing_store_partition
|
format_backing_store_partition
|
||||||
|
|
||||||
notif "First boot setup finished!"
|
notif "First boot setup finished!"
|
||||||
|
rw
|
||||||
touch /.first_boot
|
touch /.first_boot
|
||||||
|
ro
|
||||||
sleep 1
|
sleep 1
|
||||||
clear_notif
|
clear_notif
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
mount / -o remount,ro
|
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
mount / -o remount,rw
|
|
@ -16,7 +16,9 @@ if [ -f ${QUICK_LOAD_FILE} ]; then
|
||||||
command=$(cat ${QUICK_LOAD_FILE})
|
command=$(cat ${QUICK_LOAD_FILE})
|
||||||
echo "Found quick load file, restarting previous game with command:"
|
echo "Found quick load file, restarting previous game with command:"
|
||||||
echo ${command}
|
echo ${command}
|
||||||
|
rw
|
||||||
rm ${QUICK_LOAD_FILE}
|
rm ${QUICK_LOAD_FILE}
|
||||||
|
ro
|
||||||
eval ${command}
|
eval ${command}
|
||||||
termfix_all
|
termfix_all
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -1,257 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
#########################
|
|
||||||
# Functions declaration #
|
|
||||||
#########################
|
|
||||||
notif_system_corruption () {
|
|
||||||
local time_on_screen=30
|
|
||||||
local reason=""
|
|
||||||
|
|
||||||
if [[ "$#" -ge "1" ]]; then
|
|
||||||
time_on_screen=$1
|
|
||||||
fi
|
|
||||||
if [[ "$#" -ge "2" ]]; then
|
|
||||||
reason=$2
|
|
||||||
fi
|
|
||||||
|
|
||||||
notif_set $time_on_screen "^YOUR SYSTEM IS CORRUPTED:^$reason^^PLEASE REFLASH YOUR SD CARD"
|
|
||||||
}
|
|
||||||
|
|
||||||
exit_with_reason () {
|
|
||||||
local reason=$EXIT_CODE_FAILURE
|
|
||||||
|
|
||||||
# Check args
|
|
||||||
if [[ "$#" -ge "1" ]]; then
|
|
||||||
reason=$1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "EXIT FAILURE $EXIT_CODE_FAILURE, check log file"
|
|
||||||
|
|
||||||
# Remove extraction folder
|
|
||||||
if [[ -d $EXTRACT_DIRECTORY ]]; then
|
|
||||||
echo "Removing extraction directory: $EXTRACT_DIRECTORY" >> $LOG_FILE_UPGRADE
|
|
||||||
rm -rf $EXTRACT_DIRECTORY
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Copy log file to UPGRADE_ARCHIVES_DIRECTORY
|
|
||||||
cp "$LOG_FILE_UPGRADE" "$LOG_FILE_UPGRADE_COPY"
|
|
||||||
|
|
||||||
exit $reason
|
|
||||||
}
|
|
||||||
|
|
||||||
exit_failure () {
|
|
||||||
exit_with_reason $EXIT_CODE_FAILURE
|
|
||||||
}
|
|
||||||
|
|
||||||
get_targz_uncompressed_size () {
|
|
||||||
# check arg
|
|
||||||
if [[ "$#" != "1" ]]; then
|
|
||||||
extracted_size=0
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
extracted_size=$(tar tzvf "$1" | sed 's/ \+/ /g' | cut -f3 -d' ' | sed '2,$s/^/+ /' | paste -sd' ' | bc)
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
################
|
|
||||||
# Exit reasons #
|
|
||||||
################
|
|
||||||
EXIT_CODE_SUCCESS=0
|
|
||||||
EXIT_CODE_FAILURE=1
|
|
||||||
EXIT_CODE_FAILURE_NO_VERSION=2
|
|
||||||
EXIT_CODE_FAILURE_WRONG_VERSION=3
|
|
||||||
EXIT_CODE_FAILURE_WRONG_TAR_GZ=4
|
|
||||||
EXIT_CODE_FAILURE_WRONG_MD5=5
|
|
||||||
EXIT_CODE_FAILURE_WRONG_EXTRACT_SIZE=6
|
|
||||||
EXIT_CODE_FAILURE_NO_SPACE=7
|
|
||||||
EXIT_CODE_FAILURE_EXTRACT_FAILED=8
|
|
||||||
EXIT_CODE_FAILURE_SCRIPT_NOT_FOUND=9
|
|
||||||
|
|
||||||
#####################
|
|
||||||
# Files declaration #
|
|
||||||
#####################
|
|
||||||
FUNKEY_VERSION_FILE="/etc/funkey_version"
|
|
||||||
UPGRADE_ARCHIVES_DIRECTORY="/mnt/"
|
|
||||||
EXTRACT_DIRECTORY=$UPGRADE_ARCHIVES_DIRECTORY/update_tmp
|
|
||||||
LOG_FILES_DIRECTORY="/usr/local/etc/upgrade_logs/"
|
|
||||||
LOG_FILE_UPGRADE="$LOG_FILES_DIRECTORY/upgrade_log_$(date +%m-%d-%y_%T).txt"
|
|
||||||
LOG_FILE_UPGRADE_COPY="$UPGRADE_ARCHIVES_DIRECTORY/upgrade_log.txt"
|
|
||||||
|
|
||||||
####################
|
|
||||||
# Vars declaration #
|
|
||||||
####################
|
|
||||||
upgrade_needed=0
|
|
||||||
upgrade_error=0
|
|
||||||
extracted_size=0
|
|
||||||
|
|
||||||
###################
|
|
||||||
# Process Upgrade #
|
|
||||||
###################
|
|
||||||
# Init log files
|
|
||||||
mkdir -p $LOG_FILES_DIRECTORY
|
|
||||||
echo -e "******* Upgrade Incremental FunKey, $(date) *******\n" > $LOG_FILE_UPGRADE
|
|
||||||
test -f $LOG_FILE_UPGRADE_COPY && rm $LOG_FILE_UPGRADE_COPY
|
|
||||||
|
|
||||||
# Get current FunKey version
|
|
||||||
if [[ -f $FUNKEY_VERSION_FILE ]]; then
|
|
||||||
FUNKEY_VERSION=$(cat $FUNKEY_VERSION_FILE)
|
|
||||||
|
|
||||||
# Check if positive number (float or integer)
|
|
||||||
if [[ "$FUNKEY_VERSION" != ^[+-]?[0-9]*$ ]];then
|
|
||||||
echo "Current FunKey version = $FUNKEY_VERSION" >> $LOG_FILE_UPGRADE
|
|
||||||
elif [[ "$FUNKEY_VERSION" != ^[+-]?[0-9]+\.?[0-9]*$ ]];then
|
|
||||||
echo "Current FunKey version = $FUNKEY_VERSION" >> $LOG_FILE_UPGRADE
|
|
||||||
else
|
|
||||||
echo "WRONG FUNKEY VERSION FOUND: $FUNKEY_VERSION !" >> $LOG_FILE_UPGRADE
|
|
||||||
|
|
||||||
# Notif
|
|
||||||
notif_system_corruption 20 "WRONG VERSION: $FUNKEY_VERSION"
|
|
||||||
|
|
||||||
# Exit failure
|
|
||||||
upgrade_error=1
|
|
||||||
exit_with_reason $EXIT_CODE_FAILURE_NO_VERSION
|
|
||||||
fi
|
|
||||||
|
|
||||||
else
|
|
||||||
echo "NO FUNKEY VERSION FOUND !" >> $LOG_FILE_UPGRADE
|
|
||||||
|
|
||||||
# Notif
|
|
||||||
notif_system_corruption 20 "NO VERSION"
|
|
||||||
|
|
||||||
# Exit failure
|
|
||||||
upgrade_error=1
|
|
||||||
exit_with_reason $EXIT_CODE_FAILURE_WRONG_VERSION
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check if upgrade file is present
|
|
||||||
upgrade_archive=$(ls -v $UPGRADE_ARCHIVES_DIRECTORY/upgrade_funkey_${FUNKEY_VERSION}_to_*.tar.gz 2> /dev/null | head -1)
|
|
||||||
other_upgrade_archives=$(ls $UPGRADE_ARCHIVES_DIRECTORY/upgrade_funkey_*.tar.gz 2> /dev/null)
|
|
||||||
if [[ ! -z "$upgrade_archive" ]]; then
|
|
||||||
echo -e "Upgrade archive found:\n $upgrade_archive" >> $LOG_FILE_UPGRADE
|
|
||||||
#echo -e "Upgrade archive found:\n $upgrade_archive"
|
|
||||||
upgrade_needed=1
|
|
||||||
elif [[ ! -z "$other_upgrade_archives" ]]; then
|
|
||||||
echo -e "Other upgrades files found:\n $other_upgrade_archives" >> $LOG_FILE_UPGRADE
|
|
||||||
else
|
|
||||||
echo "No upgrade files found" >> $LOG_FILE_UPGRADE
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ "$upgrade_needed" == "1" ]]; then
|
|
||||||
|
|
||||||
# Check if tar.gz file is valid
|
|
||||||
tar_gz_file_list=$(tar -tzf "$upgrade_archive" 2>/dev/null)
|
|
||||||
tar_gz_validity=$?
|
|
||||||
if [[ "$tar_gz_validity" != "0" ]]; then
|
|
||||||
echo "WRONG TAR.GZ FILE" >> $LOG_FILE_UPGRADE
|
|
||||||
exit_with_reason $EXIT_CODE_FAILURE_WRONG_TAR_GZ
|
|
||||||
else
|
|
||||||
echo -e "\nList of files in archive:" >> $LOG_FILE_UPGRADE
|
|
||||||
echo $tar_gz_file_list >> $LOG_FILE_UPGRADE
|
|
||||||
echo -e "\n" >> $LOG_FILE_UPGRADE
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check if archive integrity is ok
|
|
||||||
file_no_ext=${upgrade_archive%.tar.gz}
|
|
||||||
md5_read=${file_no_ext##*_}
|
|
||||||
echo "MD5 read from file: $md5_read" >> $LOG_FILE_UPGRADE
|
|
||||||
md5_computed=$(md5sum $upgrade_archive | cut -d' ' -f1)
|
|
||||||
echo "MD5 computed from file: $md5_computed" >> $LOG_FILE_UPGRADE
|
|
||||||
|
|
||||||
if [[ "$md5_read" != "$md5_computed" ]]; then
|
|
||||||
echo "WRONG MD5" >> $LOG_FILE_UPGRADE
|
|
||||||
exit_with_reason $EXIT_CODE_FAILURE_WRONG_MD5
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Get size of uncompressed data
|
|
||||||
get_targz_uncompressed_size "$upgrade_archive"
|
|
||||||
if [[ $extracted_size == "0" ]]; then
|
|
||||||
echo "CANNOT COMPUTE EXTRACTED SIZE" >> $LOG_FILE_UPGRADE
|
|
||||||
exit_with_reason $EXIT_CODE_FAILURE_WRONG_EXTRACT_SIZE
|
|
||||||
fi
|
|
||||||
echo "Extracted archive size: $extracted_size" >> $LOG_FILE_UPGRADE
|
|
||||||
|
|
||||||
# Check if enough space in /mnt for extraction
|
|
||||||
free_space=$(($(stat -f --format="%a*%S" $UPGRADE_ARCHIVES_DIRECTORY)))
|
|
||||||
echo "Free space in $UPGRADE_ARCHIVES_DIRECTORY: $free_space" >> $LOG_FILE_UPGRADE
|
|
||||||
if [[ "$free_space" -le "$extracted_size" ]]; then
|
|
||||||
missing_space=$(echo "$extracted_size - $free_space" | bc )
|
|
||||||
format_missing_space=$(numfmt --to=iec --suffix=B $missing_space)
|
|
||||||
echo "NOT ENOUGH FREE SPACE FOR EXTRACTION, MISSING $format_missing_space" >> $LOG_FILE_UPGRADE
|
|
||||||
echo "NOT ENOUGH FREE SPACE FOR EXTRACTION, MISSING $format_missing_space"
|
|
||||||
|
|
||||||
notif_set 20 "^NOT ENOUGH SPACE FOR UPDATE^PLEASE FREE $format_missing_space"
|
|
||||||
|
|
||||||
exit_with_reason $EXIT_CODE_FAILURE_NO_SPACE
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Remove and create extraction folder
|
|
||||||
if [[ -d $EXTRACT_DIRECTORY ]]; then
|
|
||||||
echo "Removing extraction directory: $EXTRACT_DIRECTORY" >> $LOG_FILE_UPGRADE
|
|
||||||
rm -rf $EXTRACT_DIRECTORY
|
|
||||||
fi
|
|
||||||
mkdir $EXTRACT_DIRECTORY
|
|
||||||
|
|
||||||
# Notif before achive extraction
|
|
||||||
notif_set 0 "^^^^^^^ UPGRADE IN PROGRESS... ^ EXTRACTING FILES^^DO NOT TURN OFF THE CONSOLE! ^^^^^^"
|
|
||||||
|
|
||||||
# Extract archive
|
|
||||||
echo "Extracting to directory: $EXTRACT_DIRECTORY" >> $LOG_FILE_UPGRADE
|
|
||||||
tar xzf $upgrade_archive -C $EXTRACT_DIRECTORY 2> /dev/null
|
|
||||||
if [[ "$?" != "0" ]]; then
|
|
||||||
echo "EXTRACTION FAILED" >> $LOG_FILE_UPGRADE
|
|
||||||
exit_with_reason EXIT_CODE_FAILURE_EXTRACT_FAILED
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Extracted directory content:" >> $LOG_FILE_UPGRADE
|
|
||||||
ls $EXTRACT_DIRECTORY >> $LOG_FILE_UPGRADE
|
|
||||||
|
|
||||||
# Check for update script
|
|
||||||
upgrade_script=$(ls $EXTRACT_DIRECTORY/launch_upgrade.sh 2> /dev/null | head -1)
|
|
||||||
if [[ -z "$upgrade_script" ]]; then
|
|
||||||
echo -e "UPGRADE SCRIPT NOT FOUND" >> $LOG_FILE_UPGRADE
|
|
||||||
echo -e "UPGRADE SCRIPT NOT FOUND"
|
|
||||||
|
|
||||||
notif_set 20 "^UPDATE FAILED:^SCRIPT NOT FOUND^^WRONG UPGRADE FILE"
|
|
||||||
exit_with_reason EXIT_CODE_FAILURE_SCRIPT_NOT_FOUND
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Display notif before launching script
|
|
||||||
notif_set 0 "^^^^^^^ UPGRADE IN PROGRESS... ^$(basename "$upgrade_archive")^^DO NOT TURN OFF THE CONSOLE! ^^^^^^"
|
|
||||||
|
|
||||||
# Launch upgrade script
|
|
||||||
echo -e "Launching upgrade script" >> $LOG_FILE_UPGRADE
|
|
||||||
chmod 777 $upgrade_script
|
|
||||||
$upgrade_script "$LOG_FILE_UPGRADE"
|
|
||||||
if [[ "$?" != "0" ]]; then
|
|
||||||
echo -e "UPGRADE SCRIPT FAILURE" >> $LOG_FILE_UPGRADE
|
|
||||||
exit_failure
|
|
||||||
fi
|
|
||||||
echo -e "Upgrade script successfull" >> $LOG_FILE_UPGRADE
|
|
||||||
|
|
||||||
# Remove upgrade archive
|
|
||||||
echo -e "Remove upgrade archive" >> $LOG_FILE_UPGRADE
|
|
||||||
rm $upgrade_archive
|
|
||||||
|
|
||||||
# Remove and create extraction folder
|
|
||||||
if [[ -d $EXTRACT_DIRECTORY ]]; then
|
|
||||||
echo "Removing extraction directory: $EXTRACT_DIRECTORY" >> $LOG_FILE_UPGRADE
|
|
||||||
rm -rf $EXTRACT_DIRECTORY
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Notif upgrade successfull
|
|
||||||
notif_set 0 "^^^^^^^^ UPGRADE SUCCESSFUL^ REBOOTING NOW^^^^^^^"
|
|
||||||
sleep 2
|
|
||||||
notif_clear
|
|
||||||
|
|
||||||
# Reboot FunKey
|
|
||||||
reboot
|
|
||||||
fi
|
|
||||||
|
|
||||||
# If no upgrade, remove log file
|
|
||||||
if [[ "$upgrade_needed" == "0" && "$upgrade_error" == "0" ]]; then
|
|
||||||
rm $LOG_FILE_UPGRADE
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Exit success
|
|
||||||
exit $EXIT_CODE_SUCCESS
|
|
|
@ -11,14 +11,18 @@ fi
|
||||||
|
|
||||||
# Sanity check: File does not exist
|
# Sanity check: File does not exist
|
||||||
if [ ! -f ${VOLUME_FILE} ]; then
|
if [ ! -f ${VOLUME_FILE} ]; then
|
||||||
echo ${VOLUME_DEFAULT_VALUE} > ${VOLUME_FILE}
|
rw
|
||||||
|
echo ${VOLUME_DEFAULT_VALUE} > ${VOLUME_FILE}
|
||||||
|
ro
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Sanity check: Check if integer
|
# Sanity check: Check if integer
|
||||||
volume=$(cat "${VOLUME_FILE}")
|
volume=$(cat "${VOLUME_FILE}")
|
||||||
if ! [ ! "${volume}" -ne "${volume}" ] 2> /dev/null; then
|
if ! [ ! "${volume}" -ne "${volume}" ] 2> /dev/null; then
|
||||||
echo ${VOLUME_DEFAULT_VALUE} > ${VOLUME_FILE}
|
rw
|
||||||
volume=${VOLUME_DEFAULT_VALUE}
|
echo ${VOLUME_DEFAULT_VALUE} > ${VOLUME_FILE}
|
||||||
|
ro
|
||||||
|
volume=${VOLUME_DEFAULT_VALUE}
|
||||||
fi
|
fi
|
||||||
echo ${volume}
|
echo ${volume}
|
||||||
exit 0
|
exit 0
|
||||||
|
|
|
@ -35,6 +35,8 @@ amixer -q sset 'Headphone' ${volume_scaled} unmute
|
||||||
|
|
||||||
# Change new volume value in volume file
|
# Change new volume value in volume file
|
||||||
if [ ${?} -eq 0 ]; then
|
if [ ${?} -eq 0 ]; then
|
||||||
|
rw
|
||||||
echo ${volume_percent} > ${VOLUME_FILE}
|
echo ${volume_percent} > ${VOLUME_FILE}
|
||||||
|
ro
|
||||||
fi
|
fi
|
||||||
exit 0
|
exit 0
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
# Write quick load file args
|
# Write quick load file args
|
||||||
QUICK_LOAD_FILE=/root/quick_load_cmd
|
QUICK_LOAD_FILE=/root/quick_load_cmd
|
||||||
|
|
||||||
|
rw
|
||||||
echo -n "" > $QUICK_LOAD_FILE
|
echo -n "" > $QUICK_LOAD_FILE
|
||||||
for i in "$@"; do
|
for i in "$@"; do
|
||||||
if $(echo "$i" | egrep -q '[[:space:]]'); then
|
if $(echo "$i" | egrep -q '[[:space:]]'); then
|
||||||
|
@ -14,4 +15,5 @@ for i in "$@"; do
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
echo "" >> ${QUICK_LOAD_FILE}
|
echo "" >> ${QUICK_LOAD_FILE}
|
||||||
|
ro
|
||||||
exit 0
|
exit 0
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
args_mmc=setenv bootargs console=ttyS0,115200 panic=5 rootwait fbcon=map:10 fbcon=font:VGA8x8 vt.global_cursor_default=0 root=/dev/mmcblk0p${bootpart} rootfstype=ext4 rootflags=commit=120,data=writeback,barrier=0,journal_async_commit ${rw} quiet
|
args_mmc=setenv bootargs console=ttyS0,115200 panic=5 rootwait fbcon=map:10 fbcon=font:VGA8x8 vt.global_cursor_default=0 root=/dev/mmcblk0p${bootpart} rootfstype=ext4 rootflags=commit=120,data=writeback,barrier=0,journal_async_commit ro quiet
|
||||||
baudrate=115200
|
baudrate=115200
|
||||||
bootcmd=run getbootpart; run check_keys; if test ${found} = 1; then setenv bootpart 1; fi; run args_mmc; run loadfdt; run loadimage; bootz ${loadaddr} - ${fdtaddr}
|
bootcmd=run getbootpart; run check_keys; if test ${found} = 1; then setenv bootpart 1; fi; run args_mmc; run loadfdt; run loadimage; bootz ${loadaddr} - ${fdtaddr}
|
||||||
bootdelay=0
|
bootdelay=0
|
||||||
check_keys=run set_pullups; setenv found 0; setenv timeout ${delay}; while test ${timeout} > 0; do run read_keys; if test ${keys} = f83f; then setenv found 1; setenv timeout 0; setenv rw ro; else setexpr timeout ${timeout} - 1; fi; done
|
check_keys=run set_pullups; setenv found 0; setenv timeout ${delay}; while test ${timeout} > 0; do run read_keys; if test ${keys} = f83f; then setenv found 1; setenv timeout 0; else setexpr timeout ${timeout} - 1; fi; done
|
||||||
console=ttyS0,115200
|
console=ttyS0,115200
|
||||||
delay=1
|
delay=1
|
||||||
fdt_high=0xffffffff
|
fdt_high=0xffffffff
|
||||||
|
@ -12,7 +12,6 @@ loadaddr=0x41000000
|
||||||
loadfdt=load mmc 0:${bootpart} ${fdtaddr} /boot/sun8i-v3s-funkey.dtb
|
loadfdt=load mmc 0:${bootpart} ${fdtaddr} /boot/sun8i-v3s-funkey.dtb
|
||||||
loadimage=load mmc 0:${bootpart} ${loadaddr} /boot/zImage
|
loadimage=load mmc 0:${bootpart} ${loadaddr} /boot/zImage
|
||||||
read_keys=i2c read 20 0 2 1c20500; setexpr.w keys *1c20500
|
read_keys=i2c read 20 0 2 1c20500; setexpr.w keys *1c20500
|
||||||
rw=rw
|
|
||||||
set_pullups=i2c mw 20 46 df; i2c mw 20 47 f8
|
set_pullups=i2c mw 20 46 df; i2c mw 20 47 f8
|
||||||
stderr=serial@01c28000
|
stderr=serial@01c28000
|
||||||
stdin=serial@01c28000
|
stdin=serial@01c28000
|
||||||
|
|
|
@ -11,13 +11,17 @@ fi
|
||||||
|
|
||||||
# Sanity check: File does not exist
|
# Sanity check: File does not exist
|
||||||
if [ ! -f ${BRIGHTNESS_FILE} ]; then
|
if [ ! -f ${BRIGHTNESS_FILE} ]; then
|
||||||
|
rw
|
||||||
echo ${BRIGHTNESS_DEFAULT_VALUE} > ${BRIGHTNESS_FILE}
|
echo ${BRIGHTNESS_DEFAULT_VALUE} > ${BRIGHTNESS_FILE}
|
||||||
|
ro
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Sanity check: Check if integer
|
# Sanity check: Check if integer
|
||||||
brightness=$(cat ${BRIGHTNESS_FILE})
|
brightness=$(cat ${BRIGHTNESS_FILE})
|
||||||
if ! [ ! "${brightness}" -ne "${brightness}" ] 2> /dev/null; then
|
if ! [ ! "${brightness}" -ne "${brightness}" ] 2> /dev/null; then
|
||||||
|
rw
|
||||||
echo ${BRIGHTNESS_DEFAULT_VALUE} > ${BRIGHTNESS_FILE}
|
echo ${BRIGHTNESS_DEFAULT_VALUE} > ${BRIGHTNESS_FILE}
|
||||||
|
ro
|
||||||
brightness=${BRIGHTNESS_DEFAULT_VALUE}
|
brightness=${BRIGHTNESS_DEFAULT_VALUE}
|
||||||
fi
|
fi
|
||||||
echo ${brightness}
|
echo ${brightness}
|
||||||
|
|
|
@ -23,6 +23,8 @@ echo ${value} > ${SYSTEM_BRIGHTNESS}
|
||||||
|
|
||||||
# Set new brightness value in brightness file
|
# Set new brightness value in brightness file
|
||||||
if [ ${?} -eq 0 ]; then
|
if [ ${?} -eq 0 ]; then
|
||||||
|
rw
|
||||||
echo ${brightness_percentage} > ${BRIGHTNESS_FILE}
|
echo ${brightness_percentage} > ${BRIGHTNESS_FILE}
|
||||||
|
ro
|
||||||
fi
|
fi
|
||||||
exit 0
|
exit 0
|
||||||
|
|
Loading…
Reference in New Issue