summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamuli Piippo <samuli.piippo@qt.io>2018-10-31 15:15:29 +0200
committerSamuli Piippo <samuli.piippo@qt.io>2018-11-01 07:55:40 +0000
commit1b57456064b33a5838882909d26f92c00982a0a0 (patch)
tree779f08ecc748ba03645563391fa195363a48ad37
parentdd7ede32632c6452c10aa424800c60a09cc42c8a (diff)
downloadmeta-boot2qt-1b57456064b33a5838882909d26f92c00982a0a0.tar.gz
intel: rework initramfs support
The WKS image creation ignored our old initramfs. Change to using an existing core-image-minimal-initramfs recipe and extend it with support for the internal MMC reader. Add separate recipe to combine the intel microcode and the new initramfs, and add wks file to use it. Remove all old recipes that are no longer used. Change-Id: I4e1f244685a7f2bd304aa23d9e07580fa9dc9652 Reviewed-by: Timo Aarnipuro <timo.aarnipuro@qt.io> Reviewed-by: Mikko Gronoff <mikko.gronoff@qt.io>
-rw-r--r--meta-boot2qt-distro/conf/distro/include/intel-corei7-64.conf11
-rw-r--r--meta-boot2qt/recipes-core/initramfs-basic/files/init.sh107
-rw-r--r--meta-boot2qt/recipes-core/initramfs-basic/init-basic.bb43
-rw-r--r--meta-boot2qt/recipes-core/initramfs-basic/initramfs-basic.bb50
-rw-r--r--meta-intel-extras/recipes/grub/grub-efi/grub.cfg10
-rw-r--r--meta-intel-extras/recipes/images/core-image-minimal-initramfs.bbappend (renamed from meta-intel-extras/recipes/initramfs-basic/initramfs-basic.bbappend)1
-rw-r--r--meta-intel-extras/recipes/initramfs-basic/init-basic/init-device.sh3
-rw-r--r--meta-intel-extras/recipes/initrdscripts/initramfs-framework/rtsx_pci_sdmmc8
-rw-r--r--meta-intel-extras/recipes/initrdscripts/initramfs-framework_1.0.bbappend (renamed from meta-intel-extras/recipes/initramfs-basic/init-basic.bbappend)12
-rw-r--r--meta-intel-extras/recipes/microcode-initramfs/microcode-initramfs.bb (renamed from meta-intel-extras/recipes/grub/grub-efi_%.bbappend)39
-rw-r--r--meta-intel-extras/wic/systemd-bootdisk-microcode-initramfs.wks13
11 files changed, 51 insertions, 246 deletions
diff --git a/meta-boot2qt-distro/conf/distro/include/intel-corei7-64.conf b/meta-boot2qt-distro/conf/distro/include/intel-corei7-64.conf
index 64432d3..8d106ce 100644
--- a/meta-boot2qt-distro/conf/distro/include/intel-corei7-64.conf
+++ b/meta-boot2qt-distro/conf/distro/include/intel-corei7-64.conf
@@ -1,6 +1,6 @@
1############################################################################ 1############################################################################
2## 2##
3## Copyright (C) 2016 The Qt Company Ltd. 3## Copyright (C) 2018 The Qt Company Ltd.
4## Contact: https://www.qt.io/licensing/ 4## Contact: https://www.qt.io/licensing/
5## 5##
6## This file is part of the Boot to Qt meta layer. 6## This file is part of the Boot to Qt meta layer.
@@ -38,12 +38,11 @@ QBSP_IMAGE_CONTENT ?= "\
38 ${IMAGE_LINK_NAME}.conf \ 38 ${IMAGE_LINK_NAME}.conf \
39 " 39 "
40 40
41INITRAMFS_IMAGE = "initramfs-basic" 41INITRAMFS_IMAGE = "core-image-minimal-initramfs"
42 42
43SYSVINIT_ENABLED_GETTYS = "1" 43SYSVINIT_ENABLED_GETTYS = "1"
44 44
45MACHINE_EXTRA_INSTALL += "\
46 grub-efi-config \
47 "
48
49SERIAL_CONSOLES += "115200;ttyUSB0" 45SERIAL_CONSOLES += "115200;ttyUSB0"
46
47WKS_FILE = "systemd-bootdisk-microcode-initramfs.wks"
48WKS_FILE_DEPENDS += "microcode-initramfs"
diff --git a/meta-boot2qt/recipes-core/initramfs-basic/files/init.sh b/meta-boot2qt/recipes-core/initramfs-basic/files/init.sh
deleted file mode 100644
index 94eb39b..0000000
--- a/meta-boot2qt/recipes-core/initramfs-basic/files/init.sh
+++ /dev/null
@@ -1,107 +0,0 @@
1#!/bin/sh
2
3PATH=/sbin:/bin:/usr/sbin:/usr/bin
4ROOT_MOUNT="/sysroot/"
5ROOT_DEVICE=""
6
7early_setup() {
8
9 mkdir -p /proc
10 mkdir -p /sys
11 mount -t proc proc /proc
12 mount -t sysfs sysfs /sys
13 mount -t devtmpfs none /dev
14
15 mkdir -p /run
16 mkdir -p /var/run
17}
18
19read_args() {
20
21 for arg in $(cat /proc/cmdline); do
22 value=$(echo ${arg} | cut -s -f2- -d '=')
23 case $arg in
24 root=*)
25 root=$value
26 ;;
27 debugshell*)
28 if [ -z "$value" ]; then
29 shelltimeout=30
30 else
31 shelltimeout=$value
32 fi
33 ;;
34 esac
35 done
36
37 if [ -z "$root" ] ; then
38 debug_shell "No root= specified via kernel command line."
39 else
40 case $root in
41 LABEL=*)
42 label=${root#LABEL=}
43 ;;
44 *)
45 debug_shell "This init script only supports root=LABEL=* for specifying root file system, but root=$root was provided."
46 ;;
47 esac
48 fi
49}
50
51mount_rootfs() {
52
53 mkdir -p $ROOT_MOUNT
54 mount $ROOT_DEVICE $ROOT_MOUNT
55 mount -n --move /proc $ROOT_MOUNT/proc
56 mount -n --move /sys $ROOT_MOUNT/sys
57 mount -n --move /dev $ROOT_MOUNT/dev
58
59 exec switch_root $ROOT_MOUNT /sbin/init || debug_shell "Couldn't switch_root."
60}
61
62switch_real_root() {
63
64 echo "Searching for media..."
65 C=0
66 while true
67 do
68
69 rootfs=$(findfs LABEL=$label)
70 if [ -n "$rootfs" ] ; then
71 ROOT_DEVICE=$rootfs
72 mount_rootfs
73 fi
74
75 # don't wait for more than $shelltimeout seconds, if it's set
76 if [ -n "$shelltimeout" ]; then
77 echo -n " " $(( $shelltimeout - $C ))
78 if [ $C -ge $shelltimeout ]; then
79 debug_shell "Cannot find root file system."
80 fi
81 C=$(( C + 1 ))
82 fi
83
84 sleep 1
85 done
86}
87
88debug_shell() {
89
90 echo ${1}
91 echo "Dropping to a shell."
92 exec sh
93}
94
95main() {
96
97 early_setup
98 read_args
99
100 if [ -f init-device ]; then
101 source init-device
102 fi
103
104 switch_real_root
105}
106
107main
diff --git a/meta-boot2qt/recipes-core/initramfs-basic/init-basic.bb b/meta-boot2qt/recipes-core/initramfs-basic/init-basic.bb
deleted file mode 100644
index 39d590a..0000000
--- a/meta-boot2qt/recipes-core/initramfs-basic/init-basic.bb
+++ /dev/null
@@ -1,43 +0,0 @@
1############################################################################
2##
3## Copyright (C) 2016 The Qt Company Ltd.
4## Contact: https://www.qt.io/licensing/
5##
6## This file is part of the Boot to Qt meta layer.
7##
8## $QT_BEGIN_LICENSE:GPL$
9## Commercial License Usage
10## Licensees holding valid commercial Qt licenses may use this file in
11## accordance with the commercial license agreement provided with the
12## Software or, alternatively, in accordance with the terms contained in
13## a written agreement between you and The Qt Company. For licensing terms
14## and conditions see https://www.qt.io/terms-conditions. For further
15## information use the contact form at https://www.qt.io/contact-us.
16##
17## GNU General Public License Usage
18## Alternatively, this file may be used under the terms of the GNU
19## General Public License version 3 or (at your option) any later version
20## approved by the KDE Free Qt Foundation. The licenses are as published by
21## the Free Software Foundation and appearing in the file LICENSE.GPL3
22## included in the packaging of this file. Please review the following
23## information to ensure the GNU General Public License requirements will
24## be met: https://www.gnu.org/licenses/gpl-3.0.html.
25##
26## $QT_END_LICENSE$
27##
28############################################################################
29
30SUMMARY = "Simple init script that mounts root filesystem by label."
31LICENSE = "The-Qt-Company-Commercial"
32LIC_FILES_CHKSUM = "file://${QT_LICENSE};md5=948f8877345cd66106f11031977a4625"
33SRC_URI = "file://init.sh"
34
35S = "${WORKDIR}"
36
37do_install () {
38 install -m 0755 ${WORKDIR}/init.sh ${D}/init
39}
40
41inherit allarch
42
43FILES_${PN} += "/init"
diff --git a/meta-boot2qt/recipes-core/initramfs-basic/initramfs-basic.bb b/meta-boot2qt/recipes-core/initramfs-basic/initramfs-basic.bb
deleted file mode 100644
index 283a681..0000000
--- a/meta-boot2qt/recipes-core/initramfs-basic/initramfs-basic.bb
+++ /dev/null
@@ -1,50 +0,0 @@
1############################################################################
2##
3## Copyright (C) 2016 The Qt Company Ltd.
4## Contact: https://www.qt.io/licensing/
5##
6## This file is part of the Boot to Qt meta layer.
7##
8## $QT_BEGIN_LICENSE:GPL$
9## Commercial License Usage
10## Licensees holding valid commercial Qt licenses may use this file in
11## accordance with the commercial license agreement provided with the
12## Software or, alternatively, in accordance with the terms contained in
13## a written agreement between you and The Qt Company. For licensing terms
14## and conditions see https://www.qt.io/terms-conditions. For further
15## information use the contact form at https://www.qt.io/contact-us.
16##
17## GNU General Public License Usage
18## Alternatively, this file may be used under the terms of the GNU
19## General Public License version 3 or (at your option) any later version
20## approved by the KDE Free Qt Foundation. The licenses are as published by
21## the Free Software Foundation and appearing in the file LICENSE.GPL3
22## included in the packaging of this file. Please review the following
23## information to ensure the GNU General Public License requirements will
24## be met: https://www.gnu.org/licenses/gpl-3.0.html.
25##
26## $QT_END_LICENSE$
27##
28############################################################################
29
30DESCRIPTION = "Basic initramfs image. Useful as a template for more advanced functionality."
31LICENSE = "The-Qt-Company-Commercial"
32LIC_FILES_CHKSUM = "file://${QT_LICENSE};md5=948f8877345cd66106f11031977a4625"
33
34# findfs from busybox fails to do its jobs, the full version from util-linux-findfs works fine
35PACKAGE_INSTALL = "init-basic busybox util-linux-findfs ${ROOTFS_BOOTSTRAP_INSTALL}"
36
37# Do not pollute the initramfs image with rootfs features
38IMAGE_FEATURES = ""
39
40export IMAGE_BASENAME = "initramfs-basic"
41IMAGE_LINGUAS = ""
42
43IMAGE_FSTYPES = "cpio.gz"
44inherit core-image
45
46IMAGE_ROOTFS_SIZE = "8192"
47IMAGE_ROOTFS_EXTRA_SPACE = "0"
48
49BAD_RECOMMENDATIONS += "busybox-syslog"
50
diff --git a/meta-intel-extras/recipes/grub/grub-efi/grub.cfg b/meta-intel-extras/recipes/grub/grub-efi/grub.cfg
deleted file mode 100644
index 287cf7c..0000000
--- a/meta-intel-extras/recipes/grub/grub-efi/grub.cfg
+++ /dev/null
@@ -1,10 +0,0 @@
1# Created by meta-b2qt
2serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1
3default=boot
4timeout=0
5
6menuentry 'boot' {
7 linux /boot/bzImage root=LABEL=rootfs
8 initrd /boot/initramfs
9}
10
diff --git a/meta-intel-extras/recipes/initramfs-basic/initramfs-basic.bbappend b/meta-intel-extras/recipes/images/core-image-minimal-initramfs.bbappend
index 1ac5f03..c1918ba 100644
--- a/meta-intel-extras/recipes/initramfs-basic/initramfs-basic.bbappend
+++ b/meta-intel-extras/recipes/images/core-image-minimal-initramfs.bbappend
@@ -27,4 +27,5 @@
27## 27##
28############################################################################ 28############################################################################
29 29
30INITRAMFS_SCRIPTS += "initramfs-module-rtsx-pci-sdmmc"
30PACKAGE_INSTALL += "kernel-module-rtsx-pci-sdmmc" 31PACKAGE_INSTALL += "kernel-module-rtsx-pci-sdmmc"
diff --git a/meta-intel-extras/recipes/initramfs-basic/init-basic/init-device.sh b/meta-intel-extras/recipes/initramfs-basic/init-basic/init-device.sh
deleted file mode 100644
index 09eadbf..0000000
--- a/meta-intel-extras/recipes/initramfs-basic/init-basic/init-device.sh
+++ /dev/null
@@ -1,3 +0,0 @@
1#!/bin/sh
2
3modprobe rtsx_pci_sdmmc
diff --git a/meta-intel-extras/recipes/initrdscripts/initramfs-framework/rtsx_pci_sdmmc b/meta-intel-extras/recipes/initrdscripts/initramfs-framework/rtsx_pci_sdmmc
new file mode 100644
index 0000000..dd14d6d
--- /dev/null
+++ b/meta-intel-extras/recipes/initrdscripts/initramfs-framework/rtsx_pci_sdmmc
@@ -0,0 +1,8 @@
1#!/bin/sh
2rtsx_pci_sdmmc_enabled() {
3 return 0
4}
5
6rtsx_pci_sdmmc_run() {
7 load_kernel_module rtsx_pci_sdmmc
8}
diff --git a/meta-intel-extras/recipes/initramfs-basic/init-basic.bbappend b/meta-intel-extras/recipes/initrdscripts/initramfs-framework_1.0.bbappend
index ab69a09..cfd05cd 100644
--- a/meta-intel-extras/recipes/initramfs-basic/init-basic.bbappend
+++ b/meta-intel-extras/recipes/initrdscripts/initramfs-framework_1.0.bbappend
@@ -29,10 +29,14 @@
29 29
30FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" 30FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
31 31
32SRC_URI += "file://init-device.sh" 32SRC_URI += "file://rtsx_pci_sdmmc"
33 33
34do_install_append () { 34do_install_append() {
35 install -m 0755 ${WORKDIR}/init-device.sh ${D}/init-device 35 install -m 0755 ${WORKDIR}/rtsx_pci_sdmmc ${D}/init.d/20-rtsx_pci_sdmmc
36} 36}
37 37
38FILES_${PN} += "/init-device" 38PACKAGES += "initramfs-module-rtsx-pci-sdmmc"
39
40SUMMARY_initramfs-module-rtsx-pci-sdmmc = "initramfs support for rtsx_pci_sdmmc"
41RDEPENDS_initramfs-module-rtsx-pci-sdmmc = "${PN}-base"
42FILES_initramfs-module-rtsx-pci-sdmmc = "/init.d/20-rtsx_pci_sdmmc"
diff --git a/meta-intel-extras/recipes/grub/grub-efi_%.bbappend b/meta-intel-extras/recipes/microcode-initramfs/microcode-initramfs.bb
index f3a95f2..8682c27 100644
--- a/meta-intel-extras/recipes/grub/grub-efi_%.bbappend
+++ b/meta-intel-extras/recipes/microcode-initramfs/microcode-initramfs.bb
@@ -1,6 +1,6 @@
1############################################################################ 1############################################################################
2## 2##
3## Copyright (C) 2016 The Qt Company Ltd. 3## Copyright (C) 2018 The Qt Company Ltd.
4## Contact: https://www.qt.io/licensing/ 4## Contact: https://www.qt.io/licensing/
5## 5##
6## This file is part of the Boot to Qt meta layer. 6## This file is part of the Boot to Qt meta layer.
@@ -27,33 +27,26 @@
27## 27##
28############################################################################ 28############################################################################
29 29
30FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" 30SUMMARY = "Initramfs with early load intel microcode"
31SRC_URI += "file://grub.cfg" 31LICENSE = "The-Qt-Company-Commercial"
32LIC_FILES_CHKSUM = "file://${QT_LICENSE};md5=948f8877345cd66106f11031977a4625"
32 33
33do_install[depends] += " \ 34inherit deploy nopackages
34 virtual/kernel:do_deploy \ 35
36do_compile[depends] += " \
35 ${INITRAMFS_IMAGE}:do_image_complete \ 37 ${INITRAMFS_IMAGE}:do_image_complete \
36 ${@bb.utils.contains('MACHINE_FEATURES', 'intel-ucode', 'intel-microcode:do_deploy', '', d)} \ 38 ${@bb.utils.contains('MACHINE_FEATURES', 'intel-ucode', 'intel-microcode:do_deploy', '', d)} \
37" 39 "
38
39do_deploy_prepend() {
40 40
41cat > ${WORKDIR}/cfg <<EOF 41do_compile() {
42search.file /boot/grub2/grub.cfg root 42 # https://www.kernel.org/doc/Documentation/x86/microcode.txt
43set prefix=/boot/grub2 43 microcode="${@bb.utils.contains('MACHINE_FEATURES', 'intel-ucode', '${DEPLOY_DIR_IMAGE}/microcode.cpio ', '', d)}"
44EOF 44 cat ${microcode} ${DEPLOY_DIR_IMAGE}/${INITRAMFS_IMAGE}-${MACHINE}.cpio.gz > ${S}/microcode-initramfs
45} 45}
46 46
47do_install_append() { 47do_deploy() {
48 48 install -d ${DEPLOYDIR}
49 install -d ${D}/boot/grub2/ 49 install -m 0644 ${S}/microcode-initramfs ${DEPLOYDIR}/
50 install -m 644 ${WORKDIR}/grub.cfg ${D}/boot/grub2/
51
52 # https://www.kernel.org/doc/Documentation/x86/early-microcode.txt
53 microcode="${@bb.utils.contains('MACHINE_FEATURES', 'intel-ucode', '${DEPLOY_DIR_IMAGE}/microcode.cpio ', '', d)}"
54 cat ${microcode} ${DEPLOY_DIR_IMAGE}/${INITRAMFS_IMAGE}-${MACHINE}.cpio.gz > ${D}/boot/initramfs
55 chmod 0644 ${D}/boot/initramfs
56} 50}
57 51
58PACKAGES += "${PN}-config" 52addtask deploy before do_build after do_compile
59FILES_${PN}-config = "/boot/grub2/ /boot/initramfs"
diff --git a/meta-intel-extras/wic/systemd-bootdisk-microcode-initramfs.wks b/meta-intel-extras/wic/systemd-bootdisk-microcode-initramfs.wks
new file mode 100644
index 0000000..4907631
--- /dev/null
+++ b/meta-intel-extras/wic/systemd-bootdisk-microcode-initramfs.wks
@@ -0,0 +1,13 @@
1# short-description: Create an EFI disk image with systemd-boot
2# long-description: Creates a partitioned EFI disk image that the user
3# can directly dd to boot media. The selected bootloader is systemd-boot.
4# It also includes intel-microcode as an initrd for early update support.
5# Based on OE-core's systemd-bootdisk.wks file.
6
7part /boot --source bootimg-efi --sourceparams="loader=systemd-boot,initrd=microcode-initramfs" --ondisk sda --label msdos --active --align 1024 --use-uuid
8
9part / --source rootfs --ondisk sda --fstype=ext4 --label platform --align 1024 --use-uuid
10
11part swap --ondisk sda --size 44 --label swap1 --fstype=swap --use-uuid
12
13bootloader --ptable gpt --timeout=5 --append="rootwait rootfstype=ext4 console=ttyS0,115200 console=tty0"