#!/bin/bash disksdir="$root/ROCK/target-finish" mainfunction="second_stage_mainfunction" image_type="zisofs" pkg_file() { local xpkg ver extraver pkg_suffix for xpkg ; do read ver extraver <<< "$( grep "[ =]$xpkg " \ $base/config/$config/packages | cut -f6,7 -d" " )" if [ "$ROCKCFG_CREATE_TARBZ2" == 1 ] ; then pkg_suffix='.tar.bz2' elif [ "$ROCKCFG_CREATE_GEM" == 1 ] ; then pkg_suffix='.gem' fi if [ "$ROCKCFG_PKGFILE_VER" == 1 ] ; then pkg_suffix="-$ver-$extraver$pkg_suffix" fi ls "$root/ROCK/pkgs/$xpkg"{,:?*}"$pkg_suffix" 2>/dev/null done } install_pkg() { local pkgfile for pkgfile ; do case "$pkgfile" in *.tbz2|*.tar.bz2) tar $taropt "$pkgfile" || true ;; *.gem) mine -i -R . "$pkgfile" || true ;; esac done } second_stage_mainfunction () { if [ "$ROCK_BUILD_TARGET" != 1 ] ; then echo "$xpkg can only be built with ./scripts/Build-Target!" false fi create_livecd=1 create_overlay=1 if [ "$create_livecd" = 1 ] ; then # echo "Creating 2nd stage filesystem:" rm -rf $disksdir/2nd_stage-livecd mkdir -p $disksdir/2nd_stage-livecd cd $disksdir/2nd_stage-livecd mkdir -p mnt/source mnt/target ramdisk # echo "Extracting the packages archives." grep "^X" $base/config/$config/packages | cut -f5 -d" " | \ while read pkg do xpkg="${pkg#*=}" ; pkg="${pkg%=*}" for pkgfile in $( pkg_file $xpkg ) ; do if [ -z "${pkgfile##*:doc*}" ] then # simply ignore :doc packages continue else echo "- Extracting $pkgfile ..." install_pkg $pkgfile fi done done # echo "Running ldconfig to create links ..." ldconfig -r . # echo "Running depmod for target system ..." depmod -b $PWD -F boot/System.map $pkg_linux_default_release echo "Running mkfontscale/mkfontdir and fc-cache ..." for dir in usr/X11R7/lib/X11/fonts/* ; do [ -d $dir ] || continue mkfontscale $dir mkfontdir $dir fc-cache -v $dir done # echo "Creating 2nd_stage-livecd.img image (this takes some time)... " cd $disksdir mkdir -p isofs-livecd if [ "$image_type" = "isofs" ] ; then mkisofs -R -o isofs-livecd/2nd_stage-livecd.img 2nd_stage-livecd fi if [ "$image_type" = "zisofs" ] ; then rm -rf 2nd_stage-livecd-compressed mkzftree 2nd_stage-livecd 2nd_stage-livecd-compressed mkisofs -z -R -o isofs-livecd/2nd_stage-livecd.img \ 2nd_stage-livecd-compressed fi fi if [ "$create_overlay" = 1 ] ; then echo "Creating 2nd stage filesystem overlay:" rm -rf $disksdir/2nd_stage-overlay mkdir -p $disksdir/2nd_stage-overlay cd $disksdir/2nd_stage-overlay echo "Replacing some vital files for live useage ..." mkdir -p etc/conf echo 'export XDM="/usr/bin/kdm"' > etc/conf/xdm mkdir -p etc/X11 sbin cp -f $confdir/fixedfiles/inittab etc/inittab cp -f $confdir/fixedfiles/login-shell sbin/login-shell # this got drop once, so we ensure it's +xed. chmod 0755 sbin/login-shell mkdir -p etc/rc.d/{init,rc{1,2,3,4,5,X}}.d root=. install_init grml-x $confdir/fixedfiles/grml-x.init # echo "Creating home directories and users..." mkdir -p home/{rocker,root} chown 1000:100 home/rocker cp -a ../2nd_stage-livecd/etc/{passwd,shadow,group} etc/ sed -i -e 's,root:.*,root:x:0:0:root:/home/root:/bin/bash,' etc/passwd sed -i -e 's,root:.*,root:$1$6BYmvnok$F5z/SyZQr7MuBU7l19lgW/:13300:0:99999:7:::,' etc/shadow echo 'rocker:x:1000:100:ROCK Live CD User:/home/rocker:/bin/bash' >> etc/passwd echo 'rocker:$1$b3mL1k/q$zneIjKcHqok1T80fp1cPI1:13300:0:99999:7:::' >> etc/shadow sed -i -e 's,wheel:x:10:,wheel:x:10:rocker,' etc/group sed -i -e 's,video:x:16:,video:x:16:rocker,' etc/group sed -i -e 's,sound:x:17:,sound:x:17:rocker,' etc/group sed -i -e 's,cdrom:x:29:,cdrom:x:29:rocker,' etc/group # echo "Creating 2nd_stage-livecd.img image... (this takes some time)... " cd $disksdir mkdir -p isofs-livecd mkisofs -R -o isofs-livecd/2nd_stage-overlay.img 2nd_stage-overlay if [ "$image_type" = "isofs" ] ; then mkisofs -R -o isofs-livecd/2nd_stage-overlay.img 2nd_stage-overlay fi if [ "$image_type" = "zisofs" ] ; then rm -rf 2nd_stage-overlay-compressed mkzftree 2nd_stage-overlay 2nd_stage-overlay-compressed mkisofs -z -R -o isofs-livecd/2nd_stage-overlay.img \ 2nd_stage-overlay-compressed fi # echo "Creating isofs.txt file .." echo "DISK1 build/${ROCKCFG_ID}/ROCK/target-finish/isofs-livecd/ ${ROCKCFG_SHORTID}/" \ > ../isofs_2nd-stage-livecd.txt fi }