From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6563939828400914432 X-Received: by 2002:a1c:f416:: with SMTP id z22-v6mr170210wma.23.1528286335245; Wed, 06 Jun 2018 04:58:55 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a1c:7c18:: with SMTP id x24-v6ls288750wmc.2.gmail; Wed, 06 Jun 2018 04:58:54 -0700 (PDT) X-Google-Smtp-Source: ADUXVKJM0GQauXY06ZqcxwwTPXYaLz6Ugr/tUaAJjAm6asEzyjtBdldxH+9PmcOGc7J89m/yepbE X-Received: by 2002:a1c:9e53:: with SMTP id h80-v6mr184705wme.7.1528286334557; Wed, 06 Jun 2018 04:58:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1528286334; cv=none; d=google.com; s=arc-20160816; b=yD9LgfG2dWJrwdQiDlOLE//Hu4Gs4ClfzhYGQsgFcpiM1cmgIquWQJRyi3jDRiCg8y FgN6BR0ZqB1DunybJcXwxjVZMnXrywwTOUObf1snH43tCZilsoVrkuqfjRmzagueA+/V sCQOBAbyVgV2HDIbd5COLxZgg75PJl+YYPG/Xs7BX8DQEdsXd2Bj3PSTOnp/A78hys8M WgaEOEVS8jsBqYKdOKVJGV8y4ditCadhwAWEqWHWMtX2eDThWY/BQbhl8rvEAj4dy8T+ E2sIAqwtxZJUSa0IJ3HDPL+5BqcpnN+9TdUVXUvfeHMakJ0dvvsilfgsHbPOfCUFMBH4 E3vg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:references:in-reply-to:message-id:date :subject:to:from:arc-authentication-results; bh=3dV6R3zOBJo2Fjhc8JF8R8cqmu1C1Wh6FPm1+r5kC1w=; b=ErqP5w+DR3N4x1gnaYVTI1wr6YsyP/1kexESBMAgJaloREhhX7R+XZHi4iGM956Pwg vmZLcateile2WX6DOv5eDRLp3je+lh5B/U8UmwX+Cw2R3Fr/4YnecVWDCRAt0kGHzWQv 36dXIsoaAbNcGcYsjTb1C/w1Fdo8rNgu7/uyFRn4C60oVOqhk1E6gD6PPhevKsUgzDMu OphopKMXvKKu8Yqhf4N84PchmZuNTwEQUhV6Cc4fw23aF9dsH1O1UE+hBAejCeXYLRAK QL0ayJmiwR0Rb1CzGMqdXBpK5WdJOw0KffQhV3/r39LT1v2GPfo/Tf9TlffpG9mon8C2 1aCw== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of jan.kiszka@siemens.com designates 192.35.17.14 as permitted sender) smtp.mailfrom=jan.kiszka@siemens.com Return-Path: Received: from david.siemens.de (david.siemens.de. [192.35.17.14]) by gmr-mx.google.com with ESMTPS id r7-v6si64029wmc.0.2018.06.06.04.58.54 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 06 Jun 2018 04:58:54 -0700 (PDT) Received-SPF: pass (google.com: domain of jan.kiszka@siemens.com designates 192.35.17.14 as permitted sender) client-ip=192.35.17.14; Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of jan.kiszka@siemens.com designates 192.35.17.14 as permitted sender) smtp.mailfrom=jan.kiszka@siemens.com Received: from mail1.siemens.de (mail1.siemens.de [139.23.33.14]) by david.siemens.de (8.15.2/8.15.2) with ESMTPS id w56BwsUQ001472 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Wed, 6 Jun 2018 13:58:54 +0200 Received: from md1f2u6c.ad001.siemens.net (md1q0hnc.ad001.siemens.net [139.25.68.37] (may be forged)) by mail1.siemens.de (8.15.2/8.15.2) with ESMTP id w56Bwr29002525 for ; Wed, 6 Jun 2018 13:58:54 +0200 From: Jan Kiszka To: isar-users Subject: [PATCH 3/5] Set up target image fstab prior to installing any packages Date: Wed, 6 Jun 2018 13:58:50 +0200 Message-Id: <662dc5f081a493c4c7fa3e00af728c8b19f8ff3e.1528286332.git.jan.kiszka@siemens.com> X-Mailer: git-send-email 2.13.7 In-Reply-To: References: In-Reply-To: References: X-TUID: zf30/Ha9atEc From: Jan Kiszka Package postinst hooks may need the fstab or may want to modify it, including customization packages or the upcoming u-boot-script generator. So extract the already identical setup pattern from the distro config scripts, generate the fstab prior to calling setup_root_file_system and let the latter inject the file before starting the package installation. By specifying "-" as fstab file, we can skip the injection for the buildchroot which does not need it. Signed-off-by: Jan Kiszka --- .../recipes-core/images/files/debian-configscript.sh | 14 -------------- .../recipes-core/images/files/raspbian-configscript.sh | 14 -------------- meta-isar/recipes-core/images/isar-image-base.bb | 18 ++++++++++++++---- meta/classes/isar-bootstrap-helper.bbclass | 5 +++-- meta/recipes-devtools/buildchroot/buildchroot.bb | 2 +- 5 files changed, 18 insertions(+), 35 deletions(-) diff --git a/meta-isar/recipes-core/images/files/debian-configscript.sh b/meta-isar/recipes-core/images/files/debian-configscript.sh index 136918c..bcd5507 100755 --- a/meta-isar/recipes-core/images/files/debian-configscript.sh +++ b/meta-isar/recipes-core/images/files/debian-configscript.sh @@ -7,20 +7,6 @@ set -e readonly MACHINE_SERIAL="$1" readonly BAUDRATE_TTY="$2" -readonly ROOTFS_DEV="$3" -readonly ROOTFS_TYPE="$4" - -cat > /etc/fstab << EOF -# Begin /etc/fstab -/dev/$ROOTFS_DEV / $ROOTFS_TYPE defaults 1 1 -proc /proc proc nosuid,noexec,nodev 0 0 -sysfs /sys sysfs nosuid,noexec,nodev 0 0 -devpts /dev/pts devpts gid=5,mode=620 0 0 -tmpfs /run tmpfs defaults 0 0 -devtmpfs /dev devtmpfs mode=0755,nosuid 0 0 - -# End /etc/fstab -EOF # Create console device if [ ! -e /dev/console ]; then diff --git a/meta-isar/recipes-core/images/files/raspbian-configscript.sh b/meta-isar/recipes-core/images/files/raspbian-configscript.sh index 04ea571..3631c26 100644 --- a/meta-isar/recipes-core/images/files/raspbian-configscript.sh +++ b/meta-isar/recipes-core/images/files/raspbian-configscript.sh @@ -7,20 +7,6 @@ set -e readonly MACHINE_SERIAL="$1" readonly BAUDRATE_TTY="$2" -readonly ROOTFS_DEV="$3" -readonly ROOTFS_TYPE="$4" - -cat > /etc/fstab << EOF -# Begin /etc/fstab -/dev/$ROOTFS_DEV / $ROOTFS_TYPE defaults 1 1 -proc /proc proc nosuid,noexec,nodev 0 0 -sysfs /sys sysfs nosuid,noexec,nodev 0 0 -devpts /dev/pts devpts gid=5,mode=620 0 0 -tmpfs /run tmpfs defaults 0 0 -devtmpfs /dev devtmpfs mode=0755,nosuid 0 0 - -# End /etc/fstab -EOF # Enable tty conditionally, systemd does not have the file but its own magic if [ -f /etc/inittab ]; then diff --git a/meta-isar/recipes-core/images/isar-image-base.bb b/meta-isar/recipes-core/images/isar-image-base.bb index f91dfb0..bf90e30 100644 --- a/meta-isar/recipes-core/images/isar-image-base.bb +++ b/meta-isar/recipes-core/images/isar-image-base.bb @@ -28,15 +28,25 @@ do_rootfs[root_cleandirs] = "${IMAGE_ROOTFS} \ ${IMAGE_ROOTFS}/isar-apt" do_rootfs() { - setup_root_file_system "${IMAGE_ROOTFS}" "clean" \ + cat > ${WORKDIR}/fstab << EOF +# Begin /etc/fstab +/dev/${ROOTFS_DEV} / ${ROOTFS_TYPE} defaults 1 1 +proc /proc proc nosuid,noexec,nodev 0 0 +sysfs /sys sysfs nosuid,noexec,nodev 0 0 +devpts /dev/pts devpts gid=5,mode=620 0 0 +tmpfs /run tmpfs defaults 0 0 +devtmpfs /dev devtmpfs mode=0755,nosuid 0 0 + +# End /etc/fstab +EOF + + setup_root_file_system "${IMAGE_ROOTFS}" "clean" "${WORKDIR}/fstab" \ ${IMAGE_PREINSTALL} ${IMAGE_INSTALL} # Configure root filesystem sudo install -m 755 "${WORKDIR}/${DISTRO_CONFIG_SCRIPT}" "${IMAGE_ROOTFS}" sudo chroot ${IMAGE_ROOTFS} /${DISTRO_CONFIG_SCRIPT} ${MACHINE_SERIAL} \ - ${BAUDRATE_TTY} \ - ${ROOTFS_DEV} \ - ${ROOTFS_TYPE} + ${BAUDRATE_TTY} # Cleanup sudo rm "${IMAGE_ROOTFS}/${DISTRO_CONFIG_SCRIPT}" diff --git a/meta/classes/isar-bootstrap-helper.bbclass b/meta/classes/isar-bootstrap-helper.bbclass index a3f1686..5d4dca0 100644 --- a/meta/classes/isar-bootstrap-helper.bbclass +++ b/meta/classes/isar-bootstrap-helper.bbclass @@ -17,8 +17,8 @@ def reverse_bb_array(d, varname): setup_root_file_system() { ROOTFSDIR="$1" CLEAN="$2" - shift - shift + FSTAB="$3" + shift 3 PACKAGES="$@" APT_ARGS="install --yes -o Debug::pkgProblemResolver=yes" CLEAN_FILES="${ROOTFSDIR}/etc/hostname ${ROOTFSDIR}/etc/resolv.conf" @@ -26,6 +26,7 @@ setup_root_file_system() { sudo cp -Trpfx \ "${DEPLOY_DIR_IMAGE}/isar-bootstrap-${DISTRO}-${DISTRO_ARCH}/" \ "$ROOTFSDIR" + [ "${FSTAB}" != "-" ] && cat ${FSTAB} | sudo tee "$ROOTFSDIR/etc/fstab" echo "deb [trusted=yes] file:///isar-apt ${DEBDISTRONAME} main" | \ sudo tee "$ROOTFSDIR/etc/apt/sources.list.d/isar-apt.list" >/dev/null diff --git a/meta/recipes-devtools/buildchroot/buildchroot.bb b/meta/recipes-devtools/buildchroot/buildchroot.bb index e405509..10142b7 100644 --- a/meta/recipes-devtools/buildchroot/buildchroot.bb +++ b/meta/recipes-devtools/buildchroot/buildchroot.bb @@ -69,7 +69,7 @@ do_build[root_cleandirs] = "${BUILDCHROOT_DIR} \ do_build[depends] = "isar-apt:do_cache_config isar-bootstrap:do_deploy" do_build() { - setup_root_file_system "${BUILDCHROOT_DIR}" "noclean" \ + setup_root_file_system "${BUILDCHROOT_DIR}" "noclean" "-" \ ${BUILDCHROOT_PREINSTALL} # Install package builder script -- 2.13.7