Значит надо сначала "cp -a aufs_root/* builddir/ ", потом добавить туда тени и только после этого "mksquashfs builddir"
Да, вариант. Но мне кажется нашел более хитрый ход, при этом с минимальными изменениями кода mkpfs и pfs.
Вот собственно что добавил, плюс пару строк в pfs.
if [ $WH ] ; then
find $n |sed "s:$n/::" > /tmp/allfiles-wh
mount -t aufs -o remount,shwh $n
for line in $(find $n |sed "s:$n/::" |sed 's:/.wh.:/:' |sort |uniq -d) ; do
if grep -q $line /tmp/allfiles-wh ; then
echo $line |sed -r 's:(^.*/)(.*$):\1.wh.\2:' >> /tmp/mkpfs_excludes
else
#это возможно не нужно
echo $line >> /tmp/mkpfs_excludes
fi
done
rm /tmp/allfiles-wh
fi
С ключем -w сохраняются все тени, кроме тех, что "накрыты" файлом. То есть получается так ( W - тень F - файл, X - ничего):
F - W --> W
W - F --> F
F - X --> F
X - F --> F
W - X --> W
X - W --> W
ну и
X - X --> X
На большем числе слоев аналогично, тут важно только что выше в стопке ауфс.
Запушил в v4, просьба проверить, надеюсь с логикой не напутал нигде.
З.Ы. параллельно сохраняются артефакты ауфс если они были в корне, надо наверное их в trim дописать.