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