makeiso.sh 17 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
#!/bin/bash
#
#    Copyright (C) 2014 Hamara Development Team <info@hamaralinux.org>
#
#    This program is free software; you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation; either version 2 of the License, or
#    (at your option) any later version.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with this program; if not, write to the Free Software
#    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
#

if [ $UID != 0 ]; then
    echo You need to run this script as root!
    exit 1
fi

# Check if memory is more than 2GB
memusage=`free -m | grep Mem | awk '{print $2}'`

if [ $memusage -le 2048  ]; then
    echo Your current Memory is 2GB or less, you need at least 3GB memory to run this script!
    exit 1
fi

#set -e

export TRACKER="http://$5:6969/announce"
Raju Vindane's avatar
Raju Vindane committed
36 37
export MIRRORS="http://$5/hamara-sugam/"
export MIRROR="http://$5/hamara-sugam/" # The upsream full repository
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
export MKTORRENT=$PWD/"files/mktorrent-1.0/mktorrent"

usage(){
echo "Hamara iso build script

Copyright (C) 2014 Hamara Development Team <info@hamaralinux.org>
License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

This script builds a Hamara CD image from scratch. The \"files\" directory is required.

The script needs 6 parameters (in the shown order):

* Action to do: debootstrap|iso|source|squash|torrent|all
* Architecture to build: i386|amd64
* Distro to build: hamara|hamara-sugam
* Codename (of an existing Hamara release)
Raju Vindane's avatar
Raju Vindane committed
56
* Mirror (url of mirror for builing :iso archive.hamaralinux.org|in.archive.hamaralinux.org|in.devel.hamaralinux.org)
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92

Extra parameters:
i18n: Builds a DVD with extra translations
fsf: Builds the FSF membership card image

Usage: $0 debootstrap|iso|squash|source|torrent|all i386|amd64 hamara|hamara-sugam codename [i18n] [fsf]
Requirements: genisoimage, squashfs-tools, debootstrap, lzma, curl, syslinux

WARNING: this version of $0 uses a ramdisk to build the system, so you need roughly 2GB RAM to run it."
}

case $1 in
debootstrap|iso|squash|source|all|torrent)     export ACTION=$1
                ;;
*)              usage
                exit 1
                ;;
esac

case $2 in
i386|amd64)	export ARCH=$2
		;;
*)              usage
		exit 1
		;;
esac

case $3 in
hamara|hamara-sugam)	export DIST=$3
		;;
*)              usage
		exit 1
		;;
esac

export CODENAME=$4
Raju Vindane's avatar
Raju Vindane committed
93 94
export VERSION=1.0
[ $CODENAME = stretch ] && UPSTREAM=stretch
95

Raju Vindane's avatar
Raju Vindane committed
96
export LOCALMIRROR="deb http://$5/hamara-sugam $CODENAME main" # The optional local testing repository
97 98

case $5 in
Raju Vindane's avatar
Raju Vindane committed
99
archive.hamaralinux.org|in.archive.hamaralinux.org|uk.archive.hamaralinux.org|devel.hamaralinux.org|in.devel.hamaralinux.org)     export ACTION=$1
100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
                ;;
*)              usage
                exit 1
                ;;
esac

echo $* | grep -q i18n && i18n=true || i18n=false
# Make a FSF membercard image?
if echo $* | grep -q fsf
then
    i18n=true
    fsf=true
else
    fsf=false
fi

export WORKDIR=$PWD
export DEBIAN_FRONTEND=noninteractive
export CHROOT=$PWD/$DIST-$ARCH
export C="chroot $CHROOT"
export LOG=logs/$DIST-$ARCH.log
export LANG=C
export LANGUAGE=C

[ -d logs ] || mkdir logs
[ -d iso ] || mkdir iso
[ -f $LOG ] && mv $LOG ${LOG}.old

DO_SOURCE(){

cat << EOF > /etc/apt/sources.list
deb $MIRROR $CODENAME main
Raju Vindane's avatar
Raju Vindane committed
132 133
deb $MIRROR $CODENAME contrib
deb $MIRROR $CODENAME non-free
134
deb-src $MIRROR $CODENAME main
Raju Vindane's avatar
Raju Vindane committed
135 136
deb-src $MIRROR $CODENAME contrib
deb-src $MIRROR $CODENAME non-free
137
deb $MIRROR $CODENAME-updates main
Raju Vindane's avatar
Raju Vindane committed
138 139
deb $MIRROR $CODENAME-updates contrib
deb $MIRROR $CODENAME-updates non-free
140
deb-src $MIRROR $CODENAME-updates main
Raju Vindane's avatar
Raju Vindane committed
141 142
deb-src $MIRROR $CODENAME-updates contrib
deb-src $MIRROR $CODENAME-updates non-free
143 144 145 146 147 148 149 150

EOF

apt-get update
rm -rf source
mkdir source
cd source

Raju Vindane's avatar
Raju Vindane committed
151
for i in $(cut -d" " -f1 ../iso/*manifest |sort -u)
152 153 154 155 156 157 158 159 160 161
do
echo $i
    source=$(apt-cache showsrc $i | grep '^Package: ' | awk '{print $2}')
    apt-get source -d $source || echo $i:$source >> ../NOT-FOUND
done

# Some shy packages may need to be asked directly
apt-get source -d linux-libc-dev linux-meta memtest86+ syslinux gnome-python-extras efibootmgr

cd ..
Raju Vindane's avatar
Raju Vindane committed
162
genisoimage -f -J  -joliet-long -r  -V "hamara-$VERSION src" -o iso/hamara_${VERSION}_sources.iso source
163 164 165 166 167 168 169

SEEDS=$(for i in $MIRRORS
do
echo -n ${i}iso/hamara_${VERSION}_sources.iso','
done | sed 's/,$//')

cd iso
170
$MKTORRENT -a $TRACKER -c "Hamara GNU/Linux Server Edition $VERSION $CODENAME Source DVD" -w $SEEDS hamara_${VERSION}_sources.iso
171 172 173 174 175 176 177 178

}

DELETE_CHROOT() {
if [ -d $1 ]
then
    echo "Umounting and removing $1"
    for MOUNT in $1/proc $1/sys $1/dev/pts $1/tmp $1
Raju Vindane's avatar
Raju Vindane committed
179
    do
180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196
        umount $MOUNT || true
    done
rm -rf $1
fi
}

DO_DEBOOTSTRAP() {
## Provided that you run it in a updated hamara server, debootrstraps a live/installable CD

date
echo "DIST=$DIST
ARCH=$ARCH
CHROOT=$CHROOT
-------------------------------------------------------------------------
-------------------------------------------------------------------------
"

Raju Vindane's avatar
Raju Vindane committed
197
DIRECTORY=files/master-template/boot
198 199 200 201 202 203 204 205
if [ ! -d "$DIRECTORY" ]; then
  mkdir $DIRECTORY
fi
rm -rf master
cp -av files/master-template master
echo "Hamara $VERSION \"$CODENAME\" - Release $ARCH ($(date +%Y%m%d))" | sed s/i386/i686/g > master/.disk/info
echo http://hamaralinux.org/wiki/$CODENAME > master/.disk/release_notes_url

Raju Vindane's avatar
Raju Vindane committed
206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248
####################Create pool directory####################

#SOURCE_64='http://cdimage.debian.org/cdimage/weekly-live-builds/amd64/iso-hybrid/debian-live-testing-amd64-w.iso.contents'
#SOURCE_32='http://cdimage.debian.org/debian-cd/current-live/i386/iso-hybrid/debian-live-8.1.0-i386-gnome-desktop.iso.contents'
#LIST="files/pool_file_list"
#DIRECTORY="files/pool"
##Little housekeeping before executing function
#if [ -d "$DIRECTORY" ];
#	then rm -rf $DIRECTORY
#fi

##Function to download pool directory from upstream
#if [ $ARCH = amd64 ]
	#then wget $SOURCE_64 -O $LIST
	#for i in `cat $LIST |grep '64.udeb\|all.udeb'`;
#do
	#`wget -q -r -nH -N --cut-dirs=1 -P files/ $MIRROR$i`;
	#if [ $? -ne 0 ]
		#then echo "File not found $i"
		#else echo "OK"
	#fi
	##-r for recursive download
	##-nH for not creating host directories for example in.devel.hamaralinux.org
	##-N for checking difference between local and upstream
#done
		#elif [ $ARCH = i386 ]
	#then wget $SOURCE_32 -O $LIST
		#for i in `cat $LIST |grep 'i386.udeb\|all.udeb'`;
#do
#	`wget -q -r -nH -N --cut-dirs=1 -P files/ $MIRROR$i$i`;
#	if [ $? -ne 0 ]
		#then echo "File not found $i"
		#else echo "OK"
	#fi
	##-r for recursive download
	##-nH for not creating host directories for example in.devel.hamaralinux.org
	##-N for checking difference between local and upstream
#done
#fi

cp -a files/pool master
####################Pool directory function ends####################

249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282
DELETE_CHROOT $CHROOT

# debootstrab the base system
mkdir $CHROOT
#[ $i18n = "false" ] && mount -t tmpfs none -o size=2500M $CHROOT
mount -t tmpfs none -o size=5000M $CHROOT
debootstrap --arch=$ARCH $CODENAME $CHROOT $MIRROR files/debootstrap

# Disable the service management scripts
SCRIPTS="sbin/start-stop-daemon usr/sbin/invoke-rc.d usr/sbin/service"
for i in $SCRIPTS
do
    mv "$CHROOT/$i" "$CHROOT/$i.REAL"
    cat <<EOF > "$CHROOT/$i"
#!/bin/sh
echo
echo "Warning: Fake /$i called, doing nothing"
EOF
    chmod 755 "$CHROOT/$i"
done

cat <<EOF > "$CHROOT/usr/sbin/start"
#!/bin/sh
echo
echo "Warning: Fake start called, doing nothing"
EOF

cat <<EOF > "$CHROOT/usr/sbin/stop"
#!/bin/sh
echo
echo "Warning: Fake start called, doing nothing"
EOF
chmod 755 $CHROOT/usr/sbin/start $CHROOT/usr/sbin/stop

Raju Vindane's avatar
Raju Vindane committed
283

284 285 286 287
# apt setup for the debootstrap second stage
cat << EOF > $CHROOT/etc/apt/sources.list
deb $MIRROR $CODENAME main
deb-src $MIRROR $CODENAME main
Raju Vindane's avatar
Raju Vindane committed
288 289 290 291 292
deb $MIRROR $CODENAME contrib
deb-src $MIRROR $CODENAME contrib
deb $MIRROR $CODENAME non-free
deb-src $MIRROR $CODENAME non-free

293 294
deb $MIRROR $CODENAME-updates main
deb-src $MIRROR $CODENAME-updates main
Raju Vindane's avatar
Raju Vindane committed
295 296 297 298 299
deb $MIRROR $CODENAME-updates contrib
deb-src $MIRROR $CODENAME-updates contrib
deb $MIRROR $CODENAME-updates non-free
deb-src $MIRROR $CODENAME-updates non-free

300 301
EOF

Raju Vindane's avatar
Raju Vindane committed
302

303 304 305 306 307 308 309
# prepare the chroot for installing extra packages
mount -t proc none $CHROOT/proc
mount -t devpts none $CHROOT/dev/pts
mount -t sysfs none $CHROOT/sys
mount -t tmpfs none $CHROOT/tmp
echo "127.0.0.1 localhost" > $CHROOT/etc/hosts
cp hamara-archive-keyring.gpg $DIST-$ARCH/etc/apt/trusted.gpg.d/
Raju Vindane's avatar
Raju Vindane committed
310
KERNEL=linux-image-$ARCH
311 312 313 314 315 316 317 318 319 320 321 322 323

# package install
echo "KERNEL=$KERNEL" > $CHROOT/tmp/install
echo "DIST=$DIST" >> $CHROOT/tmp/install
echo 'LANG=C
apt-get update
apt-get install -y --force-yes $KERNEL
apt-get clean
apt-get install -f
if [ $DIST = hamara ]
then
apt-get install -y --force-yes --no-install-recommends ${DIST}-desktop-common
 fi
Raju Vindane's avatar
Raju Vindane committed
324 325 326 327
apt-get install -y --force-yes --no-install-recommends $DIST ${DIST}-recommended hamara-base hamara-base-recommended hamara-minimal fakeroot

#Adding some packages that probably should be part of hamara-meta

328
apt-get install -y live-config debian-installer debian-installer-launcher live-boot extlinux
Raju Vindane's avatar
Raju Vindane committed
329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350


cat << EOF > $CHROOT/etc/apt/sources.list
deb $MIRROR $CODENAME main
deb-src $MIRROR $CODENAME main
deb $MIRROR $CODENAME contrib
deb-src $MIRROR $CODENAME contrib
deb $MIRROR $CODENAME non-free
deb-src $MIRROR $CODENAME non-free

deb $MIRROR $CODENAME-updates main
deb-src $MIRROR $CODENAME-updates main
deb $MIRROR $CODENAME-updates contrib
deb-src $MIRROR $CODENAME-updates contrib
deb $MIRROR $CODENAME-updates non-free
deb-src $MIRROR $CODENAME-updates non-free

EOF

apt-get update

echo task-lxde-desktop > config/package-lists/desktop.list.chroot
351 352 353
apt-get clean
' >> $CHROOT/tmp/install

Raju Vindane's avatar
Raju Vindane committed
354
if [ $i18n = "true" ]
355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376
then
    echo "Making an i18n image"
    LANGSUPPORT="en es pt fr sv de it uk zh-hans ru pl nl ja zh-hant gl ca da hu cs nb fi et el sr sl sk ro bg eu ko nn lt vi pa lv ar he th ga id hi ta eo ast tr oc nds sq km hr"
    for language in $LANGSUPPORT
    do
        for package in language-pack language-pack-gnome libreoffice-help libreoffice-l10n gnome-user-guide abrowser-locale
        do
            echo "apt-get install -y --force-yes --install-recommends ${package}-${language}" >> $CHROOT/tmp/install
            echo "apt-get clean" >> $CHROOT/tmp/install
        done
    done
echo $LANGSUPPORT | sed 's/ /\n/g; s/zh-hans/zh_CN/g; s/zh-hant/zh_TW/g; s/pt/pt_PT/g;' |sort -u > master/isolinux/langlist
else
echo -e "en\nes" > master/isolinux/langlist
fi

echo "apt-get --force-yes -y dist-upgrade" >> $CHROOT/tmp/install
echo "apt-get clean" >> $CHROOT/tmp/install

$C sh /tmp/install

## POST-CONFIGURATION ########################################################
Raju Vindane's avatar
Raju Vindane committed
377
cp -av files/Hamara.mirrors $CHROOT/usr/share/python-apt/templates/Debian.mirrors
378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418
cp -av files/gnome-shell.css /usr/share/gnome-shell/theme/gnome-shell.css
cp -av files/hamara_side.jpg /usr/share/gnome-shell/theme/hamara_side.jpg


[ $i18n = "true" ] && sed -i 's/500 4000 10000/4500 5000 10000/' $CHROOT/lib/partman/recipes/20hamara
##############################################################################


mkdir -p $CHROOT/etc/skel/.local/share

[ -d master/fsf ] && rm -rf master/fsf

##############################################################################

## Adduser ##
sed -i 's/#ADD_EXTRA_GROUPS=1/ADD_EXTRA_GROUPS=1/g' $CHROOT/etc/adduser.conf
sed -i 's/DIR_MODE=0755/DIR_MODE=0751/g' $CHROOT/etc/adduser.conf

##############################################################################

## Hardware ID's ##
$C update-pciids
$C update-usbids
##############################################################################

# We can enable the init scripts now
for i in $SCRIPTS
do
    mv "$CHROOT/$i.REAL" "$CHROOT/$i"
done
rm $CHROOT/usr/sbin/start $CHROOT/usr/sbin/stop

umount $CHROOT/proc
umount $CHROOT/dev/pts
umount $CHROOT/sys
echo "" > $CHROOT/etc/apt/sources.list

## APT ##
cat << EOF > $CHROOT/etc/apt/sources.list
# Hamara repositories for supported software and updates
deb $MIRROR $CODENAME main
Raju Vindane's avatar
Raju Vindane committed
419 420
deb $MIRROR $CODENAME contrib
deb $MIRROR $CODENAME non-free
421
deb-src $MIRROR $CODENAME main
Raju Vindane's avatar
Raju Vindane committed
422 423
deb-src $MIRROR $CODENAME contrib
deb-src $MIRROR $CODENAME non-free
424
deb $MIRROR $CODENAME-updates main
Raju Vindane's avatar
Raju Vindane committed
425 426
deb $MIRROR $CODENAME-updates contrib
deb $MIRROR $CODENAME-updates non-free
427
deb-src $MIRROR $CODENAME-updates main
Raju Vindane's avatar
Raju Vindane committed
428 429
deb-src $MIRROR $CODENAME-updates contrib
deb-src $MIRROR $CODENAME-updates non-free
430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475

EOF
$C apt-get update
$C apt-get clean
$C apt-get autoclean
rm $CHROOT/var/lib/apt/lists/*Translation*

[ -f  $CHROOT/usr/lib/locale/locale-archive ] && rm -v $CHROOT/usr/lib/locale/locale-archive

rm -rf $CHROOT/var/cache/apt-xapian-index/*
##############################################################################


echo "Running custom script for $DIST"
[ -x files/scripts/$DIST ] && files/scripts/$DIST
[ $fsf = "true" ] && files/scripts/fsf
echo "Done running custom scripts"

$C update-gconf-defaults

## INITRD ####################################################################
$C update-initramfs -u
##############################################################################

# a bit of cleaning

umount $CHROOT/tmp/
find $CHROOT |grep [.-]old$ | xargs -r rm -v
find $CHROOT |grep [.-]bak$ | xargs -r rm -v

for dir in $CHROOT/var/lib/update-notifier/user.d/ $CHROOT/var/lib/apt-xapian-index/
do
    [ -d $dir ] || continue
    find $dir -type f |xargs -r rm
done

## Hosts ##
echo "" > $CHROOT/etc/hosts
echo "" > $CHROOT/etc/resolv.conf
rm $CHROOT//etc/resolvconf/resolv.conf.d/original
rm $CHROOT//etc/resolvconf/resolv.conf.d/tail
##############################################################################

#update the kernel image in the master dir
INITRD=$( basename $DIST-$ARCH/boot/initrd.img* )

Raju Vindane's avatar
Raju Vindane committed
476 477 478 479 480 481 482 483 484 485 486
#copy initrd and vmlinuz for live boot
cp -av $DIST-$ARCH/boot/${INITRD} files/master-template/live/initrd
cp -av $DIST-$ARCH/boot/vmlinuz*  files/master-template/live/vmlinuz

###Copy initrd and vmlinuz to iso for live booting####

echo "Copy initrd and vmlinuz to iso for live booting"
cp files/master-template/live/initrd master/live/initrd.img
cp files/master-template/live/vmlinuz master/live/vmlinuz


487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505
echo Debootstrap completed succesfully
}

DO_TORRENT(){

[ $ARCH = "i386" ] &&  ARCH=i686

FILE=${DIST}_${VERSION}_${ARCH}.iso
[ $i18n = "true" ] && FILE=${DIST}_${VERSION}-i18n_${ARCH}.iso
[ $fsf = "true" ] && FILE=${DIST}_${VERSION}-fsf_${ARCH}.iso

[ $DIST != "trisquel" ] && EXTRACOMMENT=", $DIST edition"

SEEDS=$(for i in $MIRRORS
do
echo -n $i$FILE','
done | sed 's/,$//')

cd iso
506
$MKTORRENT -a $TRACKER -c "Hamara GNU/Linux Server Edition $VERSION $CODENAME$EXTRACOMMENT. $ARCH Installable Live CD" -w $SEEDS $FILE
507 508 509 510 511 512
}

DO_ISO(){
# builds the CD iso image using the squashfs compressed filesystem

cd master
Raju Vindane's avatar
Raju Vindane committed
513
find live -type f | xargs sha1sum > sha1sum.txt
514 515 516 517 518 519 520 521 522
cd $WORKDIR

[ $ARCH = "i386" ] && SUBARCH=i686 || SUBARCH=amd64

[ $ARCH = "amd64" ] && cp files/EFI master -a

NAME=${DIST}_${VERSION}_$SUBARCH
[ $i18n = "true" ] && NAME=${DIST}_${VERSION}-i18n_$SUBARCH
[ $fsf = "true" ] &&  NAME=${DIST}_${VERSION}-fsf_$SUBARCH
Raju Vindane's avatar
Raju Vindane committed
523
genisoimage -D -r -V "${DIST} ${VERSION} ${SUBARCH}" -cache-inodes -J -l -b isolinux/isolinux.bin \
524 525 526
   -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table \
   -hide-joliet /pool -hide-joliet /dists -o iso/${NAME}.iso master
isohybrid iso/${NAME}.iso
Raju Vindane's avatar
Raju Vindane committed
527
cp master/live/filesystem.manifest iso/${NAME}.manifest
528 529 530 531 532 533 534 535 536 537 538 539
cd iso
sha1sum ${NAME}.iso > ${NAME}.iso.sha1

cd ..

# take one down, and pass it around
[ -f logs/counter ] || echo 0 > logs/counter
expr $(cat logs/counter) + 1 > logs/counter
}

DO_SQUASH (){
# creates the squashfs.filesystem compressed image
Raju Vindane's avatar
Raju Vindane committed
540 541
[ -f master/live/filesystem.squashfs ] && rm master/live/filesystem.squashfs
mksquashfs $DIST-$ARCH master/live/filesystem.squashfs
542

Raju Vindane's avatar
Raju Vindane committed
543 544 545 546
chmod 644  master/live/filesystem.squashfs
$C dpkg -l|grep ^ii |awk '{print $2" "$3}' > master/live/filesystem.manifest
df -B 1 $CHROOT |tail -n1|awk '{print $3}' > master/live/filesystem.size
[ $i18n = "true" ] && du -bc $CHROOT |tail -n 1|cut  -f1 > master/live/filesystem.size
547

Raju Vindane's avatar
Raju Vindane committed
548
for i in language-pack language-support hunspell myspell libreoffice-hyphenation libreoffice-thesaurus rdate localechooser-data live-boot user-setup gparted libdebconfclient0 libdebian-installer
549
do
Raju Vindane's avatar
Raju Vindane committed
550
grep $i master/live/filesystem.manifest >> master/live/filesystem.manifest-remove
551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573
done

}


case $ACTION in
debootstrap)	COLUMNS=500 DO_DEBOOTSTRAP 2>&1 3>&1 0>&1 | COLUMNS=500 tee $LOG
		;;
iso)		COLUMNS=500 DO_ISO 2>&1 3>&1 0>&1 | COLUMNS=500 tee $LOG
		;;
torrent)	COLUMNS=500 DO_TORRENT 2>&1 3>&1 0>&1 | COLUMNS=500 tee $LOG
		;;
squash)		COLUMNS=500 DO_SQUASH 2>&1 3>&1 0>&1 | COLUMNS=500 tee $LOG
		COLUMNS=500 DO_ISO 2>&1 3>&1 0>&1 | COLUMNS=500 tee -a $LOG
		;;
source)		COLUMNS=500 DO_SOURCE 2>&1 3>&1 0>&1 | COLUMNS=500 tee $LOG
		;;
all)		COLUMNS=500 DO_DEBOOTSTRAP 2>&1 3>&1 0>&1 | COLUMNS=500 tee $LOG || exit 1
		COLUMNS=500 DO_SQUASH 2>&1 3>&1 0>&1 | COLUMNS=500 tee -a $LOG
		COLUMNS=500 DO_ISO 2>&1 3>&1 0>&1 | COLUMNS=500 tee -a $LOG
		DELETE_CHROOT $CHROOT
		;;
esac