/
install-lf
133 lines (124 loc) · 4.77 KB
/
install-lf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#!/bin/ash
v=190507
#Задаём раздел
#dev="$(fdisk -l|grep ^/|grep -v swap|tr -d '*'| cut -b5- | awk '{print $1" "$5" "$7}' | tr "\n" "!" |sed 's/!$//')"
dev="$(fdisk -l|egrep '^/'|egrep -v 'swap|LBA' |tr -d '*'| cut -b5- | awk '{print $1" "$5" "$7}' | tr "\n" "!" |sed 's/!$//')"
ms="Установка Linux FRUGAL"
ms1="Дистрибутив должен быть загружен FRUGAL с тем комплектом модулей, \
который Вы хотите установить"
wwws="http://wiki.puppyrus.org/puppyrus/grub"
while true; do
y=$(yad --form \
--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 "<b><big>$ms</big></b>
$ms1
$ms2" \
--Xheight=200 --Xwidth=400 \
--field="Раздел:":CB "$dev" \
--field="Каталог:" "`hostname`" \
--field="Справка"!gtk-help!"Подробности установки":FBTN 'defaultbrowser "'$wwws'"' \
--field="Установщик для опытных"!!"В том числе с возможностью FULL":FBTN 'install-pra' \
)
[ "$?" = "0" ] || exit 1
to_dev="`echo "$y" | awk -F"|" '{print $1}' |awk '{print $1}'`"
to_dir="`echo "$y" | awk -F"|" '{print $2}'`"
#echo $? $to_dev $to_dir;exit
[ "`grep $to_dev /proc/mounts`" ] || mount /dev$to_dev /mnt$to_dev
#Имя каталога
# to_dir=$(yad --text="Введите имя каталога для установки" --entry --entry-text="`hostname`") || exit
[ -d /mnt$to_dev/$to_dir ] || wt -o "mkdir /mnt/$to_dev/$to_dir" || exit 1
[ "`ls /mnt$to_dev/$to_dir`" ] && ntf -a "Каталог $to_dir не пустой" "измените имя" || break
done
#Создаём подкаталоги
mkdir -p /mnt/$to_dev/$to_dir/base /mnt/$to_dev/$to_dir/modules /mnt/$to_dev/$to_dir/optional /mnt/$to_dev/$to_dir/rootcopy
#Копируем подключенные модули
#losetup -a | awk '{print $3}' | while read m
wt -start "Копируются модули"
for m in $(losetup | awk '/^\/dev/ && $6 ~ /.pfs$/ {print $6}'); do
echo "Копируется $(basename $m)"
# cp $m /mnt/$to_dev/$to_dir/$(basename $(dirname $m))/
[ "`basename "$m" |egrep '^[0-9]'`" ] && dd=base || dd=modules
cp "$m" "/mnt/$to_dev/$to_dir/$dd/"
done
wt -kill
#Копируем ядро и рамдиск
[ "`uname -m`" = "x86_64" ] && a="_64"
k="vmlinuz-$(uname -r)$a"
value() { egrep -o "(^| )$1=[^ ]+" /proc/cmdline | cut -d= -f2; } #sfs
df="/mnt/home/`value dir`"
wt "cp "$df/$k" /mnt$to_dev/$to_dir/"
wt "cp $df/initrd.xz /mnt$to_dev/$to_dir/"
dir="/mnt/$to_dev/$to_dir"
PRA="$to_dir"
dir="`realpath "$dir"`"
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"`"
# create sgnfile
touch "$dir/$s"
echo "Уникальная метка для поиска при загрузке. Не удаляйте" > "$dir/$s"
#
ipr=porteus ; ipr2="sgnfile=%s%" ; www="http://wiki.puppyrus.org/soft/porteus-initrd"
m2="\
title $PRA FRUGAL $ipr.\n Без загрузки в RAM (copy2ram) и сохранения (changes=`basename $dir`). \n load=module[1];module[n] - .pfs загружаются выше базы из /optional\n noload=module[1];module[n] - пропуск загрузки перечисленных модулей (regex)\n debug - вывод подробностей загрузки (пошаговый режим)
set d=`basename $dir`
set s=$s
find --set-root --ignore-floppies --ignore-cd /%d%/%s%
kernel /$to_dir/$k dir=%d% $ipr2 quiet
initrd /$to_dir/initrd.xz
"
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 "$dir" |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 "$dir" |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