aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDarren Hart <dvhart@linux.intel.com>2013-02-21 09:28:02 -0800
committerRoss Burton <ross.burton@intel.com>2013-03-01 14:57:48 +0000
commitd961e42674bf929adfff391c6f3f284a7e7b0d95 (patch)
tree1122776852cda8fb2ece6ff44ed061141d26f7ae
parentf8d44580e7caf29f1b532c89041469847c36f45f (diff)
downloadopenembedded-core-d961e42674bf929adfff391c6f3f284a7e7b0d95.tar.gz
install: Look for grub2 files on the initramfs, not rootfs
Fixes [YOCTO #3870] atom-pc - cannot boot image on netbook after install The problem here is that grub2 is installed but a grub 1 menu.lst is created at install time. At boot, grub2 doesn't find a grub.cfg file and drops to the grub shell. This happens because the installer is looking for 40_custom (a grub2 file) on the rootfs, but grub2 isn't installed on the rootfs. It exists in the initramfs. Patching the installer to look on the initramfs resolves the problem. Note that the problem may have occurred if grub2 used to be installed on the rootfs but was later removed. In any case, the installer is HORRIBLE and really needs to be completely redesigned as part of the deployment effort. For now, this should get the live image installer limping along again. Tested on a Toshiba NB-305. Signed-off-by: Darren Hart <dvhart@linux.intel.com> Cc: alexandru.c.georgescu@intel.com Cc: sgw@linux.intel.com Cc: ross.burton@intel.com Cc: richard.purdie@intel.com Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/recipes-core/initrdscripts/files/init-install.sh25
-rw-r--r--meta/recipes-core/initrdscripts/initramfs-live-install_1.0.bb2
2 files changed, 14 insertions, 13 deletions
diff --git a/meta/recipes-core/initrdscripts/files/init-install.sh b/meta/recipes-core/initrdscripts/files/init-install.sh
index c1f8cba5d3..2c4486a149 100644
--- a/meta/recipes-core/initrdscripts/files/init-install.sh
+++ b/meta/recipes-core/initrdscripts/files/init-install.sh
@@ -151,14 +151,19 @@ if [ -d /ssd/etc/ ] ; then
fi
fi
-if [ -f /ssd/etc/grub.d/40_custom ] ; then
+if [ -f /etc/grub.d/40_custom ] ; then
echo "Preparing custom grub2 menu..."
- sed -i "s@__ROOTFS__@$rootfs $rootwait@g" /ssd/etc/grub.d/40_custom
- sed -i "s/__VIDEO_MODE__/$3/g" /ssd/etc/grub.d/40_custom
- sed -i "s/__VGA_MODE__/$4/g" /ssd/etc/grub.d/40_custom
- sed -i "s/__CONSOLE__/$5/g" /ssd/etc/grub.d/40_custom
+ GRUBCFG="/bootmnt/boot/grub/grub.cfg"
mount $bootfs /bootmnt
- cp /ssd/etc/grub.d/40_custom /bootmnt/40_custom
+ mkdir -p $(dirname $GRUBCFG)
+ cp /etc/grub.d/40_custom $GRUBCFG
+ sed -i "s@__ROOTFS__@$rootfs $rootwait@g" $GRUBCFG
+ sed -i "s/__VIDEO_MODE__/$3/g" $GRUBCFG
+ sed -i "s/__VGA_MODE__/$4/g" $GRUBCFG
+ sed -i "s/__CONSOLE__/$5/g" $GRUBCFG
+ sed -i "/#/d" $GRUBCFG
+ sed -i "/exec tail/d" $GRUBCFG
+ chmod 0444 $GRUBCFG
umount /bootmnt
fi
@@ -171,12 +176,8 @@ grub-install --root-directory=/ssd /dev/${device}
echo "(hd0) /dev/${device}" > /ssd/boot/grub/device.map
-if [ -f /ssd/40_custom ] ; then
- mv /ssd/40_custom /ssd/boot/grub/grub.cfg
- sed -i "/#/d" /ssd/boot/grub/grub.cfg
- sed -i "/exec tail/d" /ssd/boot/grub/grub.cfg
- chmod 0444 /ssd/boot/grub/grub.cfg
-else
+# If grub.cfg doesn't exist, assume GRUB 0.97 and create a menu.lst
+if [ ! -f /ssd/boot/grub/grub.cfg ] ; then
echo "Preparing custom grub menu..."
echo "default 0" > /ssd/boot/grub/menu.lst
echo "timeout 30" >> /ssd/boot/grub/menu.lst
diff --git a/meta/recipes-core/initrdscripts/initramfs-live-install_1.0.bb b/meta/recipes-core/initrdscripts/initramfs-live-install_1.0.bb
index ac73ef80aa..0f80f0e28a 100644
--- a/meta/recipes-core/initrdscripts/initramfs-live-install_1.0.bb
+++ b/meta/recipes-core/initrdscripts/initramfs-live-install_1.0.bb
@@ -3,7 +3,7 @@ LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
SRC_URI = "file://init-install.sh"
-PR = "r7"
+PR = "r8"
RDEPENDS_${PN} = "grub parted e2fsprogs-mke2fs"