slitaz-tools annotate tinyutils/bootfloppybox @ rev 214
bootfloppybox: edit menu.lst before writing floppy
author | Pascal Bellard <pascal.bellard@slitaz.org> |
---|---|
date | Wed Jun 18 21:25:51 2008 +0000 (2008-06-18) |
parents | 696369f3891f |
children | 3de8bd028ff4 |
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@214 | 5 VERSION=20080618 |
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@213 | 33 exec 3>&1 |
pascal@213 | 34 DEVICE=`$DIALOG --title " Floppy device " \ |
pascal@213 | 35 --backtitle "Boot Floppy Creation" --clear \ |
pascal@213 | 36 --extra-button --extra-label "Format" \ |
pascal@213 | 37 --colors --inputbox " |
pascal@213 | 38 Enter floppy device (default /dev/fd0) |
pascal@213 | 39 " 18 70 2>&1 1>&3` |
pascal@213 | 40 retval=$? |
pascal@213 | 41 exec 3>&- |
pascal@213 | 42 check_retval |
pascal@213 | 43 case "$DEVICE" in |
pascal@213 | 44 /dev/fd*);; |
pascal@213 | 45 *) DEVICE=/dev/fd0;; |
pascal@213 | 46 esac |
pascal@213 | 47 if [ "$retval" = "3" ]; then |
pascal@213 | 48 fdformat -n $DEVICE |
pascal@213 | 49 fi |
pascal@213 | 50 } |
pascal@213 | 51 |
pascal@213 | 52 if [ "$1" == "call" ]; then |
pascal@213 | 53 case "$2" in |
pascal@213 | 54 setup-grub) |
pascal@213 | 55 DEVICE=$3 |
pascal@213 | 56 mke2fs $DEVICE |
pascal@213 | 57 mkdir /media/floppy |
pascal@213 | 58 mount $DEVICE /media/floppy |
pascal@213 | 59 mkdir -p /media/floppy/boot/grub |
pascal@213 | 60 cp /usr/lib/grub/i386-pc/stage? /media/floppy/boot/grub |
pascal@214 | 61 cp /tmp/floppybox.grub.menu /media/floppy/boot/grub/menu.lst |
pascal@214 | 62 [ -f /usr/share/boot/btmgr -a -f /usr/share/boot/memdisk.lzma ]\ |
pascal@214 | 63 && cp /usr/share/boot/btmgr /media/floppy/boot \ |
pascal@214 | 64 && unlzma -c /usr/share/boot/memdisk.lzma > \ |
pascal@214 | 65 /media/floppy/boot/memdisk |
pascal@214 | 66 [ -f /usr/share/boot/etherboot ]\ |
pascal@214 | 67 && cp /usr/share/boot/etherboot /media/floppy/boot |
pascal@214 | 68 [ -f /usr/share/boot/memtest.lzma ]\ |
pascal@214 | 69 && unlzma -c /usr/share/boot/memtest.lzma > \ |
pascal@214 | 70 /media/floppy/boot/memtest |
pascal@214 | 71 [ -f /usr/share/boot/grub.exe.lzma ]\ |
pascal@214 | 72 && unlzma -c /usr/share/boot/grub.exe.lzma > \ |
pascal@214 | 73 /media/floppy/boot/grub.exe |
pascal@214 | 74 grub-set-default --root-directory=/media/floppy 0 |
pascal@214 | 75 umount $DEVICE |
pascal@214 | 76 grub --batch <<EOT |
pascal@214 | 77 root (${DEVICE#/dev/}) |
pascal@214 | 78 setup (${DEVICE#/dev/}) |
pascal@214 | 79 quit |
pascal@214 | 80 EOT |
pascal@214 | 81 ;; |
pascal@214 | 82 *) echo "Invalid command $0 $@" 1>&2 |
pascal@214 | 83 exit 1;; |
pascal@214 | 84 esac |
pascal@214 | 85 exit 0 |
pascal@214 | 86 fi |
pascal@214 | 87 |
pascal@214 | 88 cat > /tmp/floppybox.grub.menu <<EOT |
pascal@213 | 89 default saved |
pascal@213 | 90 timeout 10 |
pascal@213 | 91 |
pascal@213 | 92 title Windows (example on /dev/hda1) |
pascal@213 | 93 rootnoverify (hd0,0) |
pascal@213 | 94 chainloader +1 |
pascal@213 | 95 save default |
pascal@213 | 96 |
pascal@213 | 97 title Slitaz Live (example on /dev/hda1) |
pascal@213 | 98 root (hd0,0) |
pascal@213 | 99 kernel /boot/bzImage rw root=/dev/null vga=normal |
pascal@213 | 100 initrd /boot/rootfs.gz |
pascal@213 | 101 save default |
pascal@213 | 102 |
pascal@213 | 103 title Slitaz Installed (example on /dev/hda2) |
pascal@213 | 104 root (hd0,1) |
pascal@213 | 105 kernel /boot/bzImage ro root=/dev/hda2 vga=normal |
pascal@213 | 106 save default |
pascal@213 | 107 |
pascal@213 | 108 EOT |
pascal@214 | 109 [ -f /usr/share/boot/btmgr -a -f /usr/share/boot/memdisk.lzma ]\ |
pascal@214 | 110 && cat >> /tmp/floppybox.grub.menu <<EOT |
pascal@213 | 111 title Smart Boot Manager |
pascal@213 | 112 kernel /boot/memtest |
pascal@213 | 113 initrd /boot/btmgr |
pascal@213 | 114 |
pascal@213 | 115 EOT |
pascal@214 | 116 [ -f /usr/share/boot/etherboot ] && cat >> /tmp/floppybox.grub.menu <<EOT |
pascal@213 | 117 title Etherboot |
pascal@213 | 118 kernel /boot/etherboot |
pascal@213 | 119 |
pascal@213 | 120 EOT |
pascal@214 | 121 [ -f /usr/share/boot/memtest.lzma ] && cat >> /tmp/floppybox.grub.menu <<EOT |
pascal@213 | 122 title Memtest86+ |
pascal@213 | 123 kernel /boot/memtest |
pascal@213 | 124 |
pascal@213 | 125 EOT |
pascal@214 | 126 [ -f /usr/share/boot/grub.exe.lzma ] && cat >> /tmp/floppybox.grub.menu <<EOT |
pascal@213 | 127 title Grub4Dos |
pascal@213 | 128 kernel /boot/grub/grub.exe --config-file="configfile (fd0)/boot/grub/menu4dos.lst" |
pascal@213 | 129 |
pascal@213 | 130 EOT |
pascal@213 | 131 |
pascal@213 | 132 if [ -z "$XAUTHORITY" ]; then |
pascal@213 | 133 |
pascal@213 | 134 : ${DIALOG=dialog} |
pascal@213 | 135 |
pascal@213 | 136 DEVICE=/dev/fd0 |
pascal@213 | 137 while true; do |
pascal@213 | 138 exec 3>&1 |
pascal@213 | 139 ID_SOURCE=`$DIALOG --title " Choose a boot floppy " \ |
pascal@213 | 140 --backtitle "Boot Floppy Creation on $DEVICE" --clear \ |
pascal@213 | 141 --extra-button --extra-label "Change floppy" \ |
pascal@213 | 142 --yes-label "Install" \ |
pascal@213 | 143 --no-label "Quit" \ |
pascal@213 | 144 --colors --radiolist " |
pascal@213 | 145 Create a floppy to boot a LiveCD, in a PXE network... |
pascal@213 | 146 Need a floppy disk in drive. Erase the whole floppy disk. |
pascal@213 | 147 " 18 70 50\ |
pascal@213 | 148 SmartBtmgr " Boot any partition or ATAPI CD-ROM." on \ |
pascal@213 | 149 Etherboot " Replacement for proprietary PXE ROMs." off \ |
pascal@213 | 150 Memtest86+ " Memory failures detection tool." off \ |
pascal@213 | 151 Grub " Boot loader with command shell." off 2>&1 1>&3` |
pascal@213 | 152 retval=$? |
pascal@213 | 153 exec 3>&- |
pascal@213 | 154 check_retval |
pascal@213 | 155 if [ "$retval" = "3" ]; then |
pascal@213 | 156 select_floppy |
pascal@213 | 157 continue; |
pascal@213 | 158 fi |
pascal@213 | 159 while read key file pkg; do |
pascal@213 | 160 [ "$key" = "$ID_SOURCE" ] || continue |
pascal@213 | 161 if [ ! -f "$file" ]; then |
pascal@213 | 162 $DIALOG --title " Install package " --colors \ |
pascal@213 | 163 --backtitle "Boot Floppy Creation" --clear \ |
pascal@213 | 164 --yes-label "Install" \ |
pascal@213 | 165 --no-label "Quit" \ |
pascal@213 | 166 --yesno "The package $pkg is not yet installed. Install it ?" 18 70 |
pascal@213 | 167 retval=$? |
pascal@213 | 168 tazpkg get-install $pkg |
pascal@213 | 169 fi |
pascal@213 | 170 if [ "$pkg" = "grub" ]; then |
pascal@213 | 171 bootfloppybox call setup-grub $DEVICE |
pascal@213 | 172 else |
pascal@213 | 173 case "$file" in |
pascal@213 | 174 *.lzma) action="unlzma -c";; |
pascal@213 | 175 *.gz) action="zcat";; |
pascal@213 | 176 *) action="cat";; |
pascal@213 | 177 esac |
pascal@213 | 178 $action $file > $DEVICE |
pascal@213 | 179 fi |
pascal@213 | 180 exit 0 |
pascal@213 | 181 done <<EOT |
pascal@213 | 182 SmartBtmgr /usr/share/boot/btmgr btmgr |
pascal@213 | 183 Etherboot /usr/share/boot/etherboot etherboot |
pascal@213 | 184 Memtest86+ /usr/share/boot/memtest.lzma memtest |
pascal@213 | 185 Grub /usr/sbin/grub grub |
pascal@213 | 186 EOT |
pascal@213 | 187 done |
pascal@213 | 188 fi |
pascal@130 | 189 # Write bootfloppy image to floppy device. |
pascal@130 | 190 # |
pascal@130 | 191 BOOT_DIALOG=' |
pascal@139 | 192 <window title="bootfloppybox" icon-name="gtk-floppy"> |
pascal@130 | 193 <vbox> |
pascal@130 | 194 |
pascal@130 | 195 <text use-markup="true"> |
pascal@130 | 196 <label> |
pascal@130 | 197 " |
pascal@130 | 198 <b>SliTaz - Bootfloppybox</b>" |
pascal@130 | 199 </label> |
pascal@130 | 200 </text> |
pascal@134 | 201 <text wrap="false" width-chars="44" use-markup="true"> |
pascal@130 | 202 <label> |
pascal@130 | 203 " |
pascal@135 | 204 Create a floppy to boot a LiveCD, in a PXE network... |
pascal@130 | 205 Need a floppy disk in drive. Erase the whole floppy disk. |
pascal@130 | 206 " |
pascal@130 | 207 </label> |
pascal@130 | 208 </text> |
pascal@130 | 209 |
pascal@130 | 210 <frame Floppy disk drive> |
pascal@130 | 211 <hbox> |
pascal@130 | 212 <text use-markup="true"> |
pascal@132 | 213 <label>"<b>Device : </b>"</label> |
pascal@130 | 214 </text> |
pascal@130 | 215 <entry> |
pascal@130 | 216 <default>/dev/fd0</default> |
pascal@130 | 217 <variable>DEVICE</variable> |
pascal@130 | 218 </entry> |
pascal@132 | 219 <button> |
pascal@132 | 220 <label>Format floppy</label> |
pascal@132 | 221 <input file icon="forward"></input> |
pascal@132 | 222 <action>fdformat -n $DEVICE</action> |
pascal@132 | 223 </button> |
pascal@130 | 224 </hbox> |
pascal@130 | 225 </frame> |
pascal@135 | 226 <notebook labels="LiveCD|PXE Network|Memory Test|Expert"> |
pascal@130 | 227 ' |
pascal@130 | 228 while read name file pkg desc; do |
pascal@130 | 229 tmp="<frame $name> |
pascal@130 | 230 <hbox> |
pascal@130 | 231 <text wrap=\"true\" width-chars=\"44\" use-markup=\"true\"> |
pascal@130 | 232 <label> |
pascal@130 | 233 \" |
pascal@130 | 234 $(echo -e $desc) |
pascal@130 | 235 \" |
pascal@130 | 236 </label> |
pascal@130 | 237 </text> |
pascal@130 | 238 </hbox> |
pascal@130 | 239 " |
pascal@130 | 240 if [ -f $file ]; then |
pascal@130 | 241 case "$file" in |
pascal@131 | 242 *.lzma) action="unlzma -c";; |
pascal@130 | 243 *.gz) action="zcat";; |
pascal@130 | 244 *) action="cat";; |
pascal@130 | 245 esac |
pascal@135 | 246 if [ "$pkg" = "grub" ]; then |
pascal@135 | 247 tmp="$tmp |
pascal@135 | 248 <hbox> |
pascal@135 | 249 <button> |
pascal@200 | 250 <label>Grub menu</label> |
pascal@200 | 251 <input file icon=\"accessories-text-editor\"></input> |
pascal@214 | 252 <action type=\"lauch\">leafpad /tmp/floppybox.grub.menu</action> |
pascal@200 | 253 </button> |
pascal@200 | 254 <button> |
pascal@135 | 255 <label>Write floppy</label> |
pascal@135 | 256 <input file icon=\"forward\"></input> |
pascal@213 | 257 <action>bootfloppybox call setup-grub \$DEVICE</action> |
pascal@135 | 258 </button> |
pascal@135 | 259 </hbox> |
pascal@135 | 260 </frame> |
pascal@135 | 261 " |
pascal@135 | 262 else |
pascal@135 | 263 tmp="$tmp |
pascal@130 | 264 <hbox> |
pascal@130 | 265 <button> |
pascal@130 | 266 <label>Write floppy</label> |
pascal@130 | 267 <input file icon=\"forward\"></input> |
pascal@130 | 268 <action>$action $file > \$DEVICE</action> |
pascal@130 | 269 </button> |
pascal@130 | 270 </hbox> |
pascal@130 | 271 </frame> |
pascal@130 | 272 " |
pascal@135 | 273 fi |
pascal@130 | 274 else |
pascal@130 | 275 tmp="$tmp |
pascal@130 | 276 <hbox> |
pascal@157 | 277 <text wrap=\"true\" width-chars=\"34\" use-markup=\"true\"> |
pascal@130 | 278 <label> |
pascal@130 | 279 \"<i>The package <b>$pkg</b> is not yet installed</i>\" |
pascal@130 | 280 </label> |
pascal@130 | 281 </text> |
pascal@157 | 282 <button> |
pascal@157 | 283 <input file icon=\"go-jump\"></input> |
pascal@157 | 284 <label>Install</label> |
pascal@157 | 285 <action>[ -f /var/lib/tazpkg/packages.list ] || tazpkg recharge</action> |
pascal@157 | 286 <action>xterm -fa MiscFixed -fs 11 -bg gray93 -fg black -geometry 80x17 -title \"$pkg install\" -e \"tazpkg get-install $pkg ; echo -e \\\"----\\n\\nENTER to continue...\\\" && read close\"</action> |
pascal@157 | 287 <action type=\"exit\">Exit</action> |
pascal@157 | 288 </button> |
pascal@130 | 289 </hbox> |
pascal@130 | 290 </frame> |
pascal@130 | 291 " |
pascal@130 | 292 fi |
pascal@130 | 293 BOOT_DIALOG="$BOOT_DIALOG$tmp" |
pascal@130 | 294 done <<EOT |
pascal@130 | 295 SmartBtmgr /usr/share/boot/btmgr btmgr This OS independent Smart Boot Manager can boot any partition or ATAPI CD-ROM. |
pascal@130 | 296 Etherboot /usr/share/boot/etherboot etherboot This network bootloader provides a replacement for proprietary PXE or NBI ROMs. |
pascal@130 | 297 Memtest86+ /usr/share/boot/memtest.lzma memtest Memory failures detection tool. |
pascal@135 | 298 Grub /usr/sbin/grub grub General purpose boot loader with command shell |
pascal@130 | 299 EOT |
pascal@130 | 300 tmp=' |
pascal@134 | 301 </notebook> |
pascal@130 | 302 <hbox> |
pascal@130 | 303 <button> |
pascal@130 | 304 <input file icon="exit"></input> |
pascal@130 | 305 <label>Exit</label> |
pascal@130 | 306 <action type="exit">Exit</action> |
pascal@130 | 307 </button> |
pascal@130 | 308 </hbox> |
pascal@130 | 309 |
pascal@130 | 310 </vbox> |
pascal@130 | 311 </window> |
pascal@130 | 312 ' |
pascal@130 | 313 BOOT_DIALOG="$BOOT_DIALOG$tmp" |
pascal@130 | 314 export BOOT_DIALOG |
pascal@130 | 315 |
pascal@130 | 316 # Only root can create floppy. |
pascal@130 | 317 check_root |
pascal@130 | 318 gtkdialog --program=BOOT_DIALOG |
pascal@214 | 319 rm -f /tmp/floppybox.grub.menu |
pascal@130 | 320 |
pascal@130 | 321 exit 0 |