From e43bcb7710c94bba10b1fb07cc34a9a5ab3bd292 Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Thu, 22 May 2014 17:26:29 +0200 Subject: fix automount of devices registered in /etc/fstab, when usb-storage is kernel builtin --- package/base-files/Makefile | 2 +- package/base-files/src/etc/init.d/cifs | 8 +++---- package/base-files/src/etc/init.d/fs | 42 +++++++++++++++++++++++++++++----- package/base-files/src/etc/init.d/nfs | 8 +++---- package/base-files/src/etc/mdev/fs | 24 +++++++++++++------ 5 files changed, 62 insertions(+), 22 deletions(-) diff --git a/package/base-files/Makefile b/package/base-files/Makefile index 57f11a3ac..74ece91e8 100644 --- a/package/base-files/Makefile +++ b/package/base-files/Makefile @@ -6,7 +6,7 @@ include $(TOPDIR)/mk/rootfs.mk PKG_NAME:= base-files PKG_VERSION:= 1.0 -PKG_RELEASE:= 92 +PKG_RELEASE:= 93 PKG_SECTION:= base PKG_DESCR:= basic files and scripts diff --git a/package/base-files/src/etc/init.d/cifs b/package/base-files/src/etc/init.d/cifs index 4ece0fe80..5de597b40 100644 --- a/package/base-files/src/etc/init.d/cifs +++ b/package/base-files/src/etc/init.d/cifs @@ -7,14 +7,14 @@ autostart) exec sh $0 start ;; start) - grep cifs /proc/filesystems >/dev/null 2>&1 + grep -v "^#" /etc/fstab| grep cifs >/dev/null 2>&1 if [ $? -eq 0 ];then - grep -v "^#" /etc/fstab| grep cifs >/dev/null 2>&1 + grep cifs /proc/filesystems >/dev/null 2>&1 if [ $? -eq 0 ];then mount -a -t cifs + else + logger -t cifs "No cifs support in kernel" fi - else - logger -t cifs "No cifs support in kernel" fi ;; stop) diff --git a/package/base-files/src/etc/init.d/fs b/package/base-files/src/etc/init.d/fs index 2054d5426..72beb40b3 100755 --- a/package/base-files/src/etc/init.d/fs +++ b/package/base-files/src/etc/init.d/fs @@ -3,10 +3,20 @@ [[ $1 = autostart ]] || exit 0 # activate swap -[ -x /sbin/swapon ] && { swapon -a; } +[ -x /sbin/swapon ] && { + grep swap /etc/fstab >/dev/null 2>&1 + if [ $? -eq 0 ];then + logger -s -t '' "Activating swap" + swapon -a + fi +} # activate any logical volumes -[ -x /usr/sbin/lvm ] && { lvm vgscan; lvm vgchange -ay; } +[ -x /usr/sbin/lvm ] && { + logger -s -t '' "Activating LVM volumes" + lvm vgscan + lvm vgchange -ay +} rootdisk=$(readlink /dev/root) # strip partitions (f.e. mmcblk0p2, sda2, ..) @@ -15,11 +25,11 @@ rootdisk=${rootdisk%[1-9]} rootparts=$(grep "^/dev/${rootdisk}" /etc/fstab|awk '{ print $1 }') for part in $rootparts; do - fstype=$(grep "^$part" /etc/fstab|awk '{ print $3 }') - mnt=$(grep "^$part" /etc/fstab|awk '{ print $2 }') + fstype=$(grep "^$part " /etc/fstab|awk '{ print $3 }') + mnt=$(grep "^$part " /etc/fstab|awk '{ print $2 }') [ -x /usr/sbin/fsck.$fstype ] && { - logger -s "Checking $fstype filesystem on $part" - fsck -p -t $fstype $part + logger -s -t '' "Checking $fstype filesystem on $part" + fsck $part } grep $fstype /proc/filesystems >/dev/null 2>&1 if [ $? -eq 0 ];then @@ -29,4 +39,24 @@ for part in $rootparts; do exit 1 fi done + +# mount local filesystems not rootdisk +fstypes="ext2 ext3 ext4 xfs vfat ntfs" +for fs in $fstypes; do + disks=$(grep -v "^#" /etc/fstab| grep -v $rootdisk |grep $fs|awk '{ print $1 }' >/dev/null 2>&1) + for disk in $disks; do + logger -t '' "Found $disk with filesystem $fs" + grep $fs /proc/filesystems >/dev/null 2>&1 + if [ $? -eq 0 ];then + [ -x /usr/sbin/fsck.$fs ] && { + logger -s -t '' "Checking $fs filesystem on $disk" + fsck $disk + } + logger -s -t '' "Mounting local filesystems" + mount $disk + else + logger -s -t '' "No $fs filesystem in kernel" + fi + done +done exit 0 diff --git a/package/base-files/src/etc/init.d/nfs b/package/base-files/src/etc/init.d/nfs index 1bdd0e96f..4c3f9ba83 100644 --- a/package/base-files/src/etc/init.d/nfs +++ b/package/base-files/src/etc/init.d/nfs @@ -9,16 +9,16 @@ autostart) exec sh $0 start ;; start) - grep nfs /proc/filesystems >/dev/null 2>&1 + grep -v "^#" /etc/fstab| grep nfs >/dev/null 2>&1 if [ $? -eq 0 ];then - grep -v "^#" /etc/fstab| grep nfs >/dev/null 2>&1 + grep nfs /proc/filesystems >/dev/null 2>&1 if [ $? -eq 0 ];then mkdir -p /var/lib/nfs/rpc_pipefs mount -t rpc_pipefs rpc_pipefs /var/lib/nfs/rpc_pipefs mount -a -t nfs + else + logger -t nfs "No nfs support in kernel" fi - else - logger -t nfs "No nfs support in kernel" fi ;; stop) diff --git a/package/base-files/src/etc/mdev/fs b/package/base-files/src/etc/mdev/fs index 7a305d9d6..53339fed5 100755 --- a/package/base-files/src/etc/mdev/fs +++ b/package/base-files/src/etc/mdev/fs @@ -15,7 +15,7 @@ else disk="${MDEV} (${uuid})" fi if [ -z $fs ];then - logger "Disk $disk not registered in /etc/fstab" + logger -t mdev "Disk $disk not registered in /etc/fstab" exit 0 fi @@ -24,11 +24,20 @@ if [ $fs = "ntfs-3g" ];then procfs=fuse fi +# check if already mounted via /etc/init.d/fs +adk_check() { + mount | grep "${MDEV} " + if [ $? -eq 0 ];then + logger -t mdev "Filesystem on ${MDEV} already mounted" + exit 0 + fi +} + # filesystem check adk_fsck() { [ -x /usr/sbin/fsck.$fs ] && { - logger -s "Checking $fs filesystem on $disk" - fsck -p -t $fs ${MDEV} + logger -t mdev "Checking $fs filesystem on ${MDEV}" + fsck ${MDEV} } } @@ -37,19 +46,20 @@ adk_mount() { mkdir -p $mnt >/dev/null 2>&1 grep $procfs /proc/filesystems >/dev/null 2>&1 if [ $? -eq 0 ];then - logger -s "Mounting $disk to $mnt" + logger -t mdev "Mounting local filesystems" mount $mnt if [ $? -ne 0 ];then - logger -s "Mounting $disk failed" + logger -s -t '' "Mounting $disk failed" fi else - logger -s "Required filesystem $procfs not available" + logger -t mdev "Required filesystem $procfs not available" fi } case "${ACTION}" in add) - logger "Device ${MDEV} added to the system" + logger -t mdev "Device ${MDEV} added to the system" + add_check adk_fsck adk_mount ;; -- cgit v1.2.3