tazusb annotate tazusb @ rev 90

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