slitaz-tools annotate tinyutils/bootfloppybox @ rev 350

desktopbox: Tiny edit
author Paul Issott <paul@slitaz.org>
date Wed May 06 16:38:10 2009 +0000 (2009-05-06)
parents e3a4a4478e2e
children e2afd816e6d3
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