From 3fc8cec53038f41d31344040c56d62aac90ba7e0 Mon Sep 17 00:00:00 2001 From: Otavio Salvador Date: Tue, 11 Oct 2011 19:18:50 +0000 Subject: initramfs-live-boot: make it more generic and easy to use The script was making some assumptions that enforced many requirement in the machine kernel configuration and usage, besides it were too while booting. Changes included: * fix indentation; * rdepends on udev; * allow use of isofs as module; * remove rootdelay param parsing as it was unused; * don't verbosely kill udevd and mknod; * mount devtmpfs into rootfs, if available, before swithing root; Signed-off-by: Otavio Salvador --- meta/recipes-core/initrdscripts/files/init-live.sh | 32 ++++++++++++++-------- .../initrdscripts/initramfs-live-boot_1.0.bb | 3 +- 2 files changed, 22 insertions(+), 13 deletions(-) (limited to 'meta/recipes-core') diff --git a/meta/recipes-core/initrdscripts/files/init-live.sh b/meta/recipes-core/initrdscripts/files/init-live.sh index c054863a2..eb5ab5b7a 100644 --- a/meta/recipes-core/initrdscripts/files/init-live.sh +++ b/meta/recipes-core/initrdscripts/files/init-live.sh @@ -13,6 +13,11 @@ early_setup() { mkdir /sys mount -t proc proc /proc mount -t sysfs sysfs /sys + + # support modular kernel + modprobe isofs 2> /dev/null + + mkdir /run udevd --daemon udevadm trigger --action=add } @@ -25,21 +30,25 @@ read_args() { root=*) ROOT_DEVICE=$optarg ;; rootfstype=*) - ROOT_FSTYPE=$optarg ;; - rootdelay=*) - rootdelay=$optarg ;; - LABEL=*) - label=$optarg ;; - video=*) - video_mode=$arg ;; - vga=*) - vga_mode=$arg ;; + modprobe $optarg 2> /dev/null ;; + LABEL=*) + label=$optarg ;; + video=*) + video_mode=$arg ;; + vga=*) + vga_mode=$arg ;; esac done } boot_live_root() { - killall udevd + killall udevd 2>/dev/null + + # use devtmpfs if available + if grep -q devtmpfs /proc/filesystems; then + mount -t devtmpfs devtmpfs $ROOT_MOUNT/dev + fi + cd $ROOT_MOUNT exec switch_root -c /dev/console $ROOT_MOUNT /sbin/init } @@ -78,7 +87,7 @@ done case $label in boot) mkdir $ROOT_MOUNT - mknod /dev/loop0 b 7 0 + mknod /dev/loop0 b 7 0 2>/dev/null if ! $MOUNT -o rw,loop,noatime,nodiratime /media/$i/$ISOLINUX/$ROOT_IMAGE $ROOT_MOUNT ; then fatal "Couldnt mount rootfs image" @@ -97,4 +106,3 @@ case $label in fatal "Installation image failed" ;; esac - diff --git a/meta/recipes-core/initrdscripts/initramfs-live-boot_1.0.bb b/meta/recipes-core/initrdscripts/initramfs-live-boot_1.0.bb index b404f8c60..e85a0e118 100644 --- a/meta/recipes-core/initrdscripts/initramfs-live-boot_1.0.bb +++ b/meta/recipes-core/initrdscripts/initramfs-live-boot_1.0.bb @@ -1,9 +1,10 @@ DESCRIPTION = "A live image init script" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" +RDEPENDS = "udev" SRC_URI = "file://init-live.sh" -PR = "r6" +PR = "r7" do_install() { install -m 0755 ${WORKDIR}/init-live.sh ${D}/init -- cgit v1.2.3