Livecd-make
birthday card quotes redwoods purine purine base r.a.d.editor vernal equinox accounting clerks 100 famu march tiffany holliday the islands of japan install antivirus software need for speed most watned home design alabama apartment london rental media pdp pioneer r03 reciever bakery supplies libatk 1.0 0.dll download police light and siren agent free warbird 11 basket episode fruit ideal wire markers agency animal talent ladies in bondage forex trading systems plant labels offre pret aids hiv sex trafficking kimpossible nude moises saba stern information kid nutrition discount dog supply job psychologist saskatchewan free e greeting card tiny lolita angels nes power a lesson before dying lesson plans the brothers grim sports authority inside pool forum 3d ultrasound pregnancy 36 electric cooktop downdraft charles email listing (at)aol.com info credit meilleur travaux 2005 calendar custom fender guitar shop slam blue jays 1983 oldsmobile cutlass supreme rs mizar weeping cherry tree care side street restaurant brinkmann grill predictor of height lake district cheap holiday cookbooks philadelphia subsidized day care memo pad personal stationery anime muck com sakura resume cover letter example stopping smoking side effects strategic planning and forecasting home inspection report software price chopper card picture of brian krause wrestlemania 21 morning glow download southern culture on the skids statin nioxin shampoo horse fucking bushwacker mens tuxedo pants free money cheat for neopets grief support group texas state track and field records spermicides raulph lauren clothing rolly molly bmwusa first class online casinos american comic nba star weekend loft developments toronto girls getting gunged marcus allen gay medical massage group cat supplies self authenticating washer car loan ireland who settled massachusetts laptop cases womens health nina hartley naked 100.7 starr research technology management magazine portrettist international driving permit uk coaster knex roller video movie patrick swayze convergence jane ricci hot leg picture sexy wife dancewear solution vernors ginger ale cost of sunroom addition bollywood hot scene sex parkgate community centre north vancouver hand lyric take time wounded free online porn video oxford castle inn zoolander dvd sania mirza navel pics boys load lamb moussaka recipe ttk services high vis email search hotmail coffee gift gourmet on line car auction uk self storage business for sale pima county assessor 6600 geforce marge simpsons nude galleries birthday card idea making mr doubles palisades limousine service san francisco roxbury police dept mp3-search-engine empress high hotel tea flirt teen tease lyric prodigy spitfire free online multiplayer download rpg management resume retail sales sample guide to fingering a girl movie set prop online university degree program ninpuchan energizer bunny mulan .com victoria advocate victoria texas asthma care child self naked gay black man pretty girls make graves serous cystadenocarcinoma pa lottery result sound and spirit bail bond agents power dvd 5 download birthday massacre korn falling away from me teen sex pic worldwatch institute discount power tool north star aviation st louis metro transportation no woman no cry glass candle lamp shades troy lighting inc. industrial tools sims skin patrick fabian 24 5 bit season torrent quality manual acting exercise game game improvisation improvisation textbook theater islamic time line tropical ceiling fan faith hill lyrics rx8 reviews mazda sanrio wallpaper acuson aspen now that what i call music 13 melt snow wirsbo croscill bedding again discovering poverty parallel port address 378 with gorgeous tits and ass victorian era music tuesday weld stanley tools andres raya video russian family nudist iranian government games flash troy bilt pressure washer amazing grace lyrics album boxer cover pepper sgt reaccumulation of fluid dr. bizarro rikki tikki solid helium temperature shell reamers c700 promo movie miss nude mexico metformin diabetes wire transfer us dagmar i wanna come over to hell with the consequence action rpg online settlement viatical furniture parts sinking ship seo michigan ohio
#!/bin/sh # Make a clone from existed knoppix live-cd or dvd NOFORK=false; [ -z $REFRESH ] && export REFRESH=true; [ -z $PHASE ] && export PHASE=10 [ -z "$BEST" ] && export BEST=-b [ -z $NOSKIPDEBS ] && export NOSKIPDEBS=true; [ -z $PAUSE ] && export PAUSE=false; [ -z $DVD ] && export DVD=false; while true ; do case $1 in -d) NOFORK=true ;; '') if $NOFORK ; then break ; fi on_exit() { rm -f CDMAKE$$.tmp } trap on_exit 0 1 2 3 15 mkfifo CDMAKE$$.tmp tee livecd-make.log <CDMAKE$$.tmp & if ! $0 -d 2>CDMAKE$$.tmp ; then echo "WAS ERRORS! See report in livecd-make.log" fi exit 0 ;; unpack) PHASE=1 ;; remove) PHASE=2 ;; update) PHASE=3 ;; patch) PHASE=4 ;; quick) BEST=' ' ;; dvd) DVD=true ;; pause) PAUSE=true ;; no-update) NOSKIPDEBS=false ;; no-refresh) REFRESH=false; ;; *) echo "Usage: $0 [-d] [no-refresh] [no-upate] [quick] [unpack|remove|update|patch] unpack - stop after unpack source distro into ''./new/'' remove - stop after remove packages update - stop after install new packages patch - stop after patches and scripts pause - wait CR after each phase quick - not use ''best'' compression dvd - make dvd image - not delete most packages and split root, quick is recommended no-update - do not remove & install packages no-refresh - do not remove old ''./new/'' & unpack -d - do not redirect stderr to logfile" exit 1 ;; esac shift done read CDVER DATE < version date >&2 query() { set +x echo -n "$1 [$2] " >&2 read answer if [ -z $answer ] ; then answer=$2 ; fi set -x } set -e -x # Exit if any command fails, print command before execute if type dialog ; then gauge() { set +x lim=$1 x=1 while read j ; do echo $(( x++ * 100 / lim )) ; done | dialog --gauge "$2" 8 50 } elif [ -n "$DISPLAY" ] && type Xdialog ; then gauge() { set +x lim=$1 x=1 while read j ; do echo $(( x++ * 100 / lim )) ; done | Xdialog --gauge "$2" 8 50 } else gauge() { set +x #echo $2 lim=$1 x=1 [ -z $COLUMNS ] && COLUMNS=80 while read j ; do echo -ne "\33[2K $(( x++ * 100 / lim ))% ${j:0:$((COLUMNS-5))}\r"; done echo -ne "\33[2K" } fi CSRC=SRC/KNOPPIX/KNOPPIX UCSRC=KNOPPIX.iso if [ -b /dev/cdrom ] ; then CDROM=/dev/cdrom CDRW="0,0,0" elif [ -b /dev/cdroms/cdrom0 ] ; then CDROM=/dev/cdroms/cdrom0 CDRW=`readlink -f $CDROM` CDRW=${CDRW%cd}generic fi not_empty() { test -n "$1" && test -L "$1" -o -e "$1" } # Mount knoppix CD or image if ! [ -s $CSRC ]; then query "Knoppix CD or image location" "$CDROM" SRC="$answer" if ! [ -b $SRC ] ; then LOOP=",loop" ; fi [ -d SRC ] || mkdir SRC mount -o ro$LOOP $SRC SRC else echo "Comressed image found" fi RTSRCZ=( SRC/boot/isolinux/minirt*.gz ) query "Enter default language" us lang=$answer if ! [ -s newcd/KNOPPIX/KNOPPIX ] || ! not_empty newcd/boot/isolinux/minirt* ; then if ! not_empty new/initrd*/* && not_empty bkinitrd/*/* ; then rm -rf new/initrd*/ mv -f bkinitrd/* new fi if ! grep -q "$CDVER" new/etc/knoppix-version 2> /dev/null || ! not_empty new/initrd*/* ; then if [ $PHASE -gt 3 ] ; then # test for virtual memory size vmemsz=$( expr $( cat /proc/meminfo | grep '[mp]Free' | sed -e 's/.*: *//' -e 's/ k.*/ +/' ) 0 ) if [ $vmemsz -lt 1200000 ] ; then echo "$vmemsz kB free virtual memory detected This script needs 1.2GB of memory or swap space to build the CD image. If you have enough free space on your hard drive you may safely answer \"yes\" to the following question." query "Do you want to use 1.2GB of your disk space for the temporary swap file" yes case $answer in [Yy]*) dd if=/dev/zero of=swapfile bs=1M count=1200 mkswap swapfile swapon swapfile esac else echo "$vmemsz kB free virtual memory - OK" fi fi # first try to use cloop module # Mount inner iso image for i in "" 2 3 4 5 ; do if ! not_empty UCSRC$i/new/* ; then insmod cloop >& /dev/null || true test -e $CSRC$i || continue [ -d UCSRC$i/new ] || mkdir -p UCSRC$i/new if ! ( [ -b /dev/cloop/0 ] && losetup /dev/cloop/$((i+0)) $CSRC$i && mount /dev/cloop/$((i+0)) UCSRC$i/new ) ; then # Uncompress inner iso image if ! [ -s $UCSRC$i ] ; then echo Uncompress image $i... extract_compressed_fs $CSRC$i 2>&1 > $UCSRC$i | gauge $(( `ls -s $CSRC$i | sed 's/[^0-9 ].*//'` / 23 )) "Uncompress inner image $i..." else echo "Uncompressed image found" fi mount -o ro,loop $UCSRC$i UCSRC$i/new fi else echo "Uncompressed image seems to be already mounted" fi done read verison j < UCSRC/new/etc/knoppix-version KVERS=( `echo UCSRC/new/lib/modules/*.*.* | sed -e 's![^ ]*/!-!g'` ) if [ -d new ] ; then umount new/usr/src/debs new/proc || true umount new || true $REFRESH && rm -rfv new | gauge 135369 "Remove old directory for extracting files" fi if ! [ -d new ]; then for i in "" 2 3 4 5 ; do [ -e UCSRC$i/new ] || continue echo Extract files from the inner image $i cp -v -a -u UCSRC$i/new . 2>&1 | gauge 126000 "Extract files from the inner image $i" done fi #Uncompress initrd echo "Extract initrd image(s)" [ -d RT ] || mkdir RT umount RT || true for i in "${RTSRCZ[@]}" ; do rdimg=${i/*\//} rdimg=${rdimg/.gz/} gzip -d < $i > $rdimg.orig mount -o loop $rdimg.orig RT rddir=new/${rdimg/minirt/initrd} [ -e $rddir/linuxrc ] && continue [ -d $rddir ] && rmdir $rddir cp -a RT $rddir umount RT done [ $PHASE -lt 2 ] && exit $PAUSE && echo "KNOPPIX root file system unpacked to directory 'new'. Next phase deletes some packages and files. Press Enter to continue" && read j #------------- Modify Live CD -------------- read j j HOSTKVERS j < /proc/version TMPMOD=false remove() { if [ -s $2 ] ; then echo "$1 $2" eval "local -a lst=( $(cat $2) )" [ -z $lst ] && return 0 chroot new sh -c "$3 ${lst[*]}" || true fi } update() { [ -s "$debs/${1##[^0-9]*}apt-get-list" ] && if chroot . apt-get install `cat $debs/${1##[^0-9]*}apt-get-list` ; then true else case $? in 100) chroot . apt-get -f install chroot . apt-get install `cat $debs/${1##[^0-9]*}apt-get-list` ;; *) echo $? ; false esac fi aliens=( $debs/$1*.{rpm,tar.gz,tgz} ) [ -z $aliens ] || chroot . alien "${aliens[@]}" local -a lst=( $debs/$1*.deb *.deb ) [ -s "$lst" ] || return 0 chroot . dpkg -i --force-overwrite ${lst[@]} rm *.deb || true } if $NOSKIPDEBS ; then if ! [ -d new/lib/modules/$HOSTKVERS ] ; then # for buggy packets cp -a /lib/modules/$HOSTKVERS new/lib/modules/ TMPMOD=true fi if $DVD; then remove "Remove packages listed in" debs/00remove-debs-DVD "dpkg -P" remove "Remove files listed in" debs/00remove-files-DVD "rm -rf" else remove "Remove packages listed in" debs/00remove-debs "dpkg -P" remove "Remove files listed in" debs/00remove-files "rm -rf" fi $TMPMOD && rm -rf new/lib/modules/$HOSTKVERS [ $PHASE -lt 3 ] && exit $PAUSE && echo "Some packages and files listed in debs/00remove* are deleted. Next phase installs new packages and deletes listed in debs/zzremove*. Press Enter to continue" && read j echo Install new packages cd new mkdir -p usr/src/debs touch etc/fstab shopt -s nullglob debs=usr/src/debs mount --bind ../debs $debs mv etc/resolv.conf etc/resolv.conf.orig cp /etc/resolv.conf etc/resolv.conf if ! chroot . apt-get update -u ; then query "Continue" yes case $answer in [Yy]*) ;; *) exit 1 esac fi update 00 update 01 update 02 update '0[^0-2]' update '[^0]' chroot . apt-get -f install -u chroot . apt-get clean mv etc/resolv.conf.orig etc/resolv.conf umount usr/src/debs rmdir usr/src/debs cd .. NEWKVERS=( `echo new/lib/modules/*.*.* | sed -e 's![^ ]*/!-!g'` ) if $DVD; then remove "Remove packages listed in" debs/zzremove-debs-DVD "dpkg -P" remove "Remove files listed in" debs/zzremove-files-DVD "rm -rf" else remove "Remove packages listed in" debs/zzremove-debs "dpkg -P" remove "Remove files listed in" debs/zzremove-files "rm -rf" fi COLUMNS=140 chroot new dpkg -l > packages.txt rm new/etc/fstab || true fi # $NOSKIPDEBS [ $PHASE -lt 4 ] && exit $PAUSE && echo "All package add/remove operations is complete Next phase try and apply patches placed in 'patches' directory. Press Enter to continue" && read j echo Test patches mkdir -p patches-results cd new set +x st=() errors=false n=0 for i in ../patches/* ; do if [ -d $i ] ; then st[$n]=true elif [ -x $i ] ; then if ! $i --dry-run >& ../patches-results/${i/*\//}-exec; then st[$n]=true errors=true else mv ../patches-results/${i/*\//}-exec ../patches-results/${i/*\//}-exec-OK fi else case "$i" in *.tar.bz2) st[$n]="tar -xjf" ;; *) if patch -f -p0 --dry-run -i $i >& ../patches-results/${i/*\//}-p0 ; then st[$n]="patch -f -p0 -i" mv ../patches-results/${i/*\//}-p0 ../patches-results/${i/*\//}-p0-OK elif patch -f -p1 --dry-run -i $i >& ../patches-results/${i/*\//}-p1 ; then st[$n]="patch -f -p1 -i" rm ../patches-results/${i/*\//}-p0 mv ../patches-results/${i/*\//}-p1 ../patches-results/${i/*\//}-p1-OK else st[$n]=true errors=true fi esac fi let ++n done n=0 echo "Tests results" >&2 for i in ../patches/* ; do echo -ne " ${i/*\//} \t " >&2 case "${st[$n]}" in true) echo ERROR >&2 ;; tar*) echo "OK (tar)" >&2 ;; *-p0" "*) echo "OK (patch -p0)" >&2 ;; *-p1" "*) echo "OK (patch -p1)" >&2 ;; '') echo "OK (executable)" >&2 ;; esac let ++n done if $errors ; then query "Some patches are not applyable, see messages in directory 'patches-results' Do You want to continue without failed pathes" no case "$answer" in [yY]*) ;; *) echo "You may rerun script after corrections with next parameters: no-update no-refresh" exit 1 ; esac else echo "All patches OK">&2 fi echo Applay patches to root file system set -x n=0 for i in ../patches/* ; do ${st[$n]} $i let ++n done echo Update menus #order files in directory mkdir etc/menu-methods.new mv etc/menu-methods/* etc/menu-methods.new/ rmdir etc/menu-methods mv etc/menu-methods.new etc/menu-methods chroot . update-menus -v echo Update modules in initrd if [ -x initrd/modules/cloop.ko ] ; then SUF=ko else SUF=o fi (find initrd/modules -name '*.'$SUF ; cat <<-EOF ;) | while read i ; do initrd/modules/floppy.$SUF initrd/modules/scsi/usb-ehci.$SUF initrd/modules/scsi/usb-uhci.$SUF initrd/modules/scsi/usb-ohci.$SUF initrd/modules/scsi/usbcore.$SUF initrd/modules/scsi/usb_hcd.$SUF EOF b=${i/*\//} j=( `find lib/modules/ -name "$b" -or -name "${b/.o/.ko}"` ) if [ -s "$j" ]; then # [ "$j" -nt "$i" ] && cp -avf "$j" "$i" else b="${b/usb-/}" b="${b/.o/-hcd.o}" j=( `find lib/modules/ -name "$b" -or -name "${b/.o/.ko}"` ) if [ -s "$j" ]; then cp -avf "$j" "$i" else rm -fv $i fi fi done DEFKERNEL=`readlink vmlinuz` ln -sf ../vmlinuz boot/vmlinuz ln -sf System.map-${DEFKERNEL##*-} boot/System.map KH=( usr/src/kernel-headers-* ) ln -sf ${KH##*/} usr/src/kernel-headers echo Update dynamic library cache chroot . ldconfig echo Update molule dependencies for i in boot/System.map-* ; do [ -d lib/modules/${i##*-} ] && chroot . depmod -ae -F /$i ${i##*-} done echo Remove backups find . -name '*.orig' -o -name '*~' | xargs rm -fv echo "$verison-$CDVER $DATE" > etc/knoppix-version cd .. rm -rf split?/ else echo Patched Knoppix found fi # grep -q "$CDVER" ... umount UCSRC*/new RT || true for i in 0 1 2 3 4 5 ; do losetup -d /dev/cloop/$i || true done rmmod cloop || true [ $PHASE -lt 5 ] && exit $PAUSE && echo "All changes are complete Next phase make new comressed file system image. Press Enter to continue" && read j echo Make new compressed file system image... rm -rf new/.rr_moved $UCSRC* if ! not_empty new/inird*/* ; then rm -rf bkinitrd mkdir -p bkinitrd for i in new/initrd* ; do mv $i bkinitrd mkdir $i done fi umount new/proc || true rm -rf new/tmp/* if $DVD && ! not_empty split?/* ; then echo Split the file system ... cd new du -s opt/* usr/lib/* usr/share/* usr/* * | ../smartsplit.pl 4128768 > ../split-plan ##! Names in * must not contain space! for i in 0 1 2 3 4 5 6 7 ; do files=$( grep ^$i < ../split-plan | cut -d ' ' -f 4- ) test -z "$files" && break; rm -rf ../split$i mkdir ../split$i cp -al --parents $files ../split$i done cd .. fi mkdir -p newcd/KNOPPIX if $DVD; then for i in split? ; do KN=${i/split/KNOPPIX} KN=${KN/0/} mkisofs -quiet -hide-rr-moved -R $i | create_compressed_fs - $BEST 65536 2>&1 > newcd/KNOPPIX/$KN | gauge 60600 "Make new compressed file system image..." done else mkisofs -quiet -hide-rr-moved -R -U -sort iso-order -pad -x '/inird*/*' new | create_compressed_fs - $BEST 65536 2>&1 > newcd/KNOPPIX/KNOPPIX | gauge 30300 "Make new compressed file system image..." fi rm -rf new/initrd* mv bkinitrd/* new else echo New compressed file system image found fi # [ -s newcd/KNOPPIX/KNOPPIX ] ... echo "Make new initrd" mkdir -p newcd/boot/isolinux for i in new/initrd*/ ; do DSIZE=`du -s $i` OUT=newcd/boot/isolinux/minirt${i##*initrd} OUT=${OUT%/} dd if=/dev/zero of=$OUT count=$(( ${DSIZE%%[^0-9]*} + 4000 )) bs=1k INODES=`ls -R $i | wc -l` mke2fs -Fv -N $(( INODES + 6000 )) -m 0 $OUT mount -o loop $OUT RT rm -rf RT/lost+found cp -va $i/* RT/ umount RT gzip -9 $OUT done cp -f new/boot/vmlinuz newcd/boot/isolinux/linux if which rdev; then RDEV=rdev; else RDEV=new/usr/sbin/rdev; fi $RDEV newcd/boot/isolinux/linux /dev/ram3 umount RT UCSRC*/new new || true #rm -rf new echo Make CD image ... mkdir -p newcd/KNOPPIX/ newcd/m23 touch newcd/KNOPPIX/KNOPPIX2 newcd/m23image.bz2 newcd/mdk.tb2 newcd/m23.tb2\ newcd/m23/m23_0.4.99_halfBaked-pre3_knoppix.iso cp -auv SRC/* newcd/ $DVD || rm -rf newcd/*m23* newcd/mdk* newcd/books \ newcd/boot/isolinux/*m23* find newcd/KNOPPIX -size 0 | xargs rm -f i=" s/^KBDMAP german.kbd/#&/" case "$lang" in de) i="" ;; esac sed -e "s/lang=[a-z]\+/lang=$lang/$i" SRC/boot/isolinux/isolinux.cfg > newcd/boot/isolinux/isolinux.cfg umount SRC || true mkisofs -pad -l -r -J -m Demos -m LinuxTag -m Talks -V "$CDVER" -no-emul-boot \ -boot-load-size 4 -boot-info-table -b boot/isolinux/isolinux.bin \ -c boot/isolinux/boot.cat -hide-rr-moved -o knoppix-$CDVER.iso newcd $FNAME #rm -rf KNOPPIX isolinux.cfg isolinux.bin SRC UCSRC* minirt24.gz echo New CD image in knoppix-$CDVER.iso query "Do You want to record new CD" no case "$answer" in [yY]*) echo "cdrecord -v speed=50 dev=$CDRW driveropts=burnfree -eject knoppix-$CDVER.iso" cdrecord -v speed=50 dev=$CDRW driveropts=burnfree -eject knoppix-$CDVER.iso esac