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@274
|
89 [ -f /usr/share/boot/plop.gz -a -f /usr/share/boot/memdisk.lzma ] \
|
pascal@274
|
90 && entry=$(($entry + 1)) && cat >> /tmp/floppybox.grub.menu <<EOT
|
pascal@274
|
91 title Plop Boot Manager (graphic - boot floppy, hard disk, CD/DVD or USB)
|
pascal@274
|
92 kernel /boot/memdisk floppy c=80 h=2 s=18
|
pascal@274
|
93 initrd /boot/plop.gz
|
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@264
|
221 while true; do
|
pascal@264
|
222
|
pascal@264
|
223 if [ "$1" == "call" ]; then
|
pascal@264
|
224 case "$2" in
|
pascal@274
|
225 mkmenu) mkmenu $3;;
|
pascal@264
|
226 install)
|
pascal@264
|
227 DIR=/tmp/mkbootfloppy$$
|
pascal@264
|
228 mkdir -p $DIR
|
pascal@264
|
229 DEVICE=$4
|
pascal@264
|
230 file=$5
|
pascal@264
|
231 case "$3" in
|
pascal@274
|
232 grub*)
|
pascal@264
|
233 mkdir -p $DIR/boot/grub
|
pascal@274
|
234 [ -f /usr/share/boot/btmgr -a -f /usr/share/boot/memdisk.lzma ] \
|
pascal@264
|
235 && cat /usr/share/boot/btmgr /dev/zero | \
|
pascal@264
|
236 dd bs=18k count=80 | gzip -9 > \
|
pascal@264
|
237 $DIR/boot/btmgr.gz \
|
pascal@264
|
238 && unlzma -c /usr/share/boot/memdisk.lzma > \
|
pascal@264
|
239 $DIR/boot/memdisk
|
pascal@264
|
240 [ -f /usr/share/boot/plop.gz -a \
|
pascal@274
|
241 -f /usr/share/boot/memdisk.lzma ] \
|
pascal@274
|
242 && zcat /usr/share/boot/plop.gz | \
|
pascal@274
|
243 cat - /dev/zero | dd bs=18k count=80 | \
|
pascal@274
|
244 gzip -9 > $DIR/boot/plop.gz \
|
pascal@264
|
245 && unlzma -c /usr/share/boot/memdisk.lzma > \
|
pascal@264
|
246 $DIR/boot/memdisk
|
pascal@274
|
247 [ -f /usr/share/boot/etherboot ] \
|
pascal@264
|
248 && cp /usr/share/boot/etherboot $DIR/boot
|
pascal@264
|
249 [ -f /boot/gpxe ]\
|
pascal@264
|
250 && cp /boot/gpxe $DIR/boot
|
pascal@274
|
251 [ -f /usr/share/boot/memtest.lzma -a \
|
pascal@274
|
252 -f /usr/share/boot/memdisk.lzma ] \
|
pascal@274
|
253 && unlzma -c /usr/share/boot/memtest.lzma | \
|
pascal@274
|
254 cat - /dev/zero | dd bs=18k count=80 | \
|
pascal@274
|
255 gzip -9 > $DIR/boot/memtest.gz \
|
pascal@274
|
256 && unlzma -c /usr/share/boot/memdisk.lzma > \
|
pascal@274
|
257 $DIR/boot/memdisk
|
pascal@274
|
258 install_grub $DIR $3
|
pascal@264
|
259 ;;
|
pascal@264
|
260 *)
|
pascal@264
|
261 case "$file" in
|
pascal@264
|
262 *.lzma) action="unlzma -c";;
|
pascal@264
|
263 *.gz) action="zcat";;
|
pascal@264
|
264 *) action="cat";;
|
pascal@264
|
265 esac
|
pascal@264
|
266 case "$DEVICE" in
|
pascal@264
|
267 /dev/*) $action $file > $DEVICE;;
|
pascal@274
|
268 flopp*) $action $file | cat - /dev/zero | \
|
pascal@274
|
269 dd bs=18k count=80 > boot.fd;;
|
pascal@264
|
270 cdrom*)
|
pascal@264
|
271 mkdir -p $DIR/boot/grub
|
pascal@264
|
272 case "$3" in
|
pascal@274
|
273 btmgr|plop|memtest)
|
pascal@264
|
274 $action $file | cat - /dev/zero | \
|
pascal@264
|
275 dd bs=18k count=80 | \
|
pascal@264
|
276 gzip -9 > $DIR/boot/$3.gz
|
pascal@264
|
277 unlzma -c /usr/share/boot/memdisk.lzma \
|
pascal@264
|
278 > $DIR/boot/memdisk
|
pascal@274
|
279 cat > /tmp/floppybox.grub.menu << EOT
|
pascal@274
|
280 # grub menu
|
pascal@264
|
281 timeout 0
|
pascal@264
|
282 title $3
|
pascal@264
|
283 kernel /boot/memdisk floppy c=80 h=2 s=18
|
pascal@264
|
284 initrd /boot/$3.gz
|
pascal@264
|
285 EOT
|
pascal@264
|
286 ;;
|
pascal@264
|
287 *) $action $file > $DIR/boot/$3
|
pascal@274
|
288 cat > /tmp/floppybox.grub.menu << EOT
|
pascal@274
|
289 # grub menu
|
pascal@264
|
290 timeout 0
|
pascal@264
|
291 title $3
|
pascal@264
|
292 kernel /boot/$3
|
pascal@264
|
293 EOT
|
pascal@264
|
294 ;;
|
pascal@264
|
295 esac
|
pascal@274
|
296 install_grub $DIR grub
|
pascal@264
|
297 ;;
|
pascal@264
|
298 esac
|
pascal@264
|
299 ;;
|
pascal@264
|
300 esac
|
pascal@264
|
301 rm -rf $DIR
|
pascal@264
|
302 ;;
|
pascal@220
|
303 get-plop)
|
pascal@285
|
304 PLOP_URL="$(wget -O - http://www.plop.at/en/bootmanagerdl.html |\
|
pascal@285
|
305 grep plpbt | head -1 |\
|
pascal@285
|
306 sed 's|.*href=\(.*\) target.*|\1|')"
|
pascal@285
|
307 VERSION="$(basename $PLOP_URL| sed 's/[^0-9\.]*\(.*\).zip/\1/')"
|
pascal@285
|
308 mkdir -p /tmp/get-plop$$/plop-$VERSION/fs/$(dirname $3)
|
pascal@285
|
309 wget -O - $PLOP_URL | unzip -p /dev/stdin '*/plpbt.img' | \
|
pascal@285
|
310 gzip -9 > /tmp/get-plop$$/plop-$VERSION/fs/$3
|
pascal@285
|
311 if [ -s /tmp/get-plop$$/plop-$VERSION/fs/$3 ]; then
|
pascal@285
|
312 cat > /tmp/get-plop$$/plop-$VERSION/receipt <<EOT
|
pascal@220
|
313 PACKAGE="plop"
|
pascal@285
|
314 VERSION="$VERSION"
|
pascal@220
|
315 CATEGORY="non-free"
|
pascal@220
|
316 SHORT_DESC="Plop boot manager."
|
pascal@220
|
317 WEB_SITE="http://www.plop.at/en/bootmanager.html"
|
pascal@220
|
318 EOT
|
pascal@285
|
319 ( cd /tmp/get-plop$$ ; tazpkg pack plop-$VERSION )
|
pascal@285
|
320 tazpkg install /tmp/get-plop$$/plop-$VERSION.tazpkg
|
pascal@264
|
321 fi
|
pascal@220
|
322 rm -rf /tmp/get-plop$$
|
pascal@220
|
323 ;;
|
pascal@214
|
324 *) echo "Invalid command $0 $@" 1>&2
|
pascal@214
|
325 exit 1;;
|
pascal@214
|
326 esac
|
pascal@214
|
327 exit 0
|
pascal@214
|
328 fi
|
pascal@214
|
329
|
pascal@213
|
330 if [ -z "$XAUTHORITY" ]; then
|
pascal@213
|
331
|
pascal@213
|
332 : ${DIALOG=dialog}
|
pascal@213
|
333
|
pascal@213
|
334 DEVICE=/dev/fd0
|
pascal@213
|
335 while true; do
|
pascal@213
|
336 exec 3>&1
|
pascal@213
|
337 ID_SOURCE=`$DIALOG --title " Choose a boot floppy " \
|
pascal@213
|
338 --backtitle "Boot Floppy Creation on $DEVICE" --clear \
|
pascal@213
|
339 --extra-button --extra-label "Change floppy" \
|
pascal@213
|
340 --yes-label "Install" \
|
pascal@213
|
341 --no-label "Quit" \
|
pascal@213
|
342 --colors --radiolist "
|
paul@317
|
343 Create a floppy or a cdrom to boot a LiveCD in a PXE network...
|
pascal@264
|
344 May need a floppy disk in drive. Erase the whole floppy disk.
|
pascal@213
|
345 " 18 70 50\
|
pascal@220
|
346 SmartBtmgr "Boot any partition or ATAPI CD-ROM." on \
|
pascal@220
|
347 Plop "Boot harddisk floppy CD/DVD or USB." off \
|
pascal@220
|
348 Etherboot "Replacement for proprietary PXE ROMs." off \
|
pascal@223
|
349 gPXE "Boot from http://boot.slitaz.org/" off \
|
pascal@220
|
350 Memtest86+ "Memory failures detection tool." off \
|
paul@333
|
351 Grub4DOS "Enhanced grub version supporting NTFS." off \
|
pascal@220
|
352 Grub "Boot loader with command shell." off 2>&1 1>&3`
|
pascal@213
|
353 retval=$?
|
pascal@213
|
354 exec 3>&-
|
pascal@213
|
355 check_retval
|
pascal@213
|
356 if [ "$retval" = "3" ]; then
|
pascal@213
|
357 select_floppy
|
pascal@213
|
358 continue;
|
pascal@213
|
359 fi
|
pascal@213
|
360 while read key file pkg; do
|
pascal@213
|
361 [ "$key" = "$ID_SOURCE" ] || continue
|
pascal@213
|
362 if [ ! -f "$file" ]; then
|
pascal@213
|
363 $DIALOG --title " Install package " --colors \
|
pascal@213
|
364 --backtitle "Boot Floppy Creation" --clear \
|
pascal@213
|
365 --yes-label "Install" \
|
pascal@213
|
366 --no-label "Quit" \
|
pascal@213
|
367 --yesno "The package $pkg is not yet installed. Install it ?" 18 70
|
pascal@213
|
368 retval=$?
|
pascal@220
|
369 if [ "$pkg" = "plop" ]; then
|
pascal@220
|
370 bootfloppybox call get-plop $file
|
pascal@220
|
371 else
|
pascal@264
|
372 tazpkg get-install $pkg
|
pascal@220
|
373 fi
|
pascal@213
|
374 fi
|
pascal@264
|
375 bootfloppybox call install "$pkg" "$DEVICE" "$file"
|
pascal@213
|
376 exit 0
|
pascal@213
|
377 done <<EOT
|
pascal@213
|
378 SmartBtmgr /usr/share/boot/btmgr btmgr
|
pascal@220
|
379 Plop /usr/share/boot/plop.gz plop
|
pascal@213
|
380 Etherboot /usr/share/boot/etherboot etherboot
|
pascal@222
|
381 gPXE /boot/gpxe gpxe
|
pascal@213
|
382 Memtest86+ /usr/share/boot/memtest.lzma memtest
|
pascal@274
|
383 Grub4DOS /usr/share/boot/grldr.lzma grub4dos
|
pascal@213
|
384 Grub /usr/sbin/grub grub
|
pascal@213
|
385 EOT
|
pascal@213
|
386 done
|
pascal@213
|
387 fi
|
pascal@264
|
388 #
|
pascal@264
|
389 # Describe gPXE arguments.
|
pascal@264
|
390 #
|
pascal@264
|
391 export HELP='
|
pascal@264
|
392 <window title="gPXE forced url" icon-name="gtk-floppy">
|
pascal@264
|
393 <vbox>
|
pascal@264
|
394 <text use-markup="true">
|
pascal@264
|
395 <label>"
|
pascal@264
|
396 <b>Web boot parameters</b>"
|
pascal@264
|
397 </label>
|
pascal@264
|
398 </text>
|
pascal@264
|
399 <frame>
|
pascal@264
|
400 <text wrap="true" width-chars="58" use-markup="true">
|
pascal@264
|
401 <label>
|
paul@333
|
402 "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
|
403
|
paul@317
|
404 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
|
405
|
paul@333
|
406 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
|
407
|
paul@317
|
408 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
|
409
|
paul@350
|
410 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
|
411 "
|
pascal@264
|
412 </label>
|
pascal@264
|
413 </text>
|
pascal@264
|
414 </frame>
|
pascal@264
|
415 </vbox>
|
pascal@264
|
416 </window>
|
pascal@264
|
417 '
|
pascal@264
|
418 #
|
pascal@330
|
419 # Read/write floppy images
|
pascal@330
|
420 #
|
pascal@330
|
421 export FLOPPY_IMAGE='
|
pascal@330
|
422 <window title="Floppy image manager" icon-name="gtk-floppy">
|
pascal@330
|
423 <vbox>
|
pascal@330
|
424 <frame Floppy disk drive>
|
pascal@330
|
425 <hbox>
|
pascal@330
|
426 <text use-markup="true">
|
pascal@330
|
427 <label>"<b>Device : </b>"</label>
|
pascal@330
|
428 </text>
|
pascal@330
|
429 <combobox>
|
pascal@330
|
430 <variable>DEVICE</variable>'
|
pascal@330
|
431 for i in /sys/devices/platform/floppy.*/block:*; do
|
pascal@330
|
432 [ -d $i ] || continue
|
pascal@330
|
433 FLOPPY_IMAGE="$FLOPPY_IMAGE
|
pascal@330
|
434 <item>/dev/${i#*block:}</item>"
|
pascal@330
|
435 done
|
pascal@330
|
436 FLOPPY_IMAGE="$FLOPPY_IMAGE
|
pascal@330
|
437 </combobox>
|
pascal@330
|
438 <button>
|
pascal@330
|
439 <label>Format floppy</label>
|
pascal@330
|
440 <input file icon=\"media-floppy\"></input>
|
pascal@330
|
441 <action>fdformat -n $DEVICE</action>
|
pascal@330
|
442 </button>
|
pascal@330
|
443 </hbox>
|
pascal@330
|
444 </frame>
|
pascal@330
|
445 <frame Floppy image file>
|
pascal@330
|
446 <hbox>
|
pascal@330
|
447 <text use-markup=\"true\">
|
pascal@330
|
448 <label>\"<b>File : </b>\"</label>
|
pascal@330
|
449 </text>
|
pascal@330
|
450 <entry accept=\"filename\">
|
pascal@330
|
451 <label>Select a floppy image</label>
|
pascal@330
|
452 <variable>IMAGE</variable>
|
pascal@330
|
453 </entry>
|
pascal@330
|
454 <button>
|
pascal@330
|
455 <input file stock=\"gtk-open\"></input>
|
pascal@330
|
456 <action type=\"fileselect\">IMAGE</action>
|
pascal@330
|
457 </button>
|
pascal@330
|
458 </hbox>
|
pascal@330
|
459 </frame>
|
pascal@330
|
460 <hbox>
|
pascal@330
|
461 <button>
|
pascal@330
|
462 <input file icon=\"go-jump\"></input>
|
pascal@330
|
463 <label>Write image to floppy</label>
|
pascal@330
|
464 <action>dd if=\$IMAGE of=\$DEVICE</action>
|
pascal@330
|
465 </button>
|
pascal@330
|
466 <button>
|
pascal@330
|
467 <input file icon=\"undo\"></input>
|
pascal@330
|
468 <label>Get floppy image</label>
|
pascal@330
|
469 <action>dd if=\$DEVICE of=\$IMAGE</action>
|
pascal@330
|
470 </button>
|
pascal@330
|
471 <button>
|
pascal@330
|
472 <input file icon=\"gtk-close\"></input>
|
pascal@330
|
473 <action type=\"closewindow\">FLOPPY_IMAGE</action>
|
pascal@330
|
474 </button>
|
pascal@330
|
475 </hbox>
|
pascal@330
|
476 </vbox>
|
pascal@330
|
477 </window>
|
pascal@330
|
478 "
|
pascal@330
|
479 #
|
pascal@130
|
480 # Write bootfloppy image to floppy device.
|
pascal@130
|
481 #
|
pascal@130
|
482 BOOT_DIALOG='
|
pascal@139
|
483 <window title="bootfloppybox" icon-name="gtk-floppy">
|
pascal@130
|
484 <vbox>
|
pascal@130
|
485
|
pascal@130
|
486 <text use-markup="true">
|
pascal@130
|
487 <label>
|
pascal@130
|
488 "
|
pascal@130
|
489 <b>SliTaz - Bootfloppybox</b>"
|
pascal@130
|
490 </label>
|
pascal@130
|
491 </text>
|
pascal@134
|
492 <text wrap="false" width-chars="44" use-markup="true">
|
pascal@130
|
493 <label>
|
pascal@130
|
494 "
|
paul@333
|
495 Create a floppy or a cdrom to boot a LiveCD in a PXE network or the WEB...
|
pascal@264
|
496 May need a floppy disk in drive. Erase the whole floppy disk.
|
pascal@130
|
497 "
|
pascal@130
|
498 </label>
|
pascal@130
|
499 </text>
|
pascal@130
|
500
|
pascal@130
|
501 <frame Floppy disk drive>
|
pascal@130
|
502 <hbox>
|
pascal@130
|
503 <text use-markup="true">
|
pascal@132
|
504 <label>"<b>Device : </b>"</label>
|
pascal@130
|
505 </text>
|
pascal@264
|
506 <combobox>
|
pascal@264
|
507 <variable>DEVICE</variable>'
|
pascal@264
|
508 for i in /sys/devices/platform/floppy.*/block:*; do
|
pascal@264
|
509 [ -d $i ] || continue
|
pascal@264
|
510 BOOT_DIALOG="$BOOT_DIALOG
|
pascal@264
|
511 <item>/dev/${i#*block:}</item>"
|
pascal@264
|
512 done
|
paul@333
|
513 tmp=' <item>floppy image (boot.fd)</item>
|
paul@333
|
514 <item>cdrom image (boot.iso)</item>
|
pascal@264
|
515 </combobox>
|
pascal@132
|
516 <button>
|
pascal@132
|
517 <label>Format floppy</label>
|
pascal@330
|
518 <input file icon="media-floppy"></input>
|
pascal@264
|
519 <action>case "$DEVICE" in /dev/*) fdformat -n $DEVICE;; esac</action>
|
pascal@132
|
520 </button>
|
pascal@130
|
521 </hbox>
|
pascal@130
|
522 </frame>
|
pascal@274
|
523 <notebook labels="LiveCD|USB|PXE Network|WEB Network|Memory Test|Windows|Expert">
|
pascal@130
|
524 '
|
pascal@264
|
525 BOOT_DIALOG="$BOOT_DIALOG$tmp"
|
pascal@130
|
526 while read name file pkg desc; do
|
pascal@130
|
527 tmp="<frame $name>
|
pascal@130
|
528 <hbox>
|
pascal@130
|
529 <text wrap=\"true\" width-chars=\"44\" use-markup=\"true\">
|
pascal@130
|
530 <label>
|
pascal@130
|
531 \"
|
pascal@130
|
532 $(echo -e $desc)
|
pascal@130
|
533 \"
|
pascal@130
|
534 </label>
|
pascal@130
|
535 </text>
|
pascal@130
|
536 </hbox>
|
pascal@264
|
537 <hbox>
|
pascal@130
|
538 "
|
pascal@130
|
539 if [ -f $file ]; then
|
pascal@274
|
540 if [ "$pkg" = "grub" -o "$pkg" = "grub4dos" ]; then
|
pascal@135
|
541 tmp="$tmp
|
pascal@135
|
542 <button>
|
pascal@200
|
543 <label>Grub menu</label>
|
pascal@200
|
544 <input file icon=\"accessories-text-editor\"></input>
|
pascal@274
|
545 <action>bootfloppybox call mkmenu $pkg</action>
|
pascal@214
|
546 <action type=\"lauch\">leafpad /tmp/floppybox.grub.menu</action>
|
pascal@200
|
547 </button>
|
pascal@135
|
548 "
|
pascal@267
|
549 elif [ "$pkg" = "etherboot" ]; then
|
pascal@267
|
550 tmp="$tmp
|
pascal@267
|
551 <button>
|
pascal@267
|
552 <input file icon=\"browser\"></input>
|
pascal@267
|
553 <label>Wiki</label>
|
pascal@267
|
554 <action>firefox http://wiki.slitaz.org/doku.php?id=quickstart:pxe &</action>
|
pascal@267
|
555 </button>
|
pascal@267
|
556 "
|
pascal@233
|
557 elif [ "$pkg" = "gpxe" ]; then
|
pascal@233
|
558 tmp="$tmp
|
pascal@233
|
559 <text wrap=\"true\" use-markup=\"true\">
|
pascal@233
|
560 <label> \"<b>Boot URL:</b>\" </label>
|
pascal@233
|
561 </text>
|
pascal@233
|
562 <entry>
|
pascal@233
|
563 <default>$(dd if=$file bs=1 skip=519 count=255 2>/dev/null | strings)</default>
|
pascal@233
|
564 <variable>URL</variable>
|
pascal@233
|
565 </entry>
|
pascal@264
|
566 </hbox>
|
pascal@264
|
567 <hbox>
|
pascal@267
|
568 <button>
|
pascal@267
|
569 <input file icon=\"browser\"></input>
|
pascal@267
|
570 <label>Wiki</label>
|
pascal@267
|
571 <action>firefox http://wiki.slitaz.org/doku.php?id=quickstart:pxe &</action>
|
pascal@267
|
572 </button>
|
pascal@264
|
573 <button help>
|
pascal@264
|
574 <action type=\"launch\">HELP</action>
|
pascal@264
|
575 </button>
|
pascal@233
|
576 <button>
|
pascal@233
|
577 <label>Update</label>
|
pascal@233
|
578 <input file icon=\"reload\"></input>
|
pascal@233
|
579 <action>echo -n \"\$URL\" | cat - /dev/zero | dd conv=notrunc bs=1 count=255 seek=519 of=$file 2>/dev/null</action>
|
pascal@233
|
580 </button>
|
pascal@264
|
581 "
|
pascal@264
|
582 fi
|
pascal@267
|
583 receipt=/var/lib/tazpkg/installed/$pkg/receipt
|
pascal@267
|
584 if [ -f $receipt ]; then
|
pascal@267
|
585 . $receipt
|
pascal@267
|
586 tmp="$tmp
|
pascal@267
|
587 <button>
|
pascal@267
|
588 <input file icon=\"browser\"></input>
|
pascal@267
|
589 <label>Web</label>
|
pascal@267
|
590 <action>firefox $WEB_SITE &</action>
|
pascal@267
|
591 </button>
|
pascal@267
|
592 "
|
pascal@267
|
593 fi
|
pascal@264
|
594 tmp="$tmp
|
pascal@233
|
595 <button>
|
pascal@233
|
596 <label>Write floppy</label>
|
pascal@233
|
597 <input file icon=\"forward\"></input>
|
pascal@264
|
598 <action>bootfloppybox call install \"$pkg\" \"\$DEVICE\" \"$file\"</action>
|
pascal@233
|
599 </button>
|
pascal@233
|
600 </hbox>
|
pascal@233
|
601 </frame>
|
pascal@233
|
602 "
|
pascal@130
|
603 else
|
pascal@264
|
604 tmp2="tazpkg get-install $pkg --forced"
|
pascal@220
|
605 [ "$pkg" = "plop" ] && tmp2="bootfloppybox call get-plop $file"
|
pascal@130
|
606 tmp="$tmp
|
pascal@157
|
607 <text wrap=\"true\" width-chars=\"34\" use-markup=\"true\">
|
pascal@130
|
608 <label>
|
pascal@130
|
609 \"<i>The package <b>$pkg</b> is not yet installed</i>\"
|
pascal@130
|
610 </label>
|
pascal@130
|
611 </text>
|
pascal@157
|
612 <button>
|
pascal@157
|
613 <input file icon=\"go-jump\"></input>
|
pascal@157
|
614 <label>Install</label>
|
pascal@264
|
615 <action>[ -f /var/lib/tazpkg/packages.list ] || tazpkg recharge</action>
|
pascal@264
|
616 <action>xterm -fa MiscFixed -fs 11 -bg gray93 -fg black -geometry 80x17 -title \"$pkg install\" -e \"$tmp2 ; sleep 2\"</action>
|
pascal@221
|
617 <action type=\"exit\">restart</action>
|
pascal@157
|
618 </button>
|
pascal@130
|
619 </hbox>
|
pascal@130
|
620 </frame>
|
pascal@130
|
621 "
|
pascal@130
|
622 fi
|
pascal@130
|
623 BOOT_DIALOG="$BOOT_DIALOG$tmp"
|
pascal@130
|
624 done <<EOT
|
pascal@130
|
625 SmartBtmgr /usr/share/boot/btmgr btmgr This OS independent Smart Boot Manager can boot any partition or ATAPI CD-ROM.
|
paul@317
|
626 Plop /usr/share/boot/plop.gz plop This non free Boot Manager can boot a floppy disk, hardisk, USB or CD/DVD. Hit Ctrl-ESC for text mode.
|
pascal@130
|
627 Etherboot /usr/share/boot/etherboot etherboot This network bootloader provides a replacement for proprietary PXE or NBI ROMs.
|
pascal@233
|
628 gPXE /boot/gpxe gpxe PXE / iSCSI / AoE network bootloader.
|
pascal@130
|
629 Memtest86+ /usr/share/boot/memtest.lzma memtest Memory failures detection tool.
|
paul@333
|
630 Grub4DOS /usr/share/boot/grldr.lzma grub4dos Enhanced grub version supporting NTFS.
|
paul@333
|
631 Grub /usr/sbin/grub grub General purpose boot loader with command shell.
|
pascal@130
|
632 EOT
|
pascal@130
|
633 tmp='
|
pascal@134
|
634 </notebook>
|
pascal@130
|
635 <hbox>
|
pascal@130
|
636 <button>
|
pascal@330
|
637 <input file icon="media-cdrom"></input>
|
pascal@330
|
638 <label>Burn cdrom image</label>
|
pascal@330
|
639 <action>burnbox</action>
|
pascal@330
|
640 </button>
|
pascal@330
|
641 <button>
|
pascal@330
|
642 <input file icon="media-floppy"></input>
|
pascal@330
|
643 <label>Manage floppy image</label>
|
pascal@330
|
644 <action type="launch">FLOPPY_IMAGE</action>
|
pascal@330
|
645 </button>
|
pascal@330
|
646 <button>
|
pascal@130
|
647 <input file icon="exit"></input>
|
pascal@130
|
648 <label>Exit</label>
|
pascal@130
|
649 <action type="exit">Exit</action>
|
pascal@130
|
650 </button>
|
pascal@130
|
651 </hbox>
|
pascal@130
|
652
|
pascal@130
|
653 </vbox>
|
pascal@130
|
654 </window>
|
pascal@130
|
655 '
|
pascal@130
|
656 BOOT_DIALOG="$BOOT_DIALOG$tmp"
|
pascal@130
|
657 export BOOT_DIALOG
|
pascal@130
|
658
|
pascal@130
|
659 # Only root can create floppy.
|
pascal@130
|
660 check_root
|
pascal@221
|
661 gtkdialog --program=BOOT_DIALOG | grep -q 'EXIT="restart"' && continue
|
pascal@214
|
662 rm -f /tmp/floppybox.grub.menu
|
pascal@130
|
663 exit 0
|
pascal@221
|
664 done
|