#!/bin/sh # add_fstab_entry # place in /lib/udev # $1 = devicename # $2 = fstype devicename=$(basename $1) fstype=$2 if [ -z "$fstype" ]; then fstype="$ID_FS_TYPE" # fstype unknown, do nothing [ -n "$fstype" ] || exit 1 fi [ "$fstype" != "swap" ] || exit 0 BASEDEV=$(echo $devicename | tr -d "0-9") if [ ${BASEDEV} = "fd" ]; then DEVNUM=$(echo $devicename | tr -d "fd") LABEL="floppy${DEVNUM}" fstype="vfat" else export $(udevinfo --query=env --name=$devicename) LABEL=${ID_FS_LABEL_SAFE} if [ -z ${LABEL} ]; then LABEL=$(echo ${ID_BUS}${ID_TYPE}-$devicename |tr " " "_") fi fi # make sure the root we mount to exists ROOT=/tmp/drives [ -d $ROOT ] || mkdir ${ROOT} # invent $MOUNTPOINT MOUNTPOINT=$ROOT/$LABEL [ -d $MOUNTPOINT ] || mkdir ${MOUNTPOINT} BLOCKS=${3:-0} SIZE=$((${BLOCKS}*512/1048576)) DESCRIPTION="${ID_VENDOR}" ENC_CONF="/etc/udev/fs-encoding.conf" [ -f "$ENC_CONF" ] && . "$ENC_CONF" CODEPAGE=${CODEPAGE:-866} IOCHARSET=${IOCHARSET:-utf8} if [ "${ID_TYPE}" = "cd" ]; then MOUNTOPTS="ro" if [ -n "${ID_CDROM_DVD}" ]; then DESCRIPTION="DVD" else DESCRIPTION="CD" fi DESCRIPTION="${DESCRIPTION}-ROM" if [ "${IOCHARSET}" = "utf8" ]; then MOUNTOPTS="${MOUNTOPTS},utf8" else MOUNTOPTS="${MOUNTOPTS},iocharset=${IOCHARSET}" fi echo "/dev/$devicename ${MOUNTPOINT} udf,iso9660,cdfs ${MOUNTOPTS} 0 0" >> /tmp/fstab echo "AddCdromDrive|${LABEL}|/dev/${devicename}|${DESCRIPTION}" > /tmp/lbus.fifo else REMOVABLE=0 MOUNTOPTS="rw,noatime" if [ ${BASEDEV} = "fd" ]; then DESCRIPTION="Floppy" MOUNTOPTS="${MOUNTOPTS},codepage=866,utf8" else case "$ID_BUS" in usb) DESCRIPTION="USB DISK ${ID_VENDOR}" REMOVABLE=1 ;; scsi) [ "x$ID_VENDOR" = "xATA" ] && DESCRIPTION="SATA DISK" || DESCRIPTION="SCSI DISK" ;; ata) DESCRIPTION="ATA DISK" ;; *) DESCRIPTION="DISK" ;; esac DESCRIPTION="${DESCRIPTION} ${ID_MODEL}" if [ "${fstype}" = "vfat" -o "${fstype}" = "fat" ]; then MOUNTOPTS="${MOUNTOPTS},codepage=${CODEPAGE}" fi if [ "${fstype}" = "fat" -o "${fstype}" = "jfs" -o "${fstype}" = "iso9660" -o "${fstype}" = "vfat" -o "${fstype}" = "udf" ]; then MOUNTOPTS="${MOUNTOPTS},iocharset=${IOCHARSET}" fi if [ "${fstype}" = "ntfs" ] && grep -q '^fuse[[:blank:]]' /proc/modules; then if [ -x /sbin/mount.fuse.ntfs ]; then fstype="fuse.ntfs" elif [ -x /sbin/mount.ntfs-3g ]; then fstype="ntfs-3g" fi fi case "${fstype}" in ntfs) MOUNTOPTS="${MOUNTOPTS},nls=${IOCHARSET}" ;; fuse.ntfs|ntfs-3g) MOUNTOPTS="${MOUNTOPTS},silent,umask=000,locale=en_US.UTF-8" ;; esac fi echo "/dev/$devicename ${MOUNTPOINT} ${fstype} ${MOUNTOPTS} 0 0" >> /tmp/fstab echo "AddBlockDevice|${LABEL}|/dev/${devicename}|${REMOVABLE}|${SIZE}|${DESCRIPTION}" > /tmp/lbus.fifo fi