tazlito annotate tazlito @ rev 37
Add final hook
author | Pascal Bellard <pascal.bellard@slitaz.org> |
---|---|
date | Sat Feb 16 20:01:25 2008 +0100 (2008-02-16) |
parents | f0550dba4738 |
children | ebbb1bc2631d |
rev | line source |
---|---|
pankso@1 | 1 #!/bin/sh |
pankso@1 | 2 # TazLito - SliTaz Live Tool. |
pankso@1 | 3 # |
pankso@1 | 4 # Tazlito is a tool to help generating and configuring SliTaz LiveCD |
pankso@1 | 5 # ISO images. You can creat a custom distro in one command from a list of |
pankso@1 | 6 # packages, extract a existing ISO image to hack it, creat new initramfs |
pankso@1 | 7 # and/or new ISO. Most commands must be run by root, expect the stats |
pankso@1 | 8 # and the configuration file manipulation. |
pankso@1 | 9 # |
pankso@28 | 10 # (C) 2007-2008 SliTaz - GNU General Public License. |
pankso@1 | 11 # |
pankso@28 | 12 # Authors : Christophe Lincoln <pankso@slitaz.org> |
pankso@28 | 13 # Pascal Bellard <pascal.bellard@slitaz.org> |
pankso@28 | 14 # |
pankso@28 | 15 VERSION=1.4 |
pankso@1 | 16 |
pankso@1 | 17 # Tazlito configuration variables to be shorter |
pankso@1 | 18 # and to use words rater than numbers. |
pankso@1 | 19 COMMAND=$1 |
pankso@1 | 20 LIST_NAME=$2 |
pankso@1 | 21 TMP_DIR=/tmp/tazlito-$$-$RANDOM |
pascal@19 | 22 TMP_MNT=/media/tazlito-$$-$RANDOM |
pankso@1 | 23 TOP_DIR=`pwd` |
pankso@1 | 24 INITRAMFS=rootfs.gz |
pascal@11 | 25 LOCALSTATE=/var/lib/tazpkg |
pascal@11 | 26 INSTALLED=$LOCALSTATE/installed |
pascal@12 | 27 CACHE_DIR=/var/cache/tazpkg |
pascal@12 | 28 MIRROR=$LOCALSTATE/mirror |
pankso@1 | 29 |
pankso@1 | 30 # Try to include config file, continue if command is gen-config or exit. |
pankso@4 | 31 # The main config used by default is in /etc/tazlito. |
pankso@4 | 32 if [ -f "/etc/tazlito/tazlito.conf" ] ; then |
pankso@4 | 33 CONFIG_FILE="/etc/tazlito/tazlito.conf" |
pankso@1 | 34 fi |
pankso@1 | 35 # Specific distro config file can be put in a distro tree. |
pankso@1 | 36 if [ -f "$TOP_DIR/tazlito.conf" ] ; then |
pankso@1 | 37 CONFIG_FILE="$TOP_DIR/tazlito.conf" |
pankso@1 | 38 fi |
pankso@1 | 39 if [ ! "$CONFIG_FILE" = "" ] ; then |
pankso@1 | 40 . $CONFIG_FILE |
pankso@1 | 41 else |
pankso@1 | 42 if [ "$COMMAND" = "gen-config" ] ; then |
pankso@1 | 43 continue |
pankso@1 | 44 else |
pankso@1 | 45 echo "Unable to find any configuration file. Please read the doc" |
pankso@1 | 46 echo "or run '`basename $0` gen-config' to get an empty config file." |
pankso@1 | 47 exit 0 |
pankso@1 | 48 fi |
pankso@1 | 49 fi |
pankso@1 | 50 |
pankso@1 | 51 # Set the rootfs and rootcd path with $DISTRO |
pankso@1 | 52 # configuration variable. |
pankso@1 | 53 ROOTFS=$DISTRO/rootfs |
pankso@1 | 54 ROOTCD=$DISTRO/rootcd |
pankso@1 | 55 |
pankso@1 | 56 ##################### |
pankso@1 | 57 # Tazlito functions # |
pankso@1 | 58 ##################### |
pankso@1 | 59 |
pankso@1 | 60 # Print the usage. |
pankso@1 | 61 usage () |
pankso@1 | 62 { |
pankso@1 | 63 echo -e "\nSliTaz Live Tool - Version: $VERSION\n |
pascal@22 | 64 \033[1mUsage: \033[0m `basename $0` [command] [list|iso|flavor] [dir] |
pankso@1 | 65 \033[1mCommands: \033[0m\n |
pankso@1 | 66 usage Print this short usage. |
pankso@1 | 67 stats View Tazlito and distro configuration statistics. |
pankso@1 | 68 gen-config Generate a new configuration file for a distro. |
pankso@1 | 69 configure Configure the main config file or a specific tazlito.conf. |
pankso@1 | 70 gen-iso Generate a new ISO from a distro tree. |
pankso@1 | 71 gen-initiso Generate a new initramfs and ISO from the distro tree. |
pascal@22 | 72 list-flavors List all available package lists on the mirror. |
pascal@22 | 73 gen-flavor Generate a new live-CD description. |
pascal@22 | 74 show-flavor Show live-CD description. |
pascal@22 | 75 get-flavor Get a flavor's list of packages. |
pankso@1 | 76 extract-distro Extract and ISO to a directory and rebuild LiveCD tree. |
pankso@1 | 77 gen-distro Generated a Live distro and ISO from a list of packages. |
pankso@1 | 78 clean-distro Remove all files generated by gen-distro. |
pankso@1 | 79 addhacker Add Linux User Hacker to the current distro. |
pankso@1 | 80 check-distro Help to check if distro is ready to release. |
pankso@1 | 81 burn-iso Burn ISO image to a cdrom using Wodim.\n" |
pankso@1 | 82 } |
pankso@1 | 83 |
pankso@1 | 84 # Status function. |
pankso@1 | 85 status() |
pankso@1 | 86 { |
pankso@1 | 87 local CHECK=$? |
pankso@1 | 88 echo -en "\\033[70G[ " |
pankso@1 | 89 if [ $CHECK = 0 ]; then |
pankso@1 | 90 echo -en "\\033[1;33mOK" |
pankso@1 | 91 else |
pankso@1 | 92 echo -en "\\033[1;31mFailed" |
pankso@1 | 93 fi |
pankso@1 | 94 echo -e "\\033[0;39m ]" |
pankso@1 | 95 } |
pascal@12 | 96 |
pascal@12 | 97 yesorno() |
pascal@12 | 98 { |
pascal@12 | 99 echo -n "$1" |
pascal@12 | 100 case "$DEFAULT_ANSWER" in |
pascal@12 | 101 Y|y) answer="y";; |
pascal@12 | 102 N|n) answer="n";; |
pascal@12 | 103 *) read answer;; |
pascal@12 | 104 esac |
pascal@12 | 105 } |
pascal@12 | 106 |
pascal@22 | 107 field() |
pascal@22 | 108 { |
pascal@22 | 109 grep "^$1" "$2" | sed 's/.*: \([0-9KMG\.]*\).*/\1/' |
pascal@22 | 110 } |
pascal@22 | 111 |
pankso@1 | 112 todomsg() |
pankso@1 | 113 { |
pankso@1 | 114 echo -e "\\033[70G[ \\033[1;31mTODO\\033[0;39m ]" |
pankso@1 | 115 } |
pankso@1 | 116 |
pascal@12 | 117 # Download a file trying each mirror |
pascal@12 | 118 download() |
pascal@12 | 119 { |
pascal@12 | 120 for i in $(cat $MIRROR); do |
pascal@12 | 121 wget $i$@ |
pascal@12 | 122 done |
pascal@12 | 123 } |
pascal@12 | 124 |
pascal@13 | 125 # exec hooks provided by some packages |
pascal@13 | 126 genisohooks() |
pascal@13 | 127 { |
pascal@13 | 128 local here=`pwd` |
pascal@13 | 129 cd $ROOTFS |
pascal@13 | 130 for i in $(ls etc/tazlito/*.$1 2> /dev/null); do |
pascal@13 | 131 . $i $ROOTCD |
pascal@13 | 132 done |
pascal@13 | 133 cd $here |
pascal@13 | 134 } |
pascal@13 | 135 |
pascal@19 | 136 cleanup() |
pascal@19 | 137 { |
pascal@19 | 138 if [ -d $TMP_MNT ]; then |
pascal@19 | 139 umount $TMP_MNT |
pascal@19 | 140 rmdir $TMP_MNT |
pascal@19 | 141 rm -f /boot |
pascal@19 | 142 fi |
pascal@19 | 143 } |
pascal@19 | 144 |
pascal@18 | 145 # echo the package name if the tazpkg is already installed |
pascal@18 | 146 installed_package_name() |
pascal@18 | 147 { |
pascal@18 | 148 local tazpkg |
pascal@18 | 149 local package |
pascal@18 | 150 local VERSION |
pascal@18 | 151 tazpkg=$1 |
pascal@18 | 152 # try du find package name and version to be able |
pascal@18 | 153 # to repack it from installation |
pascal@18 | 154 # a dash (-) can exist in name *and* in version |
pascal@18 | 155 package=${tazpkg%-*} |
pascal@18 | 156 i=$package |
pascal@18 | 157 while true; do |
pascal@18 | 158 VERSION="" |
pascal@18 | 159 eval $(grep -s ^VERSION= $INSTALLED/$i/receipt) |
pascal@18 | 160 if [ "$i-$VERSION" = "$tazpkg" ]; then |
pascal@18 | 161 echo $i |
pascal@18 | 162 break |
pascal@18 | 163 fi |
pascal@18 | 164 case "$i" in |
pascal@18 | 165 *-*);; |
pascal@18 | 166 *) break;; |
pascal@18 | 167 esac |
pascal@18 | 168 i=${i%-*} |
pascal@18 | 169 done |
pascal@18 | 170 } |
pascal@18 | 171 |
pankso@1 | 172 # Check if user is root. |
pankso@1 | 173 check_root() |
pankso@1 | 174 { |
pankso@1 | 175 if test $(id -u) != 0 ; then |
pankso@1 | 176 echo -e "\nYou must be root to run `basename $0` with this option." |
pankso@1 | 177 echo -e "Please type 'su' and root password to become super-user.\n" |
pankso@1 | 178 exit 0 |
pankso@1 | 179 fi |
pankso@1 | 180 } |
pankso@1 | 181 |
pascal@11 | 182 # Check for the rootfs tree. |
pascal@11 | 183 check_rootfs() |
pascal@11 | 184 { |
pascal@13 | 185 if [ ! -d "$ROOTFS/etc" ] ; then |
pascal@13 | 186 echo -e "\nUnable to find a distro rootfs...\n" |
pascal@11 | 187 exit 0 |
pascal@11 | 188 fi |
pascal@11 | 189 } |
pascal@11 | 190 |
pankso@1 | 191 # Check for the boot dir into the root CD tree. |
pankso@1 | 192 verify_rootcd() |
pankso@1 | 193 { |
pankso@1 | 194 if [ ! -d "$ROOTCD/boot" ] ; then |
pankso@1 | 195 echo -e "\nUnable to find the rootcd boot directory...\n" |
pankso@1 | 196 exit 0 |
pankso@1 | 197 fi |
pankso@1 | 198 } |
pankso@1 | 199 |
pankso@1 | 200 # Gen a new ISO image using isolinux. |
pankso@1 | 201 gen_livecd_isolinux() |
pankso@1 | 202 { |
pascal@13 | 203 # Some packages may want to alter iso |
pascal@13 | 204 genisohooks iso |
pankso@35 | 205 if [ ! -f "$ROOTCD/boot/isolinux/isolinux.bin" ]; then |
pankso@1 | 206 echo -e "\nUnable to find isolinux binary.\n" |
pascal@19 | 207 cleanup |
pankso@1 | 208 exit 0 |
pankso@1 | 209 fi |
pankso@35 | 210 # Set date for boot msg. |
pankso@35 | 211 if grep -q 'XXXXXXXX' $ROOTCD/boot/isolinux/isolinux.msg; then |
pankso@35 | 212 DATE=`date +%Y%m%d` |
pankso@35 | 213 echo -n "Setting build date to: $dATE..." |
pankso@35 | 214 sed -i s/'XXXXXXXX'/"$DATE"/ $ROOTCD/boot/isolinux/isolinux.msg |
pankso@35 | 215 status |
pankso@35 | 216 fi |
pankso@1 | 217 cd $DISTRO |
pankso@1 | 218 echo "" |
pankso@1 | 219 echo -e "\033[1mGenerating ISO image\033[0m" |
pankso@1 | 220 echo "================================================================================" |
pankso@1 | 221 genisoimage -R -o $ISO_NAME.iso -b boot/isolinux/isolinux.bin \ |
pankso@1 | 222 -c boot/isolinux/boot.cat -no-emul-boot -boot-load-size 4 \ |
pankso@1 | 223 -V "$VOLUM_NAME" -p "$PREPARED" -input-charset iso8859-1 \ |
pankso@1 | 224 -boot-info-table $ROOTCD |
pankso@1 | 225 echo "================================================================================" |
pascal@37 | 226 # Some packages may want to alter final iso |
pascal@37 | 227 genisohooks final |
pankso@1 | 228 } |
pankso@1 | 229 |
pankso@1 | 230 # Gen a new initramfs from the root file system. |
pankso@1 | 231 gen_initramfs() |
pankso@1 | 232 { |
pascal@13 | 233 # Some packages may want to alter rootfs |
pascal@13 | 234 genisohooks rootfs |
pankso@1 | 235 cd $ROOTFS |
pankso@1 | 236 echo "" |
pankso@7 | 237 # Use lzma if installed |
pascal@34 | 238 if [ "$COMPRESSION" = "none" ]; then |
pascal@34 | 239 echo -n "Generating uncompressed initramfs... " |
pascal@34 | 240 find . -print | cpio -o -H newc > $DISTRO/$INITRAMFS |
pascal@34 | 241 elif [ -x /usr/bin/lzma -a "$COMPRESSION" != "gzip" ]; then |
pascal@14 | 242 echo -n "Generating lzma'ed initramfs... " |
erjo@33 | 243 find . -print | cpio -o -H newc | lzma e -si -so > $DISTRO/$INITRAMFS |
pankso@7 | 244 else |
pankso@7 | 245 echo -n "Generating gziped initramfs... " |
pankso@7 | 246 find . -print | cpio -o -H newc | gzip -9 > $DISTRO/$INITRAMFS |
pankso@7 | 247 fi |
pascal@14 | 248 cd $DISTRO |
pascal@14 | 249 mv $INITRAMFS $ROOTCD/boot |
pankso@1 | 250 } |
pankso@1 | 251 |
pascal@22 | 252 distro_sizes() |
pankso@1 | 253 { |
pankso@1 | 254 echo "Build date : `date +%Y%m%d\ \at\ \%H:%M:%S`" |
pascal@19 | 255 echo "Packages : `ls -1 $ROOTFS$INSTALLED | wc -l`" |
pankso@1 | 256 echo "Rootfs size : `du -sh $ROOTFS`" |
pascal@14 | 257 echo "Initramfs size : `du -sh $ROOTCD/boot/$INITRAMFS`" |
pankso@1 | 258 echo "ISO image size : `du -sh $ISO_NAME.iso`" |
pankso@1 | 259 echo "================================================================================" |
pankso@1 | 260 echo "" |
pankso@1 | 261 } |
pankso@1 | 262 |
pascal@22 | 263 # Print ISO and rootfs size. |
pascal@22 | 264 distro_stats() |
pascal@22 | 265 { |
pascal@22 | 266 echo "" |
pascal@22 | 267 echo -e "\033[1mDistro statistics\033[0m" |
pascal@22 | 268 echo "================================================================================" |
pascal@22 | 269 distro_sizes |
pascal@22 | 270 } |
pascal@22 | 271 |
pankso@1 | 272 # Creat an empty configuration file. |
pankso@1 | 273 empty_config_file() |
pankso@1 | 274 { |
pankso@1 | 275 cat >> tazlito.conf << "EOF" |
pankso@1 | 276 # tazlito.conf: Tazlito (SliTaz Live Tool) |
pankso@1 | 277 # configuration file. |
pankso@1 | 278 # |
pankso@1 | 279 |
pankso@1 | 280 # Name of the ISO image to generate. |
pankso@1 | 281 ISO_NAME="" |
pankso@1 | 282 |
pankso@1 | 283 # ISO image volum name. |
pankso@1 | 284 VOLUM_NAME="SliTaz" |
pankso@1 | 285 |
pankso@1 | 286 # Name of the preparator. |
pankso@1 | 287 PREPARED="$USER" |
pankso@1 | 288 |
pankso@1 | 289 # Path to the packages repository and the packages.list. |
pankso@1 | 290 PACKAGES_REPOSITORY="" |
pankso@1 | 291 |
pankso@1 | 292 # Path to the distro tree to gen-distro from a |
pankso@1 | 293 # list of packages. |
pankso@1 | 294 DISTRO="" |
pankso@1 | 295 |
pankso@1 | 296 # Path to the directory contening additional files |
pankso@1 | 297 # to copy into the rootfs and rootcd of the LiveCD. |
pankso@1 | 298 ADDFILES="$DISTRO/addfiles" |
pascal@12 | 299 |
pascal@12 | 300 # Default answer for binary question (Y or N) |
pascal@12 | 301 DEFAULT_ANSWER="ASK" |
pascal@21 | 302 |
pascal@21 | 303 # Compression utility (lzma or gzip) |
pascal@21 | 304 COMPRESSION="lzma" |
pankso@1 | 305 EOF |
pankso@1 | 306 } |
pankso@1 | 307 |
pankso@1 | 308 #################### |
pankso@1 | 309 # Tazlito commands # |
pankso@1 | 310 #################### |
pankso@1 | 311 |
pankso@1 | 312 case "$COMMAND" in |
pankso@1 | 313 stats) |
pankso@1 | 314 # Tazlito general statistics from the config file. |
pankso@1 | 315 # |
pankso@1 | 316 echo "" |
pankso@1 | 317 echo -e "\033[1mTazlito statistics\033[0m |
pankso@1 | 318 =============================================================================== |
pankso@1 | 319 Config file : $CONFIG_FILE |
pankso@1 | 320 ISO name : $ISO_NAME.iso |
pankso@1 | 321 Volum name : $VOLUM_NAME |
pankso@1 | 322 Prepared : $PREPARED |
pankso@1 | 323 Packages repository : $PACKAGES_REPOSITORY |
pankso@1 | 324 Distro directory : $DISTRO" |
pankso@1 | 325 if [ ! "$ADDFILES" = "" ] ; then |
pankso@1 | 326 echo -e "Additional files : $ADDFILES" |
pankso@1 | 327 fi |
pankso@1 | 328 echo "================================================================================" |
pankso@1 | 329 echo "" |
pankso@1 | 330 ;; |
pankso@1 | 331 gen-config) |
pankso@1 | 332 # Gen a new config file in the current dir or the specified |
pankso@1 | 333 # directory by $2. |
pankso@1 | 334 # |
pankso@1 | 335 if [ -n "$2" ] ; then |
pankso@1 | 336 mkdir -p $2 && cd $2 |
pankso@1 | 337 fi |
pankso@1 | 338 echo -n "Generating empty tazlito.conf..." |
pankso@1 | 339 empty_config_file |
pankso@1 | 340 status |
pankso@1 | 341 echo "" |
pankso@1 | 342 if [ -f "tazlito.conf" ] ; then |
pankso@1 | 343 echo "Configuration file is ready to edit." |
pankso@1 | 344 echo "File location : `pwd`/tazlito.conf" |
pankso@1 | 345 echo "" |
pankso@1 | 346 fi |
pankso@1 | 347 ;; |
pankso@1 | 348 configure) |
pankso@1 | 349 # Configure a tazlito.conf config file. Start by getting |
pankso@1 | 350 # a empty config file and sed it. |
pankso@1 | 351 # |
pankso@1 | 352 if [ -f "tazlito.conf" ] ; then |
pankso@1 | 353 rm tazlito.conf |
pankso@1 | 354 else |
pankso@1 | 355 if test $(id -u) = 0 ; then |
pankso@1 | 356 cd /etc |
pankso@1 | 357 else |
pankso@1 | 358 echo "You must be root to configure the main config file or in" |
pankso@1 | 359 echo "the same directory of the file you want to configure." |
pankso@1 | 360 exit 0 |
pankso@1 | 361 fi |
pankso@1 | 362 fi |
pankso@1 | 363 empty_config_file |
pankso@1 | 364 echo"" |
pankso@1 | 365 echo -e "\033[1mConfiguring :\033[0m `pwd`/tazlito.conf" |
pankso@1 | 366 echo "================================================================================" |
pankso@1 | 367 # ISO name. |
pascal@11 | 368 echo -n "ISO name : " ; read answer |
pascal@11 | 369 sed -i s#'ISO_NAME=\"\"'#"ISO_NAME=\"$answer\""# tazlito.conf |
pascal@14 | 370 # Volume name. |
pascal@14 | 371 echo -n "Volume name : " ; read answer |
pascal@11 | 372 sed -i s/'VOLUM_NAME=\"SliTaz\"'/"VOLUM_NAME=\"$answer\""/ tazlito.conf |
pankso@1 | 373 # Packages repository. |
pascal@11 | 374 echo -n "Packages repository : " ; read answer |
pascal@11 | 375 sed -i s#'PACKAGES_REPOSITORY=\"\"'#"PACKAGES_REPOSITORY=\"$answer\""# tazlito.conf |
pankso@1 | 376 # Distro path. |
pascal@11 | 377 echo -n "Distro path : " ; read answer |
pascal@11 | 378 sed -i s#'DISTRO=\"\"'#"DISTRO=\"$answer\""# tazlito.conf |
pankso@1 | 379 echo "================================================================================" |
pankso@1 | 380 echo "Config file is ready to use." |
pankso@1 | 381 echo "You can now extract an ISO or generate a distro." |
pankso@1 | 382 echo "" |
pankso@1 | 383 ;; |
pankso@1 | 384 gen-iso) |
pankso@1 | 385 # Simply generated a new iso. |
pankso@1 | 386 # |
pankso@1 | 387 check_root |
pankso@1 | 388 verify_rootcd |
pankso@1 | 389 gen_livecd_isolinux |
pankso@1 | 390 distro_stats |
pankso@1 | 391 ;; |
pankso@1 | 392 gen-initiso) |
pankso@1 | 393 # Simply generated a new initramfs with a new iso. |
pankso@1 | 394 # |
pankso@1 | 395 check_root |
pankso@1 | 396 verify_rootcd |
pankso@1 | 397 gen_initramfs |
pankso@1 | 398 gen_livecd_isolinux |
pankso@1 | 399 distro_stats |
pankso@1 | 400 ;; |
pankso@1 | 401 extract-distro) |
pankso@1 | 402 # Extract a ISO image to a directory and rebuild the LiveCD tree. |
pankso@1 | 403 # |
pankso@1 | 404 check_root |
pankso@1 | 405 ISO_IMAGE=$2 |
pankso@1 | 406 if [ -z "$ISO_IMAGE" ] ; then |
pankso@1 | 407 echo -e "\nPlease specify the path to the ISO image." |
pankso@1 | 408 echo -e "Example : `basename $0` image.iso /path/target\n" |
pankso@1 | 409 exit 0 |
pankso@1 | 410 fi |
pankso@1 | 411 # Set the distro path by checking for $3 on cmdline. |
pankso@1 | 412 if [ -n "$3" ] ; then |
pankso@1 | 413 TARGET=$3 |
pankso@1 | 414 else |
pankso@1 | 415 TARGET=$DISTRO |
pankso@1 | 416 fi |
pankso@1 | 417 # Exit if existing distro is found. |
pankso@1 | 418 if [ -d "$TARGET/rootfs" ] ; then |
pankso@1 | 419 echo -e "\nA rootfs exist in : $TARGET" |
pankso@1 | 420 echo -e "Please clean the distro tree or change directory path.\n" |
pankso@1 | 421 exit 0 |
pankso@1 | 422 fi |
pankso@1 | 423 echo "" |
pankso@1 | 424 echo -e "\033[1mTazlito extracting :\033[0m $ISO_IMAGE" |
pankso@1 | 425 echo "================================================================================" |
pankso@1 | 426 # Start to mount the ISO. |
pankso@1 | 427 echo "" |
pankso@1 | 428 echo "Mounting ISO image..." |
pankso@1 | 429 mkdir -p $TMP_DIR |
pankso@1 | 430 # Get ISO file size. |
pankso@1 | 431 isosize=`du -sh $ISO_IMAGE` |
pankso@1 | 432 mount -o loop $ISO_IMAGE $TMP_DIR |
pankso@1 | 433 sleep 2 |
pankso@1 | 434 # Prepare target dir, copy the kernel and the rootfs. |
pankso@1 | 435 mkdir -p $TARGET/rootfs |
pankso@1 | 436 mkdir -p $TARGET/rootcd/boot |
pankso@1 | 437 echo -n "Copying the Linux kernel..." |
pascal@16 | 438 if cp $TMP_DIR/boot/vmlinuz* $TARGET/rootcd/boot 2> /dev/null; then |
pascal@20 | 439 ln $TARGET/rootcd/boot/vmlinuz* $TARGET/rootcd/boot/bzImage |
pascal@16 | 440 else |
pascal@16 | 441 cp $TMP_DIR/boot/bzImage $TARGET/rootcd/boot |
pascal@16 | 442 fi |
pankso@1 | 443 status |
pankso@1 | 444 echo -n "Copying isolinux files..." |
pankso@1 | 445 cp -a $TMP_DIR/boot/isolinux $TARGET/rootcd/boot |
pankso@1 | 446 status |
erjo@31 | 447 if [ -d $TMP_DIR/boot/syslinux ]; then |
erjo@33 | 448 echo -n "Copying syslinux files..." |
erjo@31 | 449 cp -a $TMP_DIR/boot/syslinux $TARGET/rootcd/boot |
erjo@31 | 450 status |
erjo@31 | 451 fi |
erjo@31 | 452 if [ -d $TMP_DIR/boot/extlinux ]; then |
erjo@33 | 453 echo -n "Copying extlinux files..." |
erjo@31 | 454 cp -a $TMP_DIR/boot/extlinux $TARGET/rootcd/boot |
erjo@31 | 455 status |
erjo@31 | 456 fi |
erjo@31 | 457 if [ -d $TMP_DIR/boot/grub ]; then |
erjo@33 | 458 echo -n "Copying GRUB files..." |
erjo@31 | 459 cp -a $TMP_DIR/boot/grub $TARGET/rootcd/boot |
erjo@31 | 460 status |
erjo@31 | 461 fi |
erjo@31 | 462 |
pankso@1 | 463 echo -n "Copying the rootfs..." |
pascal@11 | 464 cp $TMP_DIR/boot/rootfs.?z $TARGET/rootcd/boot |
pankso@1 | 465 status |
pankso@1 | 466 # Exract initramfs. |
pankso@1 | 467 cd $TARGET/rootfs |
pankso@1 | 468 echo -n "Extracting the rootfs... " |
pascal@11 | 469 ( zcat ../rootcd/boot/rootfs.gz 2>/dev/null || \ |
pascal@26 | 470 unlzma -c ../rootcd/boot/rootfs.?z ) | cpio -id |
pankso@1 | 471 # Umount and remove temp directory and cd to $TARGET to get stats. |
pankso@1 | 472 umount $TMP_DIR && rm -rf $TMP_DIR |
pankso@1 | 473 cd .. |
pankso@1 | 474 echo "" |
pankso@1 | 475 echo "================================================================================" |
pankso@1 | 476 echo "Extracted : $ISO_IMAGE ($isosize)" |
pankso@1 | 477 echo "Distro tree : `pwd`" |
pankso@1 | 478 echo "Rootfs size : `du -sh rootfs`" |
pankso@1 | 479 echo "Rootcd size : `du -sh rootcd`" |
pankso@1 | 480 echo "================================================================================" |
pankso@1 | 481 echo "" |
pankso@1 | 482 ;; |
pascal@22 | 483 list-flavors) |
pascal@22 | 484 # Show available flavors. |
pascal@22 | 485 if [ ! -s /etc/tazlito/flavors.list -o "$2" == "--recharge" ]; then |
pascal@22 | 486 download flavors.list -O - > /etc/tazlito/flavors.list |
pascal@22 | 487 fi |
pankso@27 | 488 echo "" |
pankso@27 | 489 echo -e "\033[1mList of flavors\033[0m" |
pankso@27 | 490 echo "================================================================================" |
pascal@22 | 491 cat /etc/tazlito/flavors.list |
pankso@27 | 492 echo "" |
pascal@22 | 493 ;; |
pascal@22 | 494 show-flavor) |
pascal@22 | 495 # Show flavor description. |
pascal@22 | 496 FLAVOR=$2 |
pascal@22 | 497 if [ ! -f "$FLAVOR.flavor" ]; then |
pascal@22 | 498 echo "File $FLAVOR.flavor not found." |
pascal@22 | 499 exit 1 |
pascal@22 | 500 fi |
pascal@22 | 501 mkdir $TMP_DIR |
pascal@22 | 502 zcat $FLAVOR.flavor | ( cd $TMP_DIR; cpio -i 2> /dev/null ) |
pascal@22 | 503 if [ "$3" = "--brief" ]; then |
pascal@22 | 504 if [ "$4" != "--noheader" ]; then |
pascal@22 | 505 echo "Name Sizes Description" |
pascal@22 | 506 echo "================================================================================" |
pascal@22 | 507 fi |
pascal@22 | 508 printf "%-15.15s %5.5s/%5.5s %-51s\n" "$FLAVOR" \ |
pascal@22 | 509 "$(field ISO $TMP_DIR/$FLAVOR.desc)" \ |
pascal@22 | 510 "$(field Rootfs $TMP_DIR/$FLAVOR.desc)" \ |
pascal@22 | 511 "$(grep ^Description $TMP_DIR/$FLAVOR.desc | cut -d: -f2)" |
pascal@22 | 512 else |
pascal@22 | 513 echo "================================================================================" |
pascal@22 | 514 cat $TMP_DIR/$FLAVOR.desc |
pascal@22 | 515 fi |
pascal@22 | 516 rm -Rf $TMP_DIR |
pascal@22 | 517 ;; |
pascal@22 | 518 gen-flavor) |
pascal@22 | 519 # Generate a new flavor form then last iso image generation. |
pascal@22 | 520 FLAVOR=$2 |
pankso@35 | 521 echo "" |
pankso@35 | 522 echo -e "\033[1mFlavor generation\033[0m" |
pankso@35 | 523 echo "================================================================================" |
pascal@22 | 524 if [ -z "$FLAVOR" ]; then |
pascal@22 | 525 echo -n "Flavor name : " |
pascal@22 | 526 read FLAVOR |
pascal@22 | 527 [ -z "$FLAVOR" ] && exit 1 |
pascal@22 | 528 fi |
pascal@22 | 529 check_rootfs |
pascal@22 | 530 FILES="$FLAVOR.pkglist" |
pascal@22 | 531 echo -n "Creating file $FLAVOR.flavor..." |
pascal@22 | 532 for i in rootcd rootfs; do |
pascal@22 | 533 if [ -d "$ADDFILES/$i" ] ; then |
pascal@22 | 534 FILES="$FILES\n$FLAVOR.$i" |
pascal@22 | 535 ( cd "$ADDFILES/$i"; find . | \ |
pascal@22 | 536 cpio -o -H newc 2> /dev/null | gzip -9 ) > $FLAVOR.$i |
pascal@22 | 537 fi |
pascal@22 | 538 done |
pankso@35 | 539 status |
pascal@22 | 540 answer=`grep -s ^Description $FLAVOR.desc` |
pascal@22 | 541 answer=${answer#Description : } |
pascal@22 | 542 if [ -z "$answer" ]; then |
pankso@35 | 543 echo -n "Description : " |
pascal@22 | 544 read answer |
pascal@22 | 545 fi |
pankso@35 | 546 echo -n "Compressing flavor $FLAVOR..." |
pascal@22 | 547 echo "Flavor : $FLAVOR" > $FLAVOR.desc |
pascal@22 | 548 echo "Description : $answer" >> $FLAVOR.desc |
pascal@22 | 549 ( cd $DISTRO; distro_sizes) >> $FLAVOR.desc |
pascal@22 | 550 \rm -f $FLAVOR.pkglist 2> /dev/null |
pascal@22 | 551 for i in $(ls $ROOTFS$INSTALLED); do |
pascal@22 | 552 eval $(grep ^VERSION= $ROOTFS$INSTALLED/$i/receipt) |
pascal@22 | 553 echo "$i-$VERSION" >> $FLAVOR.pkglist |
pascal@22 | 554 done |
pascal@22 | 555 echo -e "$FLAVOR.desc\n$FILES" | cpio -o -H newc 2>/dev/null | \ |
pascal@22 | 556 gzip -9 > $FLAVOR.flavor |
pascal@22 | 557 rm `echo -e $FILES` |
pascal@22 | 558 status |
pankso@35 | 559 echo "================================================================================" |
pankso@35 | 560 echo "Flavor size : `du -sh $FLAVOR.flavor`" |
pankso@35 | 561 echo "" |
pascal@22 | 562 ;; |
pascal@22 | 563 get-flavor) |
pascal@22 | 564 # Get a flavor's files and prepare for gen-distro. |
pascal@22 | 565 FLAVOR=$2 |
pascal@22 | 566 if [ -f $FLAVOR.flavor ] || download $FLAVOR.flavor; then |
pascal@22 | 567 echo -n "Cleaning $DISTRO..." |
pascal@22 | 568 rm -R $DISTRO 2> /dev/null |
pascal@22 | 569 mkdir -p $DISTRO |
pascal@22 | 570 status |
pascal@22 | 571 mkdir $TMP_DIR |
pascal@22 | 572 zcat $FLAVOR.flavor | ( cd $TMP_DIR; cpio -i 2>/dev/null ) |
pascal@22 | 573 echo -n "Create distro-packages.list..." |
pascal@22 | 574 mv $TMP_DIR/$FLAVOR.pkglist distro-packages.list |
pascal@22 | 575 status |
pascal@22 | 576 for i in rootcd rootfs; do |
pascal@22 | 577 if [ -f $TMP_DIR/$FLAVOR.$i ]; then |
pascal@22 | 578 mkdir -p "$ADDFILES/$i" |
pascal@22 | 579 zcat $TMP_DIR/$FLAVOR.$i | \ |
pascal@22 | 580 ( cd "$ADDFILES/$i"; cpio -id 2> /dev/null) |
pascal@22 | 581 fi |
pascal@22 | 582 done |
pascal@22 | 583 echo -n "Update tazlito.conf..." |
pascal@22 | 584 [ -f tazlito.conf ] || cp /etc/tazlito/tazlito.conf . |
pascal@22 | 585 cat tazlito.conf | grep -v "^#VOLUM_NAME" | \ |
pascal@22 | 586 sed "s/^VOLUM_NA/VOLUM_NAME=\"SliTaz $FLAVOR\"\\n#VOLUM_NA/" \ |
pascal@22 | 587 > tazlito.conf.$$ && mv tazlito.conf.$$ tazlito.conf |
pascal@22 | 588 status |
pascal@22 | 589 rm -Rf $TMP_DIR |
pascal@22 | 590 fi |
pascal@22 | 591 ;; |
pankso@1 | 592 gen-distro) |
pankso@1 | 593 # Generate a live distro tree with a set of packages. |
pankso@1 | 594 # |
pankso@1 | 595 check_root |
pankso@1 | 596 if [ -d $ROOTFS ] ; then |
pankso@1 | 597 echo "A rootfs exist in : $DISTRO" |
pankso@1 | 598 echo -e "Please clean the distro tree or change directory path.\n" |
pankso@1 | 599 exit 0 |
pankso@1 | 600 fi |
pascal@19 | 601 # Check if a package list was specified on cmdline. |
pascal@19 | 602 LIST_NAME="distro-packages.list" |
pascal@19 | 603 CDROM="" |
pascal@19 | 604 while [ -n "$2" ]; do |
pascal@19 | 605 case "$2" in |
pascal@19 | 606 --iso=*) |
pascal@19 | 607 CDROM="-o loop ${2#--iso=}" |
pascal@19 | 608 ;; |
pascal@19 | 609 --cdrom) |
pascal@19 | 610 CDROM="/dev/cdrom" |
pascal@19 | 611 ;; |
pascal@19 | 612 *) if [ ! -f "$2" ] ; then |
pascal@19 | 613 echo -e "\nUnable to find the specified packages list." |
pascal@19 | 614 echo -e "List name : $2\n" |
pascal@19 | 615 exit 1 |
pascal@19 | 616 fi |
pankso@1 | 617 LIST_NAME=$2 |
pascal@19 | 618 ;; |
pascal@19 | 619 esac |
pascal@19 | 620 shift |
pascal@19 | 621 done |
pascal@19 | 622 if [ ! -f "$LIST_NAME" -a -d $INSTALLED ] ; then |
pascal@19 | 623 # Build list with installed packages |
pascal@19 | 624 for i in $(ls $INSTALLED); do |
pascal@19 | 625 eval $(grep ^VERSION= $INSTALLED/$i/receipt) |
pascal@19 | 626 echo "$i-$VERSION" >> $LIST_NAME |
pascal@19 | 627 done |
pankso@1 | 628 fi |
pankso@1 | 629 # Exit if no list name. |
pascal@18 | 630 if [ ! -f "$LIST_NAME" ]; then |
pankso@1 | 631 echo -e "\nNo packages list found or specified. Please read the doc.\n" |
pankso@1 | 632 exit 0 |
pankso@1 | 633 fi |
pankso@1 | 634 # Start generation. |
pankso@1 | 635 echo "" |
pankso@1 | 636 echo -e "\033[1mTazlito generating a distro\033[0m" |
pankso@1 | 637 echo "================================================================================" |
pascal@18 | 638 # Misc checks |
pascal@18 | 639 [ -n "$PACKAGES_REPOSITORY" ] || PACKAGES_REPOSITORY="." |
pascal@18 | 640 [ -d $PACKAGES_REPOSITORY ] || mkdir -p $PACKAGES_REPOSITORY |
pankso@1 | 641 # Get the list of packages using cat for a file list. |
pankso@1 | 642 LIST=`cat $LIST_NAME` |
pankso@1 | 643 # Verify if all packages in list are presents in $PACKAGES_REPOSITORY. |
pascal@18 | 644 REPACK="" |
pascal@18 | 645 DOWNLOAD="" |
pankso@1 | 646 for pkg in $LIST |
pankso@1 | 647 do |
pascal@19 | 648 [ "$pkg" = "" ] && continue |
pankso@1 | 649 pkg=${pkg%.tazpkg} |
pascal@18 | 650 [ -f $PACKAGES_REPOSITORY/$pkg.tazpkg ] && continue |
pascal@18 | 651 PACKAGE=$(installed_package_name $pkg) |
pascal@18 | 652 [ -n "$PACKAGE" -a "$REPACK" = "y" ] && continue |
pascal@18 | 653 [ -z "$PACKAGE" -a -n "$DOWNLOAD" ] && continue |
pascal@18 | 654 echo -e "\nUnable to find $pkg in the repository." |
pascal@18 | 655 echo -e "Path : $PACKAGES_REPOSITORY\n" |
pascal@18 | 656 if [ -n "$PACKAGE" -a -z "$REPACK" ]; then |
pascal@18 | 657 yesorno "Repack packages from rootfs (y/N) ? " |
pascal@18 | 658 REPACK="$answer" |
pascal@18 | 659 [ "$answer" = "y" ] || REPACK="n" |
pascal@18 | 660 [ "$DOWNLOAD" = "y" ] && break |
pascal@18 | 661 fi |
pascal@18 | 662 if [ -f $MIRROR -a -z "$DOWNLOAD" ]; then |
pascal@18 | 663 yesorno "Download packages from mirror (Y/n) ? " |
pascal@18 | 664 DOWNLOAD="$answer" |
pascal@18 | 665 if [ "$answer" = "n" ]; then |
pascal@18 | 666 [ -z "$PACKAGE" ] && exit 1 |
pascal@18 | 667 else |
pascal@18 | 668 DOWNLOAD="y" |
pascal@18 | 669 [ -n "$REPACK" ] && break |
pascal@12 | 670 fi |
pankso@1 | 671 fi |
pascal@18 | 672 [ "$REPACK" = "n" -a "$DOWNLOAD" = "n" ] && exit 1 |
pankso@1 | 673 done |
pascal@19 | 674 |
pascal@19 | 675 # mount cdrom to be able to repack boot-loader packages |
pascal@19 | 676 if [ ! -e /boot -a -n "$CDROM" ]; then |
pascal@19 | 677 mkdir $TMP_MNT |
pascal@20 | 678 if mount -r $CDROM $TMP_MNT 2> /dev/null; then |
pascal@19 | 679 ln -s $TMP_MNT/boot / |
pascal@19 | 680 if [ ! -d "$ADDFILES/rootcd" ] ; then |
pascal@19 | 681 mkdir -p $ADDFILES/rootcd |
pascal@19 | 682 for i in $(ls $TMP_MNT); do |
pascal@19 | 683 [ "$i" = "boot" ] && continue |
pascal@19 | 684 cp -a $TMP_MNT/$i $ADDFILES/rootcd |
pascal@19 | 685 done |
pascal@19 | 686 fi |
pascal@19 | 687 else |
pascal@19 | 688 rmdir $TMP_MNT |
pascal@19 | 689 fi |
pascal@19 | 690 fi |
pascal@19 | 691 |
pankso@1 | 692 # Root fs stuff. |
pankso@1 | 693 echo "Preparing the rootfs directory..." |
pankso@1 | 694 mkdir -p $ROOTFS |
pankso@1 | 695 sleep 2 |
pankso@1 | 696 for pkg in $LIST |
pankso@1 | 697 do |
pascal@19 | 698 [ "$pkg" = "" ] && continue |
pankso@1 | 699 # First copy and extract the package in tmp dir. |
pankso@1 | 700 pkg=${pkg%.tazpkg} |
pascal@18 | 701 PACKAGE=$(installed_package_name $pkg) |
pankso@1 | 702 mkdir -p $TMP_DIR |
pascal@12 | 703 if [ ! -f $PACKAGES_REPOSITORY/$pkg.tazpkg ]; then |
pascal@12 | 704 # look for package in cache |
pascal@12 | 705 if [ -f $CACHE_DIR/$pkg.tazpkg ]; then |
pascal@12 | 706 ln -s $CACHE_DIR/$pkg.tazpkg $PACKAGES_REPOSITORY |
pascal@18 | 707 # look for package in running distribution |
pascal@18 | 708 elif [ -n "$PACKAGE" -a "$REPACK" = "y" ]; then |
pascal@18 | 709 tazpkg repack $PACKAGE && \ |
pascal@18 | 710 mv $pkg.tazpkg $PACKAGES_REPOSITORY |
pascal@18 | 711 fi |
pascal@18 | 712 fi |
pascal@18 | 713 if [ ! -f $PACKAGES_REPOSITORY/$pkg.tazpkg ]; then |
pascal@12 | 714 # get package from mirror |
pascal@18 | 715 [ "$DOWNLOAD" = "y" ] && \ |
pascal@18 | 716 download $pkg.tazpkg && \ |
pascal@18 | 717 mv $pkg.tazpkg $PACKAGES_REPOSITORY |
pascal@12 | 718 fi |
pascal@12 | 719 if [ ! -f $PACKAGES_REPOSITORY/$pkg.tazpkg ]; then |
pascal@12 | 720 echo "Missing package $pkg." |
pascal@19 | 721 cleanup |
pascal@12 | 722 exit 1 |
pascal@12 | 723 fi |
pascal@17 | 724 yes "" | tazpkg install $PACKAGES_REPOSITORY/$pkg.tazpkg --root=$ROOTFS |
pankso@1 | 725 done |
pascal@19 | 726 cp $LIST_NAME $ROOTFS/etc/tazlito/distro-packages.list |
pankso@1 | 727 echo "" |
pankso@1 | 728 cd $DISTRO |
pankso@1 | 729 # Copy all files from $ADDFILES/rootfs to the rootfs. |
pankso@1 | 730 if [ -d "$ADDFILES/rootfs" ] ; then |
pankso@1 | 731 echo -n "Copying addfiles content to the rootfs... " |
pascal@11 | 732 cp -a $ADDFILES/rootfs/* $ROOTFS |
pascal@11 | 733 status |
pankso@1 | 734 fi |
pankso@1 | 735 echo "Root file system is generated..." |
pankso@1 | 736 # Root CD part. |
pankso@1 | 737 echo -n "Preparing the rootcd directory..." |
pankso@1 | 738 mkdir -p $ROOTCD |
pankso@1 | 739 status |
pankso@1 | 740 # Move the boot dir with the Linux kernel from rootfs. |
pankso@1 | 741 # The boot dir goes directly on the CD. |
pankso@1 | 742 if [ -d "$ROOTFS/boot" ] ; then |
pankso@1 | 743 echo -n "Moving the boot directory..." |
pankso@1 | 744 mv $ROOTFS/boot $ROOTCD |
pankso@1 | 745 cd $ROOTCD/boot |
pascal@11 | 746 ln vmlinuz-* bzImage |
pankso@1 | 747 status |
pankso@1 | 748 fi |
pankso@1 | 749 cd $DISTRO |
pankso@1 | 750 # Copy all files from $ADDFILES/rootcd to the rootcd. |
pankso@1 | 751 if [ -d "$ADDFILES/rootcd" ] ; then |
pankso@1 | 752 echo -n "Copying addfiles content to the rootcd... " |
pascal@11 | 753 cp -a $ADDFILES/rootcd/* $ROOTCD |
pascal@11 | 754 status |
pankso@1 | 755 fi |
pankso@1 | 756 # Initramfs and ISO image stuff. |
pankso@1 | 757 gen_initramfs |
pankso@1 | 758 gen_livecd_isolinux |
pankso@1 | 759 distro_stats |
pascal@19 | 760 cleanup |
pankso@1 | 761 ;; |
pankso@1 | 762 clean-distro) |
pankso@1 | 763 # Remove old distro tree. |
pankso@1 | 764 # |
pankso@1 | 765 check_root |
pankso@1 | 766 echo "" |
pankso@1 | 767 echo -e "\033[1mCleaning :\033[0m $DISTRO" |
pankso@1 | 768 echo "================================================================================" |
pankso@1 | 769 if [ -d "$DISTRO" ] ; then |
pankso@1 | 770 if [ -d "$ROOTFS" ] ; then |
pankso@1 | 771 echo -n "Removing the rootfs..." |
pankso@1 | 772 rm -f $DISTRO/$INITRAMFS |
pascal@11 | 773 rm -rf $ROOTFS |
pascal@11 | 774 status |
pankso@1 | 775 fi |
pankso@1 | 776 if [ -d "$ROOTCD" ] ; then |
pankso@1 | 777 echo -n "Removing the rootcd..." |
pascal@11 | 778 rm -rf $ROOTCD |
pascal@11 | 779 status |
pankso@1 | 780 fi |
pankso@1 | 781 echo -n "Removing eventual ISO image..." |
pascal@11 | 782 rm -f $DISTRO/$ISO_NAME.iso |
pascal@11 | 783 status |
pankso@1 | 784 fi |
pankso@1 | 785 echo "================================================================================" |
pankso@1 | 786 echo "" |
pankso@1 | 787 ;; |
pankso@1 | 788 addhacker) |
pankso@1 | 789 # Without /etc/passwd... |
pankso@1 | 790 # |
pankso@1 | 791 check_root |
pankso@1 | 792 echo "" |
pankso@1 | 793 echo -e "\033[1mAdduser hacker to :\033[0m $ROOTFS" |
pankso@1 | 794 echo "================================================================================" |
pankso@1 | 795 if [ ! -d "$ROOTFS/etc" ] ; then |
pankso@1 | 796 echo -e "\nUnable to find : $ROOTFS/etc" |
pankso@1 | 797 echo -e "Users and passwords config files will not be found.\n" |
pankso@1 | 798 exit 0 |
pankso@1 | 799 fi |
pankso@1 | 800 # Go for echoing on configuration files if any hacker was found. |
pankso@1 | 801 # |
pankso@35 | 802 if ! grep -q hacker $root/etc/passwd; then |
pankso@1 | 803 echo -n "Configuring $ROOTFS/etc..." |
pankso@1 | 804 echo 'hacker:x:500:500:Linux User,,,:/home/hacker:/bin/ash' >> $ROOTFS/etc/passwd |
pankso@1 | 805 echo 'hacker::13646:0:99999:7:::' >> $ROOTFS/etc/shadow |
pankso@1 | 806 echo 'hacker:x:500:' >> $ROOTFS/etc/group |
pankso@1 | 807 echo 'hacker:!::' >> $ROOTFS/etc/gshadow |
pankso@1 | 808 status |
pankso@1 | 809 else |
pankso@1 | 810 echo "Hacker is already in : $ROOTFS/etc/passwd" |
pankso@1 | 811 fi |
pankso@8 | 812 # Hacker can listen to music |
pankso@8 | 813 # |
pankso@35 | 814 if grep -q audio $root/etc/group; then |
pankso@35 | 815 if ! grep -q "audio:x:20:hacker" $root/etc/group; then |
pankso@35 | 816 sed -i s/'audio:x:20:'/'audio:x:20:hacker'/ $root/etc/group |
pankso@35 | 817 fi |
pankso@8 | 818 fi |
pankso@35 | 819 # /home/hacker directories. |
pankso@1 | 820 # |
pankso@1 | 821 echo -n "Creating default directories... " |
pankso@35 | 822 mkdir -p $fs/home/hacker/Documents \ |
pankso@35 | 823 $fs/home/hacker/Downloads \ |
pankso@35 | 824 $fs/home/hacker/Templates \ |
pankso@35 | 825 $fs/home/hacker/.local/bin \ |
pankso@35 | 826 $fs/home/hacker/.local/share |
pankso@1 | 827 status |
pankso@1 | 828 # Change permissions. |
pankso@1 | 829 # |
pankso@1 | 830 echo -n "Chmodig all files in /home/hacker..." |
pankso@1 | 831 chown -R 500.500 $ROOTFS/home/hacker |
pankso@1 | 832 status |
pankso@1 | 833 echo "================================================================================" |
pankso@1 | 834 echo "Linux User Hacker have an account in the distro." |
pankso@1 | 835 echo "" |
pankso@1 | 836 ;; |
pankso@1 | 837 check-distro) |
pankso@1 | 838 # Check for a few LiveCD needed files not installed by packages. |
pankso@1 | 839 # |
pascal@11 | 840 check_rootfs |
pankso@1 | 841 echo "" |
pankso@1 | 842 echo -e "\033[1mChecking distro :\033[0m $ROOTFS" |
pankso@1 | 843 echo "================================================================================" |
pankso@1 | 844 # SliTaz release info. |
pankso@1 | 845 if [ ! -f "$ROOTFS/etc/slitaz-release" ]; then |
pascal@11 | 846 echo "Missing release info : /etc/slitaz-release" |
pankso@1 | 847 else |
pankso@1 | 848 release=`cat $ROOTFS/etc/slitaz-release` |
pankso@1 | 849 echo -n "Release : $release" |
pankso@1 | 850 status |
pankso@1 | 851 fi |
pankso@1 | 852 # Tazpkg mirror. |
pankso@1 | 853 if [ ! -f "$ROOTFS/var/lib/tazpkg/mirror" ]; then |
pankso@1 | 854 echo -n "Mirror URL : Missing /var/lib/tazpkg/mirror" |
pankso@1 | 855 todomsg |
pankso@1 | 856 else |
pankso@1 | 857 echo -n "Mirror configuration exist..." |
pankso@1 | 858 status |
pankso@1 | 859 fi |
pankso@1 | 860 # Isolinux msg |
pankso@1 | 861 if grep -q "cooking-XXXXXXXX" /$ROOTCD/boot/isolinux/isolinux.msg; then |
pankso@1 | 862 echo -n "Isolinux msg : Missing cooking date XXXXXXXX (ex `date +%Y%m%d`)" |
pankso@1 | 863 todomsg |
pankso@1 | 864 else |
pankso@1 | 865 echo -n "Isolinux message seems good..." |
pankso@1 | 866 status |
pankso@1 | 867 fi |
pankso@1 | 868 echo "================================================================================" |
pankso@1 | 869 echo "" |
pankso@1 | 870 ;; |
pankso@1 | 871 burn-iso) |
pankso@1 | 872 # Guess cdrom device, ask user and burn the ISO. |
pankso@1 | 873 # |
pankso@1 | 874 check_root |
pankso@1 | 875 DRIVE_NAME=`cat /proc/sys/dev/cdrom/info | grep "drive name" | cut -f 3` |
pankso@1 | 876 DRIVE_SPEED=`cat /proc/sys/dev/cdrom/info | grep "drive speed" | cut -f 3` |
pankso@1 | 877 # We can specify an alternative ISO from the cmdline. |
pankso@1 | 878 if [ -n "$2" ] ; then |
pankso@1 | 879 iso=$2 |
pankso@1 | 880 else |
pankso@1 | 881 iso=$DISTRO/$ISO_NAME.iso |
pankso@1 | 882 fi |
pankso@1 | 883 if [ ! -f "$iso" ]; then |
pankso@1 | 884 echo -e "\nUnable to find ISO : $iso\n" |
pankso@1 | 885 exit 0 |
pankso@1 | 886 fi |
pankso@1 | 887 echo "" |
pankso@1 | 888 echo -e "\033[1mTazlito burn ISO\033[0m " |
pankso@1 | 889 echo "================================================================================" |
pankso@1 | 890 echo "Cdrom device : /dev/$DRIVE_NAME" |
pankso@1 | 891 echo "Drive speed : $DRIVE_SPEED" |
pankso@1 | 892 echo "ISO image : $iso" |
pankso@1 | 893 echo "================================================================================" |
pankso@1 | 894 echo "" |
pascal@12 | 895 yesorno "Burn ISO image (y/N) ? " |
pascal@11 | 896 if [ "$answer" == "y" ]; then |
pankso@1 | 897 echo "" |
pankso@1 | 898 echo "Starting Wodim to burn the iso..." && sleep 2 |
pankso@1 | 899 echo "================================================================================" |
pankso@25 | 900 wodim speed=$DRIVE_SPEED dev=/dev/$DRIVE_NAME $iso |
pankso@1 | 901 echo "================================================================================" |
pankso@1 | 902 echo "ISO image is burned to cdrom." |
pankso@1 | 903 else |
pankso@1 | 904 echo -e "\nExiting. No ISO burned." |
pankso@1 | 905 fi |
pankso@1 | 906 echo "" |
pankso@1 | 907 ;; |
pankso@1 | 908 usage|*) |
pankso@1 | 909 # Clear and print usage also for all unknow commands. |
pankso@1 | 910 # |
pankso@1 | 911 clear |
pankso@1 | 912 usage |
pankso@1 | 913 ;; |
pankso@1 | 914 |
pankso@1 | 915 esac |
pankso@1 | 916 |
pankso@1 | 917 exit 0 |