Оказалось, что в отсутствии параметра utf8 при загрузке с флешки под fat32 в PUPMODE=5 виноват Дядя Шурик
Если загружаемся с сейвом, то после завершения init раздел остается смонтированным на /initrd/mnt/dev_save, а при PUPMODE=5 в строках 1543 и 1787 отмонтируется
UMOUNTME="/mnt/dev_ro2" #mark for unmounting.
[ "$UMOUNTME" != "" ] && umntfunc $UMOUNTME #101013 puppy*.sfs was copied to tmpfs so can unmount partition.
Кроме того,в конце скрипта прописано отмонтирование CD.
А для подключения модулей в rc.sysinit записано
if [ "$MNTPT" = "" ]; then #если раздел не смонтирован, монтируем раздел
mount /dev/${PDEV1} /initrd/mnt/dev_ro2
MNTPT=/initrd/mnt/dev_ro2
else
MNTPT=/initrd/mnt/dev_save
fi
- т.е монтирование без параметров "mount /dev/${PDEV1} /initrd/mnt/dev_ro2"
Выхода мне видится два
1 поубирать везде в init размонтирование загрузочного раздела (но можно не все найти),
2либо изменить rc.sysinit , добавив из init блок mntfunc с жестко прописанным для vfat -utf8 и изменить в rc.sysinit типа:
#load_soft Version 04, GPL, DdShurick
MNTPT=$(mount | grep '/initrd/mnt/dev'| cut -f3 -d' ') #определяем точку монтирования
[ $PDEV1 ] || PDEV1=$(echo $PUPSFS | cut -f1 -d ',') #если отсутствует $PDEV1, вытаскиваем его из $PUPSFS
if [ "$MNTPT" = "" ]; then #если раздел не смонтирован, монтируем раздел
mntfunc $DEV1FS /dev/$PDEV1 /initrd/mnt/dev_ro2
MNTPT=/initrd/mnt/dev_ro2
fi
Иcправил rc.sysinin и перепаковал основной .sfs - на флешке, под fat32 в PUPMODE=5 появился utf8
исправленный rc.sysinit
здесь