грузиться полностью в память, а ето 600 мб как никак.
А если памяти всего 500 или 256...
Получается - такой дистр в дефолтном варианте
pfix=copy копировать файлы системы в RAM (система будет работать быстрее)
плохая идея использовать - только full или
pfix=nocopy не копировать файлы системы в RAM (экономия оперативной памяти)
На пк с 256 он автоматически переходит в pfix=nocopy или вообще не стартует?
конечно запускается. чего ему будет? Отчасти проблема в том, что закачивать нужно на разделы линукса, а у меня большие разделы по привычке под нтфсом. Ну и вообще у меня затыки с торрентами под линухой. Каждый раз бубен приходится брать.
??? У меня тоже, раздел для скачанных файлов под ntfs - и никогда проблем не было ??? Трансмишену все-равно, фул или фругал, необходимо в его настройках указать путь, куда сохранять, и что-бы до запуска трансмишена этот раздел был смонтирован. Это можно сделать "автоматом" из /etc/rc.d/rc.local . Открываете его в любом текстовом редакторе, и дописываете mount ntfs-3g /dev/sda5 /mnt/sda5
mount ntfs-3g /dev/sda7 /mnt/sda7
Вместо sda5 sda7 - ваши разделы. Стоит фулл Прицессе и Иванна - никаких проблем с трансмишеном.
Я ее получил "вручную", открыв сейв в другом Puppy, скопировал все в отдельную папку, и сжал в .sfs с .gz сжатием.
Самый простой вариант сделать то же самое, открыть терминал в каталоге с файлами Puppy и скомандоватьmksquashfs /initrd/pup_rw/ slackosave.sfs -comp -gz
На крайний случай, можно ввести проверку на PUPMODE=13 и предупреждать, что сохранятся изменения не текущей, а предыдущей сессии и делать mksquashfs /initrd/pup_ro1/ slackosave.sfs -comp -gz
:)
Так же при наличии избытка памяти, можно создавать RAM-диск, скидывать туда pup_ro1 и pup_rw, и уже его сжимать ;)
DdShurick вот (http://yadi.sk/d/u1KWB7oLFgLk7) отдельно "пиленный" init - может вы что поправите
Строка 445 FND_PUPSAVES="" # для поиска сохраненок добавлено расширение .sfs ${DISTRO_FILE_PREFIX}save*.[234s]fs
- в этот блок добавлена возможность .sfs
строка 879 проверяется сохраненка [234]fs или .sfs
PUPSAVEFILE="`echo -n "$PUPSAVE" | cut -f 3 -d ','`" #проверяем тип со-
SFFS2="`echo -n "$PUPSAVEFILE" | rev | cut -c 3`" # храненки .sfs
[ "$SFFS2" = "s" ] && PUPMODE=14 #изменение режима с 12 на 14 при сейве.sfs
строка 93014) CREATETMPFS="/pup_rw";CREATEPUPSAVE2FS="/pup_ro1";CREATEPUPXXXSFS="/pup_ro2"
OLDFILESMNTPT="/pup_ro1";NEWFILESMNTPT="/pup_ro2";UMNTMAIN="/pup_rw=rw:/pup_ro1=ro:/pup_ro2=ro";; #режим для сейв.sfs
вводится доп режим с CREATETMPFS="/pup_rw
строка 1091 SFFS2=`echo -n "$PUPSAVEFILE" | rev | cut -c 3`
SFFS3=""
if [ "$SFFS2" != "s" ];then # проверка типа сохраненки *.sfs или *.[234]fs и выбор опций монтирования
SFFS3="$SFFS"
else
SFFS3=squashfs
fi
mount -t $SFFS3 -o noatime /dev/loop1 $CREATEPUPSAVE2FS # монтирование сохраненки
вводятся доп переменные для изменения параметров монтирования так-как сквошфс и ext3 монтируются с разными параметрами
в самом монтировании ничего не менял if [ "$LAYERFS" = "aufs" ];then
mount -t aufs -o udba=reval,diropq=w,dirs=${UMNTMAIN}${ZLAYER}${UMNTRO} unionfs /pup_new
else #unionfs
UMNTMAIN="`echo -n "$UMNTMAIN" | sed -e 's/+wh//g'`" #w003 'ro+wh' not accepted by unionfs, change back to 'ro'.
mount -t unionfs -o dirs=${UMNTMAIN}${ZLAYER}${UMNTRO} unionfs /pup_new
fi
Сегодня поставил Слако на флешку, в отдельный каталог на ext3 разделе. загрузился без сейва - нормально. Поменял обои, тему значков, настройки ROX. Выключился с созданием стандартной сохраненки на 64 мБ. В другом Puppy смонтировал этот сейв, все скопировал в каталог, не могло перенести некоторые файлы - их пропустил. Из каталога создал модуль slackosave.sfs, предыдущий вариант сохраненки удалил. С новым сейвом все загрузилось нормально, все изменения внешнего вида и ROX сохранились . PUPSTATE:PUPMODE=14
PDEV1='sdc1'
DEV1FS='ext3'
PUPSFS='sdc1,ext3,/slacko5.4frugal/puppy_slacko_5.4.sfs'
PUPSAVE='sdc1,ext3,/slacko5.4frugal/slackosave.sfs'
PMEDIA='usbflash'
#ATADRIVES is all internal ide/pata/sata drives, excluding optical, excluding usb...
ATADRIVES='sda sdb '
#ATAOPTICALDRIVES is list of non-usb optical drives...
ATAOPTICALDRIVES='sr0 '
#these directories are unionfs/aufs layers in /initrd...
SAVE_LAYER='/pup_ro1'
PUP_LAYER='/pup_ro2'
#The partition that has the slackosave file is mounted here...
PUP_HOME='/mnt/dev_save'
#(in /initrd) ...note, /mnt/home is a link to it.
#this file has extra kernel drivers and firmware...
ZDRV='sdc1,ext3,/slacko5.4frugal/zdrv_slacko_5.4.sfs'
#complete set of modules in the initrd (moved to main f.s.)...
ZDRVINIT='no'
#Partition no. override on boot drive to which session is (or will be) saved...
PSAVEMARK=''
#PLANG is written to LANG in /etc/profile by init script initrd...
PLANG=ru_RU.UTF-8
OUTPUT_CHARSET=UTF-8
export OUTPUT_CHARSET
PSUBDIR='/slacko5.4frugal'
Небольшая заморочка - при каждой загрузке выскакивает менеджер загрузки SFS. Позже я подправлю в init, а временно проблему можно убрать, если перед созданием из каталога в .sfs модуль в /etc/rc.d/BOOTCONFIG записать LASTUNIONRECORD='slackosave.sfs'
NEWUNIONRECORD='slackosave.sfs'
EXTRASFSLIST=''
Немного доработал init - теперь корректно обрабатывает переменную EXTRASFSLIST= из /etc/rc.d/BOOTCONFIG . Исправленный initrd.gz можно скачать отсюда (http://yadi.sk/d/d5DX7xipFmcmD)
Для быстрого и корректного создания slackosave.sfs "слепил" небольшой скрипт на основе предложенного Дядей Шуриком, адаптировав под реалии Слако :) . Нормально отрабатывает и из PUPMODE=5, а если запускать его при имеющейся slackosave.sfs, то изменения перекрывают предыдущее состояние, перезаписывая вместо старого .sfs новый.
#!/bin/sh
#070713 DdShurick v002 GPL
# 10.01.14 Исправлено под puppy_slacko_5.4
. /etc/DISTRO_SPECS
. /etc/rc.d/PUPSTATE
mkdir -p /tmp/savesfs-root
OLDSAVE=$(losetup | grep ${DISTRO_FILE_PREFIX}save.sfs) && OLDSAVE=$(mount | grep "$(echo "$OLDSAVE" | cut -f1 -d':') " | cut -f3 -d' ')
[ "$(echo "$OLDSAVE" | grep pup_ro)" = "" ] || cp -a ${OLDSAVE}/* /tmp/savesfs-root/
cp -a $(ls -d /initrd/pup_rw/[!dimstv]*) /tmp/savesfs-root/
echo false > /tmp/savesfs-root/etc/.XLOADED
mkdir -p /tmp/savesfs-root/var/local
touch /tmp/savesfs-root/var/local/delayedrun_firstboot_flag
mksquashfs /tmp/savesfs-root/ ${DISTRO_FILE_PREFIX}save.sfs
P=$(losetup | grep $DISTRO_PUPPYSFS)
if [ "$P | grep dev_ro2" != "" ];then
mv -f ${DISTRO_FILE_PREFIX}save.sfs /initrd/mnt/dev_ro2$PSUBDIR/
fi
if [ "$P | grep dev_save" != "" ];then
mv -f ${DISTRO_FILE_PREFIX}save.sfs /initrd/mnt/dev_save$PSUBDIR/
fi
gtkdialog-splash -text МОДУЛЬ_СОХРАНЕНИЯ_ГОТОВ -timeout 5 fontsize x-large
Еще раз спасибо Дяде Шурику за помощь в "создании велосипедов" ;D ( То, что для одного "велосипед" , для другого "космический корабль" :D )
Скрипт, для создания сейв.sfs для Слако ( а возможно подойдет и для других "буржуйских" Puppy) можно скачать здесь (http://yadi.sk/d/CMTpWhkKFmcsf)
Почитал Ваш init, попробовал запускать систему в разных условиях - конечно, "эти гири еще пилить и пилить" - но они золотые :D - этот init находит файлы Puppy на флешке с такой- же скоростью, как и с HDD :)
На случай, если будете дорабатывать - замеченные недостатки при загрузке:
строки выводимые init, перестают отображаться после начала выведения строк работы rc.sysinit
в "оригинальном" варианте Слако при PUPMODE=5 загрузочный раздел монтируется на dev_ro2, а не на dev_base
Разделы дисков на IDE и SATA определяет как на USB, показывая соответствующие иконки.Попытка создать стандартный slackosave.3fs не удалась. Возможно слишком много скриптов Слако используют различные переменные из PUPSTATE :( ,а у вас он пока практически пуст. Даже /sbin/probedisk2 выдает probedisk2
/dev/sda|usbdrv|ATA SAMSUNG HD642JJ
/dev/sdb|usbdrv|ATA HDS722512VLAT80
/dev/sr0|optical|HL-DT-STDVDRAM GH22NS70
Для его нормальной работы if [ "`echo "$ATADRIVES" | grep "$ONEDRV"`" = "" ];then
MEDIA="usbdrv" #v4.01
echo "$ONEDRV" >> /root/.usb-drive-log-probedisk
sort -u /root/.usb-drive-log-probedisk > /tmp/usb-drive-log-probedisk-tmp
mv -f /tmp/usb-drive-log-probedisk-tmp /root/.usb-drive-log-probedisk
в PUPSTATE должна быть записана переменная :(
На случай, если будете дорабатывать - замеченные недостатки при загрузке:
Я думал вы этим займётесь
строки выводимые init, перестают отображаться после начала выведения строк работы rc.sysinit
Это пока не знаю
в "оригинальном" варианте Слако при PUPMODE=5 загрузочный раздел монтируется на dev_ro2, а не на dev_base
А какая разница, куда монтировать?
Разделы дисков на IDE и SATA определяет как на USB, показывая соответствующие иконки.Попытка создать стандартный slackosave.3fs не удалась. Возможно слишком много скриптов Слако используют различные переменные из PUPSTATE :( ,а у вас он пока практически пуст.
В Richy PUPSTATE осутствует за ненадобностью.
/sbin/probedisk2
Надо переписать. Переменную можно получить например так
ATADRIVES=$(ls /sys/block/[hs]d?/removable | while read DEV; do [ "$(cat $DEV)" = 0 ] && echo $DEV | cut -f4 -d'/'; done)
обнаружил серьезную ошибку в ините, невозможно подключить никаой модуль даже самый маленький, пишет что свободно 0 кб
Ошибка не в init. Вот ручное подключение модуляmkdir /mnt/.lm-sensors
mount -o loop,ro /mnt/sda3/SFS/lm-sensors.sfs /mnt/.lm-sensors/
mount -o remount,append:/mnt/.lm-sensors/ /
which sensors
/usr/bin/sensors
Как видите модуль подключился. Ошибка в pfs-utils.
Добавил в init строки ATADRIVES=$(ls /sys/block/[hs]d?/removable | while read DEV; do [ "$(cat $DEV)" = 0 ] && echo $DEV | cut -f4 -d'/'; done)
и echo "ATADRIVES=$ATADRIVES" >> /pup_rw/etc/rc.d/PUPSTATE
пересобрал initrd.gz
в результате sda определило правильно, а sdb - на USB т.к. переменную выдало в две строки PUPMODE=5
PUPSAVE=
ATADRIVES=sda
sdb
с sda8, стандартным способом подключило .sfs модуль, хотя и повозмущалось на отсутствие свободных pup_ro* ;)
echo "ATADRIVES=$ATADRIVES"
Попробуйте без кавычек.
Набросал два варианта probedisk, у каждого свои недостатки
1 вариант (probedisk2)
#!/bin/sh
#DdShurick GPL v001 30.11.2013
#based on probedisk3 written by Dougal.
ls -d /sys/block/[hms][cdmr]? | while read DEV
do
ONEDRV="$(basename $DEV)"
case $ONEDRV in
hd*) MEDIA="`cat /proc/ide/$ONEDRV/media`"
[ "$MEDIA" = "disk" ] && MEDIA="drive"
[ "$MEDIA" = "cdrom" ] && MEDIA="optical"
INFO="`cat /proc/ide/$ONEDRV/model`" ;;
sd*) MEDIA="drive" ;;
scd*|sr*) MEDIA="optical" ;;
mmc*) MEDIA="card" ;;
*) continue ;;
esac
INFO=$(cat /sys/block/$ONEDRV/device/{vendor,model} | tr '\n' ' ')
echo "/dev/$ONEDRV|$MEDIA|$INFO"
done
Не определяет usbdrv
2 вариант (probedisk + probedisk2)
#!/bin/sh
#DdShurick GPL 12.01.2014
#based on probedisk3 written by Dougal.
ls -d /sys/block/[hms][cdmr]? | while read DEV
do
ONEDRV="$(basename $DEV)"
case `cat $DEV/events` in
media_change\ eject_request)
if [ "$0" = "probedisk" ]; then
MEDIA="cdrom"
elif [ "$0" = "probedisk2" ]; then
MEDIA="optical"
fi ;;
media_change)
if [ "$0" = "probedisk" ]; then
MEDIA="Direct-Access"
elif [ "$0" = "probedisk2" ]; then
MEDIA="usbdrv"
fi ;;
"") MEDIA="drive" ;;
*) continue ;;
esac
INFO=$(cat $DEV/device/{vendor,model} | tr '\n' ' ')
echo "/dev/$ONEDRV|$MEDIA|$INFO"
done
Здесь probedisk2 ссылка на probedisk, не определяет mmc-карты, проверить не на чем.
Попробовал без кавычек, в PUPSTATE PUPMODE=5
PUPSAVE=
ATADRIVES=sda sdb
но оба диска как USB :(
подправил строку , как в исходном , Слаковском, echo "ATADRIVES='$ATADRIVES'" >> /pup_rw/etc/rc.d/PUPSTATE
Получил в PUPSTATE PUPMODE=5
PUPSAVE=
ATADRIVES='sda
sdb'
но тип дисков определился правильно ;) очевидно одиночные кавычки в значении переменной играют роль :D.
Теперь в измененном probedisk2 нет необходимости - заработал "родной" , но скорей-всего придется наполнять PUPSTATE теми-же переменными, что и в родном варианте - очень много скриптов Слако берут из него данные :( так сейчас shutdownconfig неверно выдает путь создания сохраненки. Возможно из-за неполных данных в PUPSTATE некорректно отрабатывает и SFS-Load :(
С инитом от Валантина тоже не подключается модули, покрайней мере большие, наверное это как то связано с PUPMOD=14, есть еще какие нибудь идеи или лучше забить на инит и попробовать со стандартным инитом и костыльным скриптом
Мой скрипт создает модуль сохранения в виде zdrv, при этом что бы имитировать подключение выше базы, настройки хранятся отдельно, срабатывает скрипт который копирует эти настройки с заменой файлов, потом происходит удаление этих отдельных настроек что бы не засорять память, и рестарт иксов, все мы в своей настроенной системе и все работает правильно.
по сути единственный заметный недостаток это рестарт иксов после загрузки, но зато имеем полноценную неубиваемую сохраненку, которую можно делать сколько угодно и все работает четко
Так вот я прошу помощи доработать этот скрипт, мне нужно что бы модуль zdrv создавлся в нужном месте, то есть возле базы
#!/bin/sh
#save.sfs for classic puppy, imago31
#создание дерева директорий и копирование настроек в отдельную папку
mkdir /zz
mkdir /zz/opt
mkdir /zz/opt/ss
mkdir /zz/etc
mkdir /zz/etc/init.d
rm -R /initrd/pup_rw/root/.cache
cp -a /initrd/pup_rw/root /zz/opt/ss
cp -a /initrd/pup_rw/etc /zz/opt/ss
cp -a /initrd/pup_rw/opt /zz/opt/ss
#создание исполняемого скрипта boot
echo "#!/bin/sh" > /zz/etc/init.d/boot
echo rm -R /usr/sbin/shutdownconfig >> /zz/etc/init.d/boot
echo cp -a /opt/ss/* / >>/zz/etc/init.d/boot
echo rm -R /opt/ss >>/zz/etc/init.d/boot
echo restartwm >>/zz/etc/init.d/boot
#назначение прав исполнения скрипта boot
chmod +x /zz/etc/init.d/boot
#сборка модуля в виде zdrv
mksquashfs /zz zdrv_slacko_5.4.sfs
gtkdialog-splash -text МОДУЛЬ_СОХРАНЕНИЯ_ГОТОВ -timeout 5 fontsize x-large
Смотрим /etc/rc.d/PUPSTATE (у меня правда Slacko 5.5-PAE):
PUPMODE=5
PDEV1='sda7'
DEV1FS='ext3'
PUPSFS='sda7,ext3,/slacko55PAEru/puppy_slacko_5.5.sfs'
PUPSAVE=''
PMEDIA='atahd'
#ATADRIVES is all internal ide/pata/sata drives, excluding optical, excluding usb...
ATADRIVES='sda '
#ATAOPTICALDRIVES is list of non-usb optical drives...
ATAOPTICALDRIVES=''
#these directories are unionfs/aufs layers in /initrd...
SAVE_LAYER=''
PUP_LAYER='/pup_ro2'
#The partition that has the slackosave file is mounted here...
PUP_HOME=''
#(in /initrd) ...note, /mnt/home is a link to it.
#this file has extra kernel drivers and firmware...
ZDRV=''
#complete set of modules in the initrd (moved to main f.s.)...
ZDRVINIT='no'
#Partition no. override on boot drive to which session is (or will be) saved...
PSAVEMARK=''
#PLANG is written to LANG in /etc/profile by init script initrd...
PLANG=ru_UA.UTF-8
OUTPUT_CHARSET=UTF-8
export OUTPUT_CHARSET
PSUBDIR='/slacko55PAEru'
и пробуем сделать так:
#сборка модуля в виде zdrv
. /etc/rc.d/PUPSTATE
mksquashfs /zz /mnt/$PDEV1$PSUBDIR/zdrv_slacko_5.4.sfs
gtkdialog-splash -text МОДУЛЬ_СОХРАНЕНИЯ_ГОТОВ -timeout 5 fontsize x-large
З.Ы. Только прежде обязательно должен быть смонтирован раздел, на который установлена система, ну или прописать в скрипт монтирование раздела $PDEV1
ИМХО - Их скрипты графоманско-объемные т.к пытаются предусмотреть все возможные действия юзверя :) - версию модуля, тип носителя, Ф.С, и прочее.
Родной load_sfs вариант с PUPMODE=14 относит к категории *) - прочее и выполняет немного другие действия, чем при PUPMODE=12|13 :(
Я не переписывал заново "базовый" скрипт, а просто добавил и изменил несколько строк. 14) SAVE_LAYER='/pup_ro1'; PUP_HOME='/mnt/dev_save';;
....
6|12|13|14) SFSMODE="y";;
Т.е в стандартных вариантах 5;12;13 - скрипт будет гарантированно правильно отрабатывать .
В предыдущих экспериментах я пробовал назначать режим PUPMODE=13 при использовании slackosave.sfs - система загружалась , но часто выскакивало сообщение о недостатке места в сейве - неприятно и пугающе :)
Может кому пригодится :) Доработанный скрипт по созданию slackosave.sfs #!/bin/sh
#070713 DdShurick v002 GPL
# 10.01.14 Исправлено под puppy_slacko_5.4
. /etc/DISTRO_SPECS
. /etc/rc.d/PUPSTATE
yaf-splash -font "8x16" -outline 0 -margin 4 -bg green -text "Создание модуля сохранения slackosave.sfs..." &
MSGPID=$!
mkdir -p /tmp/savesfs-root # Создаем вспомогательный каталог
OLDSAVE=$(losetup | grep ${DISTRO_FILE_PREFIX}save.[234s]fs) && OLDSAVE=$(mount | grep "$(echo "$OLDSAVE" | cut -f1 -d':') " | cut -f3 -d' ')
[ "$(echo "$OLDSAVE" | grep pup_ro)" = "" ] || cp -a ${OLDSAVE}/* /tmp/savesfs-root/ # Если предыдущая сохраненка любого типа смонтирована - копируем ее содержимое во временный каталог
cp -a $(ls -d /initrd/pup_rw/[!dimstv]*) /tmp/savesfs-root/ # копируем текущее состояние системы в тот-же каталог
echo false > /tmp/savesfs-root/etc/.XLOADED
mkdir -p /tmp/savesfs-root/var/local
touch /tmp/savesfs-root/var/local/delayedrun_firstboot_flag # записываем файлы необходимые для безпроблемной загрузки
P=$(losetup | grep $DISTRO_PUPPYSFS) #Определяем куда смонтирован раздел с Puppy
if [ "$P | grep dev_ro2" != "" ];then
mksquashfs /tmp/savesfs-root/ /initrd/mnt/dev_ro2$PSUBDIR/${DISTRO_FILE_PREFIX}save.sfs # если загрузились без сейва - создаем его
fi
if [ "$P | grep dev_save" != "" ];then
rm -f /initrd/mnt/dev_save$PSUBDIR/${DISTRO_FILE_PREFIX}save.sfs # удаляем прежний slackosave.sfs
mksquashfs /tmp/savesfs-root/ /initrd/mnt/dev_save$PSUBDIR/${DISTRO_FILE_PREFIX}save.sfs # создаем slackosave.sfs
fi
kill $MSGPID
sleep 0.5
gtkdialog-splash -text МОДУЛЬ_СОХРАНЕНИЯ_ГОТОВ -timeout 5 fontsize x-large
При поиске смонтированных сохраненок определяет и стандартную *.2,3,4fs и эти данные переносит в новую slackosave.sfs . В процессе создания модуля - выводится сообщение об этом :D
Готовый скрипт можно скачать отсюда (http://yadi.sk/d/T-FfrAIUG6uvu)
При очень больших размерах сохраненок на машинах с малым объемом RAM\swap могут быть проблемы, т.к. идет копирование в /tmp :(
Сейчас проверил второй вариант скрипта создания из начальной загрузки с HDD/ext-2 и с флешки под ntfs :D - модуль сохраненки создается ::) , но у меня установлено в каталог, а не на раздел полностью.
Для проверки загрузитесь без сохраненки и в терминале losetup | grep puppy_slacko_5.4.sfs
puppy_slacko_5.4.sfs - это имя "базового " файла если у вас другое - вставляете его.
должно выдать типа /dev/loop0: 0 /mnt/dev_ro2/slacko5.4frugal/puppy_slacko_5.4.sfs
У вас есть в ответе dev_ro2?
В Слако при PUPMODE=5 раздел с которого идет загрузка монтируется на /initrd/mnt/dev_ro2, а при загрузке с любой сохраненкой монтирует на /initrd/mnt/dev_save
Соответственно при PUPMODE=5 сохраненка создается в /initrd/mnt/dev_ro2$PSUBDIR/${DISTRO_FILE_PREFIX}save.sfs
Проблема может быть, если реально slackosave.sfs существует, но загрузились в pfix=ram что-бы сохраненка не подхватывалась - тогда старую на новую не заменит :(
Я не спец, но сейчас попробовал добавить в скрипт условие по tmpfs, но все равно не работает
P=$(losetup | grep $DISTRO_PUPPYSFS) #Определяем куда смонтирован раздел с Puppy
if [ "$P | grep dev_ro2" != "" ];then
mksquashfs /tmp/savesfs-root/ /initrd/mnt/dev_ro2$PSUBDIR/${DISTRO_FILE_PREFIX}save.sfs # если загрузились без сейва - создаем его
fi
if [ "$P | grep tmpfs" != "" ];then
mksquashfs /tmp/savesfs-root/ /initrd/mnt/tmpfs$PSUBDIR/${DISTRO_FILE_PREFIX}save.sfs
fi
if [ "$P | grep dev_save" != "" ];then
rm -f /initrd/mnt/dev_save$PSUBDIR/${DISTRO_FILE_PREFIX}save.sfs # удаляем прежний slackosave.sfs
mksquashfs /tmp/savesfs-root/ /initrd/mnt/dev_save$PSUBDIR/${DISTRO_FILE_PREFIX}save.sfs # создаем slackosave.sfs
fi
Покажите строки загрузки из menu.lst :)
а в/initrd/mnt/dev_ro2 - раздел флешки, откуда загружаетесь, смонтирован ?
и если можно вывод команды losetup | grep puppy_slacko_5.4.sfs
при загрузке с любой сохраненкой.
Если у вас и с сохраненкой не выводит # losetup
/dev/loop0: 0 /mnt/dev_save/slacko5.4frugal/puppy_slacko_5.4.sfs
/dev/loop1: 0 /mnt/dev_save/slacko5.4frugal/slackosave.sfs
/dev/loop3: 0 /mnt/dev_save/slacko5.4frugal/zdrv_slacko_5.4.sfs
, то странно как скрипт работает :)он ведь проверяет "$P | grep dev_save" != ""
и если не найдет dev_save то сохраненку там не создаст :)
Разница в монтировании базы при PUPMODE=5 между нашими ПК из-за различия в объеме RAM - у вас туда все помещается, а мне только монтировать с раздела :( Завтра постараюсь добавить проверку и монтирование в скрипт .
Если не трудно, приведите mount и losetup при загрузке с сейвом и без
вот с сохраненкой:
mount
# mount
rootfs on / type rootfs (rw,relatime)
/dev/sda1 on /initrd/mnt/dev_save type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=cp437,iocharset=iso8859-1,shortname=mixed,quiet,utf8,errors=remount-ro)
/dev/loop1 on /initrd/pup_ro1 type squashfs (ro,noatime)
tmpfs on /initrd/pup_rw type tmpfs (rw,relatime,size=1036912k)
tmpfs on /initrd/mnt/tmpfs type tmpfs (rw,relatime,size=596044k)
/dev/loop0 on /initrd/pup_ro2 type squashfs (ro,noatime)
unionfs on / type aufs (rw,relatime,si=3a1e7904)
none on /proc type proc (rw,relatime)
none on /dev/pts type devpts (rw,relatime,gid=2,mode=620)
none on /sys type sysfs (rw,relatime)
shmfs on /dev/shm type tmpfs (rw,relatime,size=214884k)
none on /proc/bus/usb type usbfs (rw,relatime)
#
losetup
# losetup
/dev/loop0: 0 /mnt/tmpfs/puppy_slacko_5.4.sfs
/dev/loop1: 0 /mnt/dev_save/rubik/slackosave.sfs
#
вот без сохраненки
mount
# mount
rootfs on / type rootfs (rw,relatime)
tmpfs on /initrd/pup_rw type tmpfs (rw,relatime,size=1036912k)
tmpfs on /initrd/mnt/tmpfs type tmpfs (rw,relatime,size=596044k)
/dev/loop0 on /initrd/pup_ro2 type squashfs (ro,noatime)
unionfs on / type aufs (rw,relatime,si=c9c42c9d)
none on /proc type proc (rw,relatime)
none on /dev/pts type devpts (rw,relatime,gid=2,mode=620)
none on /sys type sysfs (rw,relatime)
shmfs on /dev/shm type tmpfs (rw,relatime,size=364116k)
none on /proc/bus/usb type usbfs (rw,relatime)
#
losetup
# losetup
/dev/loop0: 0 /mnt/tmpfs/puppy_slacko_5.4.sfs
#
По кириллице вопрос уже решался и в UpupRaring и в Ivanna - добавляется параметр utf8 при монтировании разделов fat32 В последнем варианте init для Слако это строка 585#091122 load keyboard layout if PKEYS boot param...
STATUS=0
VFAT_OUT_PARAM='shortname=mixed,quiet,utf8'
"Приручение" .sfs опишу чуть позже.
Изменения в init для подключения slackosave.sfs :
1. В блоке FND_PUPSAVES= , строки 445- 485 , везде, где стоит ${DISTRO_FILE_PREFIX}save*.[234]fs
заменяем на ${DISTRO_FILE_PREFIX}save*.[234s]fs
скрипт определяет и slackosave.sfs как стандартную сохраненку
2. В строках 879-881 проверяется, если сохраненка .sfs то назначается режим 14 PUPSAVEFILE="`echo -n "$PUPSAVE" | cut -f 3 -d ','`" #проверяем тип со-
SFFS2="`echo -n "$PUPSAVEFILE" | rev | cut -c 3`" # храненки .sfs
[ "$SFFS2" = "s" ] && PUPMODE=14 #изменение режима с 12 на 14 при сейве.sfs
3. Строка 930 - назначаются параметры монтирования для режима PUPMODE=14 14) CREATETMPFS="/pup_rw";CREATEPUPSAVE2FS="/pup_ro1";CREATEPUPXXXSFS="/pup_ro2"
OLDFILESMNTPT="/pup_ro1";NEWFILESMNTPT="/pup_ro2";UMNTMAIN="/pup_rw=rw:/pup_ro1=ro:/pup_ro2=ro";; #режим для сейв.sfs
4. Строки 1091 - 1098 добавляются параметры для монтирования .sfs сохраненки SFFS2=`echo -n "$PUPSAVEFILE" | rev | cut -c 3` # доп. переменые
SFFS3=""
if [ "$SFFS2" != "s" ];then # проверка типа сохраненки *.sfs или *.[234]fs и выбор опций монтирования
SFFS3="$SFFS"
else
SFFS3=squashfs
fi
mount -t $SFFS3 -o noatime /dev/loop1 $CREATEPUPSAVE2FS # монтирование сохраненки
Теперь самый "проблемный" блок - обработка /etc/ BOOTCONFIG
Строка 1517 проверяет его наличие, а если не находит - пытается создать ;) [ ! -f $OLDFILESMNTPT/etc/rc.d/BOOTCONFIG ] && touch $OLDFILESMNTPT/etc/rc.d/BOOTCONFIG
Возможно это и объясняет кернел - паник если такого файла нет в sleckosave.sfs - в сфску не допишеш :D
В Слако/Прицессе при стандартном ручном подключении *.sfs их имена записываются в /etc/ BOOTCONFIG в переменную EXTRASFSLIST= и при следующей загрузке они монтируются автоматически :) Так-же при загрузке сравнивается содержимое переменных NEWUNIONRECORD и LASTUNIONRECORD в которых записаны имена модулей, подключаемых при последней и предпоследней загрузке. Если переменные не совпадают, система пытается обновиться. Поэтому я постарался оставить для стандартных режимов стандартный вариант, а изменил только для 14
строки 1616 - 1628 if [ "$PUPMODE" != "14" ];then
xBOOTCONFIG="`grep -v '^PREVUNIONRECORD' $OLDFILESMNTPT/etc/rc.d/BOOTCONFIG | sed -e 's/^LASTUNIONRECORD/PREVUNIONRECORD/'`"
echo "$xBOOTCONFIG" > /pup_rw/etc/rc.d/BOOTCONFIG
#sync
echo "LASTUNIONRECORD='$NEWUNIONRECORD'" >> /pup_rw/etc/rc.d/BOOTCONFIG
[ "$LASTUNIONRECORD" = "$NEWUNIONRECORD" ] && NEWUNIONRECORD="" #used below.
#...if layers changed since last boot, code further down will do whiteout files purge.
#.../etc/rc.d/rc.update reads BOOTCONFIG, updates menu (etc) if layers changed.
else
echo "LASTUNIONRECORD='slackosave.sfs'" >> /pup_rw/etc/rc.d/BOOTCONFIG
echo "NEWUNIONRECORD='slackosave.sfs'" >> /pup_rw/etc/rc.d/BOOTCONFIG
echo "EXTRASFSLIST='$EXTRASFSLIST'" >> /pup_rw/etc/rc.d/BOOTCONFIG
fi
Так- же для небольшого ускорения загрузки с винта я всегда в исходных от Precise ставлю
строки 751-755 if [ "$PMEDIA" != "atahd" ];then
while [ ! -e /tmp/flag-usb-ready ];do #110710 wait for usb process to complete.
usleep 250000 #microseconds
done
fi
вместоwhile [ ! -e /tmp/flag-usb-ready ];do #110710 wait for usb process to complete.
usleep 250000 #microseconds
done
- не ждет проверки usb
Теперь самый "проблемный" блок - обработка /etc/ BOOTCONFIG
Строка 1517 проверяет его наличие, а если не находит - пытается создать ;) Возможно это и объясняет кернел - паник если такого файла нет в sleckosave.sfs - в сфску не допишеш :D
Нет, кернел паник когда отсутствует какой-либо каталог из заявленных в строке создания aufs. Строка 1750mount -t aufs -o udba=reval,diropq=w,dirs=${UMNTMAIN}${ZLAYER}${UMNTRO} unionfs /pup_new
Сейчас /etc/rc.d/BOOTCONFIG (загрузка доп. модулей при старте системы) потерял своё значение, его функции выполняют load_sfs и pfs-tools.
От PUPSTATE тоже неплохо бы избавиться, но слишком много "корней" придётся выдирать.
Спасибо, додумался уже.
Это мой menu.lst
title 00. slacko.
find --set-root --ignore-floppies /slacko/vmlinuz
kernel /slacko/vmlinuz pmedia=usbflash psubdir=slacko
initrd /slacko/initrd.gz
Ща еще попробую, но puppy_slacko_5.4.sfs никак не грузится, вернее не находится, я уже его и в корень клал и в доп папку. psubdir убирал, добавлял ??? !
Нет! не находит. Странно, в одном каталоге все лежит. Еще идеи будут?
default 6
timeout 15
color 11 12 13 14
#gfxmenu /@DED-LEGO@_v3.0.gz
graphicsmode -1 640:800
font /boot/grub4dos/unifont-rus.hex.gz
/boot/grub4dos/hotkey
## run hotkey once to enable hotkey.
## in sub-menu will auto enable hotkey.
## for disable hotkey use "hotkey -u"
## with "hotkey -nc" Only "hotkeys" and "arrow keys" accepted,Other keys will be ignored
## with "hotkey -nb" only select the hotkey menu.Does not auto boot.
title ************************************************************************************
lock
title *** PuppyRus-A ***
lock
title *** на базе репозитория Arch Linux ***
lock
title *** c использованием pacman, pfs-utils, Porteus-initrd, Kernel 3.11.3-pf PAE ***
lock
title ************************************************************************************
lock
title
lock
title 00. PRA. Openbox + lxpanel + SpaceFM Загрузка в RAM, без сохранения и swap. Рекомендуется при > 500Mb RAM.\n Все модули загружаются в RAM (оперативную память)
set x=noload=jwm;fce4;tint2;rox;thunar
set f=lf
set d=%f%/pra
kernel /%f%/vmlinuz-p312 dir=%d% quiet %x% copy2ram sgnfile=cd noswap
initrd /%f%/initrd.xz
title 01. PRA. jwm + SpaceFM Загрузка в RAM, без сохранения и swap.\n Рекомендуется при > 500Mb RAM.\n Все модули загружаются в RAM (оперативную память)
set x=noload=Openbox;Lxpanel;fce4;tint2;rox;thunar
set f=lf
set d=%f%/pra
#kernel /%f%/vmlinuz-3.11.3-pf dir=%d% quiet %x% copy2ram sgnfile=cd noswap
kernel /%f%/vmlinuz-p312 dir=%d% quiet %x% copy2ram sgnfile=cd noswap
initrd /%f%/initrd.xz
title 02. PRA. JWM+rox. Porteus раскладка модулей. Наиболее просто для понимания.\n Для переноса на hdd папка /lf не нужнаю\n В каждой папке содержится ее описание.\n Более подробно в WIKI
configfile /menu2c.lst
title 03. PRA. Mix. LF раскладка модулей. Экономия места для использования нескольких LF одновременно.\nЭкономия возможна только на ФС, поддерживающих симлинки (не fat ntfs)\n Для переноса на hdd папка /up не нужна\n В каждой папке содержится ее описание.\n Более подробно в WIKI
set l=PRA
configfile /menu1l.lst
title =======
lock
title ^F1 F1 README_GRUB4DOS.txt
pager on
cat /boot/grub4dos/README_GRUB4DOS.txt.gz
echo
#pause ---нажмите любую клавишу для возврата в меню---
pause ---press any key---
title ^F2 F2 README параметры загрузки
pager on
cat /lf/pra.txt.gz
echo
#pause ---нажмите любую клавишу для возврата в меню---
pause ---press any key---
title ^F3 F3 README параметры загрузки Porteus-initrd (англ.)
set f=boot/docs/cheatcodes
pager on
cat /%f%.txt
echo
#pause ---нажмите любую клавишу для возврата в меню---
pause ---press any key---
title ^F4 F4 README параметры загрузки Porteus-initrd (рус.)
pager on
cat /lf/cheatcodes-ru.txt.gz
echo
pause ---press any key---
Все пункты грузятся.
Перенес флешки на usb-hdd, там у меня основной дистрибутив PR стоит, настроил меню лист:
default 0
timeout 25
gfxmenu /boot/pictures/PUPPYRUS.gz
/boot/unifont/unifont-rus.hex.gz
title PuppyRus (on sdc1)
set pr=/linux/pr-13.12/
find --set-root --ignore-floppies --ignore-cd %pr%initrd.gz
kernel %pr%vmlinuz pmedia=usbflash pfsdir=%pr%packages pfix=fsck
initrd %pr%initrd.gz
title PuppyRus (on sdc1 RAM-mode)
set pr=/linux/pr-13.12/
find --set-root --ignore-floppies --ignore-cd %pr%initrd.gz
kernel %pr%vmlinuz pmedia=usbflash pfsdir=%pr%packages pfix=ram
initrd %pr%initrd.gz
title PuppyRus-A
set f=linux
set d=%f%/pra
find --set-root --ignore-floppies --ignore-cd /%d%/initrd.xz
#uuid 74991140-00bf-4ae2-b59f-eecc3830fe8e
#kernel /%f%/vmlinuz-3.11.3-pf root=UUID=74991140-00bf-4ae2-b59f-eecc3830fe8e dir=%d% quiet changes=EXIT:/conservation/ copy2ram noeject extramod=/my_modules sgnfile=cd
kernel /%d%/vmlinuz-3.11.3-pf dir=%d% quiet sgnfile=cd changes=/mnt/sdb7
initrd /%d%/initrd.xz
title PuppyRus-A 2
set f=linux
set d=%f%/pra
find --set-root --ignore-floppies --ignore-cd /%f%/initrd.xz
uuid 74991140-00bf-4ae2-b59f-eecc3830fe8e
kernel /%f%/vmlinuz-3.11.3-pf root=UUID=74991140-00bf-4ae2-b59f-eecc3830fe8e dir=%d% sgnfile=cd
#debug
initrd /%f%/initrd.xz
title slacko
set pr=/linux/slacko/
find --set-root --ignore-floppies --ignore-cd %pr%initrd.gz
kernel %pr%vmlinuz pmedia=usbflash pfsdir=%pr% pfix=fsck
initrd %pr%initrd.gz
title LuBuntu (on sdb5)
#root (hd0,4)
uuid afeae191-2f03-4bae-abc2-9cb51b307830
kernel /vmlinuz root=UUID=afeae191-2f03-4bae-abc2-9cb51b307830
initrd /initrd.img
Последний пункт LuBuntu, даже LuBuntu грузится с другого раздела, а slacko никак!
Что за невезуха, у меня так всегда, за что в linux не возьмусь, ниче не работает :'(