tazusb annotate tazusb @ rev 209

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