Skip to contentSkip to conversation

initrd contamination and explict PATH

PATCH Applied Darren Hart 2 participants 5 messages Sep 15, 2011 – Sep 17, 2011

lore
Share & tools
lore
#0 lore raw

cover initrd contamination and explict PATH

I ran into a bit of a nasty issue where EXTRA_IMAGE_FEATURES set in my local.conf was causing core-image-initramfs to pull a bunch of files into my initrd, including bash and a 100+MB vmlinux image. The 85M initrd caused some strange initial boot behavior, and bash in the initrd caused our init scripts to fail as bash has a different default PATH than busybox.

The following patches address these issues.

Live boot tested on 32 bit x86.

The following changes since commit bb4a5c44da23a1bb363f1f081cf1644fd7975957:

linux-yocto: remove emenlow from meta-yocto bbappend (2.6.37 version) (2011-09-15 11:27:22 +0100)

are available in the git repository at:
git://git.pokylinux.org/poky-contrib dvhart/initrdscripts
http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=dvhart/initrdscripts

Darren Hart (2):
Set an explicit path for the initrd scripts Prevent IMAGE_FEATURES from contaminating initrd

 .../images/core-image-minimal-initramfs.bb         |    3 +++
 meta/recipes-core/initrdscripts/files/init-boot.sh |    2 ++
 .../initrdscripts/files/init-install.sh            |    2 ++
 meta/recipes-core/initrdscripts/files/init-live.sh |    4 +++-
 4 files changed, 10 insertions(+), 1 deletions(-)
Signature · 1 line
1.7.6
#1 lore raw

PATCH 1/2 Set an explicit path for the initrd scripts

If we don't set PATH, then the shell will specify one for us. Busybox adds the sbin dirs, but bash does not. I hit an issue where bash (among other things) ended up in my initrd and the boot scripts failed due to a bad default PATH. While that is a separate issue, we should not be at the mercy of the shell's default PATH. Update the initrdscripts to all specify:

PATH=/sbin:/bin:/usr/sbin:/usr/bin

---
 meta/recipes-core/initrdscripts/files/init-boot.sh |    2 ++
 .../initrdscripts/files/init-install.sh            |    2 ++
 meta/recipes-core/initrdscripts/files/init-live.sh |    4 +++-
 3 files changed, 7 insertions(+), 1 deletions(-)
meta/recipes-core/initrdscripts/files/init-boot.sh +2 -0
index 9d804fc..e82eba0 100644
@@ -1,5 +1,7 @@
 #!/bin/sh
 
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+
 mkdir /proc
 mkdir /sys
 mount -t proc proc /proc
meta/recipes-core/initrdscripts/files/init-install.sh +2 -0
index fb6cea8..d31d994 100644
@@ -5,6 +5,8 @@
 # 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
 
meta/recipes-core/initrdscripts/files/init-live.sh +3 -1
index 6a1deba..c054863 100644
@@ -1,5 +1,7 @@
 #!/bin/sh
 
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+
 ROOT_MOUNT="/rootfs/"
 ROOT_IMAGE="rootfs.img"
 MOUNT="/bin/mount"
@@ -12,7 +14,7 @@ early_setup() {
     mount -t proc proc /proc
     mount -t sysfs sysfs /sys
     udevd --daemon
-    /sbin/udevadm trigger --action=add
+    udevadm trigger --action=add
 }
 
 read_args() {
Signature · 1 line
1.7.6
#2 lore raw

PATCH 2/2 Prevent IMAGE_FEATURES from contaminating initrd

In reply to Darren Hart

Set IMAGE_FEATURES="" in core-image-initramfs to prevent the setting of things like EXTRA_IMAGE_FEATURES in local.conf from contaminating the initrd with features meant for the rootfs.

---
 .../images/core-image-minimal-initramfs.bb         |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)
meta/recipes-core/images/core-image-minimal-initramfs.bb +3 -0
index 3246d5c..0bac27a 100644
@@ -2,6 +2,9 @@
 
 IMAGE_INSTALL = "initramfs-live-boot initramfs-live-install busybox udev base-passwd"
 
+# Do not pollute the initrd image with rootfs features
+IMAGE_FEATURES = ""
+
 export IMAGE_BASENAME = "core-image-minimal-initramfs"
 IMAGE_LINGUAS = ""
 
Signature · 1 line
1.7.6
#3 lore raw
In reply to Darren Hart
Quoted 22 lines · Darren Hart

I ran into a bit of a nasty issue where EXTRA_IMAGE_FEATURES set in my local.conf was causing core-image-initramfs to pull a bunch of files into my initrd, including bash and a 100+MB vmlinux image. The 85M initrd caused some strange initial boot behavior, and bash in the initrd caused our init scripts to fail as bash has a different default PATH than busybox.

The following patches address these issues.

Live boot tested on 32 bit x86.

The following changes since commit bb4a5c44da23a1bb363f1f081cf1644fd7975957:

linux-yocto: remove emenlow from meta-yocto bbappend (2.6.37 version) (2011-09-15 11:27:22 +0100)

are available in the git repository at:
git://git.pokylinux.org/poky-contrib dvhart/initrdscripts
http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=dvhart/initrdscripts

Darren Hart (2):
Set an explicit path for the initrd scripts Prevent IMAGE_FEATURES from contaminating initrd

Quoted 5 lines
 .../images/core-image-minimal-initramfs.bb         |    3 +++
 meta/recipes-core/initrdscripts/files/init-boot.sh |    2 ++
 .../initrdscripts/files/init-install.sh            |    2 ++
 meta/recipes-core/initrdscripts/files/init-live.sh |    4 +++-
 4 files changed, 10 insertions(+), 1 deletions(-)

Merged to master but I had to add PR bumps for the script PATH changes.

We shouldn't really be hardcoding the paths but using the expressions ${bindir} etc and making substitutions in the scripts too but we can leave that issue for another time (they already had other hardcoded issues).

Cheers,

Richard

#4 lore raw
Quoted 29 lines · Richard Purdie
Quoted 22 lines · Darren Hart

I ran into a bit of a nasty issue where EXTRA_IMAGE_FEATURES set in my local.conf was causing core-image-initramfs to pull a bunch of files into my initrd, including bash and a 100+MB vmlinux image. The 85M initrd caused some strange initial boot behavior, and bash in the initrd caused our init scripts to fail as bash has a different default PATH than busybox.

The following patches address these issues.

Live boot tested on 32 bit x86.

The following changes since commit bb4a5c44da23a1bb363f1f081cf1644fd7975957:

linux-yocto: remove emenlow from meta-yocto bbappend (2.6.37 version) (2011-09-15 11:27:22 +0100)

are available in the git repository at:
git://git.pokylinux.org/poky-contrib dvhart/initrdscripts
http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=dvhart/initrdscripts

Darren Hart (2):
Set an explicit path for the initrd scripts Prevent IMAGE_FEATURES from contaminating initrd

Quoted 5 lines
 .../images/core-image-minimal-initramfs.bb         |    3 +++
 meta/recipes-core/initrdscripts/files/init-boot.sh |    2 ++
 .../initrdscripts/files/init-install.sh            |    2 ++
 meta/recipes-core/initrdscripts/files/init-live.sh |    4 +++-
 4 files changed, 10 insertions(+), 1 deletions(-)
Quoted 6 lines

Merged to master but I had to add PR bumps for the script PATH changes.

We shouldn't really be hardcoding the paths but using the expressions ${bindir} etc and making substitutions in the scripts too but we can leave that issue for another time (they already had other hardcoded issues).

ARG... Sorry about missing the PR. As for the ${bindir}, would you prefer a patch post 1.1 ? Or would you take one for 1.1 by EOD Monday?

Signature · 3 lines
Darren Hart
Intel Open Source Technology Center
Yocto Project - Linux Kernel