On Mon, 2014-05-12 at 21:40 +0100, Ian Campbell wrote: > On Mon, 2014-05-12 at 20:27 +0100, Ian Campbell wrote: > > On Sat, 2014-05-10 at 21:38 +0100, Ian Campbell wrote: > > > I think the best approach > > > would be to add generic to XB-Subarchitecture and handle it using the > > > db, leaving the other subarches as the are. > > > > I've not managed to test it yet, but I suspect something like the > > following ought to do it... > > > > Not even close... This needs to run in the installer environment, which > doesn't have /usr/bin/flash-kernel, and it can't use in-target because > f-k won't be in the target yet. > > ./usr/share/flash-kernel/functions is available in the udeb so I think I > have a plan...
I think I've got it working, there were a few yakks to shave but I have now done a full install from sid on a cubietruck. I'll clean up the patches (rough versions attached), push and upload ASAP (hopefully tonight). Ian.
>From 5c01072eee13cfe1a5ec8f71cc2e5634515b56db Mon Sep 17 00:00:00 2001 From: Ian Campbell <i...@hellion.org.uk> Date: Thu, 15 May 2014 21:06:46 +0100 Subject: [PATCH 4/4] Install DTB in boot when invoked directly too This is needed at installation time or when flash-kernel is installed after the kernel (since the kernel postinst hooks aren't run for kernels which are already installed). --- functions | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/functions b/functions index d4b9271..f23e457 100644 --- a/functions +++ b/functions @@ -356,29 +356,22 @@ android_flash() { } handle_dtb() { - if [ "x$FK_KERNEL_HOOK_SCRIPT" = "x" ]; then - return - fi - local dtb_id="$(get_machine_field "$machine" "DTB-Id")" || : if [ "x$dtb_id" = "x" ]; then return fi local dtb="/usr/lib/linux-image-$kvers/$dtb_id" - case $FK_KERNEL_HOOK_SCRIPT in - postinst.d) + if [ "x$FK_KERNEL_HOOK_SCRIPT" = "xpostrm.d" ] ; then + rm -f "/boot/dtb-$kvers" + else if [ -e $dtb ]; then echo "Installing $dtb_id $kvers into /boot" >&2 cp "$dtb" "/boot/dtb-$kvers" else echo "$dtb not found" >&2 fi - ;; - postrm.d) - rm -f "/boot/dtb-$kvers" - ;; - esac + fi } main() { @@ -410,7 +403,9 @@ fi kvers="$1" # Install/remove any DTB from postinst, regardless of version -handle_dtb +if [ -n "$kvers" ] ; then + handle_dtb +fi latest_version=$(linux-version list | linux-version sort | tail -1) if [ -n "$kvers" ] && [ "x$force" != "xyes" ] && [ "$kvers" != "$latest_version" ] && [ "$FK_KERNEL_HOOK_SCRIPT" = "postinst.d" ]; then @@ -440,6 +435,8 @@ if [ "$kvers" != "$latest_version" ] && [ "x$force" = "xyes" ]; then echo "flash-kernel: WARNING: Installing any new kernel package might override this." >&2 else kvers="$latest_version" + # Make sure we install the DTB for $latest_version + handle_dtb fi # accumulate multiple calls in a trigger to only run flash-kernel once; the -- 1.7.10.4
>From 656e1372cf30d8425c9a972e57a968aaa698ae07 Mon Sep 17 00:00:00 2001 From: Ian Campbell <i...@hellion.org.uk> Date: Thu, 15 May 2014 20:58:27 +0100 Subject: [PATCH 3/4] Support for arm*/generic subarch, based on db --- debian/changelog | 2 ++ debian/control | 2 +- debian/flash-kernel-installer.isinstallable | 11 +++++++++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index d5e816d..8c6c3b0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -5,6 +5,8 @@ flash-kernel (3.18) UNRELEASED; urgency=medium * Copy the dtb (if any) to /boot/dtb-$kversion in kernel postinst hook. * Allow use of the kernel version in boot scripts. * Support kernel flavours with a hyphen in (e.g. armmp-lpae). + * Run installer udeb on arm*/generic subarch iff the machine is listed in the + db. -- Ian Campbell <i...@hellion.org.uk> Mon, 12 May 2014 20:12:39 +0100 diff --git a/debian/control b/debian/control index 561625d..835f28f 100644 --- a/debian/control +++ b/debian/control @@ -30,7 +30,7 @@ Section: debian-installer Priority: standard Package-Type: udeb Architecture: armel armhf -XB-Subarchitecture: iop32x ixp4xx kirkwood orion5x s3c24xx mx5 +XB-Subarchitecture: iop32x ixp4xx kirkwood orion5x s3c24xx mx5 generic Provides: bootable-system Depends: cdebconf-udeb, installed-base XB-Installer-Menu-Item: 7300 diff --git a/debian/flash-kernel-installer.isinstallable b/debian/flash-kernel-installer.isinstallable index ce85af3..51bf153 100755 --- a/debian/flash-kernel-installer.isinstallable +++ b/debian/flash-kernel-installer.isinstallable @@ -20,6 +20,17 @@ case "`archdetect`" in arm*/s3c24xx) exit 0 ;; + arm*/generic) + FK_DIR="/usr/share/flash-kernel" + + . ${FK_DIR}/functions + get_machine + if check_supported "$machine" ; then + exit 0 + else + exit 1 + fi + ;; # Don't activate it by default *) exit 1 -- 1.7.10.4
>From d7dcf7fdc69b6cb3eb842157072f42890ba8ee46 Mon Sep 17 00:00:00 2001 From: Ian Campbell <i...@hellion.org.uk> Date: Thu, 15 May 2014 20:58:04 +0100 Subject: [PATCH 2/4] Fix support for kernel flavours containing a hyphen (e.g armmp-lpae) --- debian/changelog | 3 ++- functions | 21 +++++++++++++++------ test_functions | 24 ++++++++++++++++++++++++ 3 files changed, 41 insertions(+), 7 deletions(-) diff --git a/debian/changelog b/debian/changelog index 734618d..d5e816d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -3,7 +3,8 @@ flash-kernel (3.18) UNRELEASED; urgency=medium * Add --force option to install a specific kernel version. * Add support for the Cubietruck. * Copy the dtb (if any) to /boot/dtb-$kversion in kernel postinst hook. - * Allow use the kernel version in boot scripts. + * Allow use of the kernel version in boot scripts. + * Support kernel flavours with a hyphen in (e.g. armmp-lpae). -- Ian Campbell <i...@hellion.org.uk> Mon, 12 May 2014 20:12:39 +0100 diff --git a/functions b/functions index 523c080..d4b9271 100644 --- a/functions +++ b/functions @@ -121,8 +121,9 @@ get_machine() { get_kfile_suffix() { local kfile="$1" + local tail="${2:+-$2}" - echo "$kfile" | sed -e 's/.*-//' + echo "$kfile" | sed -e "s/.*-\([^-]*$tail\)/\\1/" } # this is case-sensitive and doesn't support fields spanning multiple lines @@ -471,17 +472,25 @@ ifilesize=$(stat -c '%s' "$ifile") if [ -L "$kfile" ]; then kfile=$(readlink -e "$kfile") fi -kfile_suffix=$(get_kfile_suffix "$kfile") if ! check_supported "$machine"; then error "Unsupported platform." fi if kflavors="$(get_machine_field "$machine" "Kernel-Flavors")"; then - if ! check_kflavors "$kfile_suffix" $kflavors; then - echo "Kernel suffix $kfile_suffix does not match any of the expected flavors ($kflavors), therefore not writing it to flash." >&2 - exit 0 - fi + kfile_suffix="" + while [ "$kfile_suffix" != "$kfile" ] ; do + kfile_suffix=$(get_kfile_suffix "$kfile" "$kfile_suffix") + + if check_kflavors "$kfile_suffix" $kflavors; then + break; + fi + done +fi + +if [ "$kfile_suffix" = "$kfile" ]; then + echo "Kernel $kfile does not match any of the expected flavors ($kflavors), therefore not writing it to flash." >&2 + exit 0 fi echo "flash-kernel: installing version $kvers" >&2 diff --git a/test_functions b/test_functions index 25c56d6..664782d 100755 --- a/test_functions +++ b/test_functions @@ -93,6 +93,14 @@ test_check_kflavors() { echo "Expected check_kflavors to succeed with kernel suffix in expected flavors, but it failed" >&2 exit 1 fi + if ! check_kflavors "kflavor1-suffix" "klavor1" "kflavor1-suffix" "kflavor2"; then + echo "Expected check_kflavours to succeed with double-barrelled kernel suffix in expected flavours, but it failed" >&2 + exit 1 + fi + if check_kflavors "kflavor1-suffix" "klavor1" "kflavor2"; then + echo "Expected check_kflavours to fail with double-barrelled kernel suffix not in expected flavours, but it succeeded" >&2 + exit 1 + fi if ! check_kflavors "" "kflavor1" "kflavor2" "kflavor3"; then echo "Expected check_kflavors to succeed with empty kernel suffix, but it failed" >&2 exit 1 @@ -301,6 +309,22 @@ test_get_kfile_suffix() { echo "Expected kernel file suffix to be kirkwood but got $kfile_suffix" >&2 exit 1 fi + kfile_suffix="" + kfile_suffix=$(get_kfile_suffix "/boot/vmlinuz-3.10-1-armmp-lpae" "$kfile_suffix") + if [ "$kfile_suffix" != "lpae" ]; then + echo "Expected kernel file suffix to be lpae but got $kfile_suffix" >&2 + exit 1 + fi + kfile_suffix=$(get_kfile_suffix "/boot/vmlinuz-3.10-1-armmp-lpae" "$kfile_suffix") + if [ "$kfile_suffix" != "armmp-lpae" ]; then + echo "Expected kernel file suffix to be armmp-lpae but got $kfile_suffix" >&2 + exit 1 + fi + kfile_suffix=$(get_kfile_suffix "/boot/vmlinuz-3.10-1-armmp") + if [ "$kfile_suffix" != "armmp" ]; then + echo "Expected kernel file suffix to be armmp but got $kfile_suffix" >&2 + exit 1 + fi ) } add_test test_get_kfile_suffix -- 1.7.10.4
>From 957719f38baa5edfa90b4987011664213189e794 Mon Sep 17 00:00:00 2001 From: Ian Campbell <i...@hellion.org.uk> Date: Thu, 15 May 2014 20:40:01 +0100 Subject: [PATCH 1/4] cubietruck: Allow armmp-lpae kernel and install u-boot-tools --- db/all.db | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/db/all.db b/db/all.db index 189aefd..68f85b4 100644 --- a/db/all.db +++ b/db/all.db @@ -65,10 +65,11 @@ Required-Packages: u-boot-tools Bootloader-Sets-Incorrect-Root: yes Machine: Cubietech Cubietruck -Kernel-Flavors: armmp +Kernel-Flavors: armmp armmp-lpae Boot-Script-Path: /boot/boot.scr DTB-Id: sun7i-a20-cubietruck.dtb U-Boot-Script-Name: bootscr.sunxi +Required-Packages: u-boot-tools Bootloader-Sets-Incorrect-Root: no Machine: D-Link DNS-323 -- 1.7.10.4