slitaz-tools annotate tinyutils/bootfloppybox @ rev 309

Added tag 2.10.1 for changeset 8074e95274df
author Christophe Lincoln <pankso@slitaz.org>
date Sat Feb 28 02:09:41 2009 +0100 (2009-02-28)
parents 682760cabf36
children af65458ca488
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 "
pascal@264 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 \
pascal@274 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>
pascal@267 402 "Without parameters (i.e. with an empty Boot URL) gPXE will perform a normal PXE boot: IP configuration with DHCP and download DHCP bootfile with TFTP.
pascal@264 403
pascal@267 404 You can override the DHCP bootfile with an 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
pascal@267 406 You can override IP configuration too (usefull without DHCP server), example:
pascal@267 407 <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 408
pascal@267 409 The <i>nodhcp</i> keyword avoids dhcp timeouts and the <i>url=</i> keyword is optionnal when the url is the only one argument.
pascal@264 410 "
pascal@264 411 </label>
pascal@264 412 </text>
pascal@264 413 </frame>
pascal@264 414 </vbox>
pascal@264 415 </window>
pascal@264 416 '
pascal@264 417 #
pascal@130 418 # Write bootfloppy image to floppy device.
pascal@130 419 #
pascal@130 420 BOOT_DIALOG='
pascal@139 421 <window title="bootfloppybox" icon-name="gtk-floppy">
pascal@130 422 <vbox>
pascal@130 423
pascal@130 424 <text use-markup="true">
pascal@130 425 <label>
pascal@130 426 "
pascal@130 427 <b>SliTaz - Bootfloppybox</b>"
pascal@130 428 </label>
pascal@130 429 </text>
pascal@134 430 <text wrap="false" width-chars="44" use-markup="true">
pascal@130 431 <label>
pascal@130 432 "
pascal@264 433 Create a floppy or a cdrom to boot a LiveCD, in a PXE network or WEB...
pascal@264 434 May need a floppy disk in drive. Erase the whole floppy disk.
pascal@130 435 "
pascal@130 436 </label>
pascal@130 437 </text>
pascal@130 438
pascal@130 439 <frame Floppy disk drive>
pascal@130 440 <hbox>
pascal@130 441 <text use-markup="true">
pascal@132 442 <label>"<b>Device : </b>"</label>
pascal@130 443 </text>
pascal@264 444 <combobox>
pascal@264 445 <variable>DEVICE</variable>'
pascal@264 446 for i in /sys/devices/platform/floppy.*/block:*; do
pascal@264 447 [ -d $i ] || continue
pascal@264 448 BOOT_DIALOG="$BOOT_DIALOG
pascal@264 449 <item>/dev/${i#*block:}</item>"
pascal@264 450 done
pascal@264 451 tmp=' <item>cdrom image (boot.iso)</item>
pascal@274 452 <item>floppy image (boot.fd)</item>
pascal@264 453 </combobox>
pascal@132 454 <button>
pascal@132 455 <label>Format floppy</label>
pascal@132 456 <input file icon="forward"></input>
pascal@264 457 <action>case "$DEVICE" in /dev/*) fdformat -n $DEVICE;; esac</action>
pascal@132 458 </button>
pascal@130 459 </hbox>
pascal@130 460 </frame>
pascal@274 461 <notebook labels="LiveCD|USB|PXE Network|WEB Network|Memory Test|Windows|Expert">
pascal@130 462 '
pascal@264 463 BOOT_DIALOG="$BOOT_DIALOG$tmp"
pascal@130 464 while read name file pkg desc; do
pascal@130 465 tmp="<frame $name>
pascal@130 466 <hbox>
pascal@130 467 <text wrap=\"true\" width-chars=\"44\" use-markup=\"true\">
pascal@130 468 <label>
pascal@130 469 \"
pascal@130 470 $(echo -e $desc)
pascal@130 471 \"
pascal@130 472 </label>
pascal@130 473 </text>
pascal@130 474 </hbox>
pascal@264 475 <hbox>
pascal@130 476 "
pascal@130 477 if [ -f $file ]; then
pascal@274 478 if [ "$pkg" = "grub" -o "$pkg" = "grub4dos" ]; then
pascal@135 479 tmp="$tmp
pascal@135 480 <button>
pascal@200 481 <label>Grub menu</label>
pascal@200 482 <input file icon=\"accessories-text-editor\"></input>
pascal@274 483 <action>bootfloppybox call mkmenu $pkg</action>
pascal@214 484 <action type=\"lauch\">leafpad /tmp/floppybox.grub.menu</action>
pascal@200 485 </button>
pascal@135 486 "
pascal@267 487 elif [ "$pkg" = "etherboot" ]; then
pascal@267 488 tmp="$tmp
pascal@267 489 <button>
pascal@267 490 <input file icon=\"browser\"></input>
pascal@267 491 <label>Wiki</label>
pascal@267 492 <action>firefox http://wiki.slitaz.org/doku.php?id=quickstart:pxe &</action>
pascal@267 493 </button>
pascal@267 494 "
pascal@233 495 elif [ "$pkg" = "gpxe" ]; then
pascal@233 496 tmp="$tmp
pascal@233 497 <text wrap=\"true\" use-markup=\"true\">
pascal@233 498 <label> \"<b>Boot URL:</b>\" </label>
pascal@233 499 </text>
pascal@233 500 <entry>
pascal@233 501 <default>$(dd if=$file bs=1 skip=519 count=255 2>/dev/null | strings)</default>
pascal@233 502 <variable>URL</variable>
pascal@233 503 </entry>
pascal@264 504 </hbox>
pascal@264 505 <hbox>
pascal@267 506 <button>
pascal@267 507 <input file icon=\"browser\"></input>
pascal@267 508 <label>Wiki</label>
pascal@267 509 <action>firefox http://wiki.slitaz.org/doku.php?id=quickstart:pxe &</action>
pascal@267 510 </button>
pascal@264 511 <button help>
pascal@264 512 <action type=\"launch\">HELP</action>
pascal@264 513 </button>
pascal@233 514 <button>
pascal@233 515 <label>Update</label>
pascal@233 516 <input file icon=\"reload\"></input>
pascal@233 517 <action>echo -n \"\$URL\" | cat - /dev/zero | dd conv=notrunc bs=1 count=255 seek=519 of=$file 2>/dev/null</action>
pascal@233 518 </button>
pascal@264 519 "
pascal@264 520 fi
pascal@267 521 receipt=/var/lib/tazpkg/installed/$pkg/receipt
pascal@267 522 if [ -f $receipt ]; then
pascal@267 523 . $receipt
pascal@267 524 tmp="$tmp
pascal@267 525 <button>
pascal@267 526 <input file icon=\"browser\"></input>
pascal@267 527 <label>Web</label>
pascal@267 528 <action>firefox $WEB_SITE &</action>
pascal@267 529 </button>
pascal@267 530 "
pascal@267 531 fi
pascal@264 532 tmp="$tmp
pascal@233 533 <button>
pascal@233 534 <label>Write floppy</label>
pascal@233 535 <input file icon=\"forward\"></input>
pascal@264 536 <action>bootfloppybox call install \"$pkg\" \"\$DEVICE\" \"$file\"</action>
pascal@233 537 </button>
pascal@233 538 </hbox>
pascal@233 539 </frame>
pascal@233 540 "
pascal@130 541 else
pascal@264 542 tmp2="tazpkg get-install $pkg --forced"
pascal@220 543 [ "$pkg" = "plop" ] && tmp2="bootfloppybox call get-plop $file"
pascal@130 544 tmp="$tmp
pascal@157 545 <text wrap=\"true\" width-chars=\"34\" use-markup=\"true\">
pascal@130 546 <label>
pascal@130 547 \"<i>The package <b>$pkg</b> is not yet installed</i>\"
pascal@130 548 </label>
pascal@130 549 </text>
pascal@157 550 <button>
pascal@157 551 <input file icon=\"go-jump\"></input>
pascal@157 552 <label>Install</label>
pascal@264 553 <action>[ -f /var/lib/tazpkg/packages.list ] || tazpkg recharge</action>
pascal@264 554 <action>xterm -fa MiscFixed -fs 11 -bg gray93 -fg black -geometry 80x17 -title \"$pkg install\" -e \"$tmp2 ; sleep 2\"</action>
pascal@221 555 <action type=\"exit\">restart</action>
pascal@157 556 </button>
pascal@130 557 </hbox>
pascal@130 558 </frame>
pascal@130 559 "
pascal@130 560 fi
pascal@130 561 BOOT_DIALOG="$BOOT_DIALOG$tmp"
pascal@130 562 done <<EOT
pascal@130 563 SmartBtmgr /usr/share/boot/btmgr btmgr This OS independent Smart Boot Manager can boot any partition or ATAPI CD-ROM.
pascal@222 564 Plop /usr/share/boot/plop.gz plop This non free Boot Manager can boot floppy, hardisk, USB or CD/DVD. Hit Ctrl-ESC for text mode.
pascal@130 565 Etherboot /usr/share/boot/etherboot etherboot This network bootloader provides a replacement for proprietary PXE or NBI ROMs.
pascal@233 566 gPXE /boot/gpxe gpxe PXE / iSCSI / AoE network bootloader.
pascal@130 567 Memtest86+ /usr/share/boot/memtest.lzma memtest Memory failures detection tool.
pascal@274 568 Grub4DOS /usr/share/boot/grldr.lzma grub4dos Enhanced grub version supporting NTFS
pascal@135 569 Grub /usr/sbin/grub grub General purpose boot loader with command shell
pascal@130 570 EOT
pascal@130 571 tmp='
pascal@134 572 </notebook>
pascal@130 573 <hbox>
pascal@130 574 <button>
pascal@130 575 <input file icon="exit"></input>
pascal@130 576 <label>Exit</label>
pascal@130 577 <action type="exit">Exit</action>
pascal@130 578 </button>
pascal@130 579 </hbox>
pascal@130 580
pascal@130 581 </vbox>
pascal@130 582 </window>
pascal@130 583 '
pascal@130 584 BOOT_DIALOG="$BOOT_DIALOG$tmp"
pascal@130 585 export BOOT_DIALOG
pascal@130 586
pascal@130 587 # Only root can create floppy.
pascal@130 588 check_root
pascal@221 589 gtkdialog --program=BOOT_DIALOG | grep -q 'EXIT="restart"' && continue
pascal@214 590 rm -f /tmp/floppybox.grub.menu
pascal@130 591 exit 0
pascal@221 592 done