On 02/27/2018 01:46 AM, Anuj Mittal wrote:
Hi Cal,

On 02/27/2018 04:12 AM, California Sullivan wrote:
Since kernels will not necessarily be installed as vmlinuz anymore,
don't assume that's its name for either the bootloader config or the
copy of the kernel.

Also, allow installing multiple kernels by searching for common kernel
names.

Signed-off-by: California Sullivan <california.l.sulli...@intel.com>
---
  .../initrdscripts/files/init-install.sh            | 37 ++++++++++++++++++++--
  1 file changed, 34 insertions(+), 3 deletions(-)

diff --git a/meta/recipes-core/initrdscripts/files/init-install.sh 
b/meta/recipes-core/initrdscripts/files/init-install.sh
index dade059c8f1..713a83092bf 100644
--- a/meta/recipes-core/initrdscripts/files/init-install.sh
+++ b/meta/recipes-core/initrdscripts/files/init-install.sh
@@ -256,9 +256,34 @@ fi
  umount /tgt_root
  umount /src_root
+echo "Looking for kernels to use as boot target.."
+# Find kernel to boot to
+# Give user options if multiple are found
+kernels="$(find /run/media/$1/ -type f  \
+           -name bzImage* -o -name zImage* \
+           -o -name vmlinux* -o -name vmlinuz* \
+           -o -name fitImage* \
+           | sed s:.*/::)"
+if [ -n "$(echo $kernels)" ]; then
+    # only one kernel entry if no space
+    if [ -z "$(echo $kernels | grep " ")" ]; then
+        kernel=$kernels
+        echo "$kernel will be used as the boot target"
+    else
+        echo "Which kernel do we want to boot by default? The following kernels 
were found:"
+        echo $kernels
+        read answer
+        kernel=$answer
+    fi
+else
+    echo "No kernels found, exiting..."
+    exit 1
+fi
+
We probably shouldn't be exiting this script at this point since we've
already made the partitions and copied everything except the kernel.

Since this script is invoked for installation after booting up, I guess
that at this point we will have at least one kernel that we can install?
You're right. Instead of bailing out, we should print a message that no kernels were found and take user input instead. We can also use this input to attempt a copy of the kernel to install, since if it wasn't found here it wouldn't be found below, either. I'll make these changes in a v2.


  # Handling of the target boot partition
  mount $bootfs /boot
  echo "Preparing boot partition..."
+
  if [ -f /etc/grub.d/00_header -a $grub_version -ne 0 ] ; then
      echo "Preparing custom grub2 menu..."
      root_part_uuid=$(blkid -o value -s PARTUUID ${rootfs})
@@ -268,7 +293,7 @@ if [ -f /etc/grub.d/00_header -a $grub_version -ne 0 ] ; 
then
      cat >$GRUBCFG <<_EOF
  menuentry "Linux" {
      search --no-floppy --fs-uuid $boot_uuid --set root
-    linux /vmlinuz root=PARTUUID=$root_part_uuid $rootwait rw $5 $3 $4 quiet
+    linux /$kernel root=PARTUUID=$root_part_uuid $rootwait rw $5 $3 $4 quiet
  }
  _EOF
      chmod 0444 $GRUBCFG
@@ -282,10 +307,16 @@ if [ $grub_version -eq 0 ] ; then
      echo "timeout 30" >> /boot/grub/menu.lst
      echo "title Live Boot/Install-Image" >> /boot/grub/menu.lst
      echo "root  (hd0,0)" >> /boot/grub/menu.lst
-    echo "kernel /vmlinuz root=$rootfs rw $3 $4 quiet" >> /boot/grub/menu.lst
+    echo "kernel /$kernel root=$rootfs rw $3 $4 quiet" >> /boot/grub/menu.lst
  fi
-cp /run/media/$1/vmlinuz /boot/
+# Copy kernel artifacts. To add more artifacts just add to types
+# For now just support kernel types already being used by something in OE-core
+for types in bzImage zImage vmlinux vmlinuz fitImage; do
+    for kernel in `find /run/media/$1/ -name $types*`; do
+        cp $kernel /boot
+    done
+done
Since the boot partition is still 20MB, there's a chance that this might
fail if there are enough kernels?

Perhaps the kernel selection logic should move to the top with user
choice and partition sizes be calculated accordingly?
Indeed. Good catch.

---
Cal


Thanks,
Anuj

--
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Reply via email to