Browse Source

rework local mounts of bootdevice

Waldemar Brodkorb 11 years ago
parent
commit
d376a24f30

+ 19 - 20
package/base-files/src/etc/init.d/fs

@@ -8,26 +8,25 @@
 # activate any logical volumes
 [ -x /usr/sbin/lvm ] && { lvm vgscan; lvm vgchange -ay; }
 
-fstypes="ext2 ext3 ext4 xfs vfat ntfs"
+rootdisk=$(readlink /dev/root)
+# strip partitions (f.e. mmcblk0p2, sda2, ..)
+rootdisk=${rootdisk%p*}
+rootdisk=${rootdisk%[1-9]}
+rootparts=$(grep "^/dev/${rootdisk}" /etc/fstab|awk '{ print $1 }')
 
-# filesystem checks
-for fs in $fstypes; do
-       [ -x /usr/sbin/fsck.$fs ] && {
-               for i in $(grep -v "^#" /etc/fstab|grep $fs|awk '{ print $1}');do 
-                       echo "Checking filesystem on $i with $fs"
-                       fsck -p -t $fs $i
-               done
-       }
-done
-
-# mount local filesystems
-for fs in $fstypes; do
-       grep $fs /proc/filesystems >/dev/null 2>&1
-       if [ $? -eq 0 ];then
-               grep -v "^#" /etc/fstab |grep $fs >/dev/null 2>&1
-               if [ $? -eq 0 ];then
-                       mount -a -t $fs
-               fi
-       fi
+for part in $rootparts; do
+	fstype=$(grep "^$part" /etc/fstab|awk '{ print $3 }')
+	mnt=$(grep "^$part" /etc/fstab|awk '{ print $2 }')
+	[ -x /usr/sbin/fsck.$fstype ] && {
+		logger -t fs -s "Checking $fstype filesystem on $part"
+		fsck -p -t $fstype $part
+	}
+	grep $fstype /proc/filesystems >/dev/null 2>&1
+	if [ $? -eq 0 ];then
+		mount $mnt
+	else
+		logger -t fs -s "Filesystem $fstype not in kernel"
+		exit 1
+	fi
 done
 exit 0

+ 1 - 1
package/base-files/src/etc/mdev.conf

@@ -15,4 +15,4 @@ snd/controlC0 root:audio 660
 snd/pcmC0D0c root:audio 660
 snd/pcmC0D0p root:audio 660
 msr0 root:root 660 @(mkdir -p /dev/cpu/0 && ln -sf /dev/msr0 /dev/cpu/0/msr)
-sd[a-z][1-9] root:root 660 */etc/mdev/fs
+sd[a-z][1-9]* root:root 660 */etc/mdev/fs

+ 1 - 1
package/base-files/src/etc/mdev/fs

@@ -18,7 +18,7 @@ adk_check() {
 # filesystem check
 adk_fsck() {
 	[ -x /usr/sbin/fsck.$fs ] && {
-		logger -t fs -s "Checking filesystem on ${MDEV} with $fs"
+		logger -t fs -s "Checking $fs filesystem on ${MDEV}"
 			fsck -p -t $fs ${MDEV}
 	}
 }