added simple fake-hwclock

pull/1886/head
Daniel Banar 2025-09-16 19:05:07 +02:00
parent 38020498a5
commit bc40af0dfd
5 changed files with 84 additions and 0 deletions

View File

@ -13,6 +13,7 @@ source "$BR2_EXTERNAL_GENERAL_PATH/package/divinus/Config.in"
source "$BR2_EXTERNAL_GENERAL_PATH/package/dropbear-openipc/Config.in" source "$BR2_EXTERNAL_GENERAL_PATH/package/dropbear-openipc/Config.in"
source "$BR2_EXTERNAL_GENERAL_PATH/package/exfat-openipc/Config.in" source "$BR2_EXTERNAL_GENERAL_PATH/package/exfat-openipc/Config.in"
source "$BR2_EXTERNAL_GENERAL_PATH/package/f2fs-tools-openipc/Config.in" source "$BR2_EXTERNAL_GENERAL_PATH/package/f2fs-tools-openipc/Config.in"
source "$BR2_EXTERNAL_GENERAL_PATH/package/fake-hwclock-openipc/Config.in"
source "$BR2_EXTERNAL_GENERAL_PATH/package/fdk-aac-openipc/Config.in" source "$BR2_EXTERNAL_GENERAL_PATH/package/fdk-aac-openipc/Config.in"
source "$BR2_EXTERNAL_GENERAL_PATH/package/ffmpeg-openipc/Config.in" source "$BR2_EXTERNAL_GENERAL_PATH/package/ffmpeg-openipc/Config.in"
source "$BR2_EXTERNAL_GENERAL_PATH/package/fullhan-osdrv-fh8852v100/Config.in" source "$BR2_EXTERNAL_GENERAL_PATH/package/fullhan-osdrv-fh8852v100/Config.in"

View File

@ -0,0 +1,5 @@
config BR2_PACKAGE_FAKE_HWCLOCK_OPENIPC
bool "fake-hwclock-openipc"
help
Restores system time from a file on boot, saves the current time, or periodically updates a timestamp file to maintain time on systems without a hardware RTC.

View File

@ -0,0 +1,15 @@
################################################################################
#
# fake-hwclock-openipc
#
################################################################################
define FAKE_HWCLOCK_OPENIPC_INSTALL_TARGET_CMDS
$(INSTALL) -m 755 -d $(TARGET_DIR)/etc/init.d
$(INSTALL) -m 755 -t $(TARGET_DIR)/etc/init.d $(FAKE_HWCLOCK_OPENIPC_PKGDIR)/files/S39fakehwclock
$(INSTALL) -m 755 -d $(TARGET_DIR)/usr/bin
$(INSTALL) -m 755 -t $(TARGET_DIR)/usr/bin $(FAKE_HWCLOCK_OPENIPC_PKGDIR)/files/fake-hwclock
endef
$(eval $(generic-package))

View File

@ -0,0 +1,36 @@
#!/bin/sh
DAEMON="fake-hwclock"
PIDFILE="/var/run/$DAEMON.pid"
DAEMON_ARGS="5 /etc/fake-hwclock.data"
case "$1" in
start)
echo -n "Starting $DAEMON: "
fake-hwclock load /etc/fake-hwclock.data
# Save timestamp every 5 seconds
start-stop-daemon -b -m -S -q -p "$PIDFILE" -x "$DAEMON" -- $DAEMON_ARGS
if [ $? -eq 0 ]; then
echo "OK"
else
echo "FAIL"
fi
;;
stop)
echo -n "Stopping $DAEMON: "
start-stop-daemon -K -q -p "$PIDFILE"
if [ $? -eq 0 ]; then
rm -f "$PIDFILE"
fake-hwclock save /etc/fake-hwclock.data
echo "OK"
else
echo "FAIL"
fi
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
;;
esac

View File

@ -0,0 +1,27 @@
#!/bin/sh
if [[ $# -lt 2 ]]; then
exit 1
fi
MODE="$1"
TIMESTAMP_FILE="$2"
mkdir -p "$(dirname "$TIMESTAMP_FILE")"
if [[ "$MODE" == "load" ]]; then
if [[ -f "$TIMESTAMP_FILE" ]]; then
LAST_TS=$(cat "$TIMESTAMP_FILE")
if [[ -n "$LAST_TS" ]]; then
echo "fake-hwclock: Setting time to $(date -d @"$LAST_TS")"
fi
fi
elif [[ "$MODE" == "save" ]]; then
date +%s > "$TIMESTAMP_FILE"
elif [[ "$MODE" =~ ^[0-9]+$ ]]; then
INTERVAL="$MODE"
while true; do
date +%s > "$TIMESTAMP_FILE"
sleep "$INTERVAL"
done
fi