slitaz-tools annotate tinyutils/bootfloppybox @ rev 264

bootfloppybox: create iso image too
author Pascal Bellard <pascal.bellard@slitaz.org>
date Mon Aug 18 08:38:13 2008 +0000 (2008-08-18)
parents 5de884166be4
children 6a556ebc2c87
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@264 5 VERSION=20080818
pascal@220 6 PLOP_URL=http://download.plop.at/plop/bootmngr/plpbt50rc12flp.zip
pascal@130 7
pascal@130 8 # Check if user is root.
pascal@130 9 check_root()
pascal@130 10 {
pascal@130 11 if test $(id -u) != 0 ; then
pascal@130 12 echo -e "
pascal@130 13 You must be root to run `basename $0`. Please type 'su' and
pascal@130 14 root password to become super-user.\n"
pascal@130 15 exit 0
pascal@130 16 fi
pascal@130 17 }
pascal@130 18
pascal@213 19 # This function is used after each screen to contine or abort install.
pascal@213 20 check_retval()
pascal@213 21 {
pascal@213 22 case $retval in
pascal@213 23 1)
pascal@214 24 rm -f /tmp/floppybox.grub.menu
pascal@213 25 echo -e "\nVoluntary exit.\n" && exit 0 ;;
pascal@213 26 255)
pascal@214 27 rm -f /tmp/floppybox.grub.menu
pascal@213 28 echo -e "ESC pressed.\n" && exit 0 ;;
pascal@213 29 esac
pascal@213 30 }
pascal@213 31
pascal@213 32 select_floppy()
pascal@213 33 {
pascal@264 34 DEVICE="$DIALOG --title \" Floppy device \" --backtitle \"Boot Floppy Creation\" --clear --extra-button --extra-label \"Format\" --colors --radiolist \"
pascal@264 35 Select boot device
pascal@264 36 \" 18 70 50"
pascal@264 37 on=on
pascal@264 38 for i in /sys/devices/platform/floppy.*/block:*; do
pascal@264 39 [ -d $i ] || continue
pascal@264 40 DEVICE="$DEVICE /dev/${i#*block:} 'Floppy in ${i#*block:}' $on"
pascal@264 41 on=off
pascal@264 42 done
pascal@264 43 DEVICE="$DEVICE cdrom \"cdrom image file boot.iso\" $on 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@264 56 install_grub()
pascal@264 57 {
pascal@264 58 case "$DEVICE" in
pascal@264 59 /dev/*)
pascal@213 60 mke2fs $DEVICE
pascal@213 61 mkdir /media/floppy
pascal@213 62 mount $DEVICE /media/floppy
pascal@213 63 cp /usr/lib/grub/i386-pc/stage? /media/floppy/boot/grub
pascal@264 64 cp -a $1 /media/floppy
pascal@214 65 grub-set-default --root-directory=/media/floppy 0
pascal@214 66 umount $DEVICE
pascal@214 67 grub --batch <<EOT
pascal@214 68 root (${DEVICE#/dev/})
pascal@214 69 setup (${DEVICE#/dev/})
pascal@214 70 quit
pascal@214 71 EOT
pascal@214 72 ;;
pascal@264 73 cdrom*)
pascal@264 74 cp /usr/lib/grub/i386-pc/stage2_eltorito $1/boot/grub
pascal@264 75 genisoimage -R -o boot.iso -b boot/grub/stage2_eltorito \
pascal@264 76 -c boot/boot.cat -no-emul-boot -boot-load-size 4 \
pascal@264 77 -input-charset iso8859-1 -boot-info-table $1
pascal@264 78 ;;
pascal@264 79 esac
pascal@264 80 }
pascal@264 81
pascal@264 82 while true; do
pascal@264 83
pascal@264 84 if [ "$1" == "call" ]; then
pascal@264 85 case "$2" in
pascal@264 86 install)
pascal@264 87 DIR=/tmp/mkbootfloppy$$
pascal@264 88 mkdir -p $DIR
pascal@264 89 DEVICE=$4
pascal@264 90 file=$5
pascal@264 91 case "$3" in
pascal@264 92 grub)
pascal@264 93 mkdir -p $DIR/boot/grub
pascal@264 94 cp /tmp/floppybox.grub.menu $DIR/boot/grub/menu.lst
pascal@264 95 [ -f /usr/share/boot/btmgr -a -f /usr/share/boot/memdisk.lzma ]\
pascal@264 96 && cat /usr/share/boot/btmgr /dev/zero | \
pascal@264 97 dd bs=18k count=80 | gzip -9 > \
pascal@264 98 $DIR/boot/btmgr.gz \
pascal@264 99 && unlzma -c /usr/share/boot/memdisk.lzma > \
pascal@264 100 $DIR/boot/memdisk
pascal@264 101 [ -f /usr/share/boot/plop.gz -a \
pascal@264 102 -f /usr/share/boot/memdisk.lzma ]\
pascal@264 103 && zcat /usr/share/boot/plop.gz | cat - /dev/zero | \
pascal@264 104 dd bs=18k count=80 | gzip -9 > \
pascal@264 105 $DIR/boot/plop.gz \
pascal@264 106 && unlzma -c /usr/share/boot/memdisk.lzma > \
pascal@264 107 $DIR/boot/memdisk
pascal@264 108 [ -f /usr/share/boot/etherboot ]\
pascal@264 109 && cp /usr/share/boot/etherboot $DIR/boot
pascal@264 110 [ -f /boot/gpxe ]\
pascal@264 111 && cp /boot/gpxe $DIR/boot
pascal@264 112 [ -f /usr/share/boot/memtest.lzma ]\
pascal@264 113 && unlzma -c /usr/share/boot/memtest.lzma > \
pascal@264 114 $DIR/boot/memtest
pascal@264 115 [ -f /usr/share/boot/grub.exe.lzma ]\
pascal@264 116 && unlzma -c /usr/share/boot/grub.exe.lzma > \
pascal@264 117 $DIR/boot/grub.exe
pascal@264 118 install_grub $DIR
pascal@264 119 ;;
pascal@264 120 *)
pascal@264 121 case "$file" in
pascal@264 122 *.lzma) action="unlzma -c";;
pascal@264 123 *.gz) action="zcat";;
pascal@264 124 *) action="cat";;
pascal@264 125 esac
pascal@264 126 case "$DEVICE" in
pascal@264 127 /dev/*) $action $file > $DEVICE;;
pascal@264 128 cdrom*)
pascal@264 129 mkdir -p $DIR/boot/grub
pascal@264 130 case "$3" in
pascal@264 131 btmgr|plop)
pascal@264 132 $action $file | cat - /dev/zero | \
pascal@264 133 dd bs=18k count=80 | \
pascal@264 134 gzip -9 > $DIR/boot/$3.gz
pascal@264 135 unlzma -c /usr/share/boot/memdisk.lzma \
pascal@264 136 > $DIR/boot/memdisk
pascal@264 137 cat > $DIR/boot/grub/menu.lst << EOT
pascal@264 138 timeout 0
pascal@264 139 title $3
pascal@264 140 kernel /boot/memdisk floppy c=80 h=2 s=18
pascal@264 141 initrd /boot/$3.gz
pascal@264 142 EOT
pascal@264 143 ;;
pascal@264 144 *) $action $file > $DIR/boot/$3
pascal@264 145 cat > $DIR/boot/grub/menu.lst << EOT
pascal@264 146 timeout 0
pascal@264 147 title $3
pascal@264 148 kernel /boot/$3
pascal@264 149 EOT
pascal@264 150 ;;
pascal@264 151 esac
pascal@264 152 install_grub $DIR
pascal@264 153 ;;
pascal@264 154 esac
pascal@264 155 ;;
pascal@264 156 esac
pascal@264 157 rm -rf $DIR
pascal@264 158 ;;
pascal@220 159 get-plop)
pascal@264 160 mkdir -p /tmp/get-plop$$/plop-1.0/fs/$(dirname $3)
pascal@264 161 wget -O - $PLOP_URL | unzip -p /dev/stdin | dd bs=18k count=6 |\
pascal@264 162 gzip -9 > /tmp/get-plop$$/plop-1.0/fs/$3
pascal@264 163 if [ -s /tmp/get-plop$$/plop-1.0/fs/$3 ]; then
pascal@264 164 cat > /tmp/get-plop$$/plop-1.0/receipt <<EOT
pascal@220 165 PACKAGE="plop"
pascal@220 166 VERSION="1.0"
pascal@220 167 CATEGORY="non-free"
pascal@220 168 SHORT_DESC="Plop boot manager."
pascal@220 169 WEB_SITE="http://www.plop.at/en/bootmanager.html"
pascal@220 170 EOT
pascal@264 171 ( cd /tmp/get-plop$$ ; tazpkg pack plop-1.0 )
pascal@264 172 tazpkg install /tmp/get-plop$$/plop-1.0.tazpkg
pascal@264 173 fi
pascal@220 174 rm -rf /tmp/get-plop$$
pascal@220 175 ;;
pascal@214 176 *) echo "Invalid command $0 $@" 1>&2
pascal@214 177 exit 1;;
pascal@214 178 esac
pascal@214 179 exit 0
pascal@214 180 fi
pascal@214 181
pascal@214 182 cat > /tmp/floppybox.grub.menu <<EOT
pascal@213 183 default saved
pascal@264 184 timeout 8
pascal@264 185 color yellow/brown light-green/black
pascal@213 186
pascal@264 187 EOT
pascal@264 188 [ -f /boot/gpxe ] && cat >> /tmp/floppybox.grub.menu <<EOT
pascal@264 189 title gPXE (Boot from the Web, PXE/iSCSI/AoE support)
pascal@264 190 kernel /boot/gpxe $(dd if=/boot/gpxe bs=1 skip=519 count=255 2>/dev/null | strings)
pascal@264 191
pascal@264 192 EOT
pascal@264 193 [ -f /usr/share/boot/btmgr -a -f /usr/share/boot/memdisk.lzma ]\
pascal@264 194 && cat >> /tmp/floppybox.grub.menu <<EOT
pascal@264 195 title Smart Boot Manager (text - boot floppy, hard disk or CD/DVD)
pascal@264 196 kernel /boot/memdisk floppy c=80 h=2 s=18
pascal@264 197 initrd /boot/btmgr.gz
pascal@264 198
pascal@264 199 EOT
pascal@264 200 [ -f /usr/share/boot/plop.gz -a -f /usr/share/boot/memdisk.lzma ]\
pascal@264 201 && cat >> /tmp/floppybox.grub.menu <<EOT
pascal@264 202 title Plop Boot Manager (graphic - boot floppy, hard disk, CD/DVD or USB)
pascal@264 203 kernel /boot/memdisk floppy c=80 h=2 s=18
pascal@264 204 initrd /boot/plop.gz
pascal@264 205
pascal@264 206 EOT
pascal@264 207 cat >> /tmp/floppybox.grub.menu <<EOT
pascal@213 208 title Windows (example on /dev/hda1)
pascal@213 209 rootnoverify (hd0,0)
pascal@213 210 chainloader +1
pascal@213 211 save default
pascal@213 212
pascal@213 213 title Slitaz Live (example on /dev/hda1)
pascal@213 214 root (hd0,0)
pascal@213 215 kernel /boot/bzImage rw root=/dev/null vga=normal
pascal@213 216 initrd /boot/rootfs.gz
pascal@213 217 save default
pascal@213 218
pascal@213 219 title Slitaz Installed (example on /dev/hda2)
pascal@213 220 root (hd0,1)
pascal@213 221 kernel /boot/bzImage ro root=/dev/hda2 vga=normal
pascal@213 222 save default
pascal@213 223
pascal@213 224 EOT
pascal@214 225 [ -f /usr/share/boot/etherboot ] && cat >> /tmp/floppybox.grub.menu <<EOT
pascal@222 226 title Etherboot (LAN boot, PXE or NBI)
pascal@213 227 kernel /boot/etherboot
pascal@213 228
pascal@213 229 EOT
pascal@214 230 [ -f /usr/share/boot/memtest.lzma ] && cat >> /tmp/floppybox.grub.menu <<EOT
pascal@264 231 title Memtest86+ (Test system memory)
pascal@213 232 kernel /boot/memtest
pascal@213 233
pascal@213 234 EOT
pascal@214 235 [ -f /usr/share/boot/grub.exe.lzma ] && cat >> /tmp/floppybox.grub.menu <<EOT
pascal@213 236 title Grub4Dos
pascal@213 237 kernel /boot/grub/grub.exe --config-file="configfile (fd0)/boot/grub/menu4dos.lst"
pascal@213 238
pascal@213 239 EOT
pascal@213 240
pascal@213 241 if [ -z "$XAUTHORITY" ]; then
pascal@213 242
pascal@213 243 : ${DIALOG=dialog}
pascal@213 244
pascal@213 245 DEVICE=/dev/fd0
pascal@213 246 while true; do
pascal@213 247 exec 3>&1
pascal@213 248 ID_SOURCE=`$DIALOG --title " Choose a boot floppy " \
pascal@213 249 --backtitle "Boot Floppy Creation on $DEVICE" --clear \
pascal@213 250 --extra-button --extra-label "Change floppy" \
pascal@213 251 --yes-label "Install" \
pascal@213 252 --no-label "Quit" \
pascal@213 253 --colors --radiolist "
pascal@264 254 Create a floppy or a cdrom to boot a LiveCD, in a PXE network...
pascal@264 255 May need a floppy disk in drive. Erase the whole floppy disk.
pascal@213 256 " 18 70 50\
pascal@220 257 SmartBtmgr "Boot any partition or ATAPI CD-ROM." on \
pascal@220 258 Plop "Boot harddisk floppy CD/DVD or USB." off \
pascal@220 259 Etherboot "Replacement for proprietary PXE ROMs." off \
pascal@223 260 gPXE "Boot from http://boot.slitaz.org/" off \
pascal@220 261 Memtest86+ "Memory failures detection tool." off \
pascal@220 262 Grub "Boot loader with command shell." off 2>&1 1>&3`
pascal@213 263 retval=$?
pascal@213 264 exec 3>&-
pascal@213 265 check_retval
pascal@213 266 if [ "$retval" = "3" ]; then
pascal@213 267 select_floppy
pascal@213 268 continue;
pascal@213 269 fi
pascal@213 270 while read key file pkg; do
pascal@213 271 [ "$key" = "$ID_SOURCE" ] || continue
pascal@213 272 if [ ! -f "$file" ]; then
pascal@213 273 $DIALOG --title " Install package " --colors \
pascal@213 274 --backtitle "Boot Floppy Creation" --clear \
pascal@213 275 --yes-label "Install" \
pascal@213 276 --no-label "Quit" \
pascal@213 277 --yesno "The package $pkg is not yet installed. Install it ?" 18 70
pascal@213 278 retval=$?
pascal@220 279 if [ "$pkg" = "plop" ]; then
pascal@220 280 bootfloppybox call get-plop $file
pascal@220 281 else
pascal@264 282 tazpkg get-install $pkg
pascal@220 283 fi
pascal@213 284 fi
pascal@264 285 bootfloppybox call install "$pkg" "$DEVICE" "$file"
pascal@213 286 exit 0
pascal@213 287 done <<EOT
pascal@213 288 SmartBtmgr /usr/share/boot/btmgr btmgr
pascal@220 289 Plop /usr/share/boot/plop.gz plop
pascal@213 290 Etherboot /usr/share/boot/etherboot etherboot
pascal@222 291 gPXE /boot/gpxe gpxe
pascal@213 292 Memtest86+ /usr/share/boot/memtest.lzma memtest
pascal@213 293 Grub /usr/sbin/grub grub
pascal@213 294 EOT
pascal@213 295 done
pascal@213 296 fi
pascal@264 297 #
pascal@264 298 # Describe gPXE arguments.
pascal@264 299 #
pascal@264 300 export HELP='
pascal@264 301 <window title="gPXE forced url" icon-name="gtk-floppy">
pascal@264 302 <vbox>
pascal@264 303 <text use-markup="true">
pascal@264 304 <label>"
pascal@264 305 <b>Web boot parameters</b>"
pascal@264 306 </label>
pascal@264 307 </text>
pascal@264 308 <frame>
pascal@264 309 <text wrap="true" width-chars="58" use-markup="true">
pascal@264 310 <label>
pascal@264 311 "Without parameters (i.e. with an empty Boot URL) gPXE will perform a normal
pascal@264 312 PXE boot: IP configuration with DHCP and download DHCP bootfile with TFTP.
pascal@264 313
pascal@264 314 You can override the DHCP bootfile with an Boot URL such as
pascal@264 315 <i>tftp://192.168.0.1/pxe/pxeloader</i>, <i>http://mirror.slitaz.org/pxe/pxelinux.0</i>,
pascal@264 316 or <i>x-tftm://192.168.0.201//lts/vmlinuz.ltsp</i>.
pascal@264 317
pascal@264 318 You can override IP configuration too (usefull without DHCP server), example:
pascal@264 319 <i>ip=192.168.0.10/24 gw=192.168.0.1 dns=192.168.0.1 nodhcp
pascal@264 320 url=http://mirror.slitaz.org/pxe/pxelinux.0</i>
pascal@264 321
pascal@264 322 The <i>nodhcp</i> keyword avoids dhcp timeouts and the <i>url=</i> keyword is
pascal@264 323 optionnal when the url is the only argument.
pascal@264 324 "
pascal@264 325 </label>
pascal@264 326 </text>
pascal@264 327 </frame>
pascal@264 328 </vbox>
pascal@264 329 </window>
pascal@264 330 '
pascal@264 331 #
pascal@130 332 # Write bootfloppy image to floppy device.
pascal@130 333 #
pascal@130 334 BOOT_DIALOG='
pascal@139 335 <window title="bootfloppybox" icon-name="gtk-floppy">
pascal@130 336 <vbox>
pascal@130 337
pascal@130 338 <text use-markup="true">
pascal@130 339 <label>
pascal@130 340 "
pascal@130 341 <b>SliTaz - Bootfloppybox</b>"
pascal@130 342 </label>
pascal@130 343 </text>
pascal@134 344 <text wrap="false" width-chars="44" use-markup="true">
pascal@130 345 <label>
pascal@130 346 "
pascal@264 347 Create a floppy or a cdrom to boot a LiveCD, in a PXE network or WEB...
pascal@264 348 May need a floppy disk in drive. Erase the whole floppy disk.
pascal@130 349 "
pascal@130 350 </label>
pascal@130 351 </text>
pascal@130 352
pascal@130 353 <frame Floppy disk drive>
pascal@130 354 <hbox>
pascal@130 355 <text use-markup="true">
pascal@132 356 <label>"<b>Device : </b>"</label>
pascal@130 357 </text>
pascal@264 358 <combobox>
pascal@264 359 <variable>DEVICE</variable>'
pascal@264 360 for i in /sys/devices/platform/floppy.*/block:*; do
pascal@264 361 [ -d $i ] || continue
pascal@264 362 BOOT_DIALOG="$BOOT_DIALOG
pascal@264 363 <item>/dev/${i#*block:}</item>"
pascal@264 364 on=off
pascal@264 365 done
pascal@264 366 tmp=' <item>cdrom image (boot.iso)</item>
pascal@264 367 </combobox>
pascal@132 368 <button>
pascal@132 369 <label>Format floppy</label>
pascal@132 370 <input file icon="forward"></input>
pascal@264 371 <action>case "$DEVICE" in /dev/*) fdformat -n $DEVICE;; esac</action>
pascal@132 372 </button>
pascal@130 373 </hbox>
pascal@130 374 </frame>
pascal@222 375 <notebook labels="LiveCD|USB|PXE Network|WEB Network|Memory Test|Expert">
pascal@130 376 '
pascal@264 377 BOOT_DIALOG="$BOOT_DIALOG$tmp"
pascal@130 378 while read name file pkg desc; do
pascal@130 379 tmp="<frame $name>
pascal@130 380 <hbox>
pascal@130 381 <text wrap=\"true\" width-chars=\"44\" use-markup=\"true\">
pascal@130 382 <label>
pascal@130 383 \"
pascal@130 384 $(echo -e $desc)
pascal@130 385 \"
pascal@130 386 </label>
pascal@130 387 </text>
pascal@130 388 </hbox>
pascal@264 389 <hbox>
pascal@130 390 "
pascal@130 391 if [ -f $file ]; then
pascal@135 392 if [ "$pkg" = "grub" ]; then
pascal@135 393 tmp="$tmp
pascal@135 394 <button>
pascal@200 395 <label>Grub menu</label>
pascal@200 396 <input file icon=\"accessories-text-editor\"></input>
pascal@214 397 <action type=\"lauch\">leafpad /tmp/floppybox.grub.menu</action>
pascal@200 398 </button>
pascal@135 399 "
pascal@233 400 elif [ "$pkg" = "gpxe" ]; then
pascal@233 401 tmp="$tmp
pascal@233 402 <text wrap=\"true\" use-markup=\"true\">
pascal@233 403 <label> \"<b>Boot URL:</b>\" </label>
pascal@233 404 </text>
pascal@233 405 <entry>
pascal@233 406 <default>$(dd if=$file bs=1 skip=519 count=255 2>/dev/null | strings)</default>
pascal@233 407 <variable>URL</variable>
pascal@233 408 </entry>
pascal@264 409 </hbox>
pascal@264 410 <hbox>
pascal@264 411 <button help>
pascal@264 412 <action type=\"launch\">HELP</action>
pascal@264 413 </button>
pascal@233 414 <button>
pascal@233 415 <label>Update</label>
pascal@233 416 <input file icon=\"reload\"></input>
pascal@233 417 <action>echo -n \"\$URL\" | cat - /dev/zero | dd conv=notrunc bs=1 count=255 seek=519 of=$file 2>/dev/null</action>
pascal@233 418 </button>
pascal@264 419 "
pascal@264 420 fi
pascal@264 421 tmp="$tmp
pascal@233 422 <button>
pascal@233 423 <label>Write floppy</label>
pascal@233 424 <input file icon=\"forward\"></input>
pascal@264 425 <action>bootfloppybox call install \"$pkg\" \"\$DEVICE\" \"$file\"</action>
pascal@233 426 </button>
pascal@233 427 </hbox>
pascal@233 428 </frame>
pascal@233 429 "
pascal@130 430 else
pascal@264 431 tmp2="tazpkg get-install $pkg --forced"
pascal@220 432 [ "$pkg" = "plop" ] && tmp2="bootfloppybox call get-plop $file"
pascal@130 433 tmp="$tmp
pascal@157 434 <text wrap=\"true\" width-chars=\"34\" use-markup=\"true\">
pascal@130 435 <label>
pascal@130 436 \"<i>The package <b>$pkg</b> is not yet installed</i>\"
pascal@130 437 </label>
pascal@130 438 </text>
pascal@157 439 <button>
pascal@157 440 <input file icon=\"go-jump\"></input>
pascal@157 441 <label>Install</label>
pascal@264 442 <action>[ -f /var/lib/tazpkg/packages.list ] || tazpkg recharge</action>
pascal@264 443 <action>xterm -fa MiscFixed -fs 11 -bg gray93 -fg black -geometry 80x17 -title \"$pkg install\" -e \"$tmp2 ; sleep 2\"</action>
pascal@221 444 <action type=\"exit\">restart</action>
pascal@157 445 </button>
pascal@130 446 </hbox>
pascal@130 447 </frame>
pascal@130 448 "
pascal@130 449 fi
pascal@130 450 BOOT_DIALOG="$BOOT_DIALOG$tmp"
pascal@130 451 done <<EOT
pascal@130 452 SmartBtmgr /usr/share/boot/btmgr btmgr This OS independent Smart Boot Manager can boot any partition or ATAPI CD-ROM.
pascal@222 453 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 454 Etherboot /usr/share/boot/etherboot etherboot This network bootloader provides a replacement for proprietary PXE or NBI ROMs.
pascal@233 455 gPXE /boot/gpxe gpxe PXE / iSCSI / AoE network bootloader.
pascal@130 456 Memtest86+ /usr/share/boot/memtest.lzma memtest Memory failures detection tool.
pascal@135 457 Grub /usr/sbin/grub grub General purpose boot loader with command shell
pascal@130 458 EOT
pascal@130 459 tmp='
pascal@134 460 </notebook>
pascal@130 461 <hbox>
pascal@130 462 <button>
pascal@130 463 <input file icon="exit"></input>
pascal@130 464 <label>Exit</label>
pascal@130 465 <action type="exit">Exit</action>
pascal@130 466 </button>
pascal@130 467 </hbox>
pascal@130 468
pascal@130 469 </vbox>
pascal@130 470 </window>
pascal@130 471 '
pascal@130 472 BOOT_DIALOG="$BOOT_DIALOG$tmp"
pascal@130 473 export BOOT_DIALOG
pascal@130 474
pascal@130 475 # Only root can create floppy.
pascal@130 476 check_root
pascal@221 477 gtkdialog --program=BOOT_DIALOG | grep -q 'EXIT="restart"' && continue
pascal@214 478 rm -f /tmp/floppybox.grub.menu
pascal@130 479 exit 0
pascal@221 480 done