起動スクリプト
/etc/init.d/touro_mount.shを作成。/etc/hotplug.d/scsi_device/usb-buffalo.hotplugを参考にする。
ポイントは青字箇所、partprobeで、パーティションを認識させて、mount_usbdiskでマウントする。mount_usbdiskは、libbuffalo.touroで定義している。
#!/bin/shlibbuffalo.touroを読み込む。libbuffalo.touroは、libbuffaloのmount_usbdiskに下記朱記の変更をしたもの。gptパーティションの名前が、touro_xfsであれば、MountXFSを実行するにした。
#echo "*** $0:$* pid=$$" >/dev/console
LOCK="/var/lock/touro_mount.lock"
. /usr/local/bin/libbuffalo.touro
. /usr/local/lib/libsys
cleanup_exit()
{
rm -f ${LOCK}
exit $1
}
mount_touro()
{
local i
for i in `seq 1 ${MAX_USBDISK_NUM}`
do
TOURO=`grep /dev/usbdisk${i} /var/tmp/usb_list | grep Touro`
if [ ! -z "${TOURO}" ] ; then
##/usr/local/sbin/partprobe /dev/usbdisk${i}
partprobe /dev/usbdisk${i}
mount_usbdisk ${i} fi
done
}
##echo "env=(`env`)"
if [ -f ${LOCK} ] ; then
exit 1
fi
echo $$ > ${LOCK}
#spinlock_file /var/lock/usb-hotplug
### USB-Strage devices
if [ "$1" = "stop" ]; then
echo "umount USB disks"
/usr/local/bin/service_control.sh media stop
/usr/local/bin/service_control.sh share stop
for i in `seq 1 ${MAX_USBDISK_NUM}`
do
umount -f ${MPT_USBSHARE}${i}
done
fi
#if [ $? -eq 1 -a "$1" != "create" ]; then
#fi
if [ "$1" = "start" ]; then
mount_touro
echo "*** [$0 $$] Restarting Daemons..." > /dev/console
# if ${ACTION} is "remove" already servers are killed.
# so no need to stop servers at here.
if [ "${2}" != "test" ] ; then
/usr/local/bin/service_control.sh media stop
/usr/local/bin/service_control.sh share stop
sleep 1
/usr/local/bin/service_control.sh share start
/usr/local/bin/service_control.sh media start
fi
fi
#echo "--- exit pid=$$" >/dev/console
cleanup_exit $?
mount_usbdisk()
{
...
xfs)
echo "xfs"
MountXFS /dev/${BASENAME}_$minor ${MPT}
if [ $? -eq 0 ]; then
chmod 777 ${MPT}
rm -rf "${MPT}/lost+found" > /dev/null >&1
return 0
fi
;;
### begin - Touro mount
*)
PNM=`grep "^${minor}:" /tmp/fdisk_usb|awk -F ":" '{print $6}'`
if [ "${PNM}" = "touro_xfs" ] ; then
echo "touro_xfs"
MountXFS /dev/${BASENAME}_$minor ${MPT}
if [ $? -eq 0 ]; then
chmod 777 ${MPT}
rm -rf "${MPT}/lost+found" > /dev/null 2>&1
return 0
fi
fi
;;
### end - Touro mount ...
}
隘路
libbuffaloのmount_usbdiskを書き換えたが、再起動したら書き換え前に戻ってしまった。起動の度に、上書きするようなので、libbuffalo.touroを別に作成した。
つづく。
0 件のコメント:
コメントを投稿