Не отключайте рекламу на сайте - поможете проектуx86_64: LFD10-23.05 ; Roll23.05-23.06 ; LFU22 ; FASi686: DDR01-21.08 Русские PuppyLinux
0 Пользователей и 1 Гость просматривают эту тему.
Т.е. addlayer - одна из функций. Не надо из нее лепить что-то другое
addlayer - одна из функций.
Код#!/bin/sh## mkaufs, DdShurick 28.02.2017, GPL v2. The idea of betcher.usage () { if [ "$1" ]; then echo "$0: $1" else echo "Использовать:" echo " $0 [-r|--root dir] - изменения сохраняются в tmpfs" echo " $0 [-r|--root dir] <раздел> <каталог> - изменения сохраняются в каталог на указанном разделе" echo " -r|--root указать корень создаваемой aufs, по умолчанию /$SYSMNT/aufs$N" echo " раздел - \"sd[a-f][1-9]*\"" echo " каталог - любое имя без пробела" fi exit 0}addlayer () { [ "$(id -u)" = 0 ] || usage "Разрешено только root" while true; do echo "Для выхода нажмите Enter или укажите подключаемый модуль или каталог:" read D [ "$D" ] || exit NEWLAYER=$(realpath "$D") || usage "Файл не найден" [ "$(df "$NEWLAYER" | egrep '^aufs|^unionfs')" ] && usage "Ошибка! '$2' находится на разделе с aufs. Переместите на раздел с другой файловой системой." MODNAME=$(basename "$NEWLAYER") case $(file -b $NEWLAYER) in *directory) ;; Squashfs*4.0*|Linux*ext*) mkdir -p /$SYSMNT/bundles$N/"$MODNAME" mount -o loop "$NEWLAYER" /$SYSMNT/bundles$N/"$MODNAME" NEWLAYER=/$SYSMNT/bundles$N/"$MODNAME";; *) usage "Invalid format $MODNAME" ;; esac mount -o remount,add:1:"$NEWLAYER" "$AUFSROOT" || usage "Ошибка монтирования" done }SYSMNT=$(cut -f2 -d/ /sys/fs/aufs/si_$(grep ' / aufs' /proc/mounts | cut -f2 -d= | tr ',' ' ' | cut -f1 -d' ')/br0)AUFSROOT="/"[ "$0" = "addlayer" ] && addlayerN=$(ls /sys/fs/aufs/ | wc -w) # № для aufs если несколько.AUFSROOT="/$SYSMNT/aufs$N"O=$(getopt -l help,root: -- hr: $@) || usageeval set -- "$O"for OPT in $Odo case "$OPT" in -h|--help) usage; break;; -r|--root) AUFSROOT="$2" shift 2;; --) shift; break;; esacdone[ "$(id -u)" = 0 ] || usage "Разрешено только root"if [ $# = 0 ]; then mkdir /$SYSMNT/changes$N mount -t tmpfs tmpfs /$SYSMNT/changes$Nelif [ $# = 2 ]; then MNTPT="$(grep $1 /proc/mounts | awk '{print $2}')" if [ "$MNTPT" = "" ]; then [ "$(grep $1 /proc/partitions)" ] || usage "Такого раздела не существует" [ "$(blkid $DEV | grep ext)" ] || usage "ФС не Linux" MNTPT=/mnt/$1 mkdir $MNTPT mount /dev/$1 $MNTPT fi mkdir $MNTPT/$2 ln -s $MNTPT/$2 /$SYSMNT/changes$Nelse usagefimkdir -p $AUFSROOTmount -t aufs -o dirs=/$SYSMNT/changes$N/=rw aufs "$AUFSROOT"echo "Создана aufs с корнем $AUFSROOT"addlayer
#!/bin/sh## mkaufs, DdShurick 28.02.2017, GPL v2. The idea of betcher.usage () { if [ "$1" ]; then echo "$0: $1" else echo "Использовать:" echo " $0 [-r|--root dir] - изменения сохраняются в tmpfs" echo " $0 [-r|--root dir] <раздел> <каталог> - изменения сохраняются в каталог на указанном разделе" echo " -r|--root указать корень создаваемой aufs, по умолчанию /$SYSMNT/aufs$N" echo " раздел - \"sd[a-f][1-9]*\"" echo " каталог - любое имя без пробела" fi exit 0}addlayer () { [ "$(id -u)" = 0 ] || usage "Разрешено только root" while true; do echo "Для выхода нажмите Enter или укажите подключаемый модуль или каталог:" read D [ "$D" ] || exit NEWLAYER=$(realpath "$D") || usage "Файл не найден" [ "$(df "$NEWLAYER" | egrep '^aufs|^unionfs')" ] && usage "Ошибка! '$2' находится на разделе с aufs. Переместите на раздел с другой файловой системой." MODNAME=$(basename "$NEWLAYER") case $(file -b $NEWLAYER) in *directory) ;; Squashfs*4.0*|Linux*ext*) mkdir -p /$SYSMNT/bundles$N/"$MODNAME" mount -o loop "$NEWLAYER" /$SYSMNT/bundles$N/"$MODNAME" NEWLAYER=/$SYSMNT/bundles$N/"$MODNAME";; *) usage "Invalid format $MODNAME" ;; esac mount -o remount,add:1:"$NEWLAYER" "$AUFSROOT" || usage "Ошибка монтирования" done }SYSMNT=$(cut -f2 -d/ /sys/fs/aufs/si_$(grep ' / aufs' /proc/mounts | cut -f2 -d= | tr ',' ' ' | cut -f1 -d' ')/br0)AUFSROOT="/"[ "$0" = "addlayer" ] && addlayerN=$(ls /sys/fs/aufs/ | wc -w) # № для aufs если несколько.AUFSROOT="/$SYSMNT/aufs$N"O=$(getopt -l help,root: -- hr: $@) || usageeval set -- "$O"for OPT in $Odo case "$OPT" in -h|--help) usage; break;; -r|--root) AUFSROOT="$2" shift 2;; --) shift; break;; esacdone[ "$(id -u)" = 0 ] || usage "Разрешено только root"if [ $# = 0 ]; then mkdir /$SYSMNT/changes$N mount -t tmpfs tmpfs /$SYSMNT/changes$Nelif [ $# = 2 ]; then MNTPT="$(grep $1 /proc/mounts | awk '{print $2}')" if [ "$MNTPT" = "" ]; then [ "$(grep $1 /proc/partitions)" ] || usage "Такого раздела не существует" [ "$(blkid $DEV | grep ext)" ] || usage "ФС не Linux" MNTPT=/mnt/$1 mkdir $MNTPT mount /dev/$1 $MNTPT fi mkdir $MNTPT/$2 ln -s $MNTPT/$2 /$SYSMNT/changes$Nelse usagefimkdir -p $AUFSROOTmount -t aufs -o dirs=/$SYSMNT/changes$N/=rw aufs "$AUFSROOT"echo "Создана aufs с корнем $AUFSROOT"addlayer
Неудобно, нет автодополнения при наборе имени модуля.
http://wiki.puppyrus.org/puppyrus/pr218/pfs#editor_pfs
изменения касаются /tmp/aufs$n?
1. Научить delaufs взвращать ошибку
[ -d /$SYSMNT/aufs$N -a -d $AUFSROOT ] && usage "Выполнение $0 завершилось с ошибкой" || rm /tmp/aufs$N