#!/bin/bash # simplified kernel pet stuff # sourced by 3builddistro-Z # # .. inside sandbox3 test -f ../_00build.conf && source ../_00build.conf test -f ../DISTRO_SPECS && source ../DISTRO_SPECS test -z $MKSQUASHFS && setvar MKSQUASHFS = 'mksquashfs' test -z $ZDRVSFS && setvar ZDRVSFS = ""zdrv_${DISTRO_FILE_PREFIX}_${DISTRO_VERSION}.sfs"" shell { cd .. case (KERNEL_TARBALL_URL) { *.pet|*.deb|*.txz|*.tgz { mkdir -p ../local-repositories/kernel_pkgs ln -sf ../local-repositories/kernel_pkgs kernel_pkgs 2>/dev/null if test ! -f kernel_pkgs/${KERNEL_TARBALL_URL##*/} { echo -e "\nDownloading kernel pkg..." wget -P kernel_pkgs -c ${WGET_SHOW_PROGRESS} $KERNEL_TARBALL_URL } } } } setvar KERNELPKG = ${KERNEL_TARBALL_URL##*/} #basename if test ! -f ../kernel_pkgs/${KERNELPKG} { echo "file not found: ../kernel_pkgs/${KERNELPKG}" exit 1 } case (KERNELPKG) { *.pet|*.txz|*.tgz { setvar cmd = ''tar --list -f'' } *.deb { setvar cmd = ''dpkg-deb --contents'' } } setvar KERNELVER = "$($cmd ../kernel_pkgs/${KERNELPKG} 2>/dev/null | grep -o '/lib/modules/[23456789]\..*' | head -n 1 | cut -f 4 -d '/)" #120502 hide error msg. setvar dotnum = "$(echo -n $KERNELVER | sed -e 's%[^\.]%%g' | wc -c)" setvar SUB_KERNELVER = $(echo -n $KERNELVER | cut -f 1 -d '-' | cut -f 3 -d '.) setvar MAJ_KERNELVER = $(echo -n $KERNELVER | cut -f 1 -d '-' | cut -f 1 -d '.) #111014 2 or 3. #allow only 2.6.29 kernel+, mksquashfs v4.0... if test $MAJ_KERNELVER = "2" -a $SUB_KERNELVER != "" -a $SUB_KERNELVER -lt 29 { echo "ERROR: only kernel 2.6.29+ allowed " exit 1 } echo "You have chosen $KERNELPKG, which is version $KERNELVER." #now do the kernel... rm -rf zdrv mkdir -p zdrv echo case (KERNELPKG) { *.pet { rm -f $KERNELPKG setvar KERNPKGNAMEONLY = "$(basename $KERNELPKG .pet)" rm -rf $KERNPKGNAMEONLY cp ../kernel_pkgs/${KERNELPKG} ./ pet2tgz $KERNELPKG tar -xf $KERNPKGNAMEONLY.tar.?z rm -rf zdrv/ mv -f $KERNPKGNAMEONLY zdrv/ } #*.txz|*.tgz) #TODO *.deb { dpkg-deb -x ../kernel_pkgs/${KERNELPKG} zdrv 1>/dev/null } } mv -f zdrv/etc/modules/firmware.dep zdrv/etc/modules/firmware.dep.${KERNELVER} #130613 kmod depmod wants these two... they are moved in later, but do it here also... mkdir -p zdrv/lib/modules/$KERNELVER test -f zdrv/etc/modules/modules.builtin && cp -a -f zdrv/etc/modules/modules.builtin zdrv/lib/modules/$KERNELVER/ test -f zdrv/etc/modules/modules.order && cp -a -f zdrv/etc/modules/modules.order zdrv/lib/modules/$KERNELVER/ cp -a zdrv/boot/System.map* ./System.map 2>/dev/null setvar USINGKMOD = ''no'' test $(grep '^kmod' ../woof-installed-packages) != "" && setvar USINGKMOD = ''yes'' if test $USINGKMOD = "no"{ if test ! -f zdrv/lib/modules/$KERNELVER/modules.dep{ busybox depmod -b zdrv -F System.map $KERNELVER } } else { cp -f ../boot/kmod ./ ln -snf kmod depmod if test ! -f zdrv/lib/modules/$KERNELVER/modules.dep{ ./depmod -b zdrv -F System.map $KERNELVER } } #echo "deleting big modem modules..." for BIGMODS in agr hcf hsf intel5 Intel5 esscom pctel { for ONEBIGMOD in `find zdrv/lib/modules/${KERNELVER}/ -type f -name ${BIGMODS}*.ko -o -name ${BIGMODS}*HIDE` #101222 { setvar BIGMODNAME = "$(basename $ONEBIGMOD)" echo -n "deleting $BIGMODNAME " test -f $ONEBIGMOD && rm -f $ONEBIGMOD } } rm -rf zdrv/lib/modules/all-firmware/hsfmodem* 2>/dev/null rm -rf zdrv/lib/modules/all-firmware/hcfpcimodem* 2>/dev/null rm -rf zdrv/lib/modules/all-firmware/intel536ep* 2>/dev/null rm -rf zdrv/lib/modules/all-firmware/intel537* 2>/dev/null if test $USINGKMOD = "no"{ #130418 #cp -f ../boot/depmod ./ busybox depmod -b zdrv -F System.map $KERNELVER } else { cp -f ../boot/kmod ./kmod ln -snf kmod depmod ./depmod -b zdrv -F System.map $KERNELVER } sync # move aufs-utils to zdrv for r in auibusy auplink mount.aufs umount.aufs aufs libau.so* aufs aufs.5 aubrsync aubusy auchk { find rootfs-complete/ -type f -name $r | sed 's|^rootfs-complete/||' | \ while read f { setvar dir = "zdrv/$(dirname $f)" mkdir -p $dir mv -f rootfs-complete/${f} $dir } } mv zdrv/boot/vmlinuz* build/vmlinuz sync #========================================== ${MKSQUASHFS} zdrv ${ZDRVSFS} ${COMPCHOICE} #========================================== sync chmod 644 ${ZDRVSFS} mv -f ${ZDRVSFS} build/ rm -rf rootfs-complete/boot 2>/dev/null rm -rf rootfs-complete/lib/modules 2>/dev/null ### END ###