tazusb annotate tazusb @ rev 69

Update en manual
author Paul Issott <paul@slitaz.org>
date Mon Mar 22 21:14:34 2010 +0000 (2010-03-22)
parents ef6e1c9adb1f
children 671df117fb6f
rev   line source
spode@0 1 #!/bin/sh
spode@0 2 # Tazusb - SliTaz LiveUSB
spode@0 3 #
spode@0 4 # Tazusb is an utility to generate, configure and manipulate SliTaz LiveUSB
spode@0 5 # bootable media and/or USB /home partition, such as flash keys, SD card or
spode@0 6 # USB harddisk.
spode@0 7 #
spode@0 8 # Authors : Christophe Lincoln (Pankso) <pankso@slitaz.org>
spode@0 9 # Andrew Miller (Spode) <spode@spodesabode.com>
spode@0 10 #
erjo@67 11 VERSION=2.3
spode@0 12
spode@0 13 COMMAND=$1
spode@0 14 TARGET_ROOT=/media/flash
spode@0 15 DRIVE_NAME=`cat /proc/sys/dev/cdrom/info | grep "drive name" | cut -f 3`
spode@0 16 CDROM=/dev/$DRIVE_NAME
erjo@47 17 LOG=/tmp/$(basename $0).log
spode@0 18
spode@0 19 #
spode@0 20 # Tazusb functions
spode@0 21 #
spode@0 22
spode@0 23 # Print the usage.
spode@0 24 usage ()
spode@0 25 {
spode@0 26 echo -e "\nSliTaz Live USB - Version: $VERSION\n
spode@0 27 \033[1mUsage: \033[0m `basename $0` [command] [compression|device]
spode@0 28 \033[1mCommands: \033[0m\n
spode@0 29 usage Print this short usage.
spode@0 30 writefs Write the current filesystem to rootfs.gz.
spode@0 31 tazSupported compression: lzma. gzip, none.
erjo@47 32 format Format and label device with ext3, ext2 or fat32 filesystem
erjo@47 33 (for LiveUSB or /home). Default is ext3.
pankso@13 34 gen-liveusb Generate a bootable LiveUSB using files from the LiveCD.
paul@26 35 gen-swap Create or recreate and activate additional swap memory.
paul@26 36 gen-iso2usb Generate a bootable LiveUSB using files from ISO file.
paul@26 37 clean Remove old backup filesystems to free disk space.\n"
spode@0 38 }
spode@0 39
spode@0 40 # Status function.
spode@0 41 status()
spode@0 42 {
spode@0 43 local CHECK=$?
spode@0 44 echo -en "\\033[70G[ "
spode@0 45 if [ $CHECK = 0 ]; then
spode@0 46 echo -en "\\033[1;33mOK"
spode@0 47 else
spode@0 48 echo -en "\\033[1;31mFailed"
spode@0 49 fi
spode@0 50 echo -e "\\033[0;39m ]"
spode@0 51 }
spode@0 52
spode@0 53 # Exit if user is not root.
spode@0 54 check_root()
spode@0 55 {
spode@0 56 if test $(id -u) != 0 ; then
spode@0 57 echo -e "\nThis program requires being run as root.\n"
spode@0 58 exit 0
spode@0 59 fi
spode@0 60 }
spode@0 61
paul@41 62 # Display a list of available partitions.
hacker@12 63 fdisk_list()
hacker@12 64 {
pankso@16 65 echo "----"
hacker@12 66 fdisk -l | grep ^/dev/sd*
pankso@16 67 echo "----"
hacker@12 68 }
hacker@12 69
hacker@12 70 # We need a USB media to install.
hacker@12 71 ask_for_device()
hacker@12 72 {
hacker@12 73 echo -n "\
hacker@12 74 Please specify the target USB device to $COMMAND. You can type 'list' to
hacker@12 75 get a list of devices, type 'exit' or give an empty value to exit.
hacker@12 76
hacker@12 77 Device to use : "; read anser
hacker@12 78 while [ "$anser" == "list" ]; do
hacker@12 79 fdisk_list
hacker@12 80 echo -n "Device to use : "; read anser
hacker@12 81 done
hacker@12 82 if [ "$anser" = "" -o "$anser" = "exit" ]; then
hacker@12 83 echo -e "\nNo specified device or exit.\n"
hacker@12 84 exit 0
hacker@12 85 else
hacker@12 86 DEVICE=$anser
hacker@12 87 fi
hacker@12 88 }
hacker@12 89
spode@0 90 # Verify a device exists before format or install
spode@0 91 check_for_device()
spode@0 92 {
spode@9 93 IFDEV=`fdisk -l | grep $DEVICE`
spode@9 94 if [ -z "$IFDEV" ]; then
spode@0 95 echo -e "\nUnable to find device: $DEVICE\n"
spode@0 96 exit 0
spode@0 97 fi
spode@0 98 }
spode@0 99
paul@41 100 # gets the UUID and filesystem type
spode@0 101 get_part_info()
spode@0 102 {
spode@9 103 UUID=`blkid -s UUID -o value $DEVICE`
spode@9 104 FSTYPE=`blkid -s TYPE -o value $DEVICE`
spode@0 105 }
spode@0 106
spode@0 107 # Format target device and label partition.
spode@0 108 mkfs_ext3()
spode@0 109 {
spode@0 110 echo -n "Please specify a label for the partition (TazUSB): "
spode@0 111 read label
spode@0 112
spode@0 113 if [ -z $label ]; then
spode@0 114 label=TazUSB
spode@0 115 fi
spode@0 116
spode@0 117 echo "Label : $label"
spode@9 118 echo "Mkfs : mkfs.ext3 -L \"$label\" $DEVICE"
spode@0 119 echo "" && sleep 2
spode@9 120 mkfs.ext3 -L "$label" $DEVICE
spode@0 121
spode@0 122 }
spode@0 123
erjo@47 124 #Get label for device
erjo@47 125 #
erjo@47 126 get_label()
erjo@47 127 {
erjo@47 128 echo -n "Please specify a label for the partition (TazUSB): "
erjo@47 129 read label
erjo@47 130
erjo@47 131 if [ -z $label ]; then
erjo@47 132 label=TazUSB
erjo@47 133 fi
erjo@47 134 }
erjo@47 135
erjo@47 136 #Get fs type
erjo@47 137 # supported fs are ext3, ext2, fat32
erjo@47 138 get_fs_type()
erjo@47 139 {
erjo@47 140 echo -n "Please specify a filesystem type ext2, ext3 or fat32 (ext3): "
erjo@47 141 read fs_type
erjo@47 142
erjo@47 143 if [ -z $fs_type ]; then
erjo@47 144 fs_type=ext3
erjo@47 145 fi
erjo@47 146 }
erjo@47 147
erjo@47 148 # We can chose the filesystem type.
erjo@47 149 ask_for_fs_type()
erjo@47 150 {
erjo@47 151 echo -n "\
erjo@47 152 Please specify the filesystem type to $COMMAND.
paul@48 153 Available formats are ext3(default), ext2 or fat32.
erjo@47 154 Press enter to keep the default value.
erjo@47 155
erjo@47 156 File system type : "; read anser
erjo@47 157 if [ "$anser" = "" ]; then
erjo@47 158 FS_TYPE=ext3
erjo@47 159 else
erjo@47 160 FS_TYPE=$anser
erjo@47 161 fi
erjo@47 162 }
erjo@47 163
erjo@47 164 # Format target device in ext3, ext2 or fat32.
erjo@49 165 # Usage: make_fs ext2|fat32|ext3 (default)
erjo@47 166 make_fs()
erjo@47 167 {
erjo@47 168 local answer
erjo@47 169
erjo@47 170 FS=$(echo $fs_type | tr [A-Z] [a-z])
erjo@47 171 case "$FS" in
erjo@47 172 ext3|ext2)
paul@48 173 echo -e "\nProcessing..."
erjo@47 174 echo "Label : $label"
erjo@47 175 echo "Mkfs : mkfs.$FS -L \"$label\" $DEVICE"
erjo@47 176 echo "" && sleep 2
erjo@47 177 mkfs.$@ -L "$label" $DEVICE > $LOG 2>&1
erjo@47 178 ;;
erjo@47 179 [Ff]at32)
erjo@47 180 if [ -x /sbin/mkdosfs ];then
paul@48 181 echo -e "\nProcessing..."
erjo@47 182 echo "Label : $label"
erjo@47 183 echo "Mkfs : mkdosfs -F 32 -n \"$label\" $DEVICE"
erjo@47 184 echo "" && sleep 2
erjo@47 185 mkdosfs -F 32 -n "$label" $DEVICE
erjo@47 186 else
paul@48 187 echo -ne "Can't find mkdosfs tool.\nWould you like to install dosfstools from repository [y/N] ? "; read answer
erjo@47 188 case $answer in
erjo@47 189 y|Y)
erjo@47 190 yes | tazpkg get-install dosfstools && make_fs fat32;;
erjo@47 191 *)
erjo@47 192 exit 1 ;;
erjo@47 193 esac
erjo@47 194 fi
erjo@47 195 ;;
erjo@47 196 *)
paul@48 197 echo "Sorry. Filesystem $FS is not supported."
erjo@47 198 exit
erjo@47 199 esac
erjo@47 200 }
erjo@47 201
spode@0 202 # Mount an existing USB device.
spode@0 203 unmount_target_usb()
spode@0 204 {
spode@0 205 # If mount point is in use, unmount
erjo@47 206 if mount | grep -q $TARGET_ROOT; then
spode@0 207 umount $TARGET_ROOT
spode@0 208 fi
spode@0 209
spode@0 210 # Device could be mounted elsewhere, so unmount
erjo@47 211 if mount | grep -q $DEVICE; then
spode@0 212 echo "Unmounting USB target device..."
spode@9 213 umount $DEVICE
spode@0 214 fi
spode@0 215 }
spode@0 216
spode@0 217 # Mount an existing USB device.
spode@0 218 mount_target_usb()
spode@0 219 {
spode@0 220 echo "Mounting USB target device..."
spode@0 221 mkdir -p $TARGET_ROOT
spode@9 222 mount $DEVICE $TARGET_ROOT 2>/dev/null
spode@0 223 }
spode@0 224
spode@0 225 # Mount SliTaz LiveCD to get needed files.
spode@0 226 mount_cdrom()
spode@0 227 {
spode@0 228 echo "Mounting cdrom device..."
spode@0 229
spode@0 230 if mount | grep /media/cdrom; then
spode@0 231 umount /media/cdrom
spode@0 232 fi
spode@0 233
spode@0 234 mkdir -p /media/cdrom
hacker@12 235 mount -r -t iso9660 $CDROM /media/cdrom 2>/dev/null
spode@0 236
spode@0 237 if [ ! -f /media/cdrom/boot/rootfs.gz ]; then
hacker@12 238 echo -e "\nUnable to mount cdrom or to find a filesystem on it (rootfs.gz).\n"
spode@0 239 exit 0
spode@0 240 fi
spode@0 241 }
spode@0 242
erjo@24 243 # Mount SliTaz ISO to get needed files.
erjo@24 244 mount_iso()
erjo@24 245 {
erjo@24 246 if mount | grep /media/cdrom ; then
erjo@24 247 umount /media/cdrom
erjo@24 248 fi
erjo@24 249
erjo@24 250 test -d /media/cdrom || mkdir -p /media/cdrom
erjo@24 251
erjo@34 252 # Add support to other distros.
erjo@34 253 if [ ! -f /etc/slitaz-version ]; then
erjo@34 254 OPTIONS="-o loop"
erjo@34 255 else
erjo@34 256 OPTIONS=""
erjo@34 257 fi
erjo@34 258
erjo@24 259 echo "Mounting `basename $ISO`..."
erjo@34 260 mount $OPTIONS $ISO /media/cdrom 2>/dev/null
erjo@24 261
erjo@24 262 if [ ! -f /media/cdrom/boot/rootfs.gz ]; then
erjo@24 263 echo -e "\nUnable to mount iso or to find a filesystem on it (rootfs.gz).\n"
erjo@24 264 exit 0
erjo@24 265 fi
erjo@24 266 }
erjo@24 267
erjo@24 268
paul@48 269 # All needed files are in the boot directory of the cdrom.
spode@0 270 copy_cdrom_files()
spode@0 271 {
spode@0 272 echo -n "Copying needed files from cdrom..."
spode@0 273 mkdir -p $TARGET_ROOT/boot
spode@0 274 cp /media/cdrom/boot/bzImage $TARGET_ROOT/boot
spode@0 275 cp /media/cdrom/boot/rootfs.gz $TARGET_ROOT/boot
spode@0 276 status
spode@0 277 }
spode@0 278
spode@0 279 install_mbr()
spode@0 280 {
spode@0 281 # MBR
pankso@11 282 DISK=${DEVICE%[1-99]}
pascal@22 283 if [ -f /usr/share/boot/mbr.bin ]; then
pankso@11 284 echo -n "Installing a new MBR to: $DISK"
pascal@22 285 cat /usr/share/boot/mbr.bin > $DISK
spode@0 286 status
spode@0 287 else
spode@0 288 # Skip MBR install (tazpkg get-install syslinux-extra ? and then cat)
hacker@12 289 echo "No new MBR installed to: $DISK"
spode@0 290 fi
spode@0 291 }
spode@0 292
spode@0 293 # ext/syslinux install
spode@0 294 install_boot()
spode@0 295 {
MikeDSmith25@31 296 # Decide if we're installing syslinux or extlinux
spode@0 297 if [ "$FSTYPE" = "vfat" ]; then
spode@0 298 ST=syslinux
spode@9 299 STC="syslinux -d /boot/syslinux/ $DEVICE"
spode@0 300 STE=cfg
spode@0 301 else
spode@0 302 ST=extlinux
spode@0 303 STC="extlinux --install $TARGET_ROOT/boot/$ST"
spode@0 304 STE=conf
spode@0 305 fi
spode@0 306
spode@0 307 echo "Installing bootloader: $ST"
spode@0 308 mkdir -p $TARGET_ROOT/boot/$ST
spode@0 309 $STC
spode@0 310
erjo@23 311 # Use existing isolinux.cfg for extlinux.conf or syslinux.cfg
erjo@23 312 cp /media/cdrom/boot/isolinux/isolinux.cfg $TARGET_ROOT/boot/$ST/$ST.$STE
erjo@25 313 sed -i -e "s/isolinux.msg/$ST.msg/" $TARGET_ROOT/boot/$ST/$ST.$STE
erjo@23 314
MikeDSmith25@31 315 # Add home= to append in extlinux or syslinux.cfg
pascal@44 316 sed -i -e "s/\(append.*\)/\1 home=$UUID/" $(grep -l append $TARGET_ROOT/boot/$ST/*)
erjo@23 317
pankso@16 318 # Splash screen and help files.
erjo@23 319 cp /media/cdrom/boot/isolinux/isolinux.msg $TARGET_ROOT/boot/$ST/$ST.msg
erjo@23 320 sed -i s/'SliTaz GNU\/Linux'/'SliTaz GNU\/Linux LiveUSB'/ $TARGET_ROOT/boot/$ST/$ST.msg
pankso@16 321 cp /media/cdrom/boot/isolinux/splash.lss $TARGET_ROOT/boot/$ST
pankso@16 322 cp /media/cdrom/boot/isolinux/*.txt $TARGET_ROOT/boot/$ST
erjo@23 323 cp /media/cdrom/boot/isolinux/*.cfg $TARGET_ROOT/boot/$ST
erjo@23 324 cp /media/cdrom/boot/isolinux/*.kbd $TARGET_ROOT/boot/$ST
erjo@23 325 cp /media/cdrom/boot/isolinux/*.c32 $TARGET_ROOT/boot/$ST
erjo@23 326
erjo@23 327 # Modifing all cfg files.
erjo@23 328 for cfg in $TARGET_ROOT/boot/$ST/*.cfg
erjo@23 329 do
erjo@23 330 sed -i s/isolinux.msg/$ST.msg/ $cfg
erjo@23 331 done
erjo@23 332
MikeDSmith25@31 333 # Modifing include file if exists.
erjo@30 334 if [ -f $TARGET_ROOT/boot/$ST/common.inc ]; then
erjo@30 335 sed -i -e "s/isolinux.msg/$ST.msg/" $TARGET_ROOT/boot/$ST/common.inc
erjo@30 336 fi
erjo@23 337
spode@0 338 }
spode@0 339
spode@0 340 # Let user exit or reboot.
spode@0 341 exit_or_reboot()
spode@0 342 {
pankso@16 343 echo "==============================================================================="
spode@0 344 echo ""
spode@0 345 echo -n "Do you want to exit Tazusb or reboot system (Exit/reboot) ? "
spode@0 346 read anser
spode@0 347 if [ "$anser" == "reboot" ]; then
spode@0 348 umount $TARGET_ROOT
spode@0 349 umount /media/cdrom
spode@0 350 reboot || reboot -f
spode@0 351 else
pankso@37 352 umount $TARGET_ROOT
spode@0 353 umount /media/cdrom
spode@0 354 echo ""
spode@0 355 exit 0
spode@0 356 fi
spode@0 357 }
spode@0 358
spode@0 359 set_bootable()
spode@0 360 {
spode@0 361 # As the boot flag is toggable, need to check it before hand
pankso@16 362 DISK=${DEVICE%[1-99]}
pankso@16 363 ISSET=`fdisk -l $DISK | grep $DEVICE | grep "\*"`
spode@0 364
spode@0 365 # If not set, set bootable
pankso@16 366 if [ "$ISSET" == "" ]; then
pankso@16 367 umount $TARGET_ROOT 2>/dev/null
pankso@16 368 echo -n "Setting $DEVICE as bootable..."
pankso@16 369 fdisk $DISK >/dev/null << EOF
spode@0 370 a
spode@0 371 1
spode@0 372 w
spode@0 373 EOF
pankso@16 374 status
spode@0 375 fi
spode@0 376 }
spode@0 377
paul@41 378 # Generate a virtual swap file in /home/swap. SliTaz boot scripts
paul@41 379 # will activate it, useful for low memory systems
pankso@13 380 gen_swap_file()
pankso@13 381 {
pankso@13 382 echo ""
pankso@13 383 echo -en "\033[1mGen swap\033[0m
pankso@13 384 ===============================================================================
paul@26 385 Generate a swap file in /home/swap that will be activated on each boot to have
pankso@13 386 more memory available (Empty value to exit).
pankso@13 387
pankso@13 388 Swap file in Mb : "
pankso@13 389 read size
pankso@13 390 if [ -z "$size" ]; then
pankso@13 391 echo -e "\nEmpty value. Exiting...\n"
pankso@13 392 exit 0
pankso@13 393 fi
pankso@13 394 cd /home
pankso@13 395 # Sanity check
pankso@13 396 if [ -f swap ]; then
pankso@13 397 swapoff swap 2>/dev/null
pankso@13 398 fi
pankso@13 399 # DD to gen a virtual disk.
pankso@13 400 dd if=/dev/zero of=swap bs=1M count=$size
pankso@13 401 # Make swap filesystem.
pankso@13 402 mkswap swap
pankso@13 403 swapon swap
pankso@13 404 echo ""
pankso@13 405 }
pankso@13 406
paul@26 407 # Clean out old backups to save disk space
paul@26 408 clean_usb()
paul@26 409 {
paul@26 410 echo ""
paul@26 411 echo -en "\033[1mClean\033[0m
paul@26 412 ===============================================================================
paul@26 413 Remove old rootfs.gz.unixtimestamp backup filesystems to free up disk space.\n\n"
MikeDSmith25@31 414 # Locate and interactively remove old filesystems from /home directory
paul@26 415 for file in `find /home/boot/rootfs.gz.[0-9]*`
paul@26 416 do
paul@26 417 echo -n "Do you wish to remove: `basename $file` (Yes/no/exit) ? "
paul@26 418 read answer
paul@26 419 case $answer in
paul@26 420 e|E|"exit"|Exit)
paul@26 421 exit 0 ;;
paul@26 422 y|Y|yes|Yes)
paul@26 423 rm -f $file ;;
paul@26 424 *)
paul@26 425 echo -en "No filesystems selected, exiting...\n" ;;
paul@26 426 esac
paul@26 427 done
paul@26 428 }
paul@26 429
spode@0 430 #
spode@0 431 # Tazusb sequence
spode@0 432 #
spode@0 433
spode@0 434 case $COMMAND in
spode@0 435 writefs)
MikeDSmith25@31 436 # Writefs to rootfs.gz
spode@0 437 check_root
spode@0 438 if [ -z $2 ]; then
spode@0 439 COMPRESSION=none
spode@0 440 else
spode@0 441 COMPRESSION=$2
spode@0 442 fi
MikeDSmith25@31 443 # Start info
spode@0 444 echo ""
spode@0 445 echo -e "\033[1mWrite filesystem\033[0m
spode@0 446 ===============================================================================
spode@0 447 The command writefs will write all the current filesystem into a suitable cpio
spode@0 448 archive (rootfs.gz) usable on a bootable LiveUSB media.
spode@0 449
spode@0 450 Archive compression: $COMPRESSION"
spode@0 451 echo ""
spode@0 452
MikeDSmith25@31 453 # Clear out tazpkg cache
spode@0 454 rm /var/cache/tazpkg/* -r -f
spode@0 455
MikeDSmith25@31 456 # Optionally remove sound card selection
pankso@35 457 echo -n "Do you wish to remove the sound card selection (No/yes/exit) ? "
pankso@5 458 read anser
pankso@5 459 case $anser in
pankso@5 460 e|E|"exit"|Exit)
pankso@35 461 exit 0 ;;
pankso@5 462 y|Y|yes|Yes)
pankso@5 463 echo -n "Removing current sound card selection..."
pankso@5 464 rm -f /var/lib/sound-card-driver
pankso@35 465 rm -f /etc/asound.state ;;
pankso@5 466 *)
pankso@35 467 echo -n "Keeping current sound card selection..." ;;
pankso@35 468 esac
pankso@35 469 status
pankso@35 470 # Optionally remove screen resolution
pankso@35 471 echo -n "Do you wish to remove the screen resolution (No/yes/exit) ? "
pankso@35 472 read anser
pankso@35 473 case $anser in
pankso@35 474 e|E|"exit"|Exit)
pankso@35 475 exit 0 ;;
pankso@35 476 y|Y|yes|Yes)
pankso@35 477 echo -n "Removing current screen resolution..."
pankso@35 478 rm -f /etc/X11/screen.conf ;;
pankso@35 479 *)
pankso@35 480 echo -n "Keeping current screen resolution..." ;;
pankso@5 481 esac
spode@0 482 status
spode@0 483
MikeDSmith25@31 484 # Create list of files
pascal@27 485 find /bin /etc /init /sbin /var /dev /lib /root /usr >/tmp/list
spode@0 486
pascal@27 487 for dir in /home /proc /sys /tmp /mnt /media /media/cdrom /media/flash /media/usbdisk
spode@0 488 do
spode@0 489 echo $dir >>/tmp/list
spode@0 490 done
spode@0 491
MikeDSmith25@31 492 # Generate initramfs with specified compression
spode@0 493 if [ "$COMPRESSION" = "lzma" ]; then
spode@0 494 echo -n "Creating rootfs.gz with lzma compression... "
spode@0 495 cat /tmp/list | cpio -o -H newc | lzma e -si -so > /rootfs.gz
spode@0 496
spode@0 497 elif [ "$COMPRESSION" = "gzip" ]; then
spode@0 498 echo -n "Creating rootfs.gz with gzip compression... "
spode@0 499 cat /tmp/list | cpio -o -H newc | gzip -9 > /rootfs.gz
spode@0 500
spode@0 501 else
spode@0 502 echo -n "Creating rootfs.gz without compression... "
spode@0 503 cat /tmp/list | cpio -o -H newc > /rootfs.gz
spode@0 504 fi
spode@0 505
MikeDSmith25@31 506 # Get initramfs size
spode@0 507 size=`du -sh /rootfs.gz | cut -f 1`
spode@0 508
MikeDSmith25@31 509 # If the bootable medium is where it should be, copy across
spode@0 510 if (test -e /home/boot/bzImage); then
spode@0 511 echo "Moving rootfs.gz to media. Remember to unmount for delayed writes!"
spode@0 512
MikeDSmith25@31 513 # Move the old filesystem with the unix timestamp for reference
spode@0 514 if (test -e /home/boot/previous.gz); then
spode@0 515 mv /home/boot/previous.gz /home/boot/rootfs.gz.$(date +%s)
spode@0 516 fi
spode@0 517
spode@0 518 mv /home/boot/rootfs.gz /home/boot/previous.gz
spode@0 519 mv /rootfs.gz /home/boot/.
spode@0 520 else
spode@0 521 echo "rootfs.gz is located in /"
spode@0 522 fi
spode@0 523
spode@0 524 echo "==============================================================================="
spode@0 525 echo "Root filesystem size: $size"
spode@0 526 echo ""
pankso@14 527 echo -en "----\nENTER to continue..."; read i
spode@0 528 ;;
spode@0 529 format)
paul@54 530 # Format a partition.
spode@0 531 check_root
spode@0 532 echo ""
spode@0 533 echo -e "\033[1mFormat a device\033[0m"
spode@0 534 echo "==============================================================================="
spode@0 535 DEVICE=$2
erjo@47 536 label=$3
erjo@47 537 fs_type=$4
spode@0 538 if [ -z $DEVICE ]; then
hacker@12 539 ask_for_device
hacker@12 540 check_for_device
hacker@12 541 else
hacker@12 542 echo "Device : $DEVICE"
spode@0 543 fi
erjo@47 544 test -z $fs_type && get_fs_type
paul@54 545 get_label
erjo@47 546 unmount_target_usb
erjo@47 547 make_fs "$fs_type"
erjo@47 548 #mkfs_ext3
spode@0 549 echo "==============================================================================="
spode@9 550 echo "Device $label ($DEVICE) is ready to use as LiveUSB and/or /home partition."
spode@0 551 echo ""
spode@0 552 ;;
spode@0 553 gen-liveusb)
spode@0 554 # Generate a LiveUSB media using files from a LiveCD.
spode@0 555 check_root
spode@0 556 echo ""
spode@0 557 echo -e "\033[1mGen a LiveUSB media\033[0m"
spode@0 558 echo "==============================================================================="
spode@0 559 DEVICE=$2
spode@0 560 if [ -z $DEVICE ]; then
hacker@12 561 ask_for_device
spode@0 562 fi
spode@0 563
spode@0 564 check_for_device
pankso@11 565 mount_cdrom
spode@0 566 get_part_info
spode@0 567 unmount_target_usb
spode@0 568 install_mbr
spode@0 569 set_bootable
spode@0 570 mount_target_usb
spode@0 571 copy_cdrom_files
spode@0 572 install_boot
spode@0 573 exit_or_reboot
spode@0 574 ;;
pankso@13 575 gen-swap)
pankso@13 576 check_root
pankso@13 577 gen_swap_file
pankso@13 578 ;;
erjo@47 579 gen-iso2usb|iso2usb)
erjo@24 580 check_root
erjo@24 581
erjo@24 582 # Check if file exists
erjo@24 583 ISO=$2
erjo@24 584 if [ -z $ISO ] || [ ! -f $ISO ]; then
erjo@24 585 echo -e "\nPlease specify a valid filename on the command line.\n"
erjo@24 586 exit 1
erjo@24 587 fi
erjo@24 588 echo ""
erjo@24 589 echo -e "\033[1mCopy ISO file to SliTaz LiveUSB media\033[0m"
erjo@24 590 echo "==============================================================================="
erjo@24 591 echo ""
erjo@24 592 DEVICE=$3
erjo@24 593 if [ -z $DEVICE ]; then
erjo@24 594 ask_for_device
erjo@24 595 fi
erjo@24 596 check_for_device
erjo@24 597 mount_iso
erjo@24 598 get_part_info
erjo@24 599 unmount_target_usb
erjo@24 600 install_mbr
erjo@24 601 set_bootable
erjo@24 602 mount_target_usb
erjo@24 603 copy_cdrom_files
erjo@24 604 install_boot
pankso@66 605 umount /dev/cdrom
pankso@66 606 losetup -d /dev/loop0
erjo@24 607 exit_or_reboot
paul@26 608 ;;
paul@26 609 clean)
paul@28 610 check_root
paul@28 611 clean_usb
paul@28 612 ;;
spode@0 613 usage|*)
spode@0 614 # Display usage by default.
spode@0 615 usage
spode@0 616 ;;
spode@0 617 esac
spode@0 618
spode@0 619 exit 0