[meta-intel] [PATCHv5 10/10] rmc: don't install boot entries when RMC entries exist

Jianxun Zhang jianxun.zhang at linux.intel.com
Wed Aug 3 11:04:21 PDT 2016


RMC installer copies RMC entries after copying default entries. But
default entries aren't overwritten when RMC entries have different file
names from them, so they will be kept on target after installation.

RMC Bootloader skips loading default entries when it can get RMC entries
from RMC database file. However, RMC database file isn't deployed onto
target in installation by design.

As a result, default entries show up along with deployed RMC entries once
target reboots after installation.

We cannot get rid of these default entries in RMC deployment section because
it doesn't know which entry file should be removed.

An easier way is not to deploy default entries when any boot entry files
assumingly from RMC are already deployed at a later step. Similar logic
applies to loader.conf too.

Signed-off-by: Jianxun Zhang <jianxun.zhang at linux.intel.com>
---
 .../initrdscripts/files/init-install-efi.sh        | 31 +++++++++++++---------
 1 file changed, 18 insertions(+), 13 deletions(-)

diff --git a/common/recipes-core/initrdscripts/files/init-install-efi.sh b/common/recipes-core/initrdscripts/files/init-install-efi.sh
index 0b2ee46..7148005 100644
--- a/common/recipes-core/initrdscripts/files/init-install-efi.sh
+++ b/common/recipes-core/initrdscripts/files/init-install-efi.sh
@@ -208,21 +208,14 @@ fi
 mount $bootfs /boot
 echo "Preparing boot partition..."
 
-# RMC deployment
-RMC_CMD=/src_root/usr/bin/rmc
-RMC_DB=/run/media/$1/rmc.db
-
 EFIDIR="/boot/EFI/BOOT"
 mkdir -p $EFIDIR
-
 # Copy the efi loader
 cp /run/media/$1/EFI/BOOT/*.efi $EFIDIR
 
-# We only support gummiboot/systemd-boot. Leave grub-efi not changed.
-if [ -d /run/media/$1/loader ]; then
-    # copy config files for gummiboot
-    cp -dr /run/media/$1/loader /boot
-fi
+# RMC deployment
+RMC_CMD=/src_root/usr/bin/rmc
+RMC_DB=/run/media/$1/rmc.db
 
 # We don't want to quit when a step failed. For example,
 # a file system could not support some operations.
@@ -298,9 +291,21 @@ fi
 if [ -d /run/media/$1/loader ]; then
     rootuuid=$(blkid -o value -s PARTUUID ${rootfs})
     GUMMIBOOT_CFGS="/boot/loader/entries/*.conf"
-    # delete the install entry
-    # fixme: If RMC did deploy install.conf at previous steps, it is purged here...
-    rm -f /boot/loader/entries/install.conf
+    if [ -d /boot/loader ]; then
+        # Don't override loader.conf RMC already deployed
+        if [ ! -f /boot/loader/loader.conf ]; then
+            cp /run/media/$1/loader/loader.conf /boot/loader/
+        fi
+        # only copy built OE entries when RMC entries don't exist.
+        if [ ! -d /boot/loader/entries ] || [ ! ls /boot/loader/entries/*.conf &>/dev/null ]; then
+            cp -dr /run/media/$1/loader/entries /boot/loader
+        fi
+    else
+        # copy config files for gummiboot
+        cp -dr /run/media/$1/loader /boot
+        # delete the install entry
+        rm -f /boot/loader/entries/install.conf
+    fi
     # delete the initrd lines
     sed -i "/initrd /d" $GUMMIBOOT_CFGS
     # delete any LABEL= strings
-- 
2.7.4



More information about the meta-intel mailing list