summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Deutschmann <whissi@gentoo.org>2019-07-14 09:46:06 +0200
committerThomas Deutschmann <whissi@gentoo.org>2019-07-14 13:58:13 +0200
commit6dd99d677d9c85500f98538fd86a7b6162f01f75 (patch)
tree6127aca075148ca9f55d8f8c9f38a55aa83cf163
parentgen_initramfs.sh: Refactor append_auxilary() (diff)
downloadgenkernel-6dd99d677d9c85500f98538fd86a7b6162f01f75.tar.gz
genkernel-6dd99d677d9c85500f98538fd86a7b6162f01f75.tar.bz2
genkernel-6dd99d677d9c85500f98538fd86a7b6162f01f75.zip
gen_initramfs.sh: Refactor append_base_layout()
Signed-off-by: Thomas Deutschmann <whissi@gentoo.org>
-rw-r--r--defaults/linuxrc6
-rwxr-xr-xgen_initramfs.sh132
2 files changed, 100 insertions, 38 deletions
diff --git a/defaults/linuxrc b/defaults/linuxrc
index 376cb474..8e275cad 100644
--- a/defaults/linuxrc
+++ b/defaults/linuxrc
@@ -29,6 +29,12 @@ echo 1 > /proc/sys/kernel/printk
# Set up symlinks
/bin/busybox --install -s
+gk_ver="$(cat /etc/build_id)"
+gk_build_date="$(cat /etc/build_date)"
+kernel_ver="$(uname -r)"
+
+good_msg "${gk_ver} (${gk_build_date}). Linux kernel ${kernel_ver}"
+
if [ "$0" = '/init' ]
then
[ -e /linuxrc ] && rm /linuxrc
diff --git a/gen_initramfs.sh b/gen_initramfs.sh
index 9c0dc5e4..87c3d098 100755
--- a/gen_initramfs.sh
+++ b/gen_initramfs.sh
@@ -95,47 +95,103 @@ append_devices() {
}
append_base_layout() {
- if [ -d "${TEMP}/initramfs-base-temp" ]
+ local TDIR="${TEMP}/initramfs-base-temp"
+ if [ -d "${TDIR}" ]
then
- rm -rf "${TEMP}/initramfs-base-temp" > /dev/null
- fi
-
- mkdir -p ${TEMP}/initramfs-base-temp/dev
- mkdir -p ${TEMP}/initramfs-base-temp/bin
- mkdir -p ${TEMP}/initramfs-base-temp/etc
- mkdir -p ${TEMP}/initramfs-base-temp/usr
- mkdir -p ${TEMP}/initramfs-base-temp/lib
- mkdir -p ${TEMP}/initramfs-base-temp/mnt
- mkdir -p ${TEMP}/initramfs-base-temp/run
- mkdir -p ${TEMP}/initramfs-base-temp/sbin
- mkdir -p ${TEMP}/initramfs-base-temp/proc
- mkdir -p ${TEMP}/initramfs-base-temp/temp
- mkdir -p ${TEMP}/initramfs-base-temp/tmp
- mkdir -p ${TEMP}/initramfs-base-temp/sys
- mkdir -p ${TEMP}/initramfs-base-temp/.initrd
- mkdir -p ${TEMP}/initramfs-base-temp/var/lock/dmraid
- mkdir -p ${TEMP}/initramfs-base-temp/sbin
- mkdir -p ${TEMP}/initramfs-base-temp/usr/bin
- mkdir -p ${TEMP}/initramfs-base-temp/usr/sbin
- ln -s lib ${TEMP}/initramfs-base-temp/lib64
-
- echo "/dev/ram0 / ext2 defaults 0 0" > ${TEMP}/initramfs-base-temp/etc/fstab
- echo "proc /proc proc defaults 0 0" >> ${TEMP}/initramfs-base-temp/etc/fstab
-
- date -u '+%Y%m%d-%H%M%S' > ${TEMP}/initramfs-base-temp/etc/build_date
- echo "Genkernel $GK_V" > ${TEMP}/initramfs-base-temp/etc/build_id
-
- mkdir -p "${TEMP}/initramfs-base-temp/etc/mdev/helpers"
- install -m 644 -t "${TEMP}/initramfs-base-temp/etc" /usr/share/genkernel/mdev/mdev.conf
- install -m 755 -t "${TEMP}/initramfs-base-temp/etc/mdev/helpers" /usr/share/genkernel/mdev/helpers/nvme
- install -m 755 -t "${TEMP}/initramfs-base-temp/etc/mdev/helpers" /usr/share/genkernel/mdev/helpers/storage-device
-
- cd "${TEMP}/initramfs-base-temp/"
+ rm -r "${TDIR}" || gen_die "Failed to clean out existing '${TDIR}'!"
+ fi
+
+ mkdir "${TDIR}" || gen_die "Failed to create '${TDIR}'!"
+ cd "${TDIR}" || gen_die "Failed to chdir to '${TDIR}'!"
+
+ local mydir=
+ for mydir in \
+ .initrd \
+ bin \
+ dev \
+ etc \
+ etc/mdev/helpers \
+ lib \
+ mnt \
+ proc \
+ run \
+ sbin \
+ sys \
+ tmp \
+ usr \
+ usr/bin \
+ usr/lib \
+ usr/sbin \
+ var/log \
+ ; do
+ mkdir -p "${TDIR}"/${mydir} || gen_die "Failed to create '${TDIR}/${mydir}'!"
+ done
+
+ ln -s ../run var/run || gen_die "Failed to create symlink '${TDIR}/var/run' to '${TDIR}/run'!"
+
+ chmod 1777 "${TDIR}"/tmp || gen_die "Failed to chmod of '${TDIR}/tmp' to 1777!"
+
+ # In general, we don't really need lib{32,64} anymore because we now
+ # compile most stuff on our own and therefore don't have to deal with
+ # multilib anymore. However, when copy_binaries() was used to copy
+ # binaries from a multilib-enabled system, this could be a problem.
+ # So let's keep symlinks to ensure that all libraries will land in
+ # /lib.
+ local myliblink
+ for myliblink in \
+ lib32 \
+ lib64 \
+ usr/lib32 \
+ usr/lib64 \
+ ; do
+ ln -s lib ${myliblink} || gen_die "Failed to create symlink '${TDIR}/${myliblink}' to '${TDIR}/lib'!"
+ done
+
+ print_info 2 "$(get_indent 2)>> Populating '/etc/fstab' ..."
+ echo "/dev/ram0 / ext2 defaults 0 0" > "${TDIR}"/etc/fstab \
+ || gen_die "Failed to add /dev/ram0 to '${TDIR}/etc/fstab'!"
+
+ echo "proc /proc proc defaults 0 0" >> "${TDIR}"/etc/fstab \
+ || gen_die "Failed to add proc to '${TDIR}/etc/fstab'!"
+
+ print_info 2 "$(get_indent 2)>> Adding /etc/ld.so.conf ..."
+ cat >"${TDIR}"/etc/ld.so.conf <<-EOF
+ # ld.so.conf generated by genkernel
+ include ld.so.conf.d/*.conf
+ /lib
+ /usr/lib
+ EOF
+
+ print_info 2 "$(get_indent 2)>> Adding misc files ..."
+ date -u '+%Y-%m-%d %H:%M:%S UTC' > "${TDIR}"/etc/build_date \
+ || gen_die "Failed to create '${TDIR}/etc/build_date'!"
+
+ echo "Genkernel $GK_V" > "${TDIR}"/etc/build_id \
+ || gen_die "Failed to create '${TDIR}/etc/build_id'!"
+
+ dd if=/dev/zero of="${TDIR}/var/log/lastlog" bs=1 count=0 seek=0 &>/dev/null \
+ || die "Failed to create '${TDIR}/var/log/lastlog'!"
+
+ dd if=/dev/zero of="${TDIR}/var/log/wtmp" bs=1 count=0 seek=0 &>/dev/null \
+ || die "Failed to create '${TDIR}/var/log/wtmp'!"
+
+ dd if=/dev/zero of="${TDIR}/run/utmp" bs=1 count=0 seek=0 &>/dev/null \
+ || die "Failed to create '${TDIR}/run/utmp'!"
+
+ print_info 2 "$(get_indent 2)>> Adding mdev config ..."
+ install -m 644 -t "${TDIR}"/etc "${GK_SHARE}"/mdev/mdev.conf \
+ || gen_die "Failed to install '${GK_SHARE}/mdev/mdev.conf'!"
+
+ install -m 755 -t "${TDIR}"/etc/mdev/helpers "${GK_SHARE}"/mdev/helpers/nvme \
+ || gen_die "Failed to install '${GK_SHARE}/mdev/helpers/nvme'!"
+
+ install -m 755 -t "${TDIR}"/etc/mdev/helpers "${GK_SHARE}"/mdev/helpers/storage-device \
+ || gen_die "Failed to install '${GK_SHARE}/mdev/helpers/storage-device'!"
+
+ cd "${TDIR}" || gen_die "Failed to chdir to '${TDIR}'!"
log_future_cpio_content
find . -print | cpio ${CPIO_ARGS} --append -F "${CPIO}" \
- || gen_die "compressing baselayout cpio"
- cd "${TEMP}"
- rm -rf "${TEMP}/initramfs-base-temp" > /dev/null
+ || gen_die "Failed to append baselayout to cpio!"
}
append_busybox() {