90 lines
2.2 KiB
Bash
Executable File
90 lines
2.2 KiB
Bash
Executable File
#!/bin/sh
|
|
# vim: set ts=2 sw=2 et:
|
|
# /etc/bewan/lib/config
|
|
|
|
# implements functions to access bewan configuration stored in /dev/mtd
|
|
|
|
[ ${CONFIG_LIB_LOADED:-0} = 1 ] && return
|
|
|
|
CONFIG_LIB_LOADED=1
|
|
|
|
if [ "${CONFIG_MTD:-}" = '' ]; then
|
|
CONFIG_MTD=0
|
|
cat /proc/mtd | grep mtd2 | grep Config >/dev/null
|
|
[ $? = 0 ] && CONFIG_MTD=1
|
|
fi
|
|
|
|
config_mtd_mount() {
|
|
[ $CONFIG_MTD = 0 ] && return
|
|
# Copy /dev/mtd2 do /dev/ram0 and mount /dev/ram0
|
|
dd if=/dev/mtd2 of=/dev/ram0 bs=1024 count=192 >/dev/null 2>/dev/null
|
|
mount -t ext2 -r /dev/ram0 /nvram 2>/dev/null
|
|
# Mount failed, recreate empty ramdisk
|
|
if [ $? != 0 ]; then
|
|
expand /etc/bewan/ramfs.img /dev/ram0
|
|
mount -t ext2 -r /dev/ram0 /nvram
|
|
fi
|
|
}
|
|
|
|
config_mtd_erase() {
|
|
if [ $CONFIG_MTD = 0 ]; then
|
|
rm -rf /nvram/bewan
|
|
return
|
|
fi
|
|
umount -f /dev/ram0
|
|
flash_erase /dev/mtd2 0 0 >/dev/null 2>/dev/null
|
|
expand /etc/bewan/ramfs.img /dev/ram0
|
|
mount -t ext2 -r /dev/ram0 /nvram
|
|
}
|
|
|
|
config_mtd_write() {
|
|
[ $CONFIG_MTD = 0 ] && return
|
|
# remount /dev/ram0 with RW access
|
|
mount -o remount -w /dev/ram0 /nvram
|
|
}
|
|
|
|
config_mtd_umount() {
|
|
if [ $CONFIG_MTD = 0 ]; then
|
|
. /etc/bewan/lib/base
|
|
# Umount nvram partition
|
|
umount /nvram
|
|
if [ $? -eq 0 ]; then
|
|
base_log "/nvram unmounted successfully" debug
|
|
else
|
|
# If failed, kill all programs using /nvram
|
|
# First, remove all inittab entries
|
|
. /etc/bewan/scripts/globals
|
|
rm -f $ITABD/*
|
|
sync
|
|
base_call_initd 'inittab'
|
|
# Send SIGTERM to program using nvram
|
|
base_log "Sending SIGTERM to program using /nvram" debug
|
|
fuser -m -k -TERM /nvram
|
|
sleep 1
|
|
umount /nvram
|
|
if [ $? -eq 0 ]; then
|
|
base_log "/nvram unmounted successfully" debug
|
|
return
|
|
fi
|
|
# Send SIGKILL
|
|
base_log "Sending SIGKILL to program using /nvram" debug
|
|
fuser -m -k /nvram
|
|
sleep 1
|
|
umount /nvram
|
|
if [ $? -eq 0 ]; then
|
|
base_log "/nvram unmounted successfully" debug
|
|
else
|
|
base_log "Error unmounting /nvram..." debug
|
|
fi
|
|
fi
|
|
fi
|
|
}
|
|
|
|
config_mtd_store() {
|
|
[ $CONFIG_MTD = 0 ] && return
|
|
# Copy ramdisk to flash partition
|
|
umount /dev/ram0
|
|
dd if=/dev/ram0 of=/dev/mtdblock2 bs=1024 count=192 2>/dev/null
|
|
mount -t ext2 -r /dev/ram0 /nvram
|
|
}
|