card-kernel-write: Remove redundancies / add doc

Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
This commit is contained in:
Andreas Müller
2018-10-12 17:49:56 +02:00
parent f490e77e8e
commit 2b19d4d6fb
4 changed files with 45 additions and 29 deletions

View File

@@ -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
}

View File

@@ -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..."

View File

@@ -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..."

View File

@@ -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..."