commit: 3d23af3d4a02c676702cf6d8ddc36a9317320ea8
Author: Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
AuthorDate: Sat Feb 15 20:36:29 2020 +0000
Commit: Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
CommitDate: Sat Feb 15 20:38:11 2020 +0000
URL: https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=3d23af3d
Add b2sum
b2sum can be used to verify (boot) media since
commit 5c55dd467a563623f16be27f670b5a3ddc79fb02.
Signed-off-by: Thomas Deutschmann <whissi <AT> gentoo.org>
doc/genkernel.8.txt | 4 +++
gen_cmdline.sh | 6 +++++
gen_determineargs.sh | 1 +
gen_initramfs.sh | 31 +++++++++++++++++++++-
genkernel.conf | 3 +++
gkbuilds/coreutils.gkbuild | 66 ++++++++++++++++++++++++++++++++++++++++++++++
6 files changed, 110 insertions(+), 1 deletion(-)
diff --git a/doc/genkernel.8.txt b/doc/genkernel.8.txt
index 6c7b9bd..e00e028 100644
--- a/doc/genkernel.8.txt
+++ b/doc/genkernel.8.txt
@@ -430,6 +430,10 @@ system is able to load multiple initramfs.
`gpg --symmetric -o /path/to/LUKS-key.gpg /path/to/LUKS-key` .
After that, re-point the *root_key* argument to the new .gpg file.
+*--*[*no-*]*b2sum*::
+ Includes or excludes b2sum in the initramfs.
+ When enabled, this will compile coreutils' b2sum for you.
+
*--*[*no-*]*busybox*::
Includes or excludes busybox in the initramfs.
When enabled, this will compile busybox for you.
diff --git a/gen_cmdline.sh b/gen_cmdline.sh
index c0139d4..aa54c29 100755
--- a/gen_cmdline.sh
+++ b/gen_cmdline.sh
@@ -168,6 +168,8 @@ longusage() {
echo " --no-luks Exclude LUKS support"
echo " --gpg Include GPG-armored LUKS key support"
echo " --no-gpg Exclude GPG-armored LUKS key support"
+ echo " --b2sum Include b2sum"
+ echo " --no-b2sum Exclude b2sum"
echo " --busybox Include busybox"
echo " --no-busybox Exclude busybox"
echo " --unionfs Include support for unionfs"
@@ -383,6 +385,10 @@ parse_cmdline() {
CMD_MDADM_CONFIG="${*#*=}"
print_info 3 "CMD_MDADM_CONFIG: ${CMD_MDADM_CONFIG}"
;;
+ --b2sum|--no-b2sum)
+ CMD_B2SUM=$(parse_optbool "$*")
+ print_info 3 "CMD_B2SUM: ${CMD_B2SUM}"
+ ;;
--busybox|--no-busybox)
CMD_BUSYBOX=$(parse_optbool "$*")
print_info 3 "CMD_BUSYBOX: ${CMD_BUSYBOX}"
diff --git a/gen_determineargs.sh b/gen_determineargs.sh
index fffb3e9..14ef757 100755
--- a/gen_determineargs.sh
+++ b/gen_determineargs.sh
@@ -340,6 +340,7 @@ determine_real_args() {
set_config_with_override BOOL HYPERV
CMD_HYPERV "no"
set_config_with_override STRING BOOTFONT
CMD_BOOTFONT "none"
set_config_with_override STRING BOOTLOADER
CMD_BOOTLOADER "no"
+ set_config_with_override BOOL B2SUM
CMD_B2SUM "no"
set_config_with_override BOOL BUSYBOX
CMD_BUSYBOX "yes"
set_config_with_override STRING BUSYBOX_CONFIG
CMD_BUSYBOX_CONFIG
set_config_with_override BOOL NFS
CMD_NFS "yes"
diff --git a/gen_initramfs.sh b/gen_initramfs.sh
index 2ad4e64..d055b24 100755
--- a/gen_initramfs.sh
+++ b/gen_initramfs.sh
@@ -363,6 +363,7 @@ append_base_layout() {
isTrue "${MICROCODE_INITRAMFS}" && build_parameters+=(
--microcode-initramfs ) || build_parameters+=( --no-microcode-initramfs )
isTrue "${RAMDISKMODULES}" && build_parameters+=( --ramdisk-modules )
|| build_parameters+=( --no-ramdisk-modules )
isTrue "${BUSYBOX}" && build_parameters+=( --busybox ) ||
build_parameters+=( --no-busybox )
+ isTrue "${B2SUM}" && build_parameters+=( --b2sum ) ||
build_parameters+=( --no-b2sum )
isTrue "${DISKLABEL}" && build_parameters+=( --disklabel ) ||
build_parameters+=( --no-disklabel )
isTrue "${BTRFS}" && build_parameters+=( --btrfs ) ||
build_parameters+=( --no-btrfs )
isTrue "${ISCSI}" && build_parameters+=( --iscsi ) ||
build_parameters+=( --no-iscsi )
@@ -504,6 +505,33 @@ append_e2fsprogs() {
fi
}
+append_b2sum() {
+ local PN="coreutils"
+ local TDIR="${TEMP}/initramfs-b2sum-temp"
+ if [ -d "${TDIR}" ]
+ then
+ rm -r "${TDIR}" || gen_die "Failed to clean out existing
'${TDIR}'!"
+ fi
+
+ populate_binpkg ${PN}
+
+ mkdir -p "${TDIR}" || gen_die "Failed to create '${TDIR}'!"
+
+ unpack "$(get_gkpkg_binpkg "${PN}")" "${TDIR}"
+
+ cd "${TDIR}" || gen_die "Failed to chdir to '${TDIR}'!"
+
+ log_future_cpio_content
+ find . -print0 | "${CPIO_COMMAND}" ${CPIO_ARGS} --append -F
"${CPIO_ARCHIVE}" \
+ || gen_die "Failed to append b2sum to cpio!"
+
+ cd "${TEMP}" || die "Failed to chdir to '${TEMP}'!"
+ if isTrue "${CLEANUP}"
+ then
+ rm -rf "${TDIR}"
+ fi
+}
+
append_blkid() {
local PN="util-linux"
local TDIR="${TEMP}/initramfs-blkid-temp"
@@ -1742,9 +1770,10 @@ create_initramfs() {
append_data 'devices' # WARNING, must be first!
append_data 'base_layout'
append_data 'auxilary' "${BUSYBOX}"
+ append_data 'busybox' "${BUSYBOX}"
append_data 'blkid' "${DISKLABEL}"
+ append_data 'b2sum' "${B2SUM}"
append_data 'btrfs' "${BTRFS}"
- append_data 'busybox' "${BUSYBOX}"
append_data 'dmraid' "${DMRAID}"
append_data 'dropbear' "${SSH}"
append_data 'e2fsprogs' "${E2FSPROGS}"
diff --git a/genkernel.conf b/genkernel.conf
index c5d7052..43415ef 100644
--- a/genkernel.conf
+++ b/genkernel.conf
@@ -100,6 +100,9 @@ NOCOLOR="false"
# Add SSH support
#SSH="no"
+# Add b2sum support
+#B2SUM="no"
+
# Include busybox in the initramfs. If included, busybox is rebuilt
# if the cached copy is out of date.
#BUSYBOX="yes"
diff --git a/gkbuilds/coreutils.gkbuild b/gkbuilds/coreutils.gkbuild
new file mode 100644
index 0000000..f320d63
--- /dev/null
+++ b/gkbuilds/coreutils.gkbuild
@@ -0,0 +1,66 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+src_prepare() {
+ default
+
+ # Since we've patched many .c files, the make process will try to
+ # re-build the manpages by running `./bin --help`. When doing a
+ # cross-compile, we can't do that since 'bin' isn't a native bin.
+ # Also, it's not like we changed the usage on any of these things,
+ # so let's just update the timestamps and skip the help2man step.
+ set -- man/*.x
+ touch ${@/%x/1}
+
+ # Avoid perl dep for compiled in dircolors default #348642
+ touch src/dircolors.h
+ touch ${@/%x/1}
+}
+
+src_configure() {
+ append-ldflags -static
+
+ # configure doesn't like our TMPDIR and would try to write to
+ # /usr instead which would trigger sandbox
+ export ac_cv_sys_long_file_names=yes
+
+ export gl_cv_func_mknod_works=yes #409919
+
+ # no selinux
+ export
ac_cv_{header_selinux_{context,flash,selinux}_h,search_setfilecon}=no
+
+ if tc-is-cross-compiler
+ then
+ export fu_cv_sys_stat_statfs2_bsize=yes #311569
+ export gl_cv_func_realpath_works=yes #416629
+ export gl_cv_func_working_mktime=yes
+ fi
+
+ local myconf=(
+ --with-packager="genkernel"
+ --enable-largefile
+ --disable-libcap
+ --disable-nls
+ --disable-acl
+ --disable-xattr
+ --without-gmp
+
--enable-no-install-program="stdbuf,groups,hostname,kill,su,uptime"
+ )
+
+ gkconf "${myconf[@]}"
+}
+
+src_install() {
+ local MYMAKEOPTS=( "V=1" )
+ MYMAKEOPTS+=( "DESTDIR=${D}" )
+ MYMAKEOPTS+=( "install" )
+ gkmake "${MYMAKEOPTS[@]}"
+
+ # We are only interested in b2sum
+ find "${D}" -type f -not -name 'b2sum' -print0 | xargs --null -I {} rm
{}
+
+ rm -rf "${D}"/usr/share || die "Failed to remove '${D}/usr/share'!"
+
+ "${STRIP}" --strip-all "${D}"/usr/bin/b2sum \
+ || die "Failed to strip '${D}/usr/bin/b2sum'!"
+}