diff options
author | 2019-07-14 09:46:06 +0200 | |
---|---|---|
committer | 2019-07-14 13:58:13 +0200 | |
commit | 6dd99d677d9c85500f98538fd86a7b6162f01f75 (patch) | |
tree | 6127aca075148ca9f55d8f8c9f38a55aa83cf163 | |
parent | gen_initramfs.sh: Refactor append_auxilary() (diff) | |
download | genkernel-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/linuxrc | 6 | ||||
-rwxr-xr-x | gen_initramfs.sh | 132 |
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() { |