thomson
17-11-2004, 07:19 PM
Thought I would start with a possible safe way of handling palmod configuration changes and upgrades. The following is a mechanism which uses a type of "watchdog" to see if palmod has caused a crash... and if so, it will revert back to a known good configuration.
Firstly you should backup your existing configuration, as one assumes that this is a working one:
# rw
# cp /etc/palmod.conf /etc/palmod-good.conf
# cp /lib/modules/palmod.o /lib/modules/palmod-good.o
# ro
Then the following code should replace the "insmod -f /lib/modules/palmod.o `cat /etc/palmod.conf`" line in /etc/rc.d/rc.arch (somewhere near line #88):
if [ -f /var/log/palmod.watchdog ]; then
echo "Watchdog file found, using last good configuration"
/bin/rm /var/log/palmod.watchdog
sync;sync;sync
insmod -f /lib/modules/palmod-good.o `cat /etc/palmod-good.conf`
else
/bin/date >> /var/log/palmod.watchdog
sync;sync;sync
# Run palmod_config to set palmod options
insmod -f /lib/modules/palmod.o `cat /etc/palmod.conf`
fi
The watchdog flag file should be removed once we are sure everything is alright. This can be either through cron, or more simply at the end of the /etc/rc.d/rc.sysinit.author script:
# Remove palmod watchdog flag
if [ -f /var/log/palmod.watchdog ]; then
echo "Removing watchdog file"
/bin/rm /var/log/palmod.watchdog
fi
To check which configuration you are running you can either check /var/log/kernel or have a look at the output of "lsmod".
Note: if anyone does get stuck in a boot-loop due to a bad palmod.o, the easiest way of resolving it is to use a serial cable to boot into the monitor and alter the boot parameters to change TV_STD from PAL to NTSC - This will skip the palmod phase of the bootstrap. Once it has come up you will be able to telnet in and fix the problem
Firstly you should backup your existing configuration, as one assumes that this is a working one:
# rw
# cp /etc/palmod.conf /etc/palmod-good.conf
# cp /lib/modules/palmod.o /lib/modules/palmod-good.o
# ro
Then the following code should replace the "insmod -f /lib/modules/palmod.o `cat /etc/palmod.conf`" line in /etc/rc.d/rc.arch (somewhere near line #88):
if [ -f /var/log/palmod.watchdog ]; then
echo "Watchdog file found, using last good configuration"
/bin/rm /var/log/palmod.watchdog
sync;sync;sync
insmod -f /lib/modules/palmod-good.o `cat /etc/palmod-good.conf`
else
/bin/date >> /var/log/palmod.watchdog
sync;sync;sync
# Run palmod_config to set palmod options
insmod -f /lib/modules/palmod.o `cat /etc/palmod.conf`
fi
The watchdog flag file should be removed once we are sure everything is alright. This can be either through cron, or more simply at the end of the /etc/rc.d/rc.sysinit.author script:
# Remove palmod watchdog flag
if [ -f /var/log/palmod.watchdog ]; then
echo "Removing watchdog file"
/bin/rm /var/log/palmod.watchdog
fi
To check which configuration you are running you can either check /var/log/kernel or have a look at the output of "lsmod".
Note: if anyone does get stuck in a boot-loop due to a bad palmod.o, the easiest way of resolving it is to use a serial cable to boot into the monitor and alter the boot parameters to change TV_STD from PAL to NTSC - This will skip the palmod phase of the bootstrap. Once it has come up you will be able to telnet in and fix the problem