#!/bin/sh -f # # create /dev/disk/by-* and /dev/mapper/* symlinks create_symlink() { sym="$1" sym="${sym%\"}" sym="${sym#\"}" sym="${dir}/${sym}" mkdir -p "$dir" ln -s "/dev/${dev_name}" "$sym" } # int main() { [ "${dev_name=${DEVPATH##*/}}" ] || exit 1 exec > /dev/null 2>&1 # avoid race condition while ! blkid "/dev/${dev_name}"; do sleep 1; done for line in $(blkid "/dev/${dev_name}"); do case "${line%%=*}" in UUID) dir=/dev/disk/by-uuid create_symlink "${line##*=}" ;; LABEL) dir=/dev/disk/by-label create_symlink "${line##*=}" ;; PARTUUID) dir=/dev/disk/by-partuuid create_symlink "${line##*=}" ;; esac; done [ -e "/sys/block/${dev_name}/dm/name" ] && { mkdir -p /dev/mapper read -r dm_name < "/sys/block/${dev_name}/dm/name" ln -sf "/dev/${dev_name}" "/dev/mapper/${dm_name}" } }