| Message ID | 20251022150737.3639891-3-Quirin.Gylstorff@siemens.com |
|---|---|
| State | Changes Requested |
| Headers | show |
| Series | [v4,01/10] add dracut to custom kernel builds | expand |
On 22.10.25 17:06, Quirin Gylstorff wrote: > From: Quirin Gylstorff <quirin.gylstorff@siemens.com> > > This is in preparation to support additional initramfs generators > like dracut. > > Signed-off-by: Quirin Gylstorff <quirin.gylstorff@siemens.com> > --- > meta/classes/rootfs.bbclass | 13 ++++++++++--- > 1 file changed, 10 insertions(+), 3 deletions(-) > > diff --git a/meta/classes/rootfs.bbclass b/meta/classes/rootfs.bbclass > index 4d73bfec..b7310e0c 100644 > --- a/meta/classes/rootfs.bbclass > +++ b/meta/classes/rootfs.bbclass > @@ -5,7 +5,13 @@ inherit deb-dl-dir > > ROOTFS_ARCH ?= "${DISTRO_ARCH}" > ROOTFS_DISTRO ?= "${DISTRO}" > + > +def initramfs_generator_cmdline(d): > + return "update-initramfs -u -v -k \"$kernel_version\"" > + > ROOTFS_PACKAGES ?= "" > +ROOTFS_INITRAMFS_GENERATOR_CMD = "${@ d.getVar('ROOTFS_INITRAMFS_GENERATOR_CMDLINE').split()[0]}" > +ROOTFS_INITRAMFS_GENERATOR_CMDLINE = "${@ initramfs_generator_cmdline(d)}" > ROOTFS_BASE_DISTRO ?= "${BASE_DISTRO}" > > # Features of the rootfs creation: > @@ -254,7 +260,7 @@ rootfs_disable_initrd_generation() { > set -e > > mkdir -p "${ROOTFSDIR}${ROOTFS_STUBS_DIR}" > - ln -s /usr/bin/true ${ROOTFSDIR}${ROOTFS_STUBS_DIR}/update-initramfs > + ln -s /usr/bin/true ${ROOTFSDIR}${ROOTFS_STUBS_DIR}/${ROOTFS_INITRAMFS_GENERATOR_CMD} > > mkdir -p '${ROOTFSDIR}/etc/apt/apt.conf.d' > echo 'DPkg::Path ${ROOTFS_STUBS_DIR}:/usr/sbin:/usr/bin:/sbin:/bin;' \ > @@ -577,12 +583,13 @@ rootfs_generate_initramfs() { > echo "Total number of modules: $mods_total" > echo "Generating initrd for kernel version: $kernel_version" > sudo -E chroot "${ROOTFSDIR}" sh -c ' \ > - update-initramfs -u -v -k "$kernel_version"' > + ${ROOTFS_INITRAMFS_GENERATOR_CMDLINE};' > done > if [ -n "${INITRD_DEPLOY_FILE}" ]; then > if [ -f "${ROOTFSDIR}/initrd.img" ]; then > # debian (mkinitramfs) > - cp ${ROOTFSDIR}/initrd.img ${DEPLOYDIR}/${INITRD_DEPLOY_FILE} > + sudo cp ${ROOTFSDIR}/initrd.img ${DEPLOYDIR}/${INITRD_DEPLOY_FILE} > + sudo chown $(id -u):$(id -g) ${DEPLOYDIR}/${INITRD_DEPLOY_FILE} Do we need more sudo? bwrap? And why do we need this here now? Jan > else > # ubuntu (dracut) > cp ${ROOTFSDIR}/boot/initrd.img ${DEPLOYDIR}/${INITRD_DEPLOY_FILE}
On Wed, 2025-10-22 at 17:44 +0200, Jan Kiszka wrote: > On 22.10.25 17:06, Quirin Gylstorff wrote: > > From: Quirin Gylstorff <quirin.gylstorff@siemens.com> > > > > This is in preparation to support additional initramfs generators > > like dracut. > > > > Signed-off-by: Quirin Gylstorff <quirin.gylstorff@siemens.com> > > --- > > meta/classes/rootfs.bbclass | 13 ++++++++++--- > > 1 file changed, 10 insertions(+), 3 deletions(-) > > > > diff --git a/meta/classes/rootfs.bbclass > > b/meta/classes/rootfs.bbclass > > index 4d73bfec..b7310e0c 100644 > > --- a/meta/classes/rootfs.bbclass > > +++ b/meta/classes/rootfs.bbclass > > @@ -5,7 +5,13 @@ inherit deb-dl-dir > > > > ROOTFS_ARCH ?= "${DISTRO_ARCH}" > > ROOTFS_DISTRO ?= "${DISTRO}" > > + > > +def initramfs_generator_cmdline(d): > > + return "update-initramfs -u -v -k \"$kernel_version\"" > > + > > ROOTFS_PACKAGES ?= "" > > +ROOTFS_INITRAMFS_GENERATOR_CMD = "${@ > > d.getVar('ROOTFS_INITRAMFS_GENERATOR_CMDLINE').split()[0]}" > > +ROOTFS_INITRAMFS_GENERATOR_CMDLINE = "${@ > > initramfs_generator_cmdline(d)}" > > ROOTFS_BASE_DISTRO ?= "${BASE_DISTRO}" > > > > # Features of the rootfs creation: > > @@ -254,7 +260,7 @@ rootfs_disable_initrd_generation() { > > set -e > > > > mkdir -p "${ROOTFSDIR}${ROOTFS_STUBS_DIR}" > > - ln -s /usr/bin/true ${ROOTFSDIR}${ROOTFS_STUBS_DIR}/update- > > initramfs > > + ln -s /usr/bin/true > > ${ROOTFSDIR}${ROOTFS_STUBS_DIR}/${ROOTFS_INITRAMFS_GENERATOR_CMD} > > > > mkdir -p '${ROOTFSDIR}/etc/apt/apt.conf.d' > > echo 'DPkg::Path > > ${ROOTFS_STUBS_DIR}:/usr/sbin:/usr/bin:/sbin:/bin;' \ > > @@ -577,12 +583,13 @@ rootfs_generate_initramfs() { > > echo "Total number of modules: $mods_total" > > echo "Generating initrd for kernel version: > > $kernel_version" > > sudo -E chroot "${ROOTFSDIR}" sh -c ' \ > > - update-initramfs -u -v -k "$kernel_version"' > > + ${ROOTFS_INITRAMFS_GENERATOR_CMDLINE};' > > done > > if [ -n "${INITRD_DEPLOY_FILE}" ]; then > > if [ -f "${ROOTFSDIR}/initrd.img" ]; then > > # debian (mkinitramfs) > > - cp ${ROOTFSDIR}/initrd.img > > ${DEPLOYDIR}/${INITRD_DEPLOY_FILE} > > + sudo cp ${ROOTFSDIR}/initrd.img > > ${DEPLOYDIR}/${INITRD_DEPLOY_FILE} > > + sudo chown $(id -u):$(id -g) > > ${DEPLOYDIR}/${INITRD_DEPLOY_FILE} > > Do we need more sudo? bwrap? > > And why do we need this here now? dracut creates the initrd.img with 0600 perms so bwrap wouldn't help here :( we may need to check if we can convince dracut to use 0644 > > Jan > > > else > > # ubuntu (dracut) > > cp ${ROOTFSDIR}/boot/initrd.img > > ${DEPLOYDIR}/${INITRD_DEPLOY_FILE} >
On 22.10.25 17:53, Hombourger, Cedric (FT FDS CES LX) wrote: > On Wed, 2025-10-22 at 17:44 +0200, Jan Kiszka wrote: >> On 22.10.25 17:06, Quirin Gylstorff wrote: >>> From: Quirin Gylstorff <quirin.gylstorff@siemens.com> >>> >>> This is in preparation to support additional initramfs generators >>> like dracut. >>> >>> Signed-off-by: Quirin Gylstorff <quirin.gylstorff@siemens.com> >>> --- >>> meta/classes/rootfs.bbclass | 13 ++++++++++--- >>> 1 file changed, 10 insertions(+), 3 deletions(-) >>> >>> diff --git a/meta/classes/rootfs.bbclass >>> b/meta/classes/rootfs.bbclass >>> index 4d73bfec..b7310e0c 100644 >>> --- a/meta/classes/rootfs.bbclass >>> +++ b/meta/classes/rootfs.bbclass >>> @@ -5,7 +5,13 @@ inherit deb-dl-dir >>> >>> ROOTFS_ARCH ?= "${DISTRO_ARCH}" >>> ROOTFS_DISTRO ?= "${DISTRO}" >>> + >>> +def initramfs_generator_cmdline(d): >>> + return "update-initramfs -u -v -k \"$kernel_version\"" >>> + >>> ROOTFS_PACKAGES ?= "" >>> +ROOTFS_INITRAMFS_GENERATOR_CMD = "${@ >>> d.getVar('ROOTFS_INITRAMFS_GENERATOR_CMDLINE').split()[0]}" >>> +ROOTFS_INITRAMFS_GENERATOR_CMDLINE = "${@ >>> initramfs_generator_cmdline(d)}" >>> ROOTFS_BASE_DISTRO ?= "${BASE_DISTRO}" >>> >>> # Features of the rootfs creation: >>> @@ -254,7 +260,7 @@ rootfs_disable_initrd_generation() { >>> set -e >>> >>> mkdir -p "${ROOTFSDIR}${ROOTFS_STUBS_DIR}" >>> - ln -s /usr/bin/true ${ROOTFSDIR}${ROOTFS_STUBS_DIR}/update- >>> initramfs >>> + ln -s /usr/bin/true >>> ${ROOTFSDIR}${ROOTFS_STUBS_DIR}/${ROOTFS_INITRAMFS_GENERATOR_CMD} >>> >>> mkdir -p '${ROOTFSDIR}/etc/apt/apt.conf.d' >>> echo 'DPkg::Path >>> ${ROOTFS_STUBS_DIR}:/usr/sbin:/usr/bin:/sbin:/bin;' \ >>> @@ -577,12 +583,13 @@ rootfs_generate_initramfs() { >>> echo "Total number of modules: $mods_total" >>> echo "Generating initrd for kernel version: >>> $kernel_version" >>> sudo -E chroot "${ROOTFSDIR}" sh -c ' \ >>> - update-initramfs -u -v -k "$kernel_version"' >>> + ${ROOTFS_INITRAMFS_GENERATOR_CMDLINE};' >>> done >>> if [ -n "${INITRD_DEPLOY_FILE}" ]; then >>> if [ -f "${ROOTFSDIR}/initrd.img" ]; then >>> # debian (mkinitramfs) >>> - cp ${ROOTFSDIR}/initrd.img >>> ${DEPLOYDIR}/${INITRD_DEPLOY_FILE} >>> + sudo cp ${ROOTFSDIR}/initrd.img >>> ${DEPLOYDIR}/${INITRD_DEPLOY_FILE} >>> + sudo chown $(id -u):$(id -g) >>> ${DEPLOYDIR}/${INITRD_DEPLOY_FILE} >> >> Do we need more sudo? bwrap? >> >> And why do we need this here now? > > dracut creates the initrd.img with 0600 perms so bwrap wouldn't help > here :( > > we may need to check if we can convince dracut to use 0644 > I was suspecting something like that but not reading it anywhere. Besides micro-optimizations (chown first, then there is no need for sudo cp), this should probably be done in dracut context, not for all initramfs generators. And, yes, checking with dracut if they consider this a feature or rather a bug would be good as well. Jan >> >> Jan >> >>> else >>> # ubuntu (dracut) >>> cp ${ROOTFSDIR}/boot/initrd.img >>> ${DEPLOYDIR}/${INITRD_DEPLOY_FILE} >> >
On 10/22/25 17:56, Jan Kiszka wrote: > On 22.10.25 17:53, Hombourger, Cedric (FT FDS CES LX) wrote: >> On Wed, 2025-10-22 at 17:44 +0200, Jan Kiszka wrote: >>> On 22.10.25 17:06, Quirin Gylstorff wrote: >>>> From: Quirin Gylstorff <quirin.gylstorff@siemens.com> >>>> >>>> This is in preparation to support additional initramfs generators >>>> like dracut. >>>> >>>> Signed-off-by: Quirin Gylstorff <quirin.gylstorff@siemens.com> >>>> --- >>>> meta/classes/rootfs.bbclass | 13 ++++++++++--- >>>> 1 file changed, 10 insertions(+), 3 deletions(-) >>>> >>>> diff --git a/meta/classes/rootfs.bbclass >>>> b/meta/classes/rootfs.bbclass >>>> index 4d73bfec..b7310e0c 100644 >>>> --- a/meta/classes/rootfs.bbclass >>>> +++ b/meta/classes/rootfs.bbclass >>>> @@ -5,7 +5,13 @@ inherit deb-dl-dir >>>> >>>> ROOTFS_ARCH ?= "${DISTRO_ARCH}" >>>> ROOTFS_DISTRO ?= "${DISTRO}" >>>> + >>>> +def initramfs_generator_cmdline(d): >>>> + return "update-initramfs -u -v -k \"$kernel_version\"" >>>> + >>>> ROOTFS_PACKAGES ?= "" >>>> +ROOTFS_INITRAMFS_GENERATOR_CMD = "${@ >>>> d.getVar('ROOTFS_INITRAMFS_GENERATOR_CMDLINE').split()[0]}" >>>> +ROOTFS_INITRAMFS_GENERATOR_CMDLINE = "${@ >>>> initramfs_generator_cmdline(d)}" >>>> ROOTFS_BASE_DISTRO ?= "${BASE_DISTRO}" >>>> >>>> # Features of the rootfs creation: >>>> @@ -254,7 +260,7 @@ rootfs_disable_initrd_generation() { >>>> set -e >>>> >>>> mkdir -p "${ROOTFSDIR}${ROOTFS_STUBS_DIR}" >>>> - ln -s /usr/bin/true ${ROOTFSDIR}${ROOTFS_STUBS_DIR}/update- >>>> initramfs >>>> + ln -s /usr/bin/true >>>> ${ROOTFSDIR}${ROOTFS_STUBS_DIR}/${ROOTFS_INITRAMFS_GENERATOR_CMD} >>>> >>>> mkdir -p '${ROOTFSDIR}/etc/apt/apt.conf.d' >>>> echo 'DPkg::Path >>>> ${ROOTFS_STUBS_DIR}:/usr/sbin:/usr/bin:/sbin:/bin;' \ >>>> @@ -577,12 +583,13 @@ rootfs_generate_initramfs() { >>>> echo "Total number of modules: $mods_total" >>>> echo "Generating initrd for kernel version: >>>> $kernel_version" >>>> sudo -E chroot "${ROOTFSDIR}" sh -c ' \ >>>> - update-initramfs -u -v -k "$kernel_version"' >>>> + ${ROOTFS_INITRAMFS_GENERATOR_CMDLINE};' >>>> done >>>> if [ -n "${INITRD_DEPLOY_FILE}" ]; then >>>> if [ -f "${ROOTFSDIR}/initrd.img" ]; then >>>> # debian (mkinitramfs) >>>> - cp ${ROOTFSDIR}/initrd.img >>>> ${DEPLOYDIR}/${INITRD_DEPLOY_FILE} >>>> + sudo cp ${ROOTFSDIR}/initrd.img >>>> ${DEPLOYDIR}/${INITRD_DEPLOY_FILE} >>>> + sudo chown $(id -u):$(id -g) >>>> ${DEPLOYDIR}/${INITRD_DEPLOY_FILE} >>> >>> Do we need more sudo? bwrap? >>> >>> And why do we need this here now? >> >> dracut creates the initrd.img with 0600 perms so bwrap wouldn't help >> here :( >> >> we may need to check if we can convince dracut to use 0644 >> > > I was suspecting something like that but not reading it anywhere. > > Besides micro-optimizations (chown first, then there is no need for sudo > cp), this should probably be done in dracut context, not for all > initramfs generators. > > And, yes, checking with dracut if they consider this a feature or rather > a bug would be good as well. I will look into it. Quirin> > Jan > >>> >>> Jan >>> >>>> else >>>> # ubuntu (dracut) >>>> cp ${ROOTFSDIR}/boot/initrd.img >>>> ${DEPLOYDIR}/${INITRD_DEPLOY_FILE} >>> >> > >
diff --git a/meta/classes/rootfs.bbclass b/meta/classes/rootfs.bbclass index 4d73bfec..b7310e0c 100644 --- a/meta/classes/rootfs.bbclass +++ b/meta/classes/rootfs.bbclass @@ -5,7 +5,13 @@ inherit deb-dl-dir ROOTFS_ARCH ?= "${DISTRO_ARCH}" ROOTFS_DISTRO ?= "${DISTRO}" + +def initramfs_generator_cmdline(d): + return "update-initramfs -u -v -k \"$kernel_version\"" + ROOTFS_PACKAGES ?= "" +ROOTFS_INITRAMFS_GENERATOR_CMD = "${@ d.getVar('ROOTFS_INITRAMFS_GENERATOR_CMDLINE').split()[0]}" +ROOTFS_INITRAMFS_GENERATOR_CMDLINE = "${@ initramfs_generator_cmdline(d)}" ROOTFS_BASE_DISTRO ?= "${BASE_DISTRO}" # Features of the rootfs creation: @@ -254,7 +260,7 @@ rootfs_disable_initrd_generation() { set -e mkdir -p "${ROOTFSDIR}${ROOTFS_STUBS_DIR}" - ln -s /usr/bin/true ${ROOTFSDIR}${ROOTFS_STUBS_DIR}/update-initramfs + ln -s /usr/bin/true ${ROOTFSDIR}${ROOTFS_STUBS_DIR}/${ROOTFS_INITRAMFS_GENERATOR_CMD} mkdir -p '${ROOTFSDIR}/etc/apt/apt.conf.d' echo 'DPkg::Path ${ROOTFS_STUBS_DIR}:/usr/sbin:/usr/bin:/sbin:/bin;' \ @@ -577,12 +583,13 @@ rootfs_generate_initramfs() { echo "Total number of modules: $mods_total" echo "Generating initrd for kernel version: $kernel_version" sudo -E chroot "${ROOTFSDIR}" sh -c ' \ - update-initramfs -u -v -k "$kernel_version"' + ${ROOTFS_INITRAMFS_GENERATOR_CMDLINE};' done if [ -n "${INITRD_DEPLOY_FILE}" ]; then if [ -f "${ROOTFSDIR}/initrd.img" ]; then # debian (mkinitramfs) - cp ${ROOTFSDIR}/initrd.img ${DEPLOYDIR}/${INITRD_DEPLOY_FILE} + sudo cp ${ROOTFSDIR}/initrd.img ${DEPLOYDIR}/${INITRD_DEPLOY_FILE} + sudo chown $(id -u):$(id -g) ${DEPLOYDIR}/${INITRD_DEPLOY_FILE} else # ubuntu (dracut) cp ${ROOTFSDIR}/boot/initrd.img ${DEPLOYDIR}/${INITRD_DEPLOY_FILE}