FAQs (XUELK)
Info Box
|
Introduction
This page collects Frequently Asked Questions (FAQs) regarding AXEL ULite and SBC Lynx Embedded Linux Kit (XUELK).
Q: How to enable USB storage auto-mount/unmount?
A: USB storage auto-mount can be enabled by adding specific udev
rules. The following example has been tested with this file system: https://mirror.dave.eu/lynx/xuelk-1.1.0/xuelk-1.1.0_lynx-image-networking-sbc-lynx.tar.bz2, and makes use of two files.
The first one is called automount.rules
. It contains the additional rules, and it has to be copied in /etc/udev/rules.d/
. It looks like this:
root@sbc-lynx:~# cat /etc/udev/rules.d/automount.rules # There are a number of modifiers that are allowed to be used in some # of the different fields. They provide the following subsitutions: # # %n the "kernel number" of the device. # For example, 'sda3' has a "kernel number" of '3' # %e the smallest number for that name which does not matches an existing node # %k the kernel name for the device # %M the kernel major number for the device # %m the kernel minor number for the device # %b the bus id for the device # %c the string returned by the PROGRAM # %s{filename} the content of a sysfs attribute # %% the '%' char itself # # Media automounting SUBSYSTEM=="block", ACTION=="add" RUN+="/etc/udev/scripts/mount.sh" SUBSYSTEM=="block", ACTION=="remove" RUN+="/etc/udev/scripts/mount.sh"
The second file is a script that can be copied in /etc/udev/scripts/
. It looks like this:
root@sbc-lynx:~# cat /etc/udev/scripts/mount.sh #!/bin/sh # # Called from udev # # Attempt to mount any added block devices and umount any removed devices MOUNT="/bin/mount" PMOUNT="/usr/bin/pmount" UMOUNT="/bin/umount" for line in `grep -v ^# /etc/udev/mount.blacklist` do if [ ` expr match "$DEVNAME" "$line" ` -gt 0 ]; then logger "udev/mount.sh" "[$DEVNAME] is blacklisted, ignoring" exit 0 fi done automount() { name="`basename "$DEVNAME"`" ! test -d "/media/$name" && mkdir -p "/media/$name" # Silent util-linux's version of mounting auto if [ "x`readlink $MOUNT`" = "x/bin/mount.util-linux" ] ; then MOUNT="$MOUNT -o silent" fi if ! $MOUNT -t auto $DEVNAME "/media/$name" then #logger "mount.sh/automount" "$MOUNT -t auto $DEVNAME \"/run/media/$name\" failed!" rm_dir "/media/$name" else logger "mount.sh/automount" "Auto-mount of [/media/$name] successful" touch "/tmp/.automount-$name" fi } rm_dir() { # We do not want to rm -r populated directories if test "`find "$1" | wc -l | tr -d " "`" -lt 2 -a -d "$1" then ! test -z "$1" && rm -r "$1" else logger "mount.sh/automount" "Not removing non-empty directory [$1]" fi } if [ "$ACTION" = "add" ] && [ -n "$DEVNAME" ] && [ -n "$ID_FS_TYPE" ]; then if [ -x "$PMOUNT" ]; then $PMOUNT $DEVNAME 2> /dev/null elif [ -x $MOUNT ]; then $MOUNT $DEVNAME 2> /dev/null fi # If the device isn't mounted at this point, it isn't # configured in fstab (note the root filesystem can show up as # /dev/root in /proc/mounts, so check the device number too) if expr $MAJOR "*" 256 + $MINOR != `stat -c %d /`; then grep -q "^$DEVNAME " /proc/mounts || automount fi fi if [ "$ACTION" = "remove" ] && [ -x "$UMOUNT" ] && [ -n "$DEVNAME" ]; then for mnt in `cat /proc/mounts | grep "$DEVNAME" | cut -f 2 -d " " ` do $UMOUNT $mnt done # Remove empty directories from auto-mounter name="`basename "$DEVNAME"`" test -e "/tmp/.automount-$name" && rm_dir "/media/$name" fi
After creating these two files, restart udev
to make the changes take effect:
udevadm control --reload-rules
The following console dump shows the process of auto-mounting/auto-unmounting of a FAT32 partition, stored on a USB flash drive.
root@sbc-lynx:~# [ 611.238221] usb 1-1: new high-speed USB device number 3 using ci_hdrc [ 611.406307] usb-storage 1-1:1.0: USB Mass Storage device detected [ 611.424566] scsi1 : usb-storage 1-1:1.0 [ 612.431396] scsi 1:0:0:0: Direct-Access Generic FIash Disk 8.07 PQ: 0 ANSI: 2 [ 612.456387] sd 1:0:0:0: [sda] 15663104 512-byte logical blocks: (8.01 GB/7.46 GiB) [ 612.474787] sd 1:0:0:0: [sda] Write Protect is off [ 612.485226] sd 1:0:0:0: [sda] No Caching mode page found [ 612.491238] sd 1:0:0:0: [sda] Assuming drive cache: write through [ 612.504934] sd 1:0:0:0: [sda] No Caching mode page found [ 612.511000] sd 1:0:0:0: [sda] Assuming drive cache: write through [ 612.577162] sda: sda1 [ 612.591581] sd 1:0:0:0: [sda] No Caching mode page found [ 612.596934] sd 1:0:0:0: [sda] Assuming drive cache: write through [ 612.606655] sd 1:0:0:0: [sda] Attached SCSI removable disk [ 613.219100] FAT-fs (sda1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck. root@sbc-lynx:~# mount rootfs on / type rootfs (rw) 192.168.0.13:/opt/nfsroot/lynx/xuelk-1.1.0-networking on / type nfs (rw,relatime,vers=3,rsize=4096,wsize=4096,namlen=255,hard,nolock,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.0.13,mountvers=3,mountproto=tcp,local_lock=all,addr=192.168.0.13) devtmpfs on /dev type devtmpfs (rw,relatime,size=220568k,nr_inodes=55142,mode=755) proc on /proc type proc (rw,relatime) sysfs on /sys type sysfs (rw,relatime) debugfs on /sys/kernel/debug type debugfs (rw,relatime) tmpfs on /run type tmpfs (rw,nosuid,nodev,mode=755) tmpfs on /var/volatile type tmpfs (rw,relatime) devpts on /dev/pts type devpts (rw,relatime,gid=5,mode=620) /dev/sda1 on /media/sda1 type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro) ... root@sbc-lynx:~# [ 631.627230] usb 1-1: USB disconnect, device number 3 root@sbc-lynx:~# mount rootfs on / type rootfs (rw) 192.168.0.13:/opt/nfsroot/lynx/xuelk-1.1.0-networking on / type nfs (rw,relatime,vers=3,rsize=4096,wsize=4096,namlen=255,hard,nolock,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.0.13,mountvers=3,mountproto=tcp,local_lock=all,addr=192.168.0.13) devtmpfs on /dev type devtmpfs (rw,relatime,size=220568k,nr_inodes=55142,mode=755) proc on /proc type proc (rw,relatime) sysfs on /sys type sysfs (rw,relatime) debugfs on /sys/kernel/debug type debugfs (rw,relatime) tmpfs on /run type tmpfs (rw,nosuid,nodev,mode=755) tmpfs on /var/volatile type tmpfs (rw,relatime) devpts on /dev/pts type devpts (rw,relatime,gid=5,mode=620) root@sbc-lynx:~# ls -la /media/ drwxr-xr-x 7 root root 4096 Mar 1 2017 . drwxr-xr-x 17 root root 4096 Feb 28 2017 .. drwxr-xr-x 2 root root 4096 Dec 13 15:55 mmcblk0p1 drwxr-xr-x 2 root root 4096 Feb 2 16:02 mmcblk0p2