* [PATCH 1/5] init-install: Use swap_ratio in the calulation of swap_size
2012-07-04 4:33 [PATCH 0/5] Live installer fixes and EFI support Darren Hart
@ 2012-07-04 4:33 ` Darren Hart
2012-07-04 4:33 ` [PATCH 2/5] init-install: Correct ext2->ext3 typo in logging Darren Hart
` (4 subsequent siblings)
5 siblings, 0 replies; 8+ messages in thread
From: Darren Hart @ 2012-07-04 4:33 UTC (permalink / raw)
To: openembedded-core, Richard Purdie, Khem Raj, Tom Zanussi,
Kishore Bodke, Saul Wold
swap_size currently uses a hard coded percentage and ignores the
swap_ratio variable. Fortunately they are the same value currently. Make
the calculation use the variable to avoid problems in the future.
Signed-off-by: Darren Hart <dvhart@linux.intel.com>
---
.../initrdscripts/files/init-install.sh | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/meta/recipes-core/initrdscripts/files/init-install.sh b/meta/recipes-core/initrdscripts/files/init-install.sh
index 01ff829..3005f20 100644
--- a/meta/recipes-core/initrdscripts/files/init-install.sh
+++ b/meta/recipes-core/initrdscripts/files/init-install.sh
@@ -81,7 +81,7 @@ cat /proc/mounts > /etc/mtab
disk_size=$(parted /dev/${device} unit mb print | grep Disk | cut -d" " -f 3 | sed -e "s/MB//")
-swap_size=$((disk_size*5/100))
+swap_size=$((disk_size*swap_ratio/100))
rootfs_size=$((disk_size-boot_size-swap_size))
rootfs_start=$((boot_size + 1))
--
1.7.5.4
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 2/5] init-install: Correct ext2->ext3 typo in logging
2012-07-04 4:33 [PATCH 0/5] Live installer fixes and EFI support Darren Hart
2012-07-04 4:33 ` [PATCH 1/5] init-install: Use swap_ratio in the calulation of swap_size Darren Hart
@ 2012-07-04 4:33 ` Darren Hart
2012-07-04 4:34 ` [PATCH 3/5] init-install: Clean up partition alignment Darren Hart
` (3 subsequent siblings)
5 siblings, 0 replies; 8+ messages in thread
From: Darren Hart @ 2012-07-04 4:33 UTC (permalink / raw)
To: openembedded-core, Richard Purdie, Khem Raj, Tom Zanussi,
Kishore Bodke, Saul Wold
We create both the boot and root partitions as ext3 now, update the
logging accordingly.
Signed-off-by: Darren Hart <dvhart@linux.intel.com>
---
.../initrdscripts/files/init-install.sh | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/meta/recipes-core/initrdscripts/files/init-install.sh b/meta/recipes-core/initrdscripts/files/init-install.sh
index 3005f20..8d21dd1 100644
--- a/meta/recipes-core/initrdscripts/files/init-install.sh
+++ b/meta/recipes-core/initrdscripts/files/init-install.sh
@@ -123,7 +123,7 @@ parted /dev/${device} mkpart primary $swap_start $disk_size
parted /dev/${device} print
-echo "Formatting $bootfs to ext2..."
+echo "Formatting $bootfs to ext3..."
mkfs.ext3 $bootfs
echo "Formatting $rootfs to ext3..."
--
1.7.5.4
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 3/5] init-install: Clean up partition alignment
2012-07-04 4:33 [PATCH 0/5] Live installer fixes and EFI support Darren Hart
2012-07-04 4:33 ` [PATCH 1/5] init-install: Use swap_ratio in the calulation of swap_size Darren Hart
2012-07-04 4:33 ` [PATCH 2/5] init-install: Correct ext2->ext3 typo in logging Darren Hart
@ 2012-07-04 4:34 ` Darren Hart
2012-07-04 4:34 ` [PATCH 4/5] grub-efi: Do not use help2man Darren Hart
` (2 subsequent siblings)
5 siblings, 0 replies; 8+ messages in thread
From: Darren Hart @ 2012-07-04 4:34 UTC (permalink / raw)
To: openembedded-core, Richard Purdie, Khem Raj, Tom Zanussi,
Kishore Bodke, Saul Wold
The current partitioning scheme leaves a 1MB gap between all the
generated partitions by adding a 1 to the end of the last partition to
use as the start of the next. parted is smart enough to not overlap
start and end positions of the same value. This avoids the 1 MB gaps.
Rather than pad the disk with 1MB in the beginning and cut it off at the
MB boundary on the end, we can use 0% and 100% to allow parted to do the
required math and use as much of the disk as possible.
Signed-off-by: Darren Hart <dvhart@linux.intel.com>
---
.../initrdscripts/files/init-install.sh | 8 ++++----
1 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/meta/recipes-core/initrdscripts/files/init-install.sh b/meta/recipes-core/initrdscripts/files/init-install.sh
index 8d21dd1..0ac4949 100644
--- a/meta/recipes-core/initrdscripts/files/init-install.sh
+++ b/meta/recipes-core/initrdscripts/files/init-install.sh
@@ -84,9 +84,9 @@ disk_size=$(parted /dev/${device} unit mb print | grep Disk | cut -d" " -f 3 | s
swap_size=$((disk_size*swap_ratio/100))
rootfs_size=$((disk_size-boot_size-swap_size))
-rootfs_start=$((boot_size + 1))
+rootfs_start=$((boot_size))
rootfs_end=$((rootfs_start+rootfs_size))
-swap_start=$((rootfs_end+1))
+swap_start=$((rootfs_end))
# MMC devices are special in a couple of ways
# 1) they use a partition prefix character 'p'
@@ -113,13 +113,13 @@ echo "Creating new partition table on /dev/${device} ..."
parted /dev/${device} mklabel msdos
echo "Creating boot partition on $bootfs"
-parted /dev/${device} mkpart primary 1 $boot_size
+parted /dev/${device} mkpart primary 0% $boot_size
echo "Creating rootfs partition on $rootfs"
parted /dev/${device} mkpart primary $rootfs_start $rootfs_end
echo "Creating swap partition on $swap"
-parted /dev/${device} mkpart primary $swap_start $disk_size
+parted /dev/${device} mkpart primary $swap_start 100%
parted /dev/${device} print
--
1.7.5.4
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 4/5] grub-efi: Do not use help2man
2012-07-04 4:33 [PATCH 0/5] Live installer fixes and EFI support Darren Hart
` (2 preceding siblings ...)
2012-07-04 4:34 ` [PATCH 3/5] init-install: Clean up partition alignment Darren Hart
@ 2012-07-04 4:34 ` Darren Hart
2012-07-04 4:34 ` [PATCH 5/5] EFI: Make installer EFI aware Darren Hart
2012-07-09 17:03 ` [PATCH 0/5] Live installer fixes and EFI support Saul Wold
5 siblings, 0 replies; 8+ messages in thread
From: Darren Hart @ 2012-07-04 4:34 UTC (permalink / raw)
To: openembedded-core, Richard Purdie, Khem Raj, Tom Zanussi,
Kishore Bodke, Saul Wold
Fixes [YOCTO #2527]
Modify configure.ac and the generated configure script to avoid using
help2man during the compilation process. For grub-efi we are only
deploying the EFI payload and are not installing grub on the target
root filesystem. Therefor, we do not need the man pages.
Cleanup the SRC_URI whitespace while we add a line to it.
Signed-off-by: Darren Hart <dvhart@linux.intel.com>
CC: Paul Eggleton <paul.eggleton@linux.intel.com>
CC: Radu Moisan <radu.moisan@intel.com>
grub-efi-native whitespace cleanup (INC)
Signed-off-by: Darren Hart <dvhart@linux.intel.com>
---
.../grub/files/grub-1.99-disable-help2man.patch | 231 ++++++++++++++++++++
meta/recipes-bsp/grub/grub-efi-native_1.99.bb | 17 +-
2 files changed, 240 insertions(+), 8 deletions(-)
create mode 100644 meta/recipes-bsp/grub/files/grub-1.99-disable-help2man.patch
diff --git a/meta/recipes-bsp/grub/files/grub-1.99-disable-help2man.patch b/meta/recipes-bsp/grub/files/grub-1.99-disable-help2man.patch
new file mode 100644
index 0000000..3ffefdc
--- /dev/null
+++ b/meta/recipes-bsp/grub/files/grub-1.99-disable-help2man.patch
@@ -0,0 +1,231 @@
+Upstream-Status: Inappropriate (Bitbake build environment)
+
+We do not need the man pages when building just the EFI payload for the target,
+all the tools are built for the host. This does not trigger GRUB's built-in
+cross-compilation check, so force it. After the change to configure.ac,
+autogen.sh was run in devshell and the resulting configure was used to generate
+the configure diff. The configure diff was included to avoid having to add
+autogen.sh to a do_configure_prepend() routine which would slow down the build
+unnecessarily.
+
+Signed-off-by: Darren Hart <dvhart@linux.intel.com>
+
+Index: grub-1.99/configure.ac
+===================================================================
+--- grub-1.99.orig/configure.ac
++++ grub-1.99/configure.ac
+@@ -275,11 +275,12 @@ if test x$grub_cv_apple_cc = xyes ; then
+ HOST_CFLAGS="$HOST_CFLAGS -fnested-functions"
+ fi
+
+-if test "x$cross_compiling" = xyes; then
+- AC_MSG_WARN([cannot generate manual pages while cross compiling])
+-else
+- AC_PATH_PROG(HELP2MAN, help2man)
+-fi
++# Force behaving as though we are cross-compiling with respect to HELP2MAN
++#if test "x$cross_compiling" = xyes; then
++AC_MSG_WARN([cannot generate manual pages while cross compiling])
++#else
++# AC_PATH_PROG(HELP2MAN, help2man)
++#fi
+
+ # Check for functions and headers.
+ AC_CHECK_FUNCS(posix_memalign memalign asprintf vasprintf getextmntent)
+Index: grub-1.99/configure
+===================================================================
+--- grub-1.99.orig/configure
++++ grub-1.99/configure
+@@ -1172,7 +1172,6 @@ GL_COND_LIBTOOL_FALSE
+ GL_COND_LIBTOOL_TRUE
+ BUILD_CC
+ LIBUTIL
+-HELP2MAN
+ POSUB
+ LTLIBINTL
+ LIBINTL
+@@ -1204,6 +1203,7 @@ LEXLIB
+ am__fastdepCC_FALSE
+ am__fastdepCC_TRUE
+ CCDEPMODE
++am__nodep
+ AMDEPBACKSLASH
+ AMDEP_FALSE
+ AMDEP_TRUE
+@@ -3011,7 +3011,6 @@ _ACEOF
+ # Let the site file select an alternate cache file if it wants to.
+ # Prefer an explicitly selected file to automatically selected ones.
+ ac_site_file1=NONE
+-ac_site_file2=NONE
+ if test -n "$CONFIG_SITE"; then
+ # We do not want a PATH search for config.site.
+ case $CONFIG_SITE in #((
+@@ -3019,14 +3018,8 @@ if test -n "$CONFIG_SITE"; then
+ */*) ac_site_file1=$CONFIG_SITE;;
+ *) ac_site_file1=./$CONFIG_SITE;;
+ esac
+-elif test "x$prefix" != xNONE; then
+- ac_site_file1=$prefix/share/config.site
+- ac_site_file2=$prefix/etc/config.site
+-else
+- ac_site_file1=$ac_default_prefix/share/config.site
+- ac_site_file2=$ac_default_prefix/etc/config.site
+ fi
+-for ac_site_file in "$ac_site_file1" "$ac_site_file2"
++for ac_site_file in $ac_site_file1
+ do
+ test "x$ac_site_file" = xNONE && continue
+ if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+@@ -3313,8 +3306,9 @@ case $target_os in *\ *) target_os=`echo
+ # The aliases save the names the user supplied, while $host etc.
+ # will get canonicalized.
+ test -n "$target_alias" &&
+- test "$program_prefix$program_suffix$program_transform_name" = \
+- NONENONEs,x,x, &&
++ test "$target_alias" != "$host_alias" &&
++ test "$program_prefix$program_suffix$program_transform_name" = \
++ NONENONEs,x,x, &&
+ program_prefix=${target_alias}-
+
+ am__api_version='1.11'
+@@ -3786,11 +3780,11 @@ MAKEINFO=${MAKEINFO-"${am_missing_run}ma
+
+ # We need awk for the "check" target. The system "awk" is bad on
+ # some platforms.
+-# Always define AMTAR for backward compatibility.
+-
+-AMTAR=${AMTAR-"${am_missing_run}tar"}
++# Always define AMTAR for backward compatibility. Yes, it's still used
++# in the wild :-( We should find a proper way to deprecate it ...
++AMTAR='$${TAR-tar}'
+
+-am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
++am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
+
+
+
+@@ -4256,6 +4250,7 @@ fi
+ if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
++ am__nodep='_no'
+ fi
+ if test "x$enable_dependency_tracking" != xno; then
+ AMDEP_TRUE=
+@@ -5069,6 +5064,7 @@ else
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
++ rm -rf conftest.dir
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+@@ -5128,7 +5124,7 @@ else
+ break
+ fi
+ ;;
+- msvisualcpp | msvcmsys)
++ msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+ # This compiler won't grok `-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+@@ -6044,6 +6040,7 @@ else
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
++ rm -rf conftest.dir
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+@@ -6103,7 +6100,7 @@ else
+ break
+ fi
+ ;;
+- msvisualcpp | msvcmsys)
++ msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+ # This compiler won't grok `-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+@@ -6848,6 +6845,7 @@ else
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
++ rm -rf conftest.dir
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+@@ -6905,7 +6903,7 @@ else
+ break
+ fi
+ ;;
+- msvisualcpp | msvcmsys)
++ msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+ # This compiler won't grok `-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+@@ -9529,51 +9527,13 @@ if test x$grub_cv_apple_cc = xyes ; then
+ HOST_CFLAGS="$HOST_CFLAGS -fnested-functions"
+ fi
+
+-if test "x$cross_compiling" = xyes; then
+- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot generate manual pages while cross compiling" >&5
++# Force behaving as though we are cross-compiling with respect to HELP2MAN
++#if test "x$cross_compiling" = xyes; then
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot generate manual pages while cross compiling" >&5
+ $as_echo "$as_me: WARNING: cannot generate manual pages while cross compiling" >&2;}
+-else
+- # Extract the first word of "help2man", so it can be a program name with args.
+-set dummy help2man; ac_word=$2
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+-$as_echo_n "checking for $ac_word... " >&6; }
+-if ${ac_cv_path_HELP2MAN+:} false; then :
+- $as_echo_n "(cached) " >&6
+-else
+- case $HELP2MAN in
+- [\\/]* | ?:[\\/]*)
+- ac_cv_path_HELP2MAN="$HELP2MAN" # Let the user override the test with a path.
+- ;;
+- *)
+- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+- ac_cv_path_HELP2MAN="$as_dir/$ac_word$ac_exec_ext"
+- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+- break 2
+- fi
+-done
+- done
+-IFS=$as_save_IFS
+-
+- ;;
+-esac
+-fi
+-HELP2MAN=$ac_cv_path_HELP2MAN
+-if test -n "$HELP2MAN"; then
+- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HELP2MAN" >&5
+-$as_echo "$HELP2MAN" >&6; }
+-else
+- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+-$as_echo "no" >&6; }
+-fi
+-
+-
+-fi
++#else
++# AC_PATH_PROG(HELP2MAN, help2man)
++#fi
+
+ # Check for functions and headers.
+ for ac_func in posix_memalign memalign asprintf vasprintf getextmntent
+@@ -20309,6 +20269,7 @@ $as_echo_n "checking whether \`$CC' gene
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+
++void g (int);
+ void f (int (*p) (void));
+ void g (int i)
+ {
diff --git a/meta/recipes-bsp/grub/grub-efi-native_1.99.bb b/meta/recipes-bsp/grub/grub-efi-native_1.99.bb
index 20dcdb9..86a6d44 100644
--- a/meta/recipes-bsp/grub/grub-efi-native_1.99.bb
+++ b/meta/recipes-bsp/grub/grub-efi-native_1.99.bb
@@ -16,20 +16,21 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
# FIXME: We should be able to optionally drop freetype as a dependency
DEPENDS = "help2man-native autogen-native"
RDEPENDS_${PN} = "diffutils freetype"
-PR = "r9"
+PR = "r10"
# Native packages do not normally rebuild when the target changes.
# Ensure this is built once per HOST-TARGET pair.
PN := "grub-efi-${TRANSLATED_TARGET_ARCH}-native"
SRC_URI = "ftp://ftp.gnu.org/gnu/grub/grub-${PV}.tar.gz \
- file://grub-1.99_fix_for_automake_1.11.2.patch \
- file://grub-1.99-fpmath-sse-387-fix.patch \
- file://grub-1.99-gcc-4.7.0.patch \
- file://grub-1.99-gcc-4.7.0-uninitialized-var-errors.patch \
- file://grub-1.99-gcc-4.7.0-strict-aliasing-errors.patch \
- file://grub-1.99-fix-enable_execute_stack-check.patch \
- "
+ file://grub-1.99_fix_for_automake_1.11.2.patch \
+ file://grub-1.99-fpmath-sse-387-fix.patch \
+ file://grub-1.99-gcc-4.7.0.patch \
+ file://grub-1.99-gcc-4.7.0-uninitialized-var-errors.patch \
+ file://grub-1.99-gcc-4.7.0-strict-aliasing-errors.patch \
+ file://grub-1.99-fix-enable_execute_stack-check.patch \
+ file://grub-1.99-disable-help2man.patch \
+ "
SRC_URI[md5sum] = "ca9f2a2d571b57fc5c53212d1d22e2b5"
SRC_URI[sha256sum] = "b91f420f2c51f6155e088e34ff99bea09cc1fb89585cf7c0179644e57abd28ff"
--
1.7.5.4
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 5/5] EFI: Make installer EFI aware
2012-07-04 4:33 [PATCH 0/5] Live installer fixes and EFI support Darren Hart
` (3 preceding siblings ...)
2012-07-04 4:34 ` [PATCH 4/5] grub-efi: Do not use help2man Darren Hart
@ 2012-07-04 4:34 ` Darren Hart
2012-07-06 17:18 ` Saul Wold
2012-07-09 17:03 ` [PATCH 0/5] Live installer fixes and EFI support Saul Wold
5 siblings, 1 reply; 8+ messages in thread
From: Darren Hart @ 2012-07-04 4:34 UTC (permalink / raw)
To: openembedded-core, Richard Purdie, Khem Raj, Tom Zanussi,
Kishore Bodke, Saul Wold
[YOCTO #1919]
Create a basic EFI installer script modeled after the existing installer
and add it to a new initramfs-live-install-efi recipe. Update the
init-live.sh script to distinguish between LABEL=install and
LABEL=install-efi and select the appropriate script. Add the efi
installer to core-image-minimal-initramfs.
Update grub-efi.bbclass to use "LABEL=install-efi" when it detects a
label of "install". This is clearly not ideal, but a proper fix would
involve decoupling the LABELS assignment from the image-live.bbclass
usage of SYSLINUX_LABELS. We should be able to address that in a
follow-on clean-up series.
Signed-off-by: Darren Hart <dvhart@linux.intel.com>
---
meta/classes/grub-efi.bbclass | 2 +
.../images/core-image-minimal-initramfs.bb | 2 +-
.../initrdscripts/files/init-install-efi.sh | 188 ++++++++++++++++++++
meta/recipes-core/initrdscripts/files/init-live.sh | 6 +-
4 files changed, 194 insertions(+), 4 deletions(-)
create mode 100644 meta/recipes-core/initrdscripts/files/init-install-efi.sh
diff --git a/meta/classes/grub-efi.bbclass b/meta/classes/grub-efi.bbclass
index 1efb43b..147accc 100644
--- a/meta/classes/grub-efi.bbclass
+++ b/meta/classes/grub-efi.bbclass
@@ -99,6 +99,8 @@ python build_grub_cfg() {
bb.data.update_data(localdata)
cfgfile.write('\nmenuentry \'%s\'{\n' % (label))
+ if label == "install":
+ label = "install-efi"
cfgfile.write('linux /vmlinuz LABEL=%s' % (label))
append = localdata.getVar('APPEND', True)
diff --git a/meta/recipes-core/images/core-image-minimal-initramfs.bb b/meta/recipes-core/images/core-image-minimal-initramfs.bb
index 4aeb618..7f6826c 100644
--- a/meta/recipes-core/images/core-image-minimal-initramfs.bb
+++ b/meta/recipes-core/images/core-image-minimal-initramfs.bb
@@ -3,7 +3,7 @@ DESCRIPTION = "Small image capable of booting a device. The kernel includes \
the Minimal RAM-based Initial Root Filesystem (initramfs), which finds the \
first “init” program more efficiently."
-IMAGE_INSTALL = "initramfs-live-boot initramfs-live-install busybox udev base-passwd"
+IMAGE_INSTALL = "initramfs-live-boot initramfs-live-install initramfs-live-install-efi busybox udev base-passwd"
# Do not pollute the initrd image with rootfs features
IMAGE_FEATURES = ""
diff --git a/meta/recipes-core/initrdscripts/files/init-install-efi.sh b/meta/recipes-core/initrdscripts/files/init-install-efi.sh
new file mode 100644
index 0000000..c762f4b
--- /dev/null
+++ b/meta/recipes-core/initrdscripts/files/init-install-efi.sh
@@ -0,0 +1,188 @@
+#!/bin/sh -e
+#
+# Copyright (c) 2012, Intel Corporation.
+# All rights reserved.
+#
+# install.sh [device_name] [rootfs_name] [video_mode] [vga_mode]
+#
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+
+# We need 20 Mb for the boot partition
+boot_size=20
+
+# 5% for the swap
+swap_ratio=5
+
+found="no"
+
+echo "Searching for a hard drive..."
+for device in 'hda' 'hdb' 'sda' 'sdb' 'mmcblk0' 'mmcblk1'
+do
+ if [ -e /sys/block/${device}/removable ]; then
+ if [ "$(cat /sys/block/${device}/removable)" = "0" ]; then
+ found="yes"
+
+ while true; do
+ # Try sleeping here to avoid getting kernel messages
+ # obscuring/confusing user
+ sleep 5
+ echo "Found drive at /dev/${device}. Do you want to install this image there ? [y/n]"
+ read answer
+ if [ "$answer" = "y" ] ; then
+ break
+ fi
+
+ if [ "$answer" = "n" ] ; then
+ found=no
+ break
+ fi
+
+ echo "Please answer y or n"
+ done
+ fi
+ fi
+
+ if [ "$found" = "yes" ]; then
+ break;
+ fi
+
+done
+
+if [ "$found" = "no" ]; then
+ exit 1
+fi
+
+echo "Installing image on /dev/${device}"
+
+#
+# The udev automounter can cause pain here, kill it
+#
+rm -f /etc/udev/scripts/mount*
+
+#
+# Unmount anything the automounter had mounted
+#
+umount /dev/${device}* 2> /dev/null || /bin/true
+
+# We always build with devtmpfs, this is not necessary
+#if [ ! -b /dev/sda ] ; then
+# mknod /dev/sda b 8 0
+#fi
+#
+#if [ ! -b /dev/sdb ] ; then
+# mknod /dev/sdb b 8 16
+#fi
+#
+#if [ ! -b /dev/loop0 ] ; then
+# mknod /dev/loop0 b 7 0
+#fi
+
+mkdir -p /tmp
+cat /proc/mounts > /etc/mtab
+
+disk_size=$(parted /dev/${device} unit mb print | grep Disk | cut -d" " -f 3 | sed -e "s/MB//")
+
+swap_size=$((disk_size*swap_ratio/100))
+rootfs_size=$((disk_size-boot_size-swap_size))
+
+rootfs_start=$((boot_size))
+rootfs_end=$((rootfs_start+rootfs_size))
+swap_start=$((rootfs_end))
+
+# MMC devices are special in a couple of ways
+# 1) they use a partition prefix character 'p'
+# 2) they are detected asynchronously (need rootwait)
+rootwait=""
+part_prefix=""
+if [ ! "${device#mmcblk}" = "${device}" ]; then
+ part_prefix="p"
+ rootwait="rootwait"
+fi
+bootfs=/dev/${device}${part_prefix}1
+rootfs=/dev/${device}${part_prefix}2
+swap=/dev/${device}${part_prefix}3
+
+echo "*****************"
+echo "Boot partition size: $boot_size MB ($bootfs)"
+echo "Rootfs partition size: $rootfs_size MB ($rootfs)"
+echo "Swap partition size: $swap_size MB ($swap)"
+echo "*****************"
+echo "Deleting partition table on /dev/${device} ..."
+dd if=/dev/zero of=/dev/${device} bs=512 count=2
+
+echo "Creating new partition table on /dev/${device} ..."
+parted /dev/${device} mklabel gpt
+
+echo "Creating boot partition on $bootfs"
+parted /dev/${device} mkpart primary 0% $boot_size
+
+echo "Creating rootfs partition on $rootfs"
+parted /dev/${device} mkpart primary $rootfs_start $rootfs_end
+
+echo "Creating swap partition on $swap"
+parted /dev/${device} mkpart primary $swap_start 100%
+
+parted /dev/${device} print
+
+echo "Formatting $bootfs to vfat..."
+mkfs.vfat $bootfs
+
+echo "Formatting $rootfs to ext3..."
+mkfs.ext3 $rootfs
+
+echo "Formatting swap partition...($swap)"
+mkswap $swap
+
+mkdir /ssd
+mkdir /rootmnt
+mkdir /bootmnt
+
+mount $rootfs /ssd
+mount -o rw,loop,noatime,nodiratime /media/$1/$2 /rootmnt
+
+echo "Copying rootfs files..."
+cp -a /rootmnt/* /ssd
+
+if [ -d /ssd/etc/ ] ; then
+ echo "$swap swap swap defaults 0 0" >> /ssd/etc/fstab
+
+ # We dont want udev to mount our root device while we're booting...
+ if [ -d /ssd/etc/udev/ ] ; then
+ echo "/dev/${device}" >> /ssd/etc/udev/mount.blacklist
+ fi
+fi
+
+umount /ssd
+umount /rootmnt
+
+echo "Preparing boot partition..."
+mount $bootfs /ssd
+
+EFIDIR="/ssd/EFI/BOOT"
+mkdir -p $EFIDIR
+GRUBCFG="$EFIDIR/grub.cfg"
+
+cp /media/$1/vmlinuz /ssd
+# Copy the efi loader and config (booti*.efi and grub.cfg)
+cp /media/$1/EFI/BOOT/* $EFIDIR
+
+# Update grub config for the installed image
+# Delete the install entry
+sed -i "/menuentry 'install'/,/^}/d" $GRUBCFG
+# Delete the initrd lines
+sed -i "/initrd /d" $GRUBCFG
+# Delete any LABEL= strings
+sed -i "s/ LABEL=[^ ]*/ /" $GRUBCFG
+# Replace the ramdisk root with the install device and include other options
+sed -i "s@ root=[^ ]*@ root=$rootfs rw $rootwait quiet@" $GRUBCFG
+
+umount /ssd
+sync
+
+echo "Remove your installation media, and press ENTER"
+
+read enter
+
+echo "Rebooting..."
+reboot -f
diff --git a/meta/recipes-core/initrdscripts/files/init-live.sh b/meta/recipes-core/initrdscripts/files/init-live.sh
index 737dae4..d02ed19 100644
--- a/meta/recipes-core/initrdscripts/files/init-live.sh
+++ b/meta/recipes-core/initrdscripts/files/init-live.sh
@@ -110,11 +110,11 @@ case $label in
fi
fi
;;
- install)
+ install|install-efi)
if [ -f /media/$i/$ISOLINUX/$ROOT_IMAGE ] ; then
- ./install.sh $i/$ISOLINUX $ROOT_IMAGE $video_mode $vga_mode
+ ./$label.sh $i/$ISOLINUX $ROOT_IMAGE $video_mode $vga_mode
else
- fatal "Could not find install script"
+ fatal "Could not find $label script"
fi
# If we're getting here, we failed...
--
1.7.5.4
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 5/5] EFI: Make installer EFI aware
2012-07-04 4:34 ` [PATCH 5/5] EFI: Make installer EFI aware Darren Hart
@ 2012-07-06 17:18 ` Saul Wold
0 siblings, 0 replies; 8+ messages in thread
From: Saul Wold @ 2012-07-06 17:18 UTC (permalink / raw)
To: Darren Hart; +Cc: openembedded-core
On 07/03/2012 09:34 PM, Darren Hart wrote:
> [YOCTO #1919]
>
> Create a basic EFI installer script modeled after the existing installer
> and add it to a new initramfs-live-install-efi recipe. Update the
> init-live.sh script to distinguish between LABEL=install and
> LABEL=install-efi and select the appropriate script. Add the efi
> installer to core-image-minimal-initramfs.
>
> Update grub-efi.bbclass to use "LABEL=install-efi" when it detects a
> label of "install". This is clearly not ideal, but a proper fix would
> involve decoupling the LABELS assignment from the image-live.bbclass
> usage of SYSLINUX_LABELS. We should be able to address that in a
> follow-on clean-up series.
>
> Signed-off-by: Darren Hart <dvhart@linux.intel.com>
> ---
> meta/classes/grub-efi.bbclass | 2 +
> .../images/core-image-minimal-initramfs.bb | 2 +-
> .../initrdscripts/files/init-install-efi.sh | 188 ++++++++++++++++++++
> meta/recipes-core/initrdscripts/files/init-live.sh | 6 +-
> 4 files changed, 194 insertions(+), 4 deletions(-)
> create mode 100644 meta/recipes-core/initrdscripts/files/init-install-efi.sh
>
> diff --git a/meta/classes/grub-efi.bbclass b/meta/classes/grub-efi.bbclass
> index 1efb43b..147accc 100644
> --- a/meta/classes/grub-efi.bbclass
> +++ b/meta/classes/grub-efi.bbclass
> @@ -99,6 +99,8 @@ python build_grub_cfg() {
> bb.data.update_data(localdata)
>
> cfgfile.write('\nmenuentry \'%s\'{\n' % (label))
> + if label == "install":
> + label = "install-efi"
> cfgfile.write('linux /vmlinuz LABEL=%s' % (label))
>
> append = localdata.getVar('APPEND', True)
> diff --git a/meta/recipes-core/images/core-image-minimal-initramfs.bb b/meta/recipes-core/images/core-image-minimal-initramfs.bb
> index 4aeb618..7f6826c 100644
> --- a/meta/recipes-core/images/core-image-minimal-initramfs.bb
> +++ b/meta/recipes-core/images/core-image-minimal-initramfs.bb
> @@ -3,7 +3,7 @@ DESCRIPTION = "Small image capable of booting a device. The kernel includes \
> the Minimal RAM-based Initial Root Filesystem (initramfs), which finds the \
> first “init” program more efficiently."
>
> -IMAGE_INSTALL = "initramfs-live-boot initramfs-live-install busybox udev base-passwd"
> +IMAGE_INSTALL = "initramfs-live-boot initramfs-live-install initramfs-live-install-efi busybox udev base-passwd"
What provides the initramfs-live-install-efi?
I don't see it anywhere and I am getting the following ERROR on build:
> ERROR: Nothing RPROVIDES 'initramfs-live-install-efi' (but /intel/poky/distro/meta/recipes-core/images/core-image-minimal-initramfs.bb RDEPENDS on or otherwise requires it)
> NOTE: Runtime target 'initramfs-live-install-efi' is unbuildable, removing...
> Missing or unbuildable dependency chain was: ['initramfs-live-install-efi']
> ERROR: Required build target 'core-image-minimal' has no buildable providers.
> Missing or unbuildable dependency chain was: ['core-image-minimal', 'core-image-minimal-initramfs', 'initramfs-live-install-efi']
Sau!
>
> # Do not pollute the initrd image with rootfs features
> IMAGE_FEATURES = ""
> diff --git a/meta/recipes-core/initrdscripts/files/init-install-efi.sh b/meta/recipes-core/initrdscripts/files/init-install-efi.sh
> new file mode 100644
> index 0000000..c762f4b
> --- /dev/null
> +++ b/meta/recipes-core/initrdscripts/files/init-install-efi.sh
> @@ -0,0 +1,188 @@
> +#!/bin/sh -e
> +#
> +# Copyright (c) 2012, Intel Corporation.
> +# All rights reserved.
> +#
> +# install.sh [device_name] [rootfs_name] [video_mode] [vga_mode]
> +#
> +
> +PATH=/sbin:/bin:/usr/sbin:/usr/bin
> +
> +# We need 20 Mb for the boot partition
> +boot_size=20
> +
> +# 5% for the swap
> +swap_ratio=5
> +
> +found="no"
> +
> +echo "Searching for a hard drive..."
> +for device in 'hda' 'hdb' 'sda' 'sdb' 'mmcblk0' 'mmcblk1'
> +do
> + if [ -e /sys/block/${device}/removable ]; then
> + if [ "$(cat /sys/block/${device}/removable)" = "0" ]; then
> + found="yes"
> +
> + while true; do
> + # Try sleeping here to avoid getting kernel messages
> + # obscuring/confusing user
> + sleep 5
> + echo "Found drive at /dev/${device}. Do you want to install this image there ? [y/n]"
> + read answer
> + if [ "$answer" = "y" ] ; then
> + break
> + fi
> +
> + if [ "$answer" = "n" ] ; then
> + found=no
> + break
> + fi
> +
> + echo "Please answer y or n"
> + done
> + fi
> + fi
> +
> + if [ "$found" = "yes" ]; then
> + break;
> + fi
> +
> +done
> +
> +if [ "$found" = "no" ]; then
> + exit 1
> +fi
> +
> +echo "Installing image on /dev/${device}"
> +
> +#
> +# The udev automounter can cause pain here, kill it
> +#
> +rm -f /etc/udev/scripts/mount*
> +
> +#
> +# Unmount anything the automounter had mounted
> +#
> +umount /dev/${device}* 2> /dev/null || /bin/true
> +
> +# We always build with devtmpfs, this is not necessary
> +#if [ ! -b /dev/sda ] ; then
> +# mknod /dev/sda b 8 0
> +#fi
> +#
> +#if [ ! -b /dev/sdb ] ; then
> +# mknod /dev/sdb b 8 16
> +#fi
> +#
> +#if [ ! -b /dev/loop0 ] ; then
> +# mknod /dev/loop0 b 7 0
> +#fi
> +
> +mkdir -p /tmp
> +cat /proc/mounts > /etc/mtab
> +
> +disk_size=$(parted /dev/${device} unit mb print | grep Disk | cut -d" " -f 3 | sed -e "s/MB//")
> +
> +swap_size=$((disk_size*swap_ratio/100))
> +rootfs_size=$((disk_size-boot_size-swap_size))
> +
> +rootfs_start=$((boot_size))
> +rootfs_end=$((rootfs_start+rootfs_size))
> +swap_start=$((rootfs_end))
> +
> +# MMC devices are special in a couple of ways
> +# 1) they use a partition prefix character 'p'
> +# 2) they are detected asynchronously (need rootwait)
> +rootwait=""
> +part_prefix=""
> +if [ ! "${device#mmcblk}" = "${device}" ]; then
> + part_prefix="p"
> + rootwait="rootwait"
> +fi
> +bootfs=/dev/${device}${part_prefix}1
> +rootfs=/dev/${device}${part_prefix}2
> +swap=/dev/${device}${part_prefix}3
> +
> +echo "*****************"
> +echo "Boot partition size: $boot_size MB ($bootfs)"
> +echo "Rootfs partition size: $rootfs_size MB ($rootfs)"
> +echo "Swap partition size: $swap_size MB ($swap)"
> +echo "*****************"
> +echo "Deleting partition table on /dev/${device} ..."
> +dd if=/dev/zero of=/dev/${device} bs=512 count=2
> +
> +echo "Creating new partition table on /dev/${device} ..."
> +parted /dev/${device} mklabel gpt
> +
> +echo "Creating boot partition on $bootfs"
> +parted /dev/${device} mkpart primary 0% $boot_size
> +
> +echo "Creating rootfs partition on $rootfs"
> +parted /dev/${device} mkpart primary $rootfs_start $rootfs_end
> +
> +echo "Creating swap partition on $swap"
> +parted /dev/${device} mkpart primary $swap_start 100%
> +
> +parted /dev/${device} print
> +
> +echo "Formatting $bootfs to vfat..."
> +mkfs.vfat $bootfs
> +
> +echo "Formatting $rootfs to ext3..."
> +mkfs.ext3 $rootfs
> +
> +echo "Formatting swap partition...($swap)"
> +mkswap $swap
> +
> +mkdir /ssd
> +mkdir /rootmnt
> +mkdir /bootmnt
> +
> +mount $rootfs /ssd
> +mount -o rw,loop,noatime,nodiratime /media/$1/$2 /rootmnt
> +
> +echo "Copying rootfs files..."
> +cp -a /rootmnt/* /ssd
> +
> +if [ -d /ssd/etc/ ] ; then
> + echo "$swap swap swap defaults 0 0" >> /ssd/etc/fstab
> +
> + # We dont want udev to mount our root device while we're booting...
> + if [ -d /ssd/etc/udev/ ] ; then
> + echo "/dev/${device}" >> /ssd/etc/udev/mount.blacklist
> + fi
> +fi
> +
> +umount /ssd
> +umount /rootmnt
> +
> +echo "Preparing boot partition..."
> +mount $bootfs /ssd
> +
> +EFIDIR="/ssd/EFI/BOOT"
> +mkdir -p $EFIDIR
> +GRUBCFG="$EFIDIR/grub.cfg"
> +
> +cp /media/$1/vmlinuz /ssd
> +# Copy the efi loader and config (booti*.efi and grub.cfg)
> +cp /media/$1/EFI/BOOT/* $EFIDIR
> +
> +# Update grub config for the installed image
> +# Delete the install entry
> +sed -i "/menuentry 'install'/,/^}/d" $GRUBCFG
> +# Delete the initrd lines
> +sed -i "/initrd /d" $GRUBCFG
> +# Delete any LABEL= strings
> +sed -i "s/ LABEL=[^ ]*/ /" $GRUBCFG
> +# Replace the ramdisk root with the install device and include other options
> +sed -i "s@ root=[^ ]*@ root=$rootfs rw $rootwait quiet@" $GRUBCFG
> +
> +umount /ssd
> +sync
> +
> +echo "Remove your installation media, and press ENTER"
> +
> +read enter
> +
> +echo "Rebooting..."
> +reboot -f
> diff --git a/meta/recipes-core/initrdscripts/files/init-live.sh b/meta/recipes-core/initrdscripts/files/init-live.sh
> index 737dae4..d02ed19 100644
> --- a/meta/recipes-core/initrdscripts/files/init-live.sh
> +++ b/meta/recipes-core/initrdscripts/files/init-live.sh
> @@ -110,11 +110,11 @@ case $label in
> fi
> fi
> ;;
> - install)
> + install|install-efi)
> if [ -f /media/$i/$ISOLINUX/$ROOT_IMAGE ] ; then
> - ./install.sh $i/$ISOLINUX $ROOT_IMAGE $video_mode $vga_mode
> + ./$label.sh $i/$ISOLINUX $ROOT_IMAGE $video_mode $vga_mode
> else
> - fatal "Could not find install script"
> + fatal "Could not find $label script"
> fi
>
> # If we're getting here, we failed...
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 0/5] Live installer fixes and EFI support
2012-07-04 4:33 [PATCH 0/5] Live installer fixes and EFI support Darren Hart
` (4 preceding siblings ...)
2012-07-04 4:34 ` [PATCH 5/5] EFI: Make installer EFI aware Darren Hart
@ 2012-07-09 17:03 ` Saul Wold
5 siblings, 0 replies; 8+ messages in thread
From: Saul Wold @ 2012-07-09 17:03 UTC (permalink / raw)
To: Darren Hart; +Cc: openembedded-core
On 07/03/2012 09:33 PM, Darren Hart wrote:
> Cleanup the existing installer a bit.
> Fix the grub-efi-native help2man build issue.
> Add EFI support to the installer.
>
> I have tested both PCBIOS install as well as EFI install from a live USB key to
> the internal MMC device on the FRI2 BSP.
>
> The following changes since commit a6b6df1350149c116050cb93c3c7b4802c709d31:
>
> task-core-tools-debug: Added openssh-sftp-server. (2012-07-03 14:52:38 +0100)
>
> are available in the git repository at:
> git://git.yoctoproject.org/user-contrib/dvhart/oe-core installer
> http://git.yoctoproject.org/cgit.cgi/user-contrib/dvhart/oe-core/log/?h=installer
>
> Darren Hart (5):
> init-install: Use swap_ratio in the calulation of swap_size
> init-install: Correct ext2->ext3 typo in logging
> init-install: Clean up partition alignment
> grub-efi: Do not use help2man
Merged the above set into OE-Core
> EFI: Make installer EFI aware
As noted, this is missing some bits that define: initramfs-live-install-efi
Sau!
>
> meta/classes/grub-efi.bbclass | 2 +
> .../grub/files/grub-1.99-disable-help2man.patch | 231 ++++++++++++++++++++
> meta/recipes-bsp/grub/grub-efi-native_1.99.bb | 17 +-
> .../images/core-image-minimal-initramfs.bb | 2 +-
> .../initrdscripts/files/init-install-efi.sh | 188 ++++++++++++++++
> .../initrdscripts/files/init-install.sh | 12 +-
> meta/recipes-core/initrdscripts/files/init-live.sh | 6 +-
> 7 files changed, 440 insertions(+), 18 deletions(-)
> create mode 100644 meta/recipes-bsp/grub/files/grub-1.99-disable-help2man.patch
> create mode 100644 meta/recipes-core/initrdscripts/files/init-install-efi.sh
>
^ permalink raw reply [flat|nested] 8+ messages in thread