summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNitin A Kamble <nitin.a.kamble@intel.com>2014-07-29 11:34:45 -0700
committerRichard Purdie <richard.purdie@linuxfoundation.org>2014-08-02 09:26:14 +0100
commit3b19f90bdfca520a6e00057cacb103f8a55feac6 (patch)
tree6d14c46a4cc04097a04aae9fd1adb7a22c838449
parent463c9f4d3abeaa46ba8aa2b287b62c907c39359b (diff)
downloadpoky-3b19f90bdfca520a6e00057cacb103f8a55feac6.tar.gz
INITRD var: make it a list of filesystem images
The initrd image used by the Linux kernel is list of file system images concatenated together and presented as a single initrd file at boot time. So far the initrd is a single filesystem image. But in cases like to support early microcode loading, the initrd image need to have multiple filesystem images concatenated together. This commit is extending the INITRD variable from a single filesystem image to a list of filesystem images to satisfy the need mentioned above. (From OE-Core rev: b0ac481dda99d8f4be8015964fcb2cb01afce08c) Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/classes/boot-directdisk.bbclass13
-rw-r--r--meta/classes/bootimg.bbclass27
-rw-r--r--meta/classes/grub-efi.bbclass2
-rw-r--r--meta/classes/syslinux.bbclass2
-rw-r--r--meta/conf/documentation.conf2
5 files changed, 35 insertions, 11 deletions
diff --git a/meta/classes/boot-directdisk.bbclass b/meta/classes/boot-directdisk.bbclass
index 0da9932f4f..995d3e7fc6 100644
--- a/meta/classes/boot-directdisk.bbclass
+++ b/meta/classes/boot-directdisk.bbclass
@@ -71,10 +71,17 @@ boot_direct_populate() {
71 # Install bzImage, initrd, and rootfs.img in DEST for all loaders to use. 71 # Install bzImage, initrd, and rootfs.img in DEST for all loaders to use.
72 install -m 0644 ${STAGING_KERNEL_DIR}/bzImage $dest/vmlinuz 72 install -m 0644 ${STAGING_KERNEL_DIR}/bzImage $dest/vmlinuz
73 73
74 if [ -n "${INITRD}" ] && [ -s "${INITRD}" ]; then 74 # initrd is made of concatenation of multiple filesystem images
75 install -m 0644 ${INITRD} $dest/initrd 75 if [ -n "${INITRD}" ]; then
76 rm -f $dest/initrd
77 for fs in ${INITRD}
78 do
79 if [ -n "${fs}" ] && [ -s "${fs}" ]; then
80 cat ${fs} >> $dest/initrd
81 fi
82 done
83 chmod 0644 $dest/initrd
76 fi 84 fi
77
78} 85}
79 86
80build_boot_dd() { 87build_boot_dd() {
diff --git a/meta/classes/bootimg.bbclass b/meta/classes/bootimg.bbclass
index d52aacea81..7b3ce65910 100644
--- a/meta/classes/bootimg.bbclass
+++ b/meta/classes/bootimg.bbclass
@@ -18,7 +18,7 @@
18# an hdd) 18# an hdd)
19 19
20# External variables (also used by syslinux.bbclass) 20# External variables (also used by syslinux.bbclass)
21# ${INITRD} - indicates a filesystem image to use as an initrd (optional) 21# ${INITRD} - indicates a list of filesystem images to concatenate and use as an initrd (optional)
22# ${COMPRESSISO} - Transparent compress ISO, reduce size ~40% if set to 1 22# ${COMPRESSISO} - Transparent compress ISO, reduce size ~40% if set to 1
23# ${NOISO} - skip building the ISO image if set to 1 23# ${NOISO} - skip building the ISO image if set to 1
24# ${NOHDD} - skip building the HDD image if set to 1 24# ${NOHDD} - skip building the HDD image if set to 1
@@ -67,9 +67,17 @@ populate() {
67 67
68 # Install bzImage, initrd, and rootfs.img in DEST for all loaders to use. 68 # Install bzImage, initrd, and rootfs.img in DEST for all loaders to use.
69 install -m 0644 ${STAGING_KERNEL_DIR}/bzImage ${DEST}/vmlinuz 69 install -m 0644 ${STAGING_KERNEL_DIR}/bzImage ${DEST}/vmlinuz
70 70
71 if [ -n "${INITRD}" ] && [ -s "${INITRD}" ]; then 71 # initrd is made of concatenation of multiple filesystem images
72 install -m 0644 ${INITRD} ${DEST}/initrd 72 if [ -n "${INITRD}" ]; then
73 rm -f ${DEST}/initrd
74 for fs in ${INITRD}
75 do
76 if [ -s "${fs}" ]; then
77 cat ${fs} >> ${DEST}/initrd
78 fi
79 done
80 chmod 0644 ${DEST}/initrd
73 fi 81 fi
74 82
75 if [ -n "${ROOTFS}" ] && [ -s "${ROOTFS}" ]; then 83 if [ -n "${ROOTFS}" ] && [ -s "${ROOTFS}" ]; then
@@ -80,10 +88,19 @@ populate() {
80 88
81build_iso() { 89build_iso() {
82 # Only create an ISO if we have an INITRD and NOISO was not set 90 # Only create an ISO if we have an INITRD and NOISO was not set
83 if [ -z "${INITRD}" ] || [ ! -s "${INITRD}" ] || [ "${NOISO}" = "1" ]; then 91 if [ -z "${INITRD}" ] || [ "${NOISO}" = "1" ]; then
84 bbnote "ISO image will not be created." 92 bbnote "ISO image will not be created."
85 return 93 return
86 fi 94 fi
95 # ${INITRD} is a list of multiple filesystem images
96 for fs in ${INITRD}
97 do
98 if [ ! -s "${fs}" ]; then
99 bbnote "ISO image will not be created. ${fs} is invalid."
100 return
101 fi
102 done
103
87 104
88 populate ${ISODIR} 105 populate ${ISODIR}
89 106
diff --git a/meta/classes/grub-efi.bbclass b/meta/classes/grub-efi.bbclass
index 505d032cc8..47bd35e049 100644
--- a/meta/classes/grub-efi.bbclass
+++ b/meta/classes/grub-efi.bbclass
@@ -7,7 +7,7 @@
7# Provide grub-efi specific functions for building bootable images. 7# Provide grub-efi specific functions for building bootable images.
8 8
9# External variables 9# External variables
10# ${INITRD} - indicates a filesystem image to use as an initrd (optional) 10# ${INITRD} - indicates a list of filesystem images to concatenate and use as an initrd (optional)
11# ${ROOTFS} - indicates a filesystem image to include as the root filesystem (optional) 11# ${ROOTFS} - indicates a filesystem image to include as the root filesystem (optional)
12# ${GRUB_GFXSERIAL} - set this to 1 to have graphics and serial in the boot menu 12# ${GRUB_GFXSERIAL} - set this to 1 to have graphics and serial in the boot menu
13# ${LABELS} - a list of targets for the automatic config 13# ${LABELS} - a list of targets for the automatic config
diff --git a/meta/classes/syslinux.bbclass b/meta/classes/syslinux.bbclass
index b9701bf237..d6498d98bb 100644
--- a/meta/classes/syslinux.bbclass
+++ b/meta/classes/syslinux.bbclass
@@ -5,7 +5,7 @@
5# Provide syslinux specific functions for building bootable images. 5# Provide syslinux specific functions for building bootable images.
6 6
7# External variables 7# External variables
8# ${INITRD} - indicates a filesystem image to use as an initrd (optional) 8# ${INITRD} - indicates a list of filesystem images to concatenate and use as an initrd (optional)
9# ${ROOTFS} - indicates a filesystem image to include as the root filesystem (optional) 9# ${ROOTFS} - indicates a filesystem image to include as the root filesystem (optional)
10# ${AUTO_SYSLINUXMENU} - set this to 1 to enable creating an automatic menu 10# ${AUTO_SYSLINUXMENU} - set this to 1 to enable creating an automatic menu
11# ${LABELS} - a list of targets for the automatic config 11# ${LABELS} - a list of targets for the automatic config
diff --git a/meta/conf/documentation.conf b/meta/conf/documentation.conf
index 7fa3f318b9..31fbd6c43b 100644
--- a/meta/conf/documentation.conf
+++ b/meta/conf/documentation.conf
@@ -225,7 +225,7 @@ INHIBIT_PACKAGE_STRIP[doc] = "If set to "1", causes the build to not strip binar
225INHERIT[doc] = "Causes the named class to be inherited at this point during parsing. The variable is only valid in configuration files." 225INHERIT[doc] = "Causes the named class to be inherited at this point during parsing. The variable is only valid in configuration files."
226INHERIT_DISTRO[doc] = "Lists classes that will be inherited at the distribution level. It is unlikely that you want to edit this variable." 226INHERIT_DISTRO[doc] = "Lists classes that will be inherited at the distribution level. It is unlikely that you want to edit this variable."
227INITRAMFS_FSTYPES[doc] = "Defines the format for the output image of an initial RAM disk (initramfs), which is used during boot." 227INITRAMFS_FSTYPES[doc] = "Defines the format for the output image of an initial RAM disk (initramfs), which is used during boot."
228INITRD[doc] = "Indicates a filesystem image to use as an initial RAM disk (initrd)." 228INITRD[doc] = "Indicates list of filesystem images to concatenate and use as an initial RAM disk (initrd)."
229INITSCRIPT_NAME[doc] = "The filename of the initialization script as installed to ${sysconfdir}/init.d." 229INITSCRIPT_NAME[doc] = "The filename of the initialization script as installed to ${sysconfdir}/init.d."
230INITSCRIPT_PACKAGES[doc] = "A list of the packages that contain initscripts. This variable is used in recipes when using update-rc.d.bbclass. The variable is optional and defaults to the PN variable." 230INITSCRIPT_PACKAGES[doc] = "A list of the packages that contain initscripts. This variable is used in recipes when using update-rc.d.bbclass. The variable is optional and defaults to the PN variable."
231INITSCRIPT_PARAMS[doc] = "Specifies the options to pass to update-rc.d. The variable is mandatory and is used in recipes when using update-rc.d.bbclass." 231INITSCRIPT_PARAMS[doc] = "Specifies the options to pass to update-rc.d. The variable is mandatory and is used in recipes when using update-rc.d.bbclass."