#!/bin/sh v=181230 #sfs dd=/mnt/live/memory/images value() { egrep -o "(^| )$1=[^ ]+" /proc/cmdline | cut -d= -f2; } #sfs #to="`ntf -c "dir"`" ms="Установка PRA Linux" ms1="Дистрибутив должен быть загружен FRUGAL с тем комплектом модулей, \ который Вы хотите установить" ms2XX=" 'копировать' = скопировать ядро и initrd в место установки" [ ! "`value dir``value overlay`" ] && ntf -a "$m" "$m1" && exit 1 dir="$(find `realpath /mnt/home/` -maxdepth 1 -type d -name "`value dir`")" wwwr="http://wiki.puppyrus.org/soft/arch-initrd-rootaufs2" wwwp="http://wiki.puppyrus.org/soft/porteus-initrd" wwws="http://wiki.puppyrus.org/puppyrus/grub" khlp="каталог в корне раздела или раздел (FULL)" TO(){ y="$(yad \ --title "$ms v.$v" --center \ --window-icon=/usr/share/xcowsay/pup_small.png \ --image-on-top --image="/usr/share/xcowsay/pup_small.png" \ --Xtext-align=fill \ --text "$ms $ms1 $ms2" \ --form \ --columns=2 \ --field="Монтировать все разделы"!gtk-harddisk!"Смонтировать все подключенные носители":FBTN 'ymount' \ --field="Тип установки":CB 'FRUGAL!FULL' \ --field="Установить в ":DIR '/mnt' \ --field=Ядро:FL ''$(ls -1 $dir/vmlinuz* |head -1)'' \ --field=Initrd:FL ''$(ls -1 $dir/initrd.xz |head -1)'' \ --field="rootaufs2 initrd"!gtk-help!"Рекомендуется для FULL":FBTN 'defaultbrowser "'$wwwr'"' \ --field="Full или Frugal"!gtk-help!"Тип установки":FBTN 'defaultbrowser "http://wiki.puppyrus.org/setups/full-vs-frugal"' \ --field="$khlp":LBL '' \ --field="Справка"!gtk-help!"Подробности установки":FBTN 'defaultbrowser "'$wwws'"' \ --field="porteus initrd"!gtk-help!"initrd.xz : рекомендуется для FRUGAL":FBTN 'defaultbrowser "'$wwwp'"' \ )" #--field=" ":LBL ''\ [ "$?" = 0 ] || exit #echo $y ;exit P(){ echo "$y" | cut -d'|' -f "$1"; } ff="`P 2`" to="`P 3`" k="`P 4`" i="`P 5`" #kc="`P 9`" kc=TRUE #ic="`P 10`" ic=TRUE } TO #echo "to=$to" ;exit EX(){ ($0 &) ;exit ; } [ "`ls -1 "$to"`" ] && { ntf -a "Каталог $to не пустой" "Выберите пустой" && EX || EX ; } #chg1="`df "$to" |tail -1 |awk '{print $6}' |sed 's#/#\\/#g'`" #mkdir -p "$to" dir="`realpath "$to"`" r="`df "$dir" |awk '/^\// {print $1}'`" rm="`df "$dir" |awk '/^\// {print $6}'`" m1="\ #default 6 timeout 5 color 11 12 13 14 graphicsmode -1 640:800 font /rus_bold.lz " s="`date "+%y%m%d%H%M%S"`" CKI(){ C(){ mkdir -p "${to}$boot" ; wt -o "cp "$1" "${to}$boot"" ; } echo "to=$to k=$k" [ "$kc" = "TRUE" ] && C "$k" && k="/`basename $to`$boot/`basename "$k"`" [ "$ic" = "TRUE" ] && C "$i" && i="/`basename $to`$boot/`basename "$i"`" } FULL(){ ############ ms3="Если планируете использовать AUR (компилировать софт) - распакуйте в корень DEVX*.pfs (не входит в состав iso)" [ "$dir" = "$rm" ] || { d="`echo "$dir" |sed 's#'$rm'/##'`" ; rd="rootdir=$d" ; } chg1="`df "$to" |tail -1 |awk '{print $6}'`" PDIR(){ chg1="`echo "$1" |awk -F"/" '{print "\\\/"$2"\\\/"$3}'`" } PDIR "$chg1" #[ ! "`mount |egrep '^/dev/' |awk '/on '$chg1' type ext/ {print $0}'`" ] \ if [ ! "`mount |egrep '^/dev/' |awk '/on '$chg1'\/.* type ext/ {print $0}'`" ] ;then ntf -q "Уверены, что каталог $to" "находится не на linux разделе" || EX fi #[ "`bsdtar -tf "$i" |grep "hooks/rootaufs2"`" ] && CKI || { ntf -a "$i " "не rootaufs2. Не подходит для FULL.\n Выберите другой" ; EX ; } boot=/boot && CKI #m2="$(ntf -k "`cd "$dd" && ls -1d .*.pfs /mnt/.*.pfs |while read m ;do #m2="$(ntf -k "`ls -1d "$dd" /mnt/.*.pfs |egrep '.pfs$' |while read m ;do m2="$(ntf -k "$(for m in `cd "$dd" && ls -1d *.pfs` `cd /mnt && ls -1d .*.pfs` ;do echo true echo "$m" echo "$m" done)" "$ms" "Выберите модули, которые Вы хотите установить. Не рекомендуется пропускать модули, начинающиеся с цифр $ms3")" [ "$?" = 0 ] || exit CP(){ echo "$m2" |while read d ;do echo "$d" |egrep "$1" "$2" || continue d="$dd/$d" [ -d "$d" ] || continue echo $d wt -o "cp -aPR "$d/"* "$to"" done } ##CP "-vq" "^0[89][90]" ##CP "-q" "^0[89][90]" echo "Уникальная метка для поиска при загрузке. Не удаляйте" > "$to/$s" m2="\ title PRA-roll FULL. find --set-root --ignore-floppies --ignore-cd /`basename $to`/$s kernel $k root=$r rw $rd quiet initrd $i title PRA-roll FULL RO. Дистрибутив в RO (read only) + сохранение изменений в памяти\n (после перезагрузки не сохраняются). find --set-root --ignore-floppies --ignore-cd /`basename $to`/$s kernel $k root=$r rw $rd quiet changes initrd $i title PRA-roll. Emergency (аварийный режим). Доступ к root консоле перед запуском Х.\n rootcopy не используется. Добавление параметра 'debug' даст пошаговое выполнение initrd\n Включается запись логов.\n Если проблему решить не удалось - создайте с помощью 'inxi-wrapper' отчет и отправьте на форум. find --set-root --ignore-floppies --ignore-cd /`basename $to`/$s kernel $k root=$r rw $rd quiet emergency initrd $i " www="http://wiki.puppyrus.org/soft/arch-initrd-rootaufs2?&#full_установка" } ##########FULL FRUGAL(){ df="`value dir`" #wt "sleep 99999" "Копируются модули дистрибутива" & wt -start "Копируются модули дистрибутива" & e="`cd "/mnt/home/$df" && cp -RL * "$dir" 2>&1`" [ "$e" ] && ntf -a "Ошибка. Дистрибутив не установлен" "$e" && exit wt -kill # create sgnfile touch "$dir/$s" echo "Уникальная метка для поиска при загрузке. Не удаляйте" > "$dir/$s" # if [ "`bsdtar -tf "$i" |grep "hooks/rootaufs2"`" ] ;then ipr=rootaufs2 ; ipr2=rw ; www="$wwwr" else ipr=porteus ; ipr2="sgnfile=%s%" ; www="http://wiki.puppyrus.org/soft/porteus-initrd" fi CKI m2="\ title PRA FRUGAL $ipr.\n Без загрузки в RAM (copy2ram) и сохранения (changes=`basename $to`). \n load=module[1];module[n] - .pfs загружаются выше базы из /optional\n noload=module[1];module[n] - пропуск загрузки перечисленных модулей (regex)\n debug - вывод подробностей загрузки (пошаговый режим) set d=`basename $to` set s=$s find --set-root --ignore-floppies --ignore-cd /%d%/%s% kernel $k dir=%d% $ipr2 quiet initrd $i " } ########FRUGAL $ff OK(){ [ "$m" ] && ml=" \ gtk-edit Редактировать $m 2" [ "$ml2" ] && ml="$ml \ gtk-edit Меню загрузки PRA $ff $ipr $ml2 3" y="`ntf -3 "\ gtk-help Смотреть параметры загрузки дистрибутива 1$ml" "PRA $ff $ipr установлен в :$dir" "Меню grub4dos: $m\n"`" case $y in 1) defaultbrowser "$www" & OK ;; 2) defaulttexteditor "$m" & OK ;; 3) defaulttexteditor "$ml2" & OK ;; esac exit } #m="$(find `dirname "$dir"` -maxdepth 1 -type f \( -name "menu.lst" \) |head -1)" sd="$(basename `df "$to" |awk '/\/dev/ {print $1}'` |sed 's/[0-9]//')" m="$(find `mount |awk '/^\/dev\/'$sd'/ {print $3}'` -maxdepth 1 -type f \( -name "menu.lst" \) |head -1)" echo "m="$m" dir=$dir" m1=$m1 m2=$m2 if [ ! "$m" ] ;then ml2="`df "$to" |awk '/\/dev/ {print $6}'`/menu.lst" echo "$m1$m2" >> "$ml2" OK else if ntf -q "Обнаружен $m (меню grub4dos)" "Добавить новые пункты меню в конец меню?" ;then echo "$m2" >> "$m" && OK else ml2="$dir/menu-pra.lst" echo "$m1$m2" >> "$ml2" OK fi fi #ntf -a "Ошибка. Дистрибутив установлен не полностью" "Не удалось создать menu.lst"