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