Hi, I don't know if anyone else has seen this but my Plug seems to have problems accessing the SD card during a cold start (power completely removed and restored). If I reset it by pushing the reset button or by interrupting u-Boot and typing reset, it has no problems after that until the next time it loses power. Here are my specifics:
Everything including the kernel and initrd are on a single partition of a Patriot 16G SDHC card.
U-boot 3.4.19
Fedora 11 ARM distribution
Kernel 2.6.31.5 cross-compiled from source using the config file from here as a starting point:
http://fedora.danny.cz/arm/kirkwood/I needed a few extra options for iptables support, or I would have just used the already compiled image he's distributing.
When it comes up from a cold boot I get stuff like this shortly after / gets remounted read-write:
EXT3-fs error (device mmcblk0p1): read_inode_bitmap: Cannot read inode bitmap - block_group = 19, inode_bitmap = 622593
EXT3-fs error (device mmcblk0p1): read_inode_bitmap: Cannot read inode bitmap - block_group = 19, inode_bitmap = 622593
EXT3-fs error (device mmcblk0p1): read_inode_bitmap: Cannot read inode bitmap - block_group = 19, inode_bitmap = 622593
EXT3-fs error (device mmcblk0p1): ext3_find_entry: reading directory #154528 offset 0
/etc/rc.d/rc.sysinit: line 785: /sbin/pam_console_apply: Input/output error
EXT3-fs error (device mmcblk0p1): read_inode_bitmap: Cannot read inode bitmap - block_group = 19, inode_bitmap = 622593
EXT3-fs error (device mmcblk0p1) in ext3_new_inode: IO failure
/etc/rc.d/rc.sysinit: line 789: /var/run/utmp: Input/output error
/etc/rc.d/rc.sysinit: line 863: /sbin/getkey: Input/output error
EXT3-fs error (device mmcblk0p1): read_inode_bitmap: Cannot read inode bitmap - block_group = 19, inode_bitmap = 622593
/etc/rc.d/rc.sysinit: line 791: /bin/chgrp: Input/output error
chmod: cannot access `/var/run/utmp': No such file or directory
EXT3-fs error (device mmcblk0p1) in ext3_new_inode: IO failure
touch: cannot touch `/var/run/getkey_done': Input/output error
Enabling /etc/fstab swaps: /etc/init.d/functions: line 519: /sbin/swapon: Input/output error
I've written a VERY kludgy patch for /etc/rc.sysinit that basically double-boots the machine to ensure a warm start:
--- rc.sysinit.orig 2009-06-08 08:08:43.000000000 -0700
+++ /etc/rc.sysinit 2009-11-01 00:25:16.000000000 -0700
@@ -630,6 +630,20 @@
action $"Remounting root filesystem in read-write mode: " mount -n -o remount,rw /
fi
+# Kludge for SheevaPlug SDMMC cold boot
+if [ -f /.sheevabootkludge ] ; then
+ echo $"Second boot, proceeding..."
+else
+ echo $"First boot, rebooting for Sheevaplug SDMMC kludge"
+ touch /.sheevabootkludge
+ touch /forcefsck # This is to keep from ever reaching max mounts
+ # without fsck because it could happen during a cold
+ # boot.
+ reboot -f
+ exit 1
+fi
+rm -f /.sheevabootkludge
+
# Clean up SELinux labels
if [ -n "$SELINUX_STATE" ]; then
restorecon /etc/mtab /etc/ld.so.cache /etc/blkid/blkid.tab /etc/resolv.conf >/dev/null 2>&1
Note that this really results in THREE boots, because the first time around it can't actually write to the filesystem and it throws up a "journal commit I/O error" error message when it tries. Fortunately the I/O is still sane enough at this point that the reboot command can read and execute.
Anyway, I'm sure there's a better way. Is this something anyone else has seen?