From 2b19d4d6fbf30ca224eec06560ac820e52d91c3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=BCller?= Date: Fri, 12 Oct 2018 17:49:56 +0200 Subject: [PATCH] card-kernel-write: Remove redundancies / add doc MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Andreas Müller --- scripts/include/card-helpers.inc | 37 ++++++++++++++++++++++++- scripts/include/machine-imx.inc | 12 ++------ scripts/include/machine-raspberrypi.inc | 13 ++------- scripts/include/machine-ti-old-omap.inc | 12 ++------ 4 files changed, 45 insertions(+), 29 deletions(-) diff --git a/scripts/include/card-helpers.inc b/scripts/include/card-helpers.inc index c8b872a..34a4571 100644 --- a/scripts/include/card-helpers.inc +++ b/scripts/include/card-helpers.inc @@ -314,6 +314,28 @@ CheckPartitionTable() { unset retVal parttype partresult retVal PartTableReq } +# CopyKernelModules: Copy kernel modules to roofs expected in tmpdir +CopyKernelModules() { + # copy rootfs/lib/modules + for modules in `find ${DeployFileDir} -name "modules-${Machine}.tgz"`; do + EvalExAuto "tar xvzf ${modules} -C $tmpdir/" "\nUnpack kernel modules..." + done +} + +# RegisterKernelModules: Update kernel modules database by running depmod +# The following variables are expected: +# tmpdir: Path to the mounted rootfs +# DeployFileDir: Path to kernel image +# Machine: Name of the machine +# KernelAbiVersion: Kernel ABI version +RegisterKernelModules() { + # stolen from dempodwrapper + sys_map=`realpath ${DeployFileDir}/../../../pkgdata/${Machine}/kernel-depmod/System.map-$KernelAbiVersion` + EvalExAuto "depmod -a -b $tmpdir -F $sys_map $KernelAbiVersion" "\nRun depmod on modules..." +} + +# This is the function to be called by card-write scripts +# It expects an implementation of RootCardWriteCallback StartCardWrite() { # If not set on call - get defaults from machine.inc if [ -z "$Machine" ]; then @@ -324,10 +346,18 @@ StartCardWrite() { fi RunUserStartRoot + + # now we are root PrepareWrite RootCardWriteCallback } +# This is the function to be called by card-kernel-write scripts +# It expects an implementation of RootCardKernelWriteCallback +# and prepares the follwing kernel-write specific variables: +# KernelWithAbiName: This kernel image file name including ABI version and +# is used by many machines as name of kernel image +# KernelAbiVersion: Kernel ABI version itself required for depmod StartCardKernelWrite() { # If not set on call - get defaults from machine.inc if [ -z "$Machine" ]; then @@ -342,8 +372,13 @@ StartCardKernelWrite() { FindString="-name ${KernelImageType}-abiversion-* -type l" fi - RunUserStartRoot "${style_bold}Kernel on %DevicePath% will be overwritten by %DeployedFile%${style_normal}" + RunUserStartRoot "${style_bold}Kernel, devicetrees and kernel-modules on %DevicePath% will be overwritten by %DeployedFile%${style_normal}" + + # now we are root PrepareWrite + # Set variables used by RootCardKernelWriteCallback + KernelWithAbiName=`basename $DeployedFile | sed -e 's:-abiversion::'` + KernelAbiVersion=`echo $KernelWithAbiName | sed 's:'${KernelImageType}-'::g'` RootCardKernelWriteCallback } diff --git a/scripts/include/machine-imx.inc b/scripts/include/machine-imx.inc index 49191d2..290da05 100644 --- a/scripts/include/machine-imx.inc +++ b/scripts/include/machine-imx.inc @@ -54,17 +54,11 @@ RootCardKernelWriteCallback() { EvalExAuto "mount ${DevicePath}2 $tmpdir" "\nMount rootfs ${DevicePath}2 to $tmpdir..." # rootfs/boot kernel EvalExAuto "rm -f $tmpdir/boot/${KernelImageType}*" "\nRemove old kernels..." - KernelWithAbiName=`basename $DeployedFile | sed -e 's:-abiversion-::'` EvalExAuto "cp $DeployedFile $tmpdir/boot/$KernelWithAbiName" "\nCopy new kernel to /boot/$KernelWithAbiName..." EvalExAuto "ln -sf $KernelWithAbiName $tmpdir/boot/$KernelImageType" "\nLink kernel to /boot/$KernelImageType -> $KernelWithAbiName..." - # rootfs/lib/modules - kernel_abi_ver=`echo $KernelWithAbiName | sed 's:'${KernelImageType}'::g'` - for modules in `find ${DeployFileDir} -name "modules-${Machine}.tgz"`; do - EvalExAuto "tar xvzf ${modules} -C $tmpdir/" "\nUnpack kernel modules..." - done - # run depmod (stolen from dempodwrapper) - sys_map=`realpath ${DeployFileDir}/../../../pkgdata/${Machine}/kernel-depmod/System.map-$kernel_abi_ver` - EvalExAuto "depmod -a -b $tmpdir -F $sys_map $kernel_abi_ver" "\nRun depmod on modules..." + # kernel modules + CopyKernelModules + RegisterKernelModules # unmount rootfs EvalExAuto "sleep 1 && umount ${DevicePath}2" "\nUnmount rootfs..." diff --git a/scripts/include/machine-raspberrypi.inc b/scripts/include/machine-raspberrypi.inc index 4e7b666..0c3cb61 100644 --- a/scripts/include/machine-raspberrypi.inc +++ b/scripts/include/machine-raspberrypi.inc @@ -56,16 +56,9 @@ RootCardKernelWriteCallback() { # mount rootfs partition EvalExAuto "mount ${DevicePath}2 $tmpdir" "\nMount rootfs partition ${DevicePath}2 to $tmpdir..." # Note: /boot is empty by default!! - KernelFileName=`basename $DeployedFile` - KernelWithAbiName=`echo $KernelFileName | sed -e 's:-abiversion-::'` - # rootfs/lib/modules - kernel_abi_ver=`echo $KernelWithAbiName | sed 's:'${KernelImageType}'::g'` - for modules in `find ${DeployFileDir} -name "modules-${Machine}.tgz"`; do - EvalExAuto "tar xvzf ${modules} -C $tmpdir/" "\nUnpack kernel modules..." - done - # run depmod (stolen from dempodwrapper) - sys_map=`realpath ${DeployFileDir}/../../../pkgdata/${Machine}/kernel-depmod/System.map-$kernel_abi_ver` - EvalExAuto "depmod -a -b $tmpdir -F $sys_map $kernel_abi_ver" "\nRun depmod on modules..." + # kernel modules + CopyKernelModules + RegisterKernelModules # unmount rootfs EvalExAuto "sleep 1 && umount ${DevicePath}2" "\nUnmount rootfs..." diff --git a/scripts/include/machine-ti-old-omap.inc b/scripts/include/machine-ti-old-omap.inc index fe8d030..6bc1562 100644 --- a/scripts/include/machine-ti-old-omap.inc +++ b/scripts/include/machine-ti-old-omap.inc @@ -58,7 +58,6 @@ RootCardKernelWriteCallback() { EvalExAuto "mount ${DevicePath}2 $tmpdir" "\nMount rootfs ${DevicePath}2 to $tmpdir..." # rootfs/boot kernel EvalExAuto "rm -f $tmpdir/boot/${KernelImageType}*" "\nRemove old kernels..." - KernelWithAbiName=`basename $DeployedFile | sed -e 's:-abiversion::'` EvalExAuto "cp $DeployedFile $tmpdir/boot/$KernelWithAbiName" "\nCopy new kernel to /boot/$KernelWithAbiName..." EvalExAuto "ln -sf $KernelWithAbiName $tmpdir/boot/$KernelImageType" "\nLink kernel to /boot/$KernelImageType -> $KernelWithAbiName..." # devicetrees @@ -74,14 +73,9 @@ RootCardKernelWriteCallback() { dtbname=`basename $dtb` EvalExAuto "ln -sf $dtbname $tmpdir/boot/devicetree-$KernelImageType-$dtbname" "Create link $tmpdir/boot/devicetree-$KernelImageType-$dtbname -> $dtbname..." done - # rootfs/lib/modules - kernel_abi_ver=`echo $KernelWithAbiName | sed 's:'${KernelImageType}-'::g'` - for modules in `find ${DeployFileDir} -name "modules-${Machine}.tgz"`; do - EvalExAuto "tar xvzf ${modules} -C $tmpdir/" "\nUnpack kernel modules..." - done - # run depmod (stolen from dempodwrapper) - sys_map=`realpath ${DeployFileDir}/../../../pkgdata/${Machine}/kernel-depmod/System.map-$kernel_abi_ver` - EvalExAuto "depmod -a -b $tmpdir -F $sys_map $kernel_abi_ver" "\nRun depmod on modules..." + # kernel modules + CopyKernelModules + RegisterKernelModules # unmount rootfs EvalExAuto "sleep 1 && umount ${DevicePath}2" "\nUnmount rootfs..."