rev |
line source |
pascal@130
|
1 #! /bin/sh
|
pascal@130
|
2 #
|
pascal@130
|
3 # Gtkdialog box for the mount command. Part of SliTaz tools.
|
pascal@130
|
4 #
|
pascal@274
|
5 VERSION=20081121
|
pascal@130
|
6
|
pascal@130
|
7 # Check if user is root.
|
pascal@130
|
8 check_root()
|
pascal@130
|
9 {
|
pascal@130
|
10 if test $(id -u) != 0 ; then
|
pascal@130
|
11 echo -e "
|
pascal@130
|
12 You must be root to run `basename $0`. Please type 'su' and
|
pascal@130
|
13 root password to become super-user.\n"
|
pascal@130
|
14 exit 0
|
pascal@130
|
15 fi
|
pascal@130
|
16 }
|
pascal@130
|
17
|
pascal@213
|
18 # This function is used after each screen to contine or abort install.
|
pascal@213
|
19 check_retval()
|
pascal@213
|
20 {
|
pascal@213
|
21 case $retval in
|
pascal@213
|
22 1)
|
pascal@214
|
23 rm -f /tmp/floppybox.grub.menu
|
pascal@213
|
24 echo -e "\nVoluntary exit.\n" && exit 0 ;;
|
pascal@213
|
25 255)
|
pascal@214
|
26 rm -f /tmp/floppybox.grub.menu
|
pascal@213
|
27 echo -e "ESC pressed.\n" && exit 0 ;;
|
pascal@213
|
28 esac
|
pascal@213
|
29 }
|
pascal@213
|
30
|
pascal@213
|
31 select_floppy()
|
pascal@213
|
32 {
|
pascal@264
|
33 DEVICE="$DIALOG --title \" Floppy device \" --backtitle \"Boot Floppy Creation\" --clear --extra-button --extra-label \"Format\" --colors --radiolist \"
|
pascal@264
|
34 Select boot device
|
pascal@264
|
35 \" 18 70 50"
|
pascal@264
|
36 on=on
|
pascal@264
|
37 for i in /sys/devices/platform/floppy.*/block:*; do
|
pascal@264
|
38 [ -d $i ] || continue
|
pascal@264
|
39 DEVICE="$DEVICE /dev/${i#*block:} 'Floppy in ${i#*block:}' $on"
|
pascal@264
|
40 on=off
|
pascal@264
|
41 done
|
pascal@274
|
42 DEVICE="$DEVICE floppy \"cdrom image file boot.iso\" $on"
|
pascal@274
|
43 DEVICE="$DEVICE cdrom \"floppy image file boot.fd\" off 2>&1 1>&3"
|
pascal@213
|
44 exec 3>&1
|
pascal@264
|
45 DEVICE=`eval $DEVICE`
|
pascal@213
|
46 retval=$?
|
pascal@213
|
47 exec 3>&-
|
pascal@213
|
48 check_retval
|
pascal@213
|
49 if [ "$retval" = "3" ]; then
|
pascal@264
|
50 case "$DEVICE" in
|
pascal@264
|
51 /dev/*) fdformat -n $DEVICE;;
|
pascal@264
|
52 esac
|
pascal@213
|
53 fi
|
pascal@213
|
54 }
|
pascal@213
|
55
|
pascal@274
|
56 mkmenu()
|
pascal@274
|
57 {
|
pascal@274
|
58 if [ "$1" = "grub4dos" ]; then
|
pascal@274
|
59 SAVEDEFAULT="save default"
|
pascal@274
|
60 cat > /tmp/floppybox.grub.menu <<EOT
|
pascal@274
|
61 # grub4dos menu
|
pascal@274
|
62 default /default
|
pascal@274
|
63 EOT
|
pascal@274
|
64 else
|
pascal@274
|
65 SAVEDEFAULT="savedefault"
|
pascal@274
|
66 cat > /tmp/floppybox.grub.menu <<EOT
|
pascal@274
|
67 # grub menu
|
pascal@274
|
68 default saved
|
pascal@274
|
69 EOT
|
pascal@274
|
70 fi
|
pascal@274
|
71 cat >> /tmp/floppybox.grub.menu <<EOT
|
pascal@274
|
72 timeout 8
|
pascal@274
|
73 color yellow/brown light-green/black
|
pascal@274
|
74
|
pascal@274
|
75 EOT
|
pascal@274
|
76 entry=0
|
pascal@274
|
77 [ -f /boot/gpxe ] && entry=$(($entry + 1)) && cat >> /tmp/floppybox.grub.menu <<EOT
|
pascal@274
|
78 title gPXE (Boot from the Web, PXE/iSCSI/AoE support)
|
pascal@274
|
79 kernel /boot/gpxe $(dd if=/boot/gpxe bs=1 skip=519 count=255 2>/dev/null | strings)
|
pascal@274
|
80
|
pascal@274
|
81 EOT
|
pascal@274
|
82 [ -f /usr/share/boot/btmgr -a -f /usr/share/boot/memdisk.lzma ] \
|
pascal@274
|
83 && entry=$(($entry + 1)) && cat >> /tmp/floppybox.grub.menu <<EOT
|
pascal@274
|
84 title Smart Boot Manager (text - boot floppy, hard disk or CD/DVD)
|
pascal@274
|
85 kernel /boot/memdisk floppy c=80 h=2 s=18
|
pascal@274
|
86 initrd /boot/btmgr.gz
|
pascal@274
|
87
|
pascal@274
|
88 EOT
|
pascal@382
|
89 http://mirror.slitaz.org/boot/plpbt.bin
|
pascal@382
|
90 [ -f /usr/share/boot/plpbt.bin ] \
|
pascal@274
|
91 && entry=$(($entry + 1)) && cat >> /tmp/floppybox.grub.menu <<EOT
|
pascal@274
|
92 title Plop Boot Manager (graphic - boot floppy, hard disk, CD/DVD or USB)
|
pascal@382
|
93 kernel /boot/plpbt.bin
|
pascal@274
|
94
|
pascal@274
|
95 EOT
|
pascal@274
|
96 [ -f /usr/share/boot/etherboot ] && entry=$(($entry + 1)) && cat >> /tmp/floppybox.grub.menu <<EOT
|
pascal@274
|
97 title Etherboot (LAN boot, PXE or NBI)
|
pascal@274
|
98 kernel /boot/etherboot
|
pascal@274
|
99
|
pascal@274
|
100 EOT
|
pascal@274
|
101 [ -f /usr/share/boot/memtest.lzma -a -f /usr/share/boot/memdisk.lzma ] \
|
pascal@274
|
102 && entry=$(($entry + 1)) && cat >> /tmp/floppybox.grub.menu <<EOT
|
pascal@274
|
103 title Memtest86+ (Test system memory)
|
pascal@274
|
104 kernel /boot/memdisk floppy c=80 h=2 s=18
|
pascal@274
|
105 initrd /boot/memtest.gz
|
pascal@274
|
106
|
pascal@274
|
107 EOT
|
pascal@274
|
108 [ "$1" = "grub4dos" ] && entry=$(($entry + 3)) && cat >> /tmp/floppybox.grub.menu <<EOT
|
pascal@274
|
109 title Windows (scan ntldr)
|
pascal@274
|
110 fallback $(($entry -3 + 1))
|
pascal@274
|
111 find --set-root /ntldr
|
pascal@274
|
112 chainloader /ntldr
|
pascal@274
|
113 $SAVEDEFAULT --wait=2
|
pascal@274
|
114
|
pascal@274
|
115 title Windows (scan cmldr)
|
pascal@274
|
116 fallback $(($entry -3 + 2))
|
pascal@274
|
117 find --set-root /cmldr
|
pascal@274
|
118 chainloader /cmldr
|
pascal@274
|
119 $SAVEDEFAULT --wait=2
|
pascal@274
|
120
|
pascal@274
|
121 title Windows (scan io.sys)
|
pascal@274
|
122 fallback $(($entry -3 + 3))
|
pascal@274
|
123 find --set-root /io.sys
|
pascal@274
|
124 chainloader /io.sys
|
pascal@274
|
125 $SAVEDEFAULT --wait=2
|
pascal@274
|
126
|
pascal@274
|
127 EOT
|
pascal@274
|
128 entry=$(($entry + 3)) && cat >> /tmp/floppybox.grub.menu <<EOT
|
pascal@274
|
129 title Windows (example on /dev/hda1)
|
pascal@274
|
130 rootnoverify (hd0,0)
|
pascal@274
|
131 chainloader +1
|
pascal@274
|
132 $SAVEDEFAULT
|
pascal@274
|
133
|
pascal@274
|
134 title Slitaz Frugal (example on /dev/hda1)
|
pascal@274
|
135 root (hd0,0)
|
pascal@274
|
136 kernel /boot/bzImage rw root=/dev/null vga=normal
|
pascal@274
|
137 initrd /boot/rootfs.gz
|
pascal@274
|
138 $SAVEDEFAULT
|
pascal@274
|
139
|
pascal@274
|
140 title Slitaz Installed (example on /dev/hda2)
|
pascal@274
|
141 root (hd0,1)
|
pascal@274
|
142 kernel /boot/bzImage ro root=/dev/hda2 vga=normal
|
pascal@274
|
143 $SAVEDEFAULT
|
pascal@274
|
144
|
pascal@274
|
145 EOT
|
pascal@274
|
146 [ "$1" = "grub4dos" ] && entry=$(($entry + 1)) && cat >> /tmp/floppybox.grub.menu <<EOT
|
pascal@274
|
147 title Slitaz cdrom image (example on /dev/hda1, DEFRAGMENTED)
|
pascal@274
|
148 map (hd0,0)/boot/slitaz-cooking.iso (hd1)
|
pascal@274
|
149 map --hook
|
pascal@274
|
150 kernel (hd1)/boot/bzImage rw root=/dev/null vga=normal
|
pascal@274
|
151 initrd (hd1)/boot/rootfs.gz
|
pascal@274
|
152 $SAVEDEFAULT
|
pascal@274
|
153
|
pascal@274
|
154 EOT
|
pascal@274
|
155 false && [ -f /usr/share/boot/grub.exe.lzma ] && entry=$(($entry + 1)) && cat >> /tmp/floppybox.grub.menu <<EOT
|
pascal@274
|
156 title Grub4Dos
|
pascal@274
|
157 kernel /boot/grub/grub.exe --config-file="configfile (fd0)/boot/grub/menu4dos.lst"
|
pascal@274
|
158
|
pascal@274
|
159 EOT
|
pascal@274
|
160 }
|
pascal@274
|
161
|
pascal@264
|
162 install_grub()
|
pascal@264
|
163 {
|
pascal@274
|
164 LOOP=""
|
pascal@274
|
165 GRUB_DEV=${DEVICE#/dev/}
|
pascal@274
|
166 GRUB_DEV=${GRUB_DEV%% *}
|
pascal@264
|
167 case "$DEVICE" in
|
pascal@274
|
168 floppy*)
|
pascal@274
|
169 LOOP="-o loop"
|
pascal@274
|
170 GRUB_DEV=fd0
|
pascal@274
|
171 DEVICE=boot.fd
|
pascal@274
|
172 dd if=/dev/zero of=$DEVICE bs=18k count=80;;
|
pascal@274
|
173 esac
|
pascal@274
|
174 grep -qs "^# $2 menu" /tmp/floppybox.grub.menu || mkmenu $2
|
pascal@274
|
175 case "$DEVICE" in
|
pascal@274
|
176 /dev/*|boot.fd)
|
pascal@274
|
177 yes y | mke2fs $DEVICE
|
pascal@213
|
178 mkdir /media/floppy
|
pascal@274
|
179 mount $LOOP $DEVICE /media/floppy
|
pascal@274
|
180 if [ "$2" = "grub4dos" ]; then
|
pascal@274
|
181 mkdir -p /media/floppy/boot
|
pascal@274
|
182 unlzma -c /usr/share/boot/grldr.lzma > /media/floppy/grldr
|
pascal@274
|
183 cp $1/boot/* /media/floppy/boot 2> /dev/null
|
pascal@274
|
184 cp /tmp/floppybox.grub.menu /media/floppy/menu.lst
|
pascal@274
|
185 umount -d /media/floppy
|
pascal@274
|
186 bootlace --floppy --sectors-per-track=18 --heads=2 \
|
pascal@274
|
187 --chs --ext2 $DEVICE
|
pascal@274
|
188 else
|
pascal@274
|
189 mkdir -p /media/floppy/boot/grub
|
pascal@274
|
190 cp /usr/lib/grub/i386-pc/stage? /media/floppy/boot/grub
|
pascal@274
|
191 cp -a $1/boot /media/floppy
|
pascal@274
|
192 cp /tmp/floppybox.grub.menu /media/floppy/boot/grub/menu.lst
|
pascal@274
|
193 grub-set-default --root-directory=/media/floppy 0
|
pascal@274
|
194 echo "($GRUB_DEV) $(losetup | grep $DEVICE | cut -d: -f1)" > $1/device.map
|
pascal@274
|
195 [ -n "$LOOP" ] && LOOP="--device-map=$1/device.map"
|
pascal@274
|
196 grub $LOOP --batch <<EOT
|
pascal@274
|
197 root ($GRUB_DEV)
|
pascal@274
|
198 setup ($GRUB_DEV)
|
pascal@214
|
199 quit
|
pascal@214
|
200 EOT
|
pascal@274
|
201 umount -d /media/floppy
|
pascal@274
|
202 fi ;;
|
pascal@264
|
203 cdrom*)
|
pascal@266
|
204 mkdir -p $1/boot/grub 2> /dev/null
|
pascal@274
|
205 cp /tmp/floppybox.grub.menu $1/boot/grub/menu.lst
|
pascal@274
|
206 if [ "$2" = "grub4dos" ]; then
|
pascal@274
|
207 unlzma -c /usr/share/boot/grldr.lzma > $1/boot/grub/grldr
|
pascal@274
|
208 genisoimage -R -o boot.iso -b boot/grub/grldr \
|
pascal@274
|
209 -c boot/boot.cat -no-emul-boot -boot-load-seg 0x1000 \
|
pascal@274
|
210 -hide boot/boot.cat -input-charset iso8859-1 $1
|
pascal@274
|
211 else
|
pascal@274
|
212 cp /usr/lib/grub/i386-pc/stage2_eltorito $1/boot/grub
|
pascal@274
|
213 genisoimage -R -o boot.iso -b boot/grub/stage2_eltorito \
|
pascal@274
|
214 -c boot/boot.cat -no-emul-boot -boot-load-size 4 \
|
pascal@274
|
215 -hide boot/boot.cat -input-charset iso8859-1 \
|
pascal@274
|
216 -boot-info-table $1
|
pascal@274
|
217 fi ;;
|
pascal@264
|
218 esac
|
pascal@264
|
219 }
|
pascal@264
|
220
|
pascal@405
|
221 # write a 32 bits data
|
pascal@405
|
222 # usage: storelong offset data32 file
|
pascal@405
|
223 storelong()
|
pascal@405
|
224 {
|
pascal@405
|
225 printf "00000 %02X %02X %02X %02X \n" \
|
pascal@405
|
226 $(( $2 & 255 )) $(( ($2>>8) & 255 )) \
|
pascal@405
|
227 $(( ($2>>16) & 255 )) $(( ($2>>24) & 255 )) | \
|
pascal@405
|
228 hexdump -R | dd bs=1 conv=notrunc of=$3 seek=$(( $1 )) 2> /dev/null
|
pascal@405
|
229 }
|
pascal@405
|
230
|
pascal@405
|
231 # read a 32 bits data
|
pascal@405
|
232 # usage: getlong offset file
|
pascal@405
|
233 getlong()
|
pascal@405
|
234 {
|
pascal@405
|
235 dd if=$2 bs=1 skip=$(( $1 )) count=4 2> /dev/null | \
|
pascal@405
|
236 hexdump -e '"" 1/4 "%d" "\n"'
|
pascal@405
|
237 }
|
pascal@405
|
238
|
pascal@405
|
239 floppyset()
|
pascal@405
|
240 {
|
pascal@405
|
241 KERNEL="$1"
|
pascal@405
|
242 INITRD="$2"
|
pascal@405
|
243 shift 2
|
pascal@405
|
244 CMDLINE="$@"
|
pascal@405
|
245
|
pascal@405
|
246 # bzImage offsets
|
pascal@405
|
247 SetupSzOfs=497
|
pascal@405
|
248 SyssizeOfs=500
|
pascal@405
|
249 CodeAdrOfs=0x214
|
pascal@405
|
250 RamfsAdrOfs=0x218
|
pascal@405
|
251 RamfsLenOfs=0x21C
|
pascal@405
|
252 ArgPtrOfs=0x228
|
pascal@405
|
253
|
pascal@405
|
254 # boot+setup address
|
pascal@405
|
255 SetupBase=0x90000
|
pascal@405
|
256
|
pascal@405
|
257 stacktop=0x9E00
|
pascal@405
|
258
|
pascal@405
|
259 bs=/tmp/bs$$
|
pascal@405
|
260
|
pascal@405
|
261 # Get and patch boot sector
|
pascal@405
|
262 dd if=$KERNEL bs=512 count=1 of=$bs 2> /dev/null
|
pascal@405
|
263 uudecode <<EOT | dd of=$bs conv=notrunc 2> /dev/null
|
pascal@405
|
264 begin-base64 644 -
|
pascal@408
|
265 v/Sd/GgAkAcxyQYXify7eACO2cU3sQbzpY7ZiSeMRwKg8X2YQAYfxkX4P/qz
|
pascal@408
|
266 GFFLdfyXmEHoPgG+AAKATBGAx0QkAJwDdA7oZAG+KAI5HHIuR4scVuhAAV+L
|
pascal@408
|
267 NehQAbAgzRCwCM0QTpjNFjwIdAOIBK07NXTy6CoBPAp14oh8/onmsA+/9AH+
|
pascal@408
|
268 TRyxBbSTiUQcsAGJRBSZiVQQiVQYZjHbQ9PjS2YDHWbT62gAEAe/gAAp+5xz
|
pascal@408
|
269 AgHfU1Yx2+jaAF65AIC0h/5EHM0VW5133KEaAki/HAKxCThEHHKwMcDNE+oA
|
pascal@408
|
270 ACCQsEYoyL65AejCAF3rKYD5E3IEOMF3boD+AnIEOOZ3b4D9UHN5YIH9AAZ0
|
pascal@408
|
271 JwZSUVOWtAJQuQYAUbEEwcUEsA8h6ASQJxRAJ+h1AOLusCDNEFnirpjNE2Ex
|
pascal@408
|
272 9q2RrZKtUCjIdwKwAZg5+HICifhQUrQCzRNalV5YcpYp9wHxweYJAfM4wXUm
|
pascal@408
|
273 iMj+xrEBOOZ1HIj0/sW2ADwTdRKA/VByDbUAYL68AegkAJjNFmGjBABSUWaP
|
pascal@408
|
274 BgAACf91nhYHsDEsA7QOuwcAzRA8DXTzw7AN6O//rAjAdfjDWDoASW5zZXJ0
|
pascal@408
|
275 IG5leHQgZmxvcHB5IGFuZCBwcmVzcyBhbnkga2V5IHRvIGNvbnRpbnVlLgcN
|
pascal@408
|
276 AA==
|
pascal@405
|
277 ====
|
pascal@405
|
278 EOT
|
pascal@405
|
279
|
pascal@405
|
280 # Get setup
|
pascal@405
|
281 setupsz=$(getlong $SetupSzOfs $bs)
|
pascal@405
|
282 setupszb=$(( $setupsz & 255 ))
|
pascal@405
|
283 dd if=$KERNEL bs=512 skip=1 count=$setupszb 2> /dev/null >> $bs
|
pascal@405
|
284
|
pascal@405
|
285 # Store cmdline after setup
|
pascal@405
|
286 if [ -n "$CMDLINE" ]; then
|
pascal@405
|
287 echo -n "$CMDLINE" | dd bs=512 count=1 conv=sync 2> /dev/null >> $bs
|
pascal@405
|
288 storelong ArgPtrOfs $(( $SetupBase + $stacktop )) $bs
|
pascal@405
|
289 fi
|
pascal@405
|
290
|
pascal@405
|
291 # Compute initramfs size
|
pascal@405
|
292 initrdlen=0
|
pascal@405
|
293 padding=0
|
pascal@405
|
294 for i in $( echo $INITRD | sed 's/,/ /' ); do
|
pascal@405
|
295 [ -s "$i" ] || continue
|
pascal@405
|
296 initrdlen=$(( $initrdlen + $padding ))
|
pascal@405
|
297 padding=$(stat -c %s $i)
|
pascal@405
|
298 initrdlen=$(( $initrdlen + $padding ))
|
pascal@405
|
299 padding=$(( 4096 - ($padding & 4095) ))
|
pascal@405
|
300 [ $padding -eq 4096 ] && padding=0
|
pascal@405
|
301 done
|
pascal@405
|
302 Ksize=$(( $(getlong $SyssizeOfs $bs)*16 ))
|
pascal@405
|
303 Kpad=$(( (($Ksize+4095)/4096)*4096 - Ksize ))
|
pascal@405
|
304 if [ $initrdlen -ne 0 ]; then
|
pascal@405
|
305 Kbase=$(getlong $CodeAdrOfs $bs)
|
pascal@405
|
306 storelong $RamfsAdrOfs \
|
pascal@405
|
307 $(( (0x1000000 - $initrdlen) & 0xFFFF0000 )) $bs
|
pascal@405
|
308 storelong $RamfsLenOfs $initrdlen $bs
|
pascal@405
|
309 fi
|
pascal@405
|
310
|
pascal@405
|
311 # Output boot sector + setup + cmdline
|
pascal@405
|
312 dd if=$bs 2> /dev/null
|
pascal@405
|
313
|
pascal@405
|
314 # Output kernel code
|
pascal@405
|
315 dd if=$KERNEL bs=512 skip=$(( $setupszb + 1 )) 2> /dev/null
|
pascal@405
|
316
|
pascal@405
|
317 # Pad to next sector
|
pascal@405
|
318 Kpad=$(( 512 - ($(stat -c %s $KERNEL) & 511) ))
|
pascal@405
|
319 [ $Kpad -eq 512 ] || dd if=/dev/zero bs=1 count=$Kpad 2> /dev/null
|
pascal@405
|
320
|
pascal@405
|
321 # Output initramfs
|
pascal@405
|
322 padding=0
|
pascal@405
|
323 for i in $( echo $INITRD | sed 's/,/ /' ); do
|
pascal@405
|
324 [ -s "$i" ] || continue
|
pascal@405
|
325 [ $padding -ne 0 ] && dd if=/dev/zero bs=1 count=$padding
|
pascal@405
|
326 dd if=$i 2> /dev/null
|
pascal@405
|
327 padding=$(( 4096 - ($(stat -c %s $i) & 4095) ))
|
pascal@405
|
328 [ $padding -eq 4096 ] && padding=0
|
pascal@405
|
329 done
|
pascal@405
|
330
|
pascal@405
|
331 # Cleanup
|
pascal@405
|
332 rm -f $bs
|
pascal@405
|
333 }
|
pascal@405
|
334
|
pascal@264
|
335 while true; do
|
pascal@264
|
336
|
pascal@264
|
337 if [ "$1" == "call" ]; then
|
pascal@264
|
338 case "$2" in
|
pascal@274
|
339 mkmenu) mkmenu $3;;
|
pascal@405
|
340 mkfloppies)
|
pascal@405
|
341 shift 2
|
pascal@405
|
342 floppyset $@ | split -b 1440k /dev/stdin floppy$$
|
pascal@405
|
343 i=1
|
pascal@405
|
344 ls floppy$$* | while read file ; do
|
pascal@405
|
345 output=floppy.$(printf "%03d" $i)
|
pascal@405
|
346 cat $file /dev/zero | dd bs=1k count=1440 of=$output conv=sync 2> /dev/null
|
pascal@405
|
347 rm -f $file
|
pascal@405
|
348 i=$(( $i + 1 ))
|
pascal@405
|
349 done;;
|
pascal@264
|
350 install)
|
pascal@264
|
351 DIR=/tmp/mkbootfloppy$$
|
pascal@264
|
352 mkdir -p $DIR
|
pascal@264
|
353 DEVICE=$4
|
pascal@264
|
354 file=$5
|
pascal@264
|
355 case "$3" in
|
pascal@274
|
356 grub*)
|
pascal@264
|
357 mkdir -p $DIR/boot/grub
|
pascal@274
|
358 [ -f /usr/share/boot/btmgr -a -f /usr/share/boot/memdisk.lzma ] \
|
pascal@264
|
359 && cat /usr/share/boot/btmgr /dev/zero | \
|
pascal@264
|
360 dd bs=18k count=80 | gzip -9 > \
|
pascal@264
|
361 $DIR/boot/btmgr.gz \
|
pascal@264
|
362 && unlzma -c /usr/share/boot/memdisk.lzma > \
|
pascal@264
|
363 $DIR/boot/memdisk
|
pascal@382
|
364 [ -f /usr/share/boot/plpbt.bin ] \
|
pascal@382
|
365 && cp /usr/share/boot/plpbt.bin $DIR/boot
|
pascal@274
|
366 [ -f /usr/share/boot/etherboot ] \
|
pascal@264
|
367 && cp /usr/share/boot/etherboot $DIR/boot
|
pascal@264
|
368 [ -f /boot/gpxe ]\
|
pascal@264
|
369 && cp /boot/gpxe $DIR/boot
|
pascal@274
|
370 [ -f /usr/share/boot/memtest.lzma -a \
|
pascal@274
|
371 -f /usr/share/boot/memdisk.lzma ] \
|
pascal@274
|
372 && unlzma -c /usr/share/boot/memtest.lzma | \
|
pascal@274
|
373 cat - /dev/zero | dd bs=18k count=80 | \
|
pascal@274
|
374 gzip -9 > $DIR/boot/memtest.gz \
|
pascal@274
|
375 && unlzma -c /usr/share/boot/memdisk.lzma > \
|
pascal@274
|
376 $DIR/boot/memdisk
|
pascal@274
|
377 install_grub $DIR $3
|
pascal@264
|
378 ;;
|
pascal@264
|
379 *)
|
pascal@264
|
380 case "$file" in
|
pascal@264
|
381 *.lzma) action="unlzma -c";;
|
pascal@264
|
382 *.gz) action="zcat";;
|
pascal@264
|
383 *) action="cat";;
|
pascal@264
|
384 esac
|
pascal@264
|
385 case "$DEVICE" in
|
pascal@264
|
386 /dev/*) $action $file > $DEVICE;;
|
pascal@274
|
387 flopp*) $action $file | cat - /dev/zero | \
|
pascal@274
|
388 dd bs=18k count=80 > boot.fd;;
|
pascal@264
|
389 cdrom*)
|
pascal@264
|
390 mkdir -p $DIR/boot/grub
|
pascal@264
|
391 case "$3" in
|
pascal@382
|
392 btmgr|memtest)
|
pascal@264
|
393 $action $file | cat - /dev/zero | \
|
pascal@264
|
394 dd bs=18k count=80 | \
|
pascal@264
|
395 gzip -9 > $DIR/boot/$3.gz
|
pascal@264
|
396 unlzma -c /usr/share/boot/memdisk.lzma \
|
pascal@264
|
397 > $DIR/boot/memdisk
|
pascal@274
|
398 cat > /tmp/floppybox.grub.menu << EOT
|
pascal@274
|
399 # grub menu
|
pascal@264
|
400 timeout 0
|
pascal@264
|
401 title $3
|
pascal@264
|
402 kernel /boot/memdisk floppy c=80 h=2 s=18
|
pascal@264
|
403 initrd /boot/$3.gz
|
pascal@264
|
404 EOT
|
pascal@264
|
405 ;;
|
pascal@264
|
406 *) $action $file > $DIR/boot/$3
|
pascal@274
|
407 cat > /tmp/floppybox.grub.menu << EOT
|
pascal@274
|
408 # grub menu
|
pascal@264
|
409 timeout 0
|
pascal@264
|
410 title $3
|
pascal@264
|
411 kernel /boot/$3
|
pascal@264
|
412 EOT
|
pascal@264
|
413 ;;
|
pascal@264
|
414 esac
|
pascal@274
|
415 install_grub $DIR grub
|
pascal@264
|
416 ;;
|
pascal@264
|
417 esac
|
pascal@264
|
418 ;;
|
pascal@264
|
419 esac
|
pascal@264
|
420 rm -rf $DIR
|
pascal@264
|
421 ;;
|
pascal@220
|
422 get-plop)
|
pascal@382
|
423 mkdir -p /tmp/get-plop$$
|
pascal@382
|
424 PLOP_URL=http://mirror.slitaz.org/boot/plpbt.bin
|
pascal@382
|
425 wget -O - $PLOP_URL > /tmp/get-plop$$/plpbt.bin
|
pascal@382
|
426 VERSION="$(strings /tmp/get-plop$$/plpbt.bin \
|
pascal@382
|
427 | grep 'Boot Manager v' | sed 's/.* v\([0-9\.]*\) .*/\1/')"
|
pascal@382
|
428 mkdir -p $(dirname /tmp/get-plop$$/plop-$VERSION/fs/$3)
|
pascal@382
|
429 mv /tmp/get-plop$$/plpbt.bin \
|
pascal@382
|
430 /tmp/get-plop$$/plop-$VERSION/fs/$3
|
pascal@285
|
431 if [ -s /tmp/get-plop$$/plop-$VERSION/fs/$3 ]; then
|
pascal@285
|
432 cat > /tmp/get-plop$$/plop-$VERSION/receipt <<EOT
|
pascal@220
|
433 PACKAGE="plop"
|
pascal@285
|
434 VERSION="$VERSION"
|
pascal@220
|
435 CATEGORY="non-free"
|
pascal@220
|
436 SHORT_DESC="Plop boot manager."
|
pascal@220
|
437 WEB_SITE="http://www.plop.at/en/bootmanager.html"
|
pascal@220
|
438 EOT
|
pascal@285
|
439 ( cd /tmp/get-plop$$ ; tazpkg pack plop-$VERSION )
|
pascal@285
|
440 tazpkg install /tmp/get-plop$$/plop-$VERSION.tazpkg
|
pascal@264
|
441 fi
|
pascal@220
|
442 rm -rf /tmp/get-plop$$
|
pascal@220
|
443 ;;
|
pascal@214
|
444 *) echo "Invalid command $0 $@" 1>&2
|
pascal@214
|
445 exit 1;;
|
pascal@214
|
446 esac
|
pascal@214
|
447 exit 0
|
pascal@214
|
448 fi
|
pascal@214
|
449
|
pascal@213
|
450 if [ -z "$XAUTHORITY" ]; then
|
pascal@213
|
451
|
pascal@213
|
452 : ${DIALOG=dialog}
|
pascal@213
|
453
|
pascal@213
|
454 DEVICE=/dev/fd0
|
pascal@213
|
455 while true; do
|
pascal@213
|
456 exec 3>&1
|
pascal@213
|
457 ID_SOURCE=`$DIALOG --title " Choose a boot floppy " \
|
pascal@213
|
458 --backtitle "Boot Floppy Creation on $DEVICE" --clear \
|
pascal@213
|
459 --extra-button --extra-label "Change floppy" \
|
pascal@213
|
460 --yes-label "Install" \
|
pascal@213
|
461 --no-label "Quit" \
|
pascal@213
|
462 --colors --radiolist "
|
paul@317
|
463 Create a floppy or a cdrom to boot a LiveCD in a PXE network...
|
pascal@264
|
464 May need a floppy disk in drive. Erase the whole floppy disk.
|
pascal@213
|
465 " 18 70 50\
|
pascal@220
|
466 SmartBtmgr "Boot any partition or ATAPI CD-ROM." on \
|
pascal@382
|
467 Plop "Boot USB harddisk floppy or CD/DVD." off \
|
pascal@220
|
468 Etherboot "Replacement for proprietary PXE ROMs." off \
|
pascal@223
|
469 gPXE "Boot from http://boot.slitaz.org/" off \
|
pascal@220
|
470 Memtest86+ "Memory failures detection tool." off \
|
paul@333
|
471 Grub4DOS "Enhanced grub version supporting NTFS." off \
|
pascal@220
|
472 Grub "Boot loader with command shell." off 2>&1 1>&3`
|
pascal@213
|
473 retval=$?
|
pascal@213
|
474 exec 3>&-
|
pascal@213
|
475 check_retval
|
pascal@213
|
476 if [ "$retval" = "3" ]; then
|
pascal@213
|
477 select_floppy
|
pascal@213
|
478 continue;
|
pascal@213
|
479 fi
|
pascal@213
|
480 while read key file pkg; do
|
pascal@213
|
481 [ "$key" = "$ID_SOURCE" ] || continue
|
pascal@213
|
482 if [ ! -f "$file" ]; then
|
pascal@213
|
483 $DIALOG --title " Install package " --colors \
|
pascal@213
|
484 --backtitle "Boot Floppy Creation" --clear \
|
pascal@213
|
485 --yes-label "Install" \
|
pascal@213
|
486 --no-label "Quit" \
|
pascal@213
|
487 --yesno "The package $pkg is not yet installed. Install it ?" 18 70
|
pascal@213
|
488 retval=$?
|
pascal@220
|
489 if [ "$pkg" = "plop" ]; then
|
pascal@220
|
490 bootfloppybox call get-plop $file
|
pascal@220
|
491 else
|
pascal@264
|
492 tazpkg get-install $pkg
|
pascal@220
|
493 fi
|
pascal@213
|
494 fi
|
pascal@264
|
495 bootfloppybox call install "$pkg" "$DEVICE" "$file"
|
pascal@213
|
496 exit 0
|
pascal@213
|
497 done <<EOT
|
pascal@213
|
498 SmartBtmgr /usr/share/boot/btmgr btmgr
|
pascal@382
|
499 Plop /usr/share/boot/plpbt.bin plop
|
pascal@213
|
500 Etherboot /usr/share/boot/etherboot etherboot
|
pascal@222
|
501 gPXE /boot/gpxe gpxe
|
pascal@213
|
502 Memtest86+ /usr/share/boot/memtest.lzma memtest
|
pascal@274
|
503 Grub4DOS /usr/share/boot/grldr.lzma grub4dos
|
pascal@213
|
504 Grub /usr/sbin/grub grub
|
pascal@213
|
505 EOT
|
pascal@213
|
506 done
|
pascal@213
|
507 fi
|
pascal@264
|
508 #
|
pascal@264
|
509 # Describe gPXE arguments.
|
pascal@264
|
510 #
|
pascal@264
|
511 export HELP='
|
pascal@264
|
512 <window title="gPXE forced url" icon-name="gtk-floppy">
|
pascal@264
|
513 <vbox>
|
pascal@264
|
514 <text use-markup="true">
|
pascal@264
|
515 <label>"
|
pascal@264
|
516 <b>Web boot parameters</b>"
|
pascal@264
|
517 </label>
|
pascal@264
|
518 </text>
|
pascal@264
|
519 <frame>
|
pascal@264
|
520 <text wrap="true" width-chars="58" use-markup="true">
|
pascal@264
|
521 <label>
|
paul@333
|
522 "Without parameters (i.e. with an empty Boot URL) gPXE will perform a normal PXE boot: IP configuration with DHCP and download the DHCP bootfile with TFTP.
|
pascal@264
|
523
|
paul@317
|
524 You can override the DHCP bootfile with a Boot URL such as <i>tftp://192.168.0.1/pxe/pxeloader</i>, <i>http://mirror.slitaz.org/pxe/pxelinux.0</i>, or <i>x-tftm://192.168.0.201//lts/vmlinuz.ltsp</i>.
|
pascal@264
|
525
|
paul@333
|
526 You can override IP configuration too (useful without a DHCP server), example: <i>ip=192.168.0.10/24 gw=192.168.0.1 dns=192.168.0.1 nodhcp url=http://mirror.slitaz.org/pxe/pxelinux.0</i>
|
pascal@264
|
527
|
paul@317
|
528 The <i>nodhcp</i> keyword avoids dhcp timeouts and the <i>url=</i> keyword is optional when the url is the only one argument.
|
pascal@337
|
529
|
paul@350
|
530 Comma separated URL lists are supported. The PXE client will try to load the first URL. If the load fails, it will try the next URL, and so on.
|
pascal@264
|
531 "
|
pascal@264
|
532 </label>
|
pascal@264
|
533 </text>
|
pascal@264
|
534 </frame>
|
pascal@264
|
535 </vbox>
|
pascal@264
|
536 </window>
|
pascal@264
|
537 '
|
pascal@264
|
538 #
|
pascal@405
|
539 # Create floppy image set
|
pascal@405
|
540 #
|
pascal@405
|
541 export IMAGE_SET='
|
pascal@405
|
542 <window title="Image set generator" icon-name="gtk-floppy">
|
pascal@405
|
543 <vbox>
|
pascal@405
|
544 <text use-markup="true">
|
pascal@405
|
545 <label>
|
pascal@405
|
546 "
|
pascal@405
|
547 <b>Create a boot floppy set.</b>
|
pascal@405
|
548 "
|
pascal@405
|
549 </label>
|
pascal@405
|
550 </text>
|
pascal@405
|
551 <text wrap="false" width-chars="44" use-markup="true">
|
pascal@405
|
552 <label>
|
pascal@405
|
553 "
|
pascal@405
|
554 The total size of the kernel and the initramfs must not
|
pascal@405
|
555 increase 14-15Mb due to the tiny boot loader design.
|
pascal@405
|
556 "
|
pascal@405
|
557 </label>
|
pascal@405
|
558 </text>
|
pascal@405
|
559 <frame>
|
pascal@405
|
560 <vbox>
|
pascal@405
|
561 <hbox>
|
pascal@405
|
562 <text use-markup="true">
|
pascal@405
|
563 <label>"<b>Kernel : </b>"</label>
|
pascal@405
|
564 </text>
|
pascal@405
|
565 <entry accept="filename">
|
pascal@405
|
566 <label>Select a linux kernel</label>
|
pascal@405
|
567 <variable>KERNEL</variable>
|
pascal@405
|
568 </entry>
|
pascal@405
|
569 <button>
|
pascal@405
|
570 <input file stock="gtk-open"></input>
|
pascal@405
|
571 <action type="fileselect">KERNEL</action>
|
pascal@405
|
572 </button>
|
pascal@405
|
573 </hbox>
|
pascal@405
|
574 <hbox>
|
pascal@405
|
575 <text use-markup="true">
|
pascal@405
|
576 <label>"<b>Initramfs : </b>"</label>
|
pascal@405
|
577 </text>
|
pascal@405
|
578 <entry accept="filename">
|
pascal@405
|
579 <label>Select an initramfs/initrd file</label>
|
pascal@405
|
580 <variable>INITRD</variable>
|
pascal@405
|
581 </entry>
|
pascal@405
|
582 <button>
|
pascal@405
|
583 <input file stock="gtk-open"></input>
|
pascal@405
|
584 <action type="fileselect">INITRD</action>
|
pascal@405
|
585 </button>
|
pascal@405
|
586 </hbox>
|
pascal@405
|
587 <hbox>
|
pascal@405
|
588 <text use-markup="true">
|
pascal@405
|
589 <label>"<b>Cmdline : </b>"</label>
|
pascal@405
|
590 </text>
|
pascal@405
|
591 <entry>
|
pascal@405
|
592 <label>Enter kernel arguments</label>
|
pascal@405
|
593 <variable>CMDLINE</variable>
|
pascal@405
|
594 <default>rw root=/dev/null autologin</default>
|
pascal@405
|
595 </entry>
|
pascal@405
|
596 </hbox>
|
pascal@405
|
597 <hbox>
|
pascal@405
|
598 <text use-markup="true">
|
pascal@405
|
599 <label>"<b>Output directory : </b>"</label>
|
pascal@405
|
600 </text>
|
pascal@405
|
601 <entry accept="directory">
|
pascal@405
|
602 <label>Select output directory</label>
|
pascal@405
|
603 <variable>OUTPUTDIR</variable>
|
pascal@405
|
604 <default>/tmp</default>
|
pascal@405
|
605 </entry>
|
pascal@405
|
606 <button>
|
pascal@405
|
607 <input file stock="gtk-open"></input>
|
pascal@405
|
608 <action type="fileselect">OUTPUTDIR</action>
|
pascal@405
|
609 </button>
|
pascal@405
|
610 </hbox>
|
pascal@405
|
611 </vbox>
|
pascal@405
|
612 </frame>
|
pascal@405
|
613 <hbox>
|
pascal@405
|
614 <button>
|
pascal@405
|
615 <input file icon="forward"></input>
|
pascal@405
|
616 <label>Create image set</label>
|
pascal@405
|
617 <action>cd $OUTPUTDIR; bootfloppybox call mkfloppies $KERNEL $INITRD $CMDLINE</action>
|
pascal@405
|
618 <action type="closewindow">IMAGE_SET</action>
|
pascal@405
|
619 </button>
|
pascal@405
|
620 <button>
|
pascal@405
|
621 <input file icon="gtk-close"></input>
|
pascal@405
|
622 <action type="closewindow">IMAGE_SET</action>
|
pascal@405
|
623 </button>
|
pascal@405
|
624 </hbox>
|
pascal@405
|
625 </vbox>
|
pascal@405
|
626 </window>
|
pascal@405
|
627 '
|
pascal@405
|
628 #
|
pascal@330
|
629 # Read/write floppy images
|
pascal@330
|
630 #
|
pascal@330
|
631 export FLOPPY_IMAGE='
|
pascal@330
|
632 <window title="Floppy image manager" icon-name="gtk-floppy">
|
pascal@330
|
633 <vbox>
|
pascal@330
|
634 <frame Floppy disk drive>
|
pascal@330
|
635 <hbox>
|
pascal@330
|
636 <text use-markup="true">
|
pascal@330
|
637 <label>"<b>Device : </b>"</label>
|
pascal@330
|
638 </text>
|
pascal@330
|
639 <combobox>
|
pascal@330
|
640 <variable>DEVICE</variable>'
|
pascal@330
|
641 for i in /sys/devices/platform/floppy.*/block:*; do
|
pascal@330
|
642 [ -d $i ] || continue
|
pascal@330
|
643 FLOPPY_IMAGE="$FLOPPY_IMAGE
|
pascal@330
|
644 <item>/dev/${i#*block:}</item>"
|
pascal@330
|
645 done
|
pascal@330
|
646 FLOPPY_IMAGE="$FLOPPY_IMAGE
|
pascal@330
|
647 </combobox>
|
pascal@330
|
648 <button>
|
pascal@330
|
649 <label>Format floppy</label>
|
pascal@330
|
650 <input file icon=\"media-floppy\"></input>
|
pascal@330
|
651 <action>fdformat -n $DEVICE</action>
|
pascal@330
|
652 </button>
|
pascal@330
|
653 </hbox>
|
pascal@330
|
654 </frame>
|
pascal@330
|
655 <frame Floppy image file>
|
pascal@330
|
656 <hbox>
|
pascal@330
|
657 <text use-markup=\"true\">
|
pascal@330
|
658 <label>\"<b>File : </b>\"</label>
|
pascal@330
|
659 </text>
|
pascal@330
|
660 <entry accept=\"filename\">
|
pascal@330
|
661 <label>Select a floppy image</label>
|
pascal@330
|
662 <variable>IMAGE</variable>
|
pascal@330
|
663 </entry>
|
pascal@330
|
664 <button>
|
pascal@330
|
665 <input file stock=\"gtk-open\"></input>
|
pascal@330
|
666 <action type=\"fileselect\">IMAGE</action>
|
pascal@330
|
667 </button>
|
pascal@330
|
668 </hbox>
|
pascal@330
|
669 </frame>
|
pascal@330
|
670 <hbox>
|
pascal@330
|
671 <button>
|
pascal@405
|
672 <input file icon=\"reload\"></input>
|
pascal@405
|
673 <label>Create image set</label>
|
pascal@405
|
674 <action type=\"launch\">IMAGE_SET</action>
|
pascal@405
|
675 </button>
|
pascal@405
|
676 <button>
|
pascal@330
|
677 <input file icon=\"go-jump\"></input>
|
pascal@330
|
678 <label>Write image to floppy</label>
|
pascal@330
|
679 <action>dd if=\$IMAGE of=\$DEVICE</action>
|
pascal@330
|
680 </button>
|
pascal@330
|
681 <button>
|
pascal@330
|
682 <input file icon=\"undo\"></input>
|
pascal@330
|
683 <label>Get floppy image</label>
|
pascal@330
|
684 <action>dd if=\$DEVICE of=\$IMAGE</action>
|
pascal@330
|
685 </button>
|
pascal@330
|
686 <button>
|
pascal@330
|
687 <input file icon=\"gtk-close\"></input>
|
pascal@330
|
688 <action type=\"closewindow\">FLOPPY_IMAGE</action>
|
pascal@330
|
689 </button>
|
pascal@330
|
690 </hbox>
|
pascal@330
|
691 </vbox>
|
pascal@330
|
692 </window>
|
pascal@330
|
693 "
|
pascal@330
|
694 #
|
pascal@130
|
695 # Write bootfloppy image to floppy device.
|
pascal@130
|
696 #
|
pascal@130
|
697 BOOT_DIALOG='
|
pascal@139
|
698 <window title="bootfloppybox" icon-name="gtk-floppy">
|
pascal@130
|
699 <vbox>
|
pascal@130
|
700
|
pascal@130
|
701 <text use-markup="true">
|
pascal@130
|
702 <label>
|
pascal@130
|
703 "
|
pascal@130
|
704 <b>SliTaz - Bootfloppybox</b>"
|
pascal@130
|
705 </label>
|
pascal@130
|
706 </text>
|
pascal@134
|
707 <text wrap="false" width-chars="44" use-markup="true">
|
pascal@130
|
708 <label>
|
pascal@130
|
709 "
|
paul@333
|
710 Create a floppy or a cdrom to boot a LiveCD in a PXE network or the WEB...
|
pascal@264
|
711 May need a floppy disk in drive. Erase the whole floppy disk.
|
pascal@130
|
712 "
|
pascal@130
|
713 </label>
|
pascal@130
|
714 </text>
|
pascal@130
|
715
|
pascal@130
|
716 <frame Floppy disk drive>
|
pascal@130
|
717 <hbox>
|
pascal@130
|
718 <text use-markup="true">
|
pascal@132
|
719 <label>"<b>Device : </b>"</label>
|
pascal@130
|
720 </text>
|
pascal@264
|
721 <combobox>
|
pascal@264
|
722 <variable>DEVICE</variable>'
|
pascal@264
|
723 for i in /sys/devices/platform/floppy.*/block:*; do
|
pascal@264
|
724 [ -d $i ] || continue
|
pascal@264
|
725 BOOT_DIALOG="$BOOT_DIALOG
|
pascal@264
|
726 <item>/dev/${i#*block:}</item>"
|
pascal@264
|
727 done
|
paul@333
|
728 tmp=' <item>floppy image (boot.fd)</item>
|
paul@333
|
729 <item>cdrom image (boot.iso)</item>
|
pascal@264
|
730 </combobox>
|
pascal@132
|
731 <button>
|
pascal@132
|
732 <label>Format floppy</label>
|
pascal@330
|
733 <input file icon="media-floppy"></input>
|
pascal@264
|
734 <action>case "$DEVICE" in /dev/*) fdformat -n $DEVICE;; esac</action>
|
pascal@132
|
735 </button>
|
pascal@130
|
736 </hbox>
|
pascal@130
|
737 </frame>
|
pascal@274
|
738 <notebook labels="LiveCD|USB|PXE Network|WEB Network|Memory Test|Windows|Expert">
|
pascal@130
|
739 '
|
pascal@264
|
740 BOOT_DIALOG="$BOOT_DIALOG$tmp"
|
pascal@130
|
741 while read name file pkg desc; do
|
pascal@130
|
742 tmp="<frame $name>
|
pascal@130
|
743 <hbox>
|
pascal@130
|
744 <text wrap=\"true\" width-chars=\"44\" use-markup=\"true\">
|
pascal@130
|
745 <label>
|
pascal@130
|
746 \"
|
pascal@130
|
747 $(echo -e $desc)
|
pascal@130
|
748 \"
|
pascal@130
|
749 </label>
|
pascal@130
|
750 </text>
|
pascal@130
|
751 </hbox>
|
pascal@264
|
752 <hbox>
|
pascal@130
|
753 "
|
pascal@130
|
754 if [ -f $file ]; then
|
pascal@274
|
755 if [ "$pkg" = "grub" -o "$pkg" = "grub4dos" ]; then
|
pascal@135
|
756 tmp="$tmp
|
pascal@135
|
757 <button>
|
pascal@200
|
758 <label>Grub menu</label>
|
pascal@200
|
759 <input file icon=\"accessories-text-editor\"></input>
|
pascal@274
|
760 <action>bootfloppybox call mkmenu $pkg</action>
|
pascal@214
|
761 <action type=\"lauch\">leafpad /tmp/floppybox.grub.menu</action>
|
pascal@200
|
762 </button>
|
pascal@135
|
763 "
|
pascal@267
|
764 elif [ "$pkg" = "etherboot" ]; then
|
pascal@267
|
765 tmp="$tmp
|
pascal@267
|
766 <button>
|
pascal@267
|
767 <input file icon=\"browser\"></input>
|
pascal@267
|
768 <label>Wiki</label>
|
pascal@267
|
769 <action>firefox http://wiki.slitaz.org/doku.php?id=quickstart:pxe &</action>
|
pascal@267
|
770 </button>
|
pascal@267
|
771 "
|
pascal@233
|
772 elif [ "$pkg" = "gpxe" ]; then
|
pascal@233
|
773 tmp="$tmp
|
pascal@233
|
774 <text wrap=\"true\" use-markup=\"true\">
|
pascal@233
|
775 <label> \"<b>Boot URL:</b>\" </label>
|
pascal@233
|
776 </text>
|
pascal@233
|
777 <entry>
|
pascal@233
|
778 <default>$(dd if=$file bs=1 skip=519 count=255 2>/dev/null | strings)</default>
|
pascal@233
|
779 <variable>URL</variable>
|
pascal@233
|
780 </entry>
|
pascal@264
|
781 </hbox>
|
pascal@264
|
782 <hbox>
|
pascal@267
|
783 <button>
|
pascal@267
|
784 <input file icon=\"browser\"></input>
|
pascal@267
|
785 <label>Wiki</label>
|
pascal@267
|
786 <action>firefox http://wiki.slitaz.org/doku.php?id=quickstart:pxe &</action>
|
pascal@267
|
787 </button>
|
pascal@264
|
788 <button help>
|
pascal@264
|
789 <action type=\"launch\">HELP</action>
|
pascal@264
|
790 </button>
|
pascal@233
|
791 <button>
|
pascal@233
|
792 <label>Update</label>
|
pascal@233
|
793 <input file icon=\"reload\"></input>
|
pascal@233
|
794 <action>echo -n \"\$URL\" | cat - /dev/zero | dd conv=notrunc bs=1 count=255 seek=519 of=$file 2>/dev/null</action>
|
pascal@233
|
795 </button>
|
pascal@264
|
796 "
|
pascal@264
|
797 fi
|
pascal@267
|
798 receipt=/var/lib/tazpkg/installed/$pkg/receipt
|
pascal@267
|
799 if [ -f $receipt ]; then
|
pascal@267
|
800 . $receipt
|
pascal@267
|
801 tmp="$tmp
|
pascal@267
|
802 <button>
|
pascal@267
|
803 <input file icon=\"browser\"></input>
|
pascal@267
|
804 <label>Web</label>
|
pascal@267
|
805 <action>firefox $WEB_SITE &</action>
|
pascal@267
|
806 </button>
|
pascal@267
|
807 "
|
pascal@267
|
808 fi
|
pascal@264
|
809 tmp="$tmp
|
pascal@233
|
810 <button>
|
pascal@233
|
811 <label>Write floppy</label>
|
pascal@233
|
812 <input file icon=\"forward\"></input>
|
pascal@264
|
813 <action>bootfloppybox call install \"$pkg\" \"\$DEVICE\" \"$file\"</action>
|
pascal@233
|
814 </button>
|
pascal@233
|
815 </hbox>
|
pascal@233
|
816 </frame>
|
pascal@233
|
817 "
|
pascal@130
|
818 else
|
pascal@264
|
819 tmp2="tazpkg get-install $pkg --forced"
|
pascal@220
|
820 [ "$pkg" = "plop" ] && tmp2="bootfloppybox call get-plop $file"
|
pascal@130
|
821 tmp="$tmp
|
pascal@157
|
822 <text wrap=\"true\" width-chars=\"34\" use-markup=\"true\">
|
pascal@130
|
823 <label>
|
pascal@130
|
824 \"<i>The package <b>$pkg</b> is not yet installed</i>\"
|
pascal@130
|
825 </label>
|
pascal@130
|
826 </text>
|
pascal@157
|
827 <button>
|
pascal@157
|
828 <input file icon=\"go-jump\"></input>
|
pascal@157
|
829 <label>Install</label>
|
pascal@264
|
830 <action>[ -f /var/lib/tazpkg/packages.list ] || tazpkg recharge</action>
|
pascal@264
|
831 <action>xterm -fa MiscFixed -fs 11 -bg gray93 -fg black -geometry 80x17 -title \"$pkg install\" -e \"$tmp2 ; sleep 2\"</action>
|
pascal@221
|
832 <action type=\"exit\">restart</action>
|
pascal@157
|
833 </button>
|
pascal@130
|
834 </hbox>
|
pascal@130
|
835 </frame>
|
pascal@130
|
836 "
|
pascal@130
|
837 fi
|
pascal@130
|
838 BOOT_DIALOG="$BOOT_DIALOG$tmp"
|
pascal@130
|
839 done <<EOT
|
pascal@130
|
840 SmartBtmgr /usr/share/boot/btmgr btmgr This OS independent Smart Boot Manager can boot any partition or ATAPI CD-ROM.
|
pascal@382
|
841 Plop /usr/share/boot/plpbt.bin plop This non free Boot Manager can boot a floppy disk, hardisk, USB or CD/DVD. Hit Ctrl-ESC for text mode.
|
pascal@130
|
842 Etherboot /usr/share/boot/etherboot etherboot This network bootloader provides a replacement for proprietary PXE or NBI ROMs.
|
pascal@233
|
843 gPXE /boot/gpxe gpxe PXE / iSCSI / AoE network bootloader.
|
pascal@130
|
844 Memtest86+ /usr/share/boot/memtest.lzma memtest Memory failures detection tool.
|
paul@333
|
845 Grub4DOS /usr/share/boot/grldr.lzma grub4dos Enhanced grub version supporting NTFS.
|
paul@333
|
846 Grub /usr/sbin/grub grub General purpose boot loader with command shell.
|
pascal@130
|
847 EOT
|
pascal@130
|
848 tmp='
|
pascal@134
|
849 </notebook>
|
pascal@130
|
850 <hbox>
|
pascal@130
|
851 <button>
|
pascal@330
|
852 <input file icon="media-cdrom"></input>
|
pascal@330
|
853 <label>Burn cdrom image</label>
|
pascal@330
|
854 <action>burnbox</action>
|
pascal@330
|
855 </button>
|
pascal@330
|
856 <button>
|
pascal@330
|
857 <input file icon="media-floppy"></input>
|
pascal@330
|
858 <label>Manage floppy image</label>
|
pascal@330
|
859 <action type="launch">FLOPPY_IMAGE</action>
|
pascal@330
|
860 </button>
|
pascal@330
|
861 <button>
|
pascal@130
|
862 <input file icon="exit"></input>
|
pascal@130
|
863 <label>Exit</label>
|
pascal@130
|
864 <action type="exit">Exit</action>
|
pascal@130
|
865 </button>
|
pascal@130
|
866 </hbox>
|
pascal@130
|
867
|
pascal@130
|
868 </vbox>
|
pascal@130
|
869 </window>
|
pascal@130
|
870 '
|
pascal@130
|
871 BOOT_DIALOG="$BOOT_DIALOG$tmp"
|
pascal@130
|
872 export BOOT_DIALOG
|
pascal@130
|
873
|
pascal@130
|
874 # Only root can create floppy.
|
pascal@130
|
875 check_root
|
pascal@221
|
876 gtkdialog --program=BOOT_DIALOG | grep -q 'EXIT="restart"' && continue
|
pascal@214
|
877 rm -f /tmp/floppybox.grub.menu
|
pascal@130
|
878 exit 0
|
pascal@221
|
879 done
|