Unfortunately no one can be told what fun_plug is - you have to see it for yourself.
You are not logged in.
Hey all,
The other day I happened to notice that one of my two DNS-323 had an issue. After deleting all of the files off one of the drives, it claimed I still had ~180G left on the drive. Ran 'dmesg' and verified that I must have had a power bump, and uncleanly shut down.
Went out to http://www.inreto.de/dns323/fsck/ ... downloaded and followed the instructions given ... and no dice. The reload.sh script fails. So, I went and added in some logging to figure out where it was dying.
#!/ffp/bin/bash
export PATH=/ffp/sbin:/ffp/bin:$PATH
# parameters
machtype=1542
kernel=$(readlink -f zImage)
initrd=$(readlink -f initramfs.gz)
logfile="/ffp/fsck/file.log"
if [ -r "$1" ]; then
kernel=$(readlink -f "$1")
fi
# network config
dev=egiga0
ipaddr=$(ifconfig $dev | awk '/inet addr/ {print substr($2,6)}')
netmask=$(ifconfig $dev | awk '/inet add/ {print substr($4,6)}')
broadcast=$(ifconfig $dev | awk '/inet addr/ {print substr($3,7)}')
gateway=$(route -n | awk '$1 == "0.0.0.0" {print $2}')
# kernel command line
# it's eth0 in 2.6.25, egiga0 in 2.6.12
if echo $kernel | grep -q '2\.6\.12'; then
cmdline="console=ttyS0,115200 ip=$ipaddr::$gateway:$netmask:$(hostname):egiga0:none"
machtype=526
else
cmdline="console=ttyS0,115200 ip=$ipaddr::$gateway:$netmask:$(hostname):eth0:none"
fi
echo "kernel: $kernel"
echo "kernel: $kernel" > $logfile
echo "cmdline: $cmdline"
echo "cmdline: $cmdline" >> $logfile
echo "machtype: $machtype"
echo "machtype: $machtype" >> $logfile
# helper functions
die()
{
echo "die: $@" >> $logfile
cat >&2 <<EOF
ERROR: $@
EOF
exit 1
}
reverse_list()
{
_list=
while [ $# -gt 0 ]; do
_list="$1 $_list"
shift
done
echo $_list
echo "reverse_list: $_list" >> $logfile
}
# checks
KV=$(uname -r)
ko=$(readlink -f reloaded-$KV.ko)
test -r reloaded-$KV.ko || die "reloaded-$KV.ko: No compatible 'reloaded' module found for this kernel."
test -r $kernel || die "$kernel: Kernel not found"
test -r $initrd || die "$initrd: initramfs not found"
echo "past checks - all files found" >> $logfile
echo "ko: $ko" >> $logfile
echo "initrd: $initrd" >> $logfile
# move to ramdisk and detach
cd /tmp
echo "before exec" >> $logfile
exec >/dev/console 2>&1 </dev/null
echo "after exec" >> $logfile
trap 'echo HUP' HUP
echo "past - move to ramdisk and detach" >> $logfile
# stop ffp
if [ -d /ffp/start ]; then
files=$(reverse_list $(rcorder /ffp/start/*.sh))
for f in $files; do
if [ -x "$f" ]; then
echo "$f stop"
echo "$f - stopping" >> $logfile
$f stop
fi
done
fi
# clean up the rest
set -x
echo "about to: killall5 -TERM" >> $logfile
killall5 -TERM
sleep 2
echo "about to: killall5 -KILL" >> $logfile
killall5 -KILL
sleep 1
# remount filesystems read-only
sync
echo "sync'ed memory" >> $logfile
for f in /mnt/HD_*; do
mount -o remount -r $f
done
mount -o remount -r -a
mount
echo "remounted filesystems read-only" >> $logfile
# start new kernel
sync
echo "sync'ed memory" >> $logfile
sleep 1
echo "starting new kernel" >> $logfile
echo "ko: $ko" >> $logfile
echo "machtype: $machtype" >> $logfile
echo "kernel: $kernel" >> $logfile
echo "initrd: $initrd" >> $logfile
echo "cmdline: '$cmdline'" >> $logfile
insmod $ko machtype=$machtype kernel=$kernel initrd=$initrd cmdline="$cmdline"
die "Failed!"After running the reload script, I had this for a log file ...
kernel: /mnt/HD_a2/ffp/fsck/zImage-2.6.25.1 cmdline: console=ttyS0,115200 ip=192.168.5.101::192.168.5.1:255.255.255.0:Movies:eth0:none machtype: 1542 past checks - all files found ko: /mnt/HD_a2/ffp/fsck/reloaded-2.6.12.6-arm1.ko initrd: /mnt/HD_a2/ffp/fsck/fsck-initramfs.gz before exec after exec past - move to ramdisk and detach reverse_list: /ffp/start/fp_master.sh /ffp/start/inetd.sh /ffp/start/lighttpd.sh /ffp/start/kickwebs.sh /ffp/start/mysqld.sh /ffp/start/rsyncd.sh /ffp/start/sshd.sh /ffp/start/telnetd.sh /ffp/start/LOGIN.sh /ffp/start/nfsd.sh /ffp/start/portmap.sh /ffp/start/SERVERS.sh /ffp/start/sshd.sh - stopping /ffp/start/telnetd.sh - stopping /ffp/start/nfsd.sh - stopping about to: killall5 -TERM about to: killall5 -KILL sync'ed memory remounted filesystems read-only sync'ed memory starting new kernel ko: /mnt/HD_a2/ffp/fsck/reloaded-2.6.12.6-arm1.ko machtype: 1542 kernel: /mnt/HD_a2/ffp/fsck/zImage-2.6.25.1 initrd: /mnt/HD_a2/ffp/fsck/fsck-initramfs.gz cmdline: 'console=ttyS0,115200 ip=192.168.5.101::192.168.5.1:255.255.255.0:Movies:eth0:none' die: Failed!
So ... I'm at a complete loss as to why insmod is failing.
The firmware is 1.10, running FFP 0.7 .... AND, the same death happens on BOTH DNS-323's. I checked my second DNS-323's 'dmesg' and it had ALSO shutdown uncleanly.
Any thoughts?
Offline
profm2 wrote:
I checked my second DNS-323's 'dmesg' and it had ALSO shutdown uncleanly.
Have a look here.
About your fsck problem, redirect the output of insmod (both stdout and stderr) to your logfile, and also dump your dmesg after the reload attempt. It might tell you why it fails.
Offline
Ahhh ... hmmm.
insmod: error inserting '/mnt/HD_a2/ffp/fsck/reloaded-2.6.12.6-arm1.ko': -1 Unknown symbol in module
Ok, increased the logging of reload.sh ... and got this at the tail end of the 'dmesg' dump:
... EXT3-fs warning: maximal mount count reached, running e2fsck is recommended EXT3 FS on sdb4, internal journal EXT3-fs: mounted filesystem with ordered data mode. reloaded: Unknown parameter `ip'
LOL ... Ok, so it appears that the space in the $cmdline is causing an issue and making insmod think that the IP=... is another parameter of the command.
Last edited by profm2 (2014-05-04 02:42:59)
Offline
Ok ... FINALLY got it working. The script below is with my logging in, but the insmod line is what was causing everything to fail. Change the "$cmdline" to \"$cmdline\" ... and it should work.
#!/ffp/bin/bash
export PATH=/ffp/sbin:/ffp/bin:$PATH
# parameters
machtype=1542
kernel=$(readlink -f zImage)
initrd=$(readlink -f initramfs.gz)
logfile="/ffp/fsck/file.log"
logfile2="/ffp/fsck/file2.log"
bootlog="/ffp/fsck/boot.log"
if [ -r "$1" ]; then
kernel=$(readlink -f "$1")
fi
# network config
dev=egiga0
ipaddr=$(ifconfig $dev | awk '/inet addr/ {print substr($2,6)}')
netmask=$(ifconfig $dev | awk '/inet add/ {print substr($4,6)}')
broadcast=$(ifconfig $dev | awk '/inet addr/ {print substr($3,7)}')
gateway=$(route -n | awk '$1 == "0.0.0.0" {print $2}')
# kernel command line
# it's eth0 in 2.6.25, egiga0 in 2.6.12
if echo $kernel | grep -q '2\.6\.12'; then
cmdline="console=ttyS0,115200 ip=$ipaddr::$gateway:$netmask:$(hostname):egiga0:none"
machtype=526
else
cmdline="console=ttyS0,115200 ip=$ipaddr::$gateway:$netmask:$(hostname):eth0:none"
fi
echo "kernel: $kernel"
echo "kernel: $kernel" > $logfile
echo "cmdline: $cmdline"
echo "cmdline: $cmdline" >> $logfile
echo "machtype: $machtype"
echo "machtype: $machtype" >> $logfile
# helper functions
die()
{
echo "die: $@" >> $logfile
echo "dumping dmesg before exiting" >> $logfile
dmesg > $bootlog
cat >&2 <<EOF
ERROR: $@
EOF
exit 1
}
reverse_list()
{
_list=
while [ $# -gt 0 ]; do
_list="$1 $_list"
shift
done
echo $_list
echo "reverse_list: $_list" >> $logfile
}
# checks
KV=$(uname -r)
ko=$(readlink -f reloaded-$KV.ko)
test -r reloaded-$KV.ko || die "reloaded-$KV.ko: No compatible 'reloaded' module found for this kernel."
test -r $kernel || die "$kernel: Kernel not found"
test -r $initrd || die "$initrd: initramfs not found"
echo "past checks - all files found" >> $logfile
echo "ko: $ko" >> $logfile
echo "initrd: $initrd" >> $logfile
# move to ramdisk and detach
cd /tmp
echo "before exec" >> $logfile
exec >/dev/console 2>&1 </dev/null
echo "after exec" >> $logfile
trap 'echo HUP' HUP
echo "past - move to ramdisk and detach" >> $logfile
# stop ffp
if [ -d /ffp/start ]; then
files=$(reverse_list $(rcorder /ffp/start/*.sh))
for f in $files; do
if [ -x "$f" ]; then
echo "$f stop"
echo "$f - stopping" >> $logfile
$f stop
fi
done
fi
# clean up the rest
set -x
echo "about to: killall5 -TERM" >> $logfile
killall5 -TERM
sleep 2
echo "about to: killall5 -KILL" >> $logfile
killall5 -KILL
sleep 1
# remount filesystems read-only
sync
echo "sync'ed memory before remounting" >> $logfile
for f in /mnt/HD_*; do
echo "remounting - $f" >> $logfile
mount -o remount -r $f
done
echo "remounting all filesystems from /etc/fstab" >> $logfile
mount -o remount -r -a
mount
echo "remounted filesystems read-only" >> $logfile
# start new kernel
sync
echo "sync'ed memory before starting kernel" >> $logfile
sleep 1
echo "starting new kernel" >> $logfile
echo "ko: $ko" >> $logfile
echo "machtype: $machtype" >> $logfile
echo "kernel: $kernel" >> $logfile
echo "initrd: $initrd" >> $logfile
echo "cmdline: '$cmdline'" >> $logfile
insmod $ko machtype=$machtype kernel=$kernel initrd=$initrd cmdline=\"$cmdline\" > $logfile2 2>&1
die "Failed!"Offline