public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] proj/genkernel:master commit in: defaults/, /
@ 2015-04-12 21:04 Mike Frysinger
  0 siblings, 0 replies; 10+ messages in thread
From: Mike Frysinger @ 2015-04-12 21:04 UTC (permalink / raw
  To: gentoo-commits

commit:     8434722d7bfcb4b6d7d6dc7f6f5f6330bbe9289a
Author:     Mike Frysinger <vapier <AT> gentoo <DOT> org>
AuthorDate: Sun Apr 12 21:03:46 2015 +0000
Commit:     Mike Frysinger <vapier <AT> gentoo <DOT> org>
CommitDate: Sun Apr 12 21:03:46 2015 +0000
URL:        https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=8434722d

update old cryptsetup-luks references

URL: https://bugs.gentoo.org/504006
Reported-by: e1903131 <AT> drdrb.com

 defaults/initrd.scripts | 2 +-
 gen_cmdline.sh          | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts
index 5ef5d0b..153c379 100644
--- a/defaults/initrd.scripts
+++ b/defaults/initrd.scripts
@@ -826,7 +826,7 @@ startiscsi() {
 
 
 # Open a LUKS device
-# It is either the root or a swap, other devices are supported in the scripts provided with sys-fs/cryptsetup-luks
+# It is either the root or a swap, other devices are supported in the scripts provided with sys-fs/cryptsetup
 # $1 - root/swap
 openLUKS() {
 	# please use 'tr' and this line, or remove it

diff --git a/gen_cmdline.sh b/gen_cmdline.sh
index baa58fa..2678d5d 100755
--- a/gen_cmdline.sh
+++ b/gen_cmdline.sh
@@ -110,7 +110,7 @@ longusage() {
   echo "	--disklabel		Include disk label and uuid support in your ramdisk"
   echo "	--no-disklabel	Exclude disk label and uuid support in your ramdisk"
   echo "	--luks			Include LUKS support"
-  echo "				--> 'emerge cryptsetup-luks' with USE=-dynamic"
+  echo "				--> 'emerge cryptsetup' with USE=static"
   echo "	--no-luks		Exclude LUKS support"
   echo "	--gpg			Include GPG-armored LUKS key support"
   echo "	--no-gpg		Exclude GPG-armored LUKS key support"


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [gentoo-commits] proj/genkernel:master commit in: defaults/, /
@ 2016-01-05 18:51 Richard Farina
  0 siblings, 0 replies; 10+ messages in thread
From: Richard Farina @ 2016-01-05 18:51 UTC (permalink / raw
  To: gentoo-commits

commit:     ed52f905b67f4dc25ec99ae63b68240efb710958
Author:     Rick Farina (Zero_Chaos) <zerochaos <AT> gentoo <DOT> org>
AuthorDate: Tue Jan  5 18:49:44 2016 +0000
Commit:     Richard Farina <zerochaos <AT> gentoo <DOT> org>
CommitDate: Tue Jan  5 18:49:44 2016 +0000
URL:        https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=ed52f905

lvm should not be moved

moving lvm from sbin to bin breaks the symlinks and makes using the
debug shell much harder.  Patch suggested by TomWij and independantly
recreated by Zero_Chaos and ryao.  bug #448156

 defaults/initrd.scripts | 8 ++++----
 gen_initramfs.sh        | 7 ++++---
 2 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts
index 2612574..1bab361 100644
--- a/defaults/initrd.scripts
+++ b/defaults/initrd.scripts
@@ -985,15 +985,15 @@ startVolumes() {
 
 	if [ "${USE_LVM_NORMAL}" = '1' ]
 	then
-		if [ -x '/bin/lvm' ]
+		if [ -x '/sbin/lvm' ]
 		then
 			for dev in ${RAID_DEVICES}
 			do
 				setup_md_device "${dev}"
 			done
 
-			# This is needed for /bin/lvm to accept the following logic
-			lvm_commands="#! /bin/lvm"
+			# This is needed for /sbin/lvm to accept the following logic
+			lvm_commands="#! /sbin/lvm"
 
 			# If there is a cahe, update it. Unbreak at least dmcrypt
 			[ -d /etc/lvm/cache ] && lvm_commands="${lvm_commands} \nvgscan"
@@ -1008,7 +1008,7 @@ startVolumes() {
 
 			# And finally execute it all (/proc/... needed if lvm is compiled without readline)
 			good_msg "Scanning for and activating Volume Groups"
-			printf "%b\n" "${lvm_commands}" | /bin/lvm /proc/self/fd/0
+			printf "%b\n" "${lvm_commands}" | /sbin/lvm /proc/self/fd/0
 		else
 			bad_msg "vgscan or vgchange not found: skipping LVM volume group activation!"
 		fi

diff --git a/gen_initramfs.sh b/gen_initramfs.sh
index 8fed1eb..9c9dfec 100755
--- a/gen_initramfs.sh
+++ b/gen_initramfs.sh
@@ -339,11 +339,12 @@ append_lvm(){
 	fi
 	cd ${TEMP}
 	mkdir -p "${TEMP}/initramfs-lvm-temp/bin/"
+	mkdir -p "${TEMP}/initramfs-lvm-temp/sbin/"
 	mkdir -p "${TEMP}/initramfs-lvm-temp/etc/lvm/"
 	if false && [ -e '/sbin/lvm.static' ]
 	then
 		print_info 1 '          LVM: Adding support (using local static binary /sbin/lvm.static)...'
-		cp /sbin/lvm.static "${TEMP}/initramfs-lvm-temp/bin/lvm" ||
+		cp /sbin/lvm.static "${TEMP}/initramfs-lvm-temp/sbin/lvm" ||
 			gen_die 'Could not copy over lvm!'
 		# See bug 382555
 		if [ -e '/sbin/dmsetup.static' ]
@@ -353,7 +354,7 @@ append_lvm(){
 	elif false && [ -e '/sbin/lvm' ] && LC_ALL="C" ldd /sbin/lvm|grep -q 'not a dynamic executable'
 	then
 		print_info 1 '          LVM: Adding support (using local static binary /sbin/lvm)...'
-		cp /sbin/lvm "${TEMP}/initramfs-lvm-temp/bin/lvm" ||
+		cp /sbin/lvm "${TEMP}/initramfs-lvm-temp/sbin/lvm" ||
 			gen_die 'Could not copy over lvm!'
 		# See bug 382555
 		if [ -e '/sbin/dmsetup' ] && LC_ALL="C" ldd /sbin/dmsetup | grep -q 'not a dynamic executable'
@@ -365,7 +366,7 @@ append_lvm(){
 		compile_lvm || gen_die "Could not compile LVM"
 		/bin/tar -jxpf "${LVM_BINCACHE}" -C "${TEMP}/initramfs-lvm-temp" ||
 			gen_die "Could not extract lvm binary cache!";
-		mv ${TEMP}/initramfs-lvm-temp/sbin/lvm.static ${TEMP}/initramfs-lvm-temp/bin/lvm ||
+		mv ${TEMP}/initramfs-lvm-temp/sbin/lvm.static ${TEMP}/initramfs-lvm-temp/sbin/lvm ||
 			gen_die 'LVM error: Could not move lvm.static to lvm!'
 		# See bug 382555
 		mv ${TEMP}/initramfs-lvm-temp/sbin/dmsetup.static ${TEMP}/initramfs-lvm-temp/bin/dmsetup ||


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [gentoo-commits] proj/genkernel:master commit in: defaults/, /
@ 2017-01-02 20:14 Matt Thode
  0 siblings, 0 replies; 10+ messages in thread
From: Matt Thode @ 2017-01-02 20:14 UTC (permalink / raw
  To: gentoo-commits

commit:     80524841cdb49683b6af7d49983bca8e9072c037
Author:     Matthew Thode <mthode <AT> mthode <DOT> org>
AuthorDate: Mon Jan  2 20:14:12 2017 +0000
Commit:     Matt Thode <prometheanfire <AT> gentoo <DOT> org>
CommitDate: Mon Jan  2 20:14:12 2017 +0000
URL:        https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=80524841

make nfs togglable fixes musl builds (requires nfs disabled)

 defaults/busy-config | 2 +-
 gen_cmdline.sh       | 4 ++++
 gen_compile.sh       | 4 ++++
 gen_determineargs.sh | 1 +
 4 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/defaults/busy-config b/defaults/busy-config
index 74938c6..9561aa1 100644
--- a/defaults/busy-config
+++ b/defaults/busy-config
@@ -584,7 +584,7 @@ CONFIG_FEATURE_MOUNT_FAKE=y
 CONFIG_FEATURE_MOUNT_VERBOSE=y
 CONFIG_FEATURE_MOUNT_HELPERS=y
 CONFIG_FEATURE_MOUNT_LABEL=y
-CONFIG_FEATURE_MOUNT_NFS=y
+# CONFIG_FEATURE_MOUNT_NFS is not set
 CONFIG_FEATURE_MOUNT_CIFS=y
 CONFIG_FEATURE_MOUNT_FLAGS=y
 CONFIG_FEATURE_MOUNT_FSTAB=y

diff --git a/gen_cmdline.sh b/gen_cmdline.sh
index e9f323c..57a8e1d 100755
--- a/gen_cmdline.sh
+++ b/gen_cmdline.sh
@@ -314,6 +314,10 @@ parse_cmdline() {
 			CMD_BUSYBOX=`parse_optbool "$*"`
 			print_info 2 "CMD_BUSYBOX: ${CMD_BUSYBOX}"
 			;;
+		--nfs|--no-nfs)
+			CMD_NFS=`parse_optbool "$*"`
+			print_info 2 "CMD_NFS: ${CMD_NFS}"
+			;;
 		--unionfs|--no-unionfs)
 			CMD_UNIONFS=`parse_optbool "$*"`
 			print_info 2 "CMD_UNIONFS: ${CMD_UNIONFS}"

diff --git a/gen_compile.sh b/gen_compile.sh
index 2b63f19..70a6732 100755
--- a/gen_compile.sh
+++ b/gen_compile.sh
@@ -433,6 +433,10 @@ compile_busybox() {
 			gen_die "Busybox directory ${BUSYBOX_DIR} is invalid!"
 		cp "${BUSYBOX_CONFIG}" "${BUSYBOX_DIR}/.config"
 		cp "${BUSYBOX_CONFIG}" "${BUSYBOX_DIR}/.config.gk_orig"
+		if isTrue "${NFS}"
+		then
+			sed -i 's/.*CONFIG_FEATURE_MOUNT_NFS.*/CONFIG_FEATURE_MOUNT_NFS=y/' "${BUSYBOX_DIR}/.config"
+		fi
 		cd "${BUSYBOX_DIR}"
 		apply_patches busybox ${BUSYBOX_VER}
 		print_info 1 'busybox: >> Configuring...'

diff --git a/gen_determineargs.sh b/gen_determineargs.sh
index 5402b45..0d908b6 100755
--- a/gen_determineargs.sh
+++ b/gen_determineargs.sh
@@ -116,6 +116,7 @@ determine_real_args() {
 	set_config_with_override BOOL   DMRAID               CMD_DMRAID
 	set_config_with_override BOOL   ISCSI                CMD_ISCSI
 	set_config_with_override BOOL   BUSYBOX              CMD_BUSYBOX              "yes"
+	set_config_with_override BOOL   NFS                  CMD_NFS                  "yes"
 	set_config_with_override BOOL   UNIONFS              CMD_UNIONFS
 	set_config_with_override BOOL   NETBOOT              CMD_NETBOOT
 	set_config_with_override STRING REAL_ROOT            CMD_REAL_ROOT


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [gentoo-commits] proj/genkernel:master commit in: defaults/, /
@ 2019-11-24 20:00 Thomas Deutschmann
  0 siblings, 0 replies; 10+ messages in thread
From: Thomas Deutschmann @ 2019-11-24 20:00 UTC (permalink / raw
  To: gentoo-commits

commit:     c016fa911d55334398fc83cf8ca4178c8d77484a
Author:     Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
AuthorDate: Wed Nov 20 01:58:00 2019 +0000
Commit:     Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
CommitDate: Sun Nov 24 19:59:16 2019 +0000
URL:        https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=c016fa91

kernel-generic-config: Disable Virtio by default, use --virtio

Signed-off-by: Thomas Deutschmann <whissi <AT> gentoo.org>

 defaults/kernel-generic-config | 21 ++-------------------
 gen_configkernel.sh            |  3 +++
 2 files changed, 5 insertions(+), 19 deletions(-)

diff --git a/defaults/kernel-generic-config b/defaults/kernel-generic-config
index c76b175..3e5d589 100644
--- a/defaults/kernel-generic-config
+++ b/defaults/kernel-generic-config
@@ -470,23 +470,8 @@ CONFIG_BLK_DEV_VIA82CXXX=y
 # CONFIG_BLK_DEV_IDEDMA is not set
 # CONFIG_BLK_DEV_HD is not set
 
-CONFIG_VIRTIO=m
-CONFIG_VIRTIO_BLK=m
-CONFIG_VIRTIO_BLK_SCSI=m
-CONFIG_VIRTIO_RING=m
-CONFIG_VIRTIO_PCI=m
-CONFIG_VIRTIO_BALLOON=m
-CONFIG_VIRTIO_NET=m
-CONFIG_VMXNET3=m
-CONFIG_HW_RANDOM_VIRTIO=m
-CONFIG_VIRTIO_CONSOLE=m
-CONFIG_VIRTIO_MMIO=m
-CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y
-CONFIG_VIRTIO_VSOCKETS=m
-CONFIG_BLK_MQ_VIRTIO=y
-CONFIG_CRYPTO_DEV_VIRTIO=m
-CONFIG_DRM_VIRTIO_GPU=m
-
+# CONFIG_VIRT_DRIVERS is not set
+# CONFIG_VIRTIO_MENU is not set
 
 #
 # SCSI device support
@@ -946,7 +931,6 @@ CONFIG_RDS_TCP=m
 
 CONFIG_NET_9P=m
 CONFIG_NET_9P_FD=m
-CONFIG_NET_9P_VIRTIO=m
 # CONFIG_NET_9P_DEBUG is not set
 CONFIG_NET_9P_RDMA=m
 
@@ -4529,7 +4513,6 @@ CONFIG_IXGBEVF=m
 CONFIG_IXGBE_HWMON=y
 CONFIG_IXGBE_PTP=y
 CONFIG_VMWARE_PVSCSI=m
-CONFIG_SCSI_VIRTIO=m
 CONFIG_SCSI_PM8001=m
 CONFIG_MACVTAP=m
 CONFIG_SND_HDA_PREALLOC_SIZE=512

diff --git a/gen_configkernel.sh b/gen_configkernel.sh
index d95368f..6141ba6 100755
--- a/gen_configkernel.sh
+++ b/gen_configkernel.sh
@@ -749,6 +749,9 @@ config_kernel() {
 		kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_VIRTIO_MMIO" "${newvirtio_setting}"
 		kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES" "y"
 
+		kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_NET_9P" "${newvirtio_setting}"
+		kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_NET_9P_VIRTIO" "${newvirtio_setting}"
+
 		if [ ${KV_NUMERIC} -ge 4008 ]
 		then
 			local cfg_CONFIG_VSOCKETS=$(kconfig_get_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_VSOCKETS")


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [gentoo-commits] proj/genkernel:master commit in: defaults/, /
@ 2020-01-12 14:59 Thomas Deutschmann
  0 siblings, 0 replies; 10+ messages in thread
From: Thomas Deutschmann @ 2020-01-12 14:59 UTC (permalink / raw
  To: gentoo-commits

commit:     9e7b41cda3df648b509a0f8a2af29a683100a46f
Author:     Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
AuthorDate: Fri Jan 10 16:07:20 2020 +0000
Commit:     Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
CommitDate: Sat Jan 11 19:54:40 2020 +0000
URL:        https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=9e7b41cd

Rework ZFS unlock

- Prompt for key when key is unavailable, not when key is available.

- Check ZFS' keystatus property instead of return value to allow
  remote unlock.

- Add unlock-zfs command to remote rescue shell.

Closes: https://bugs.gentoo.org/705032
Signed-off-by: Thomas Deutschmann <whissi <AT> gentoo.org>

 defaults/initrd.defaults |  3 ++
 defaults/initrd.scripts  | 38 +++++++++++++++-----
 defaults/linuxrc         | 42 +++++++++++++++-------
 defaults/login-remote.sh |  5 +++
 defaults/unlock-zfs.sh   | 91 ++++++++++++++++++++++++++++++++++++++++++++++++
 gen_initramfs.sh         |  6 ++++
 6 files changed, 165 insertions(+), 20 deletions(-)

diff --git a/defaults/initrd.defaults b/defaults/initrd.defaults
index 198800b..15326dd 100644
--- a/defaults/initrd.defaults
+++ b/defaults/initrd.defaults
@@ -103,6 +103,9 @@ CRYPT_KEYFILE_SWAP='/tmp/swap.key'
 CRYPT_ROOT_OPENED_LOCKFILE='/tmp/ROOT.opened'
 CRYPT_SWAP_OPENED_LOCKFILE='/tmp/SWAP.opened'
 
+ZFS_ENC_ENV_FILE='/etc/ZFS_ENC_ENV.conf'
+ZFS_ENC_OPENED_LOCKFILE='/tmp/ZFS.opened'
+
 # Flag for if ok when using CDROOT
 got_good_root='0'
 # if LOOP found on root before mount, trigger Unpacking additional packages

diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts
index 73cd94c..6c7d72b 100644
--- a/defaults/initrd.scripts
+++ b/defaults/initrd.scripts
@@ -1087,6 +1087,20 @@ warn_msg() {
 	[ "$2" != '1' ] && printf "%b\n" "${WARN}**${NORMAL}${BOLD} ${msg_string} ${NORMAL}"
 }
 
+write_env_file() {
+	local env_file=${1}
+	shift
+
+	run touch "${env_file}"
+
+	local varname= varvalue=
+	for varname in $*
+	do
+		eval varvalue=\$${varname}
+		echo "${varname}=${varvalue}" >> "${env_file}"
+	done
+}
+
 crypt_filter() {
 	if [ "${CRYPT_SILENT}" = '1' ]
 	then
@@ -2265,14 +2279,15 @@ start_sshd() {
 		return
 	fi
 
-	# setup environment variables for the ssh login shell
-	local varname= varvalue=
-	run touch "${CRYPT_ENV_FILE}"
-	for varname in CRYPT_ROOT CRYPT_ROOT_TRIM CRYPT_SILENT CRYPT_SWAP
-	do
-		eval varvalue=\$${varname}
-		echo "${varname}=${varvalue}" >> "${CRYPT_ENV_FILE}"
-	done
+	# setup environment variables for the remote rescue shell
+	# ZFS will use a different file because $REAL_ROOT for ZFS
+	# isn't known yet.
+	write_env_file \
+		"${CRYPT_ENV_FILE}" \
+		CRYPT_ROOT \
+		CRYPT_ROOT_TRIM \
+		CRYPT_SILENT \
+		CRYPT_SWAP
 
 	run touch /var/log/lastlog
 
@@ -2679,6 +2694,13 @@ get_mount_device() {
 		' ${NEW_ROOT}/etc/fstab
 }
 
+get_zfs_property() {
+	local device=${1}
+	local propertyname=${2}
+
+	echo "$(zfs get -H -o value ${propertyname} "${device}" 2>/dev/null)"
+}
+
 # If the kernel is handed a mount option is does not recognize, it WILL fail to
 # mount. util-linux handles auto/noauto, but busybox passes it straight to the kernel
 # which then rejects the mount.

diff --git a/defaults/linuxrc b/defaults/linuxrc
index f585017..7fbd0ad 100644
--- a/defaults/linuxrc
+++ b/defaults/linuxrc
@@ -491,7 +491,7 @@ then
 		if [ ! -x ${i} ]
 		then
 			USE_ZFS=0
-			bad_msg 'Aborting use of zfs because ${i} not found!'
+			bad_msg "Aborting use of ZFS because ${i} not found!"
 			break
 		fi
 	done
@@ -740,7 +740,7 @@ do
 					ROOT_DEV="${REAL_ROOT#*=}"
 					if [ "${ROOT_DEV}" != 'ZFS' ]
 					then
-						if [ "$(zfs get type -o value -H ${ROOT_DEV} 2>/dev/null)" = 'filesystem' ]
+						if [ "$(get_zfs_property "${ROOT_DEV}" type)" = 'filesystem' ]
 						then
 							got_good_root=1
 							REAL_ROOT=${ROOT_DEV}
@@ -753,7 +753,7 @@ do
 							continue
 						fi
 					else
-						BOOTFS=$(/sbin/zpool list -H -o bootfs 2>/dev/null)
+						BOOTFS=$(zpool list -H -o bootfs 2>/dev/null)
 						if [ "${BOOTFS}" != '-' ]
 						then
 							for i in ${BOOTFS}
@@ -801,6 +801,14 @@ do
 			echo
 		fi
 
+		if [ "${USE_ZFS}" = '1' ]
+		then
+			write_env_file \
+				"${ZFS_ENC_ENV_FILE}" \
+				REAL_ROOT \
+				ROOTFSTYPE
+		fi
+
 		# Check for a block device or /dev/nfs or zfs encryption
 		if [ -n "${REAL_ROOT}" ] && [ "${REAL_ROOT}" = "/dev/nfs" ] || [ "${ROOTFSTYPE}" = "zfs" ] || [ -b "${REAL_ROOT}" ]
 		then
@@ -810,20 +818,30 @@ do
 				# let's check if this dataset is encrypted and ask for passphrase
 				if [ "$(zpool list -H -o feature@encryption "${REAL_ROOT%%/*}" 2>/dev/null)" = 'active' ]
 				then
-					ZFS_KEYSTATUS="$(zfs get -H -o value keystatus "${REAL_ROOT}" 2>/dev/null)"
-					ZFS_ENCRYPTIONROOT="$(zfs get -H -o value encryptionroot "${REAL_ROOT}" 2>/dev/null)"
-					if ! [ "${ZFS_ENCRYPTIONROOT}" = '-' ] || [ "${ZFS_KEYSTATUS}" = 'available' ]
+					ZFS_KEYSTATUS="$(get_zfs_property "${REAL_ROOT}" keystatus)"
+					ZFS_ENCRYPTIONROOT="$(get_zfs_property "${REAL_ROOT}" encryptionroot)"
+					if [ "${ZFS_ENCRYPTIONROOT}" != '-' ] && [ "${ZFS_KEYSTATUS}" = 'unavailable' ]
 					then
 						good_msg "Detected ZFS encryption, asking for key"
-						zfs load-key "${ZFS_ENCRYPTIONROOT}"
-						retval=$?
-						# if the key loaded fine, confirm got_good_root to exit second while loop
-						if [ ${retval} -ne 0 ]
+						run zfs load-key "${ZFS_ENCRYPTIONROOT}"
+
+						# Get new key status to check if load-key was successful
+						# or dataset has been opened by someone else in the meantime (through SSH for instance)
+						ZFS_KEYSTATUS="$(get_zfs_property "${REAL_ROOT}" keystatus)"
+
+						if [ "${ZFS_KEYSTATUS}" != 'available' ]
 						then
-							bad_msg "${ROOT_DEV} is encrypted and not mountable without key"
+							bad_msg "${REAL_ROOT} is encrypted and not mountable without key"
 							got_good_root=0
 							break
 						fi
+
+						if [ -f "${ZFS_ENC_OPENED_LOCKFILE}" ]
+						then
+							good_msg "${REAL_ROOT} device meanwhile was opened by someone else."
+						else
+							run touch "${ZFS_ENC_OPENED_LOCKFILE}"
+						fi
 					fi
 				fi
 			else
@@ -849,7 +867,7 @@ do
 
 		if [ "${ROOTFSTYPE}" = 'zfs' ]
 		then
-			if [ "$(zfs get -H -o value mountpoint "${REAL_ROOT}")" = 'legacy' ]
+			if [ "$(get_zfs_property "${REAL_ROOT}" mountpoint)" = 'legacy' ]
 			then
 				MOUNT_STATE=rw
 			else

diff --git a/defaults/login-remote.sh b/defaults/login-remote.sh
index 588504f..94ee014 100644
--- a/defaults/login-remote.sh
+++ b/defaults/login-remote.sh
@@ -105,6 +105,11 @@ else
 		good_msg "${NORMAL}To remote unlock LUKS-encrypted swap device, run '${BOLD}unlock-luks swap${NORMAL}'."
 	fi
 
+	if [ -e "${ZFS_ENC_ENV_FILE}" ] && [ ! -f "${ZFS_ENC_OPENED_LOCKFILE}" ]
+	then
+		good_msg "${NORMAL}To remote unlock ZFS root device, run '${BOLD}unlock-zfs${NORMAL}'."
+	fi
+
 	echo
 
 	[ -x /bin/sh ] && SH=/bin/sh || SH=/bin/ash

diff --git a/defaults/unlock-zfs.sh b/defaults/unlock-zfs.sh
new file mode 100644
index 0000000..c22a214
--- /dev/null
+++ b/defaults/unlock-zfs.sh
@@ -0,0 +1,91 @@
+#!/bin/sh
+
+. /etc/initrd.defaults
+. /etc/initrd.scripts
+
+GK_INIT_LOG_PREFIX=${0}
+if [ -n "${SSH_CLIENT_IP}" ] && [ -n "${SSH_CLIENT_PORT}" ]
+then
+	GK_INIT_LOG_PREFIX="${0}[${SSH_CLIENT_IP}:${SSH_CLIENT_PORT}]"
+fi
+
+if [ -f "${ZFS_ENC_ENV_FILE}" ]
+then
+	. "${ZFS_ENC_ENV_FILE}"
+else
+	bad_msg "${ZFS_ENC_ENV_FILE} does not exist! Did you boot without 'dozfs' kernel command-line parameter?"
+	exit 1
+fi
+
+main() {
+	if ! hash zfs >/dev/null 2>&1
+	then
+		bad_msg "zfs program is missing. Was initramfs built without --zfs parameter?"
+		exit 1
+	elif ! hash zpool >/dev/null 2>&1
+	then
+		bad_msg "zpool program is missing. Was initramfs built without --zfs parameter?"
+		exit 1
+	elif [ -z "${ROOTFSTYPE}" ]
+	then
+		bad_msg "Something went wrong. ROOTFSTYPE is not set!"
+		exit 1
+	elif [ "${ROOTFSTYPE}" != "zfs" ]
+	then
+		bad_msg "ROOTFSTYPE of 'zfs' required but '${ROOTFSTYPE}' detected!"
+		exit 1
+	elif [ -z "${REAL_ROOT}" ]
+	then
+		bad_msg "Something went wrong. REAL_ROOT is not set!"
+		exit 1
+	fi
+
+	if [ "$(zpool list -H -o feature@encryption "${REAL_ROOT%%/*}" 2>/dev/null)" != 'active' ]
+	then
+		bad_msg "Root device ${REAL_ROOT} is not encrypted!"
+		exit 1
+	fi
+
+	local ZFS_ENCRYPTIONROOT="$(get_zfs_property "${REAL_ROOT}" encryptionroot)"
+	if [ "${ZFS_ENCRYPTIONROOT}" = '-' ]
+	then
+		bad_msg "Failed to determine encryptionroot for ${REAL_ROOT}!"
+		exit 1
+	fi
+
+	local ZFS_KEYSTATUS=
+	while true
+	do
+		if [ -e "${ZFS_ENC_OPENED_LOCKFILE}" ]
+		then
+			good_msg "${REAL_ROOT} device meanwhile was opened by someone else."
+			break
+		fi
+
+		zfs load-key "${ZFS_ENCRYPTIONROOT}"
+
+		ZFS_KEYSTATUS="$(get_zfs_property "${REAL_ROOT}" keystatus)"
+		if [ "${ZFS_KEYSTATUS}" = 'available' ]
+		then
+			run touch "${ZFS_ENC_OPENED_LOCKFILE}"
+			good_msg "ZFS device ${REAL_ROOT} opened"
+			break
+		else
+			bad_msg "Failed to open ZFS device ${REAL_ROOT}"
+
+			# We need to stop here with a non-zero exit code to prevent
+			# a loop when invalid keyfile was sent.
+			exit 1
+		fi
+	done
+
+	if [ "${ZFS_KEYSTATUS}" = 'available' ]
+	then
+		# Kill any running load-key prompt.
+		run pkill -f "load-key" >/dev/null 2>&1
+	fi
+}
+
+main
+
+exit 0

diff --git a/gen_initramfs.sh b/gen_initramfs.sh
index 676b86d..8620414 100755
--- a/gen_initramfs.sh
+++ b/gen_initramfs.sh
@@ -1342,6 +1342,9 @@ append_dropbear() {
 	cp -a "${GK_SHARE}"/defaults/unlock-luks.sh "${TDIR}"/usr/sbin/unlock-luks \
 		|| gen_die "Failed to copy '${GK_SHARE}/defaults/unlock-luks.sh' to '${TDIR}/usr/sbin/unlock-luks'"
 
+	cp -a "${GK_SHARE}"/defaults/unlock-zfs.sh "${TDIR}"/usr/sbin/unlock-zfs \
+		|| gen_die "Failed to copy '${GK_SHARE}/defaults/unlock-zfs.sh' to '${TDIR}/usr/sbin/unlock-zfs'"
+
 	cp -aL "${DROPBEAR_AUTHORIZED_KEYS_FILE}" "${TDIR}"/root/.ssh/ \
 		|| gen_die "Failed to copy '${DROPBEAR_AUTHORIZED_KEYS_FILE}'!"
 
@@ -1369,6 +1372,9 @@ append_dropbear() {
 	chmod 0755 "${TDIR}"/usr/sbin/unlock-luks \
 		|| gen_die "Failed to chmod of '${TDIR}/usr/sbin/unlock-luks'!"
 
+	chmod 0755 "${TDIR}"/usr/sbin/unlock-zfs \
+		|| gen_die "Failed to chmod of '${TDIR}/usr/sbin/unlock-zfs'!"
+
 	chmod 0640 "${TDIR}"/etc/shadow \
 		|| gen_die "Failed to chmod of '${TDIR}/etc/shadow'!"
 


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [gentoo-commits] proj/genkernel:master commit in: defaults/, /
@ 2020-07-16 15:03 Thomas Deutschmann
  0 siblings, 0 replies; 10+ messages in thread
From: Thomas Deutschmann @ 2020-07-16 15:03 UTC (permalink / raw
  To: gentoo-commits

commit:     cc875f5163a6e79110e4afcabe07acdacd369bf5
Author:     Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
AuthorDate: Tue Jul 14 15:00:21 2020 +0000
Commit:     Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
CommitDate: Thu Jul 16 14:29:16 2020 +0000
URL:        https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=cc875f51

gen_determineargs.sh: determine_real_args(): Don't call gcc directly

Set $CHOST variable via config so that we no longer need to call
gcc directly to determine CHOST value.

Signed-off-by: Thomas Deutschmann <whissi <AT> gentoo.org>

 defaults/config.sh   |  3 +++
 gen_determineargs.sh | 13 ++++++-------
 2 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/defaults/config.sh b/defaults/config.sh
index bab7b7e..f8cb311 100644
--- a/defaults/config.sh
+++ b/defaults/config.sh
@@ -49,3 +49,6 @@ DEFAULT_UTILS_CC=gcc
 DEFAULT_UTILS_CXX=g++
 DEFAULT_UTILS_AS=as
 DEFAULT_UTILS_LD=ld
+
+PORTAGE_CHOST="$(portageq envvar CHOST)"
+DEFAULT_CHOST="${PORTAGE_CHOST:-$(${DEFAULT_UTILS_CC} -dumpmachine 2>/dev/null)}"

diff --git a/gen_determineargs.sh b/gen_determineargs.sh
index 956e3bf..b464505 100755
--- a/gen_determineargs.sh
+++ b/gen_determineargs.sh
@@ -300,6 +300,7 @@ determine_real_args() {
 
 	set_config_with_override STRING COMPRESS_INITRD                       CMD_COMPRESS_INITRD                       "${DEFAULT_COMPRESS_INITRD}"
 	set_config_with_override STRING COMPRESS_INITRD_TYPE                  CMD_COMPRESS_INITRD_TYPE                  "${DEFAULT_COMPRESS_INITRD_TYPE}"
+	set_config_with_override STRING CHOST                                 CMD_CHOST                                 "${DEFAULT_CHOST}"
 	set_config_with_override STRING MAKEOPTS                              CMD_MAKEOPTS                              "${DEFAULT_MAKEOPTS}"
 	set_config_with_override STRING NICE                                  CMD_NICE                                  "10"
 	set_config_with_override STRING KERNEL_MAKE                           CMD_KERNEL_MAKE                           "${DEFAULT_KERNEL_MAKE}"
@@ -563,17 +564,15 @@ determine_real_args() {
 	ARCH_CONFIG="${GK_SHARE}/arch/${ARCH}/config.sh"
 	[ -f "${ARCH_CONFIG}" ] || gen_die "${ARCH} not yet supported by genkernel. Please add the arch-specific config file '${ARCH_CONFIG}'!"
 
-	# set CBUILD and CHOST
-	local build_cc=$(tc-getBUILD_CC)
-	CBUILD=$(${build_cc} -dumpmachine 2>/dev/null)
-	if [ -z "${CBUILD}" ]
+	# Set CBUILD and CHOST
+	if ! isTrue "$(is_valid_triplet "${CHOST}")"
 	then
-		gen_die "Failed to determine CBUILD using '${build_cc} -dumpmachine' command!"
+		gen_die "Set CHOST '${CHOST}' does NOT represent a valid triplet!"
 	else
+		# Initialize CBUILD with CHOST value
+		CBUILD=${CHOST}
 		print_info 5 "CBUILD set to '${CBUILD}' ..."
-		CHOST="${CBUILD}"
 	fi
-	unset build_cc
 
 	if [ -n "${CMD_CROSS_COMPILE}" ]
 	then


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [gentoo-commits] proj/genkernel:master commit in: defaults/, /
@ 2020-07-23 23:57 Thomas Deutschmann
  0 siblings, 0 replies; 10+ messages in thread
From: Thomas Deutschmann @ 2020-07-23 23:57 UTC (permalink / raw
  To: gentoo-commits

commit:     17cdd9c8ca954c180a216b9e33cf8de7be5f4a43
Author:     Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
AuthorDate: Thu Jul 23 21:05:18 2020 +0000
Commit:     Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
CommitDate: Thu Jul 23 22:56:48 2020 +0000
URL:        https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=17cdd9c8

dmraid: Switch to UDEV usage

Signed-off-by: Thomas Deutschmann <whissi <AT> gentoo.org>

 defaults/initrd.scripts | 18 +++++++++---------
 defaults/software.sh    |  2 +-
 gen_initramfs.sh        |  2 ++
 3 files changed, 12 insertions(+), 10 deletions(-)

diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts
index 7d852ee..d2db059 100644
--- a/defaults/initrd.scripts
+++ b/defaults/initrd.scripts
@@ -1548,10 +1548,12 @@ start_volumes() {
 
 	if [ "${USE_DMRAID_NORMAL}" = '1' ]
 	then
-		if [ -x '/sbin/dmraid' ]
+		if ! hash dmraid >/dev/null 2>&1
 		then
+			bad_msg "dodmraid invoked but 'dmraid' not found; Skipping dmraid activation ..."
+		else
 			good_msg "Activating Device-Mapper RAID(s) ..."
-			local dmraid_cmd="run /sbin/dmraid -ay"
+			local dmraid_cmd="run dmraid -ay"
 			if [ -z "${DMRAID_OPTS}" ]
 			then
 				dmraid_cmd="${dmraid_cmd} 2>&1"
@@ -1559,16 +1561,14 @@ start_volumes() {
 				dmraid_cmd="${dmraid_cmd} ${DMRAID_OPTS} 2>&1"
 			fi
 			is_log_enabled && dmraid_cmd="${dmraid_cmd} | tee -a '${GK_INIT_LOG}'"
-			eval "${dmraid_cmd}"
 
-			if [ -x '/sbin/kpartx' ]
+			eval "${dmraid_cmd}"
+			if [ $? -ne 0 ]
 			then
-				dmraid_cmd="run /sbin/dmsetup ls --exec '/sbin/kpartx -a -s' 2>&1"
-				is_log_enabled && dmraid_cmd="${dmraid_cmd} | tee -a '${GK_INIT_LOG}'"
-				eval "${dmraid_cmd}"
+				bad_msg "Activation of Device-Mapper RAID(s) failed!"
+			else
+				udevsettle
 			fi
-		else
-			bad_msg "dodmraid invoked but /sbin/dmraid not found; Skipping dmraid activation ..."
 		fi
 	fi
 

diff --git a/defaults/software.sh b/defaults/software.sh
index ae7532f..d8dbfc9 100644
--- a/defaults/software.sh
+++ b/defaults/software.sh
@@ -60,7 +60,7 @@ GKPKG_CRYPTSETUP_BINPKG="${GKPKG_CRYPTSETUP_BINPKG:-%%CACHE%%/cryptsetup-${GKPKG
 
 GKPKG_DMRAID_PN="dmraid"
 GKPKG_DMRAID_PV="${GKPKG_DMRAID_PV:-VERSION_DMRAID}"
-GKPKG_DMRAID_DEPS="lvm"
+GKPKG_DMRAID_DEPS="eudev lvm"
 GKPKG_DMRAID_SRCTAR="${GKPKG_DMRAID_SRCTAR:-${DISTDIR}/dmraid-${GKPKG_DMRAID_PV}.tar.bz2}"
 GKPKG_DMRAID_SRCDIR="${GKPKG_DMRAID_SRCDIR:-dmraid/${GKPKG_DMRAID_PV}/dmraid}"
 GKPKG_DMRAID_BINPKG="${GKPKG_DMRAID_BINPKG:-%%CACHE%%/dmraid-${GKPKG_DMRAID_PV}-%%ARCH%%.tar.xz}"

diff --git a/gen_initramfs.sh b/gen_initramfs.sh
index 1b8c829..24b23bb 100755
--- a/gen_initramfs.sh
+++ b/gen_initramfs.sh
@@ -775,6 +775,8 @@ append_dmraid() {
 
 	unpack "$(get_gkpkg_binpkg "${PN}")" "${TDIR}"
 
+	mkdir -p "${TDIR}"/run/lock/dmraid || gen_die "Failed to create '${TDIR}/run/lock/dmraid'!"
+
 	cd "${TDIR}" || gen_die "Failed to chdir to '${TDIR}'!"
 
 	# Delete unneeded files


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [gentoo-commits] proj/genkernel:master commit in: defaults/, /
@ 2020-08-01 21:41 Thomas Deutschmann
  0 siblings, 0 replies; 10+ messages in thread
From: Thomas Deutschmann @ 2020-08-01 21:41 UTC (permalink / raw
  To: gentoo-commits

commit:     9f540e262f18abdfde67d63a7d87da04abc322c8
Author:     Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
AuthorDate: Sat Aug  1 13:55:57 2020 +0000
Commit:     Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
CommitDate: Sat Aug  1 20:35:00 2020 +0000
URL:        https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=9f540e26

Unify grep usage

Signed-off-by: Thomas Deutschmann <whissi <AT> gentoo.org>

 Makefile                | 4 ++--
 defaults/initrd.scripts | 2 +-
 defaults/linuxrc        | 4 ++--
 gen_determineargs.sh    | 4 ++--
 gen_funcs.sh            | 4 ++--
 gen_initramfs.sh        | 2 +-
 6 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/Makefile b/Makefile
index e423ab0..92d1278 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-#PACKAGE_VERSION = $(shell /bin/fgrep GK_V= genkernel | sed "s/.*GK_V='\([^']\+\)'/\1/")
+#PACKAGE_VERSION = $(shell /bin/grep -F -- GK_V= genkernel | sed "s/.*GK_V='\([^']\+\)'/\1/")
 PACKAGE_VERSION = $(shell git describe --tags |sed 's,^v,,g')
 distdir = genkernel-$(PACKAGE_VERSION)
 MANPAGE = genkernel.8
@@ -78,7 +78,7 @@ verify-doc: doc/genkernel.8.txt
 			-e '/ssh-host-keys/s,=\(create\|create-from-host\|runtime\),,g' | \
 		while read opt ; do \
 			regex="^*--(...no-...)?$$opt" ; \
-			if ! egrep -e "$$regex" $< -sq ; then \
+			if ! grep -Ee "$$regex" $< -sq ; then \
 				touch faildoc ; \
 				echo "Undocumented option: $$opt" ; \
 			fi ; \

diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts
index 304d634..22d7e85 100644
--- a/defaults/initrd.scripts
+++ b/defaults/initrd.scripts
@@ -1023,7 +1023,7 @@ run_shell() {
 
 fs_type_in_use() {
 	fs_type=$1
-	cut -d ' ' -f 3 < /proc/mounts | fgrep -q "${fs_type}"
+	cut -d ' ' -f 3 < /proc/mounts | grep -Fq "${fs_type}"
 }
 
 mount_devfs() {

diff --git a/defaults/linuxrc b/defaults/linuxrc
index e9e97b6..3ca7e86 100644
--- a/defaults/linuxrc
+++ b/defaults/linuxrc
@@ -1062,7 +1062,7 @@ then
 					bad_msg "Squashfs filesystem could not be mounted, dropping into shell."
 					if [ -e /proc/filesystems ]
 					then
-						fgrep -q squashfs /proc/filesystems || \
+						grep -Fq squashfs /proc/filesystems || \
 							bad_msg "HINT: Your kernel does not know filesystem \"squashfs\"."
 					fi
 					run_shell
@@ -1279,7 +1279,7 @@ do
 	# and not a mountpoint
 	[ -z "${dev}" ] && continue
 	fstype=$(get_mount_fstype ${fs})
-	if get_mount_options ${fs} | fgrep -q bind
+	if get_mount_options ${fs} | grep -Fq bind
 	then
 		opts='bind'
 		dev=${NEW_ROOT}${dev}

diff --git a/gen_determineargs.sh b/gen_determineargs.sh
index d8f3028..75dc151 100755
--- a/gen_determineargs.sh
+++ b/gen_determineargs.sh
@@ -606,7 +606,7 @@ determine_real_args() {
 	vars_to_initialize+=( "BUSYBOX_CONFIG" )
 	vars_to_initialize+=( "DEFAULT_KERNEL_CONFIG" )
 
-	local binpkgs=( $(compgen -A variable |grep '^GKPKG_.*_BINPKG$') )
+	local binpkgs=( $(compgen -A variable | grep '^GKPKG_.*_BINPKG$') )
 	local binpkg
 	for binpkg in "${binpkgs[@]}"
 	do
@@ -639,7 +639,7 @@ determine_real_args() {
 	declare -gA GKICM_LOOKUP_TABLE_PKG=()
 	local known_initramfs_compression_methods_by_compression=( $(get_initramfs_compression_method_by_compression) )
 	local known_initramfs_compression_methods_by_speed=( $(get_initramfs_compression_method_by_speed) )
-	local initramfs_compression_methods=( $(compgen -A variable |grep '^GKICM_.*_KOPTNAME$') )
+	local initramfs_compression_methods=( $(compgen -A variable | grep '^GKICM_.*_KOPTNAME$') )
 	local initramfs_compression_method key var_name var_prefix
 	for initramfs_compression_method in "${initramfs_compression_methods[@]}"
 	do

diff --git a/gen_funcs.sh b/gen_funcs.sh
index f2f075a..0eea8ee 100755
--- a/gen_funcs.sh
+++ b/gen_funcs.sh
@@ -1908,7 +1908,7 @@ check_disk_space_requirements() {
 }
 
 check_distfiles() {
-	local source_files=( $(compgen -A variable |grep '^GKPKG_.*_SRCTAR$') )
+	local source_files=( $(compgen -A variable | grep '^GKPKG_.*_SRCTAR$') )
 
 	local -a missing_sources
 	local source_file=
@@ -2046,7 +2046,7 @@ make_bootdir_writable() {
 	local bootdir_status=unknown
 
 	# Based on mount-boot.eclass code
-	local fstabstate=$(awk "!/^#|^[[:blank:]]+#|^${BOOTDIR//\//\\/}/ {print \$2}" /etc/fstab 2>/dev/null | egrep "^${BOOTDIR}$" )
+	local fstabstate=$(awk "!/^#|^[[:blank:]]+#|^${BOOTDIR//\//\\/}/ {print \$2}" /etc/fstab 2>/dev/null | grep -E "^${BOOTDIR}$" )
 	local procstate=$(awk "\$2 ~ /^${BOOTDIR//\//\\/}\$/ {print \$2}" /proc/mounts 2>/dev/null)
 	local proc_ro=$(awk '{ print $2 " ," $4 "," }' /proc/mounts 2>/dev/null | sed -n "/^${BOOTDIR//\//\\/} .*,ro,/p")
 

diff --git a/gen_initramfs.sh b/gen_initramfs.sh
index e48fa06..c583318 100755
--- a/gen_initramfs.sh
+++ b/gen_initramfs.sh
@@ -37,7 +37,7 @@ copy_binaries() {
 		[[ -e "${binary}" ]] \
 			|| gen_die "Binary ${binary} could not be found"
 
-		if LC_ALL=C "${LDDTREE_COMMAND}" "${binary}" 2>&1 | fgrep -q 'not found'
+		if LC_ALL=C "${LDDTREE_COMMAND}" "${binary}" 2>&1 | grep -F -q 'not found'
 		then
 			gen_die "Binary ${binary} is linked to missing libraries and may need to be re-built"
 		fi


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [gentoo-commits] proj/genkernel:master commit in: defaults/, /
@ 2020-08-28 20:18 Thomas Deutschmann
  0 siblings, 0 replies; 10+ messages in thread
From: Thomas Deutschmann @ 2020-08-28 20:18 UTC (permalink / raw
  To: gentoo-commits

commit:     6ea3cd1f1525fdadb9faabfe8183e22b4836acdf
Author:     Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
AuthorDate: Thu Aug 27 20:55:56 2020 +0000
Commit:     Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
CommitDate: Fri Aug 28 13:45:21 2020 +0000
URL:        https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=6ea3cd1f

defaults/config.sh: Add DEFAULT_<TYPE>_<TCVAR> to allow override

_tc-getPROG() can only override variable with user provided value
when there is a default value.

Signed-off-by: Thomas Deutschmann <whissi <AT> gentoo.org>

 defaults/config.sh   | 26 ++++++++++++++++++++------
 gen_determineargs.sh | 26 +++++++++++++++++++++-----
 2 files changed, 41 insertions(+), 11 deletions(-)

diff --git a/defaults/config.sh b/defaults/config.sh
index f8cb311..a5d9ea3 100644
--- a/defaults/config.sh
+++ b/defaults/config.sh
@@ -37,18 +37,32 @@ DEFAULT_MAKEOPTS="${PORTAGE_MAKEOPTS:- -j$(nproc)}"
 
 DEFAULT_MODULEREBUILD_CMD="emerge --ignore-default-opts --buildpkg=n --usepkg=n --quiet-build=y @module-rebuild"
 
-DEFAULT_KERNEL_MAKE=make
-DEFAULT_UTILS_MAKE=make
-
-DEFAULT_KERNEL_CC=gcc
 DEFAULT_KERNEL_AS=as
+DEFAULT_KERNEL_AR=ar
+DEFAULT_KERNEL_CC=gcc
+DEFAULT_KERNEL_CXX=g++
 DEFAULT_KERNEL_LD=ld
+DEFAULT_KERNEL_NM=nm
+DEFAULT_KERNEL_MAKE=make
+DEFAULT_KERNEL_OBJCOPY=objcopy
+DEFAULT_KERNEL_OBJDUMP=objdump
+DEFAULT_KERNEL_RANLIB=ranlib
+DEFAULT_KERNEL_READELF=readelf
+DEFAULT_KERNEL_STRIP=strip
 
-DEFAULT_UTILS_CFLAGS="-Os -pipe -fomit-frame-pointer"
+DEFAULT_UTILS_AS=as
+DEFAULT_UTILS_AR=ar
 DEFAULT_UTILS_CC=gcc
+DEFAULT_UTILS_CFLAGS="-Os -pipe -fomit-frame-pointer"
 DEFAULT_UTILS_CXX=g++
-DEFAULT_UTILS_AS=as
 DEFAULT_UTILS_LD=ld
+DEFAULT_UTILS_NM=nm
+DEFAULT_UTILS_MAKE=make
+DEFAULT_UTILS_OBJCOPY=objcopy
+DEFAULT_UTILS_OBJDUMP=objdump
+DEFAULT_UTILS_RANLIB=ranlib
+DEFAULT_UTILS_READELF=readelf
+DEFAULT_UTILS_STRIP=strip
 
 PORTAGE_CHOST="$(portageq envvar CHOST)"
 DEFAULT_CHOST="${PORTAGE_CHOST:-$(${DEFAULT_UTILS_CC} -dumpmachine 2>/dev/null)}"

diff --git a/gen_determineargs.sh b/gen_determineargs.sh
index 7332bb0..0fe8886 100755
--- a/gen_determineargs.sh
+++ b/gen_determineargs.sh
@@ -318,16 +318,32 @@ determine_real_args() {
 	set_config_with_override STRING CHOST                                 CMD_CHOST                                 "${DEFAULT_CHOST}"
 	set_config_with_override STRING MAKEOPTS                              CMD_MAKEOPTS                              "${DEFAULT_MAKEOPTS}"
 	set_config_with_override STRING NICE                                  CMD_NICE                                  "10"
-	set_config_with_override STRING KERNEL_MAKE                           CMD_KERNEL_MAKE                           "${DEFAULT_KERNEL_MAKE}"
-	set_config_with_override STRING UTILS_CFLAGS                          CMD_UTILS_CFLAGS                          "${DEFAULT_UTILS_CFLAGS}"
-	set_config_with_override STRING UTILS_MAKE                            CMD_UTILS_MAKE                            "${DEFAULT_UTILS_MAKE}"
+	set_config_with_override STRING KERNEL_AS                             CMD_KERNEL_AS                             "${DEFAULT_KERNEL_AS}"
+	set_config_with_override STRING KERNEL_AR                             CMD_KERNEL_AR                             "${DEFAULT_KERNEL_AR}"
 	set_config_with_override STRING KERNEL_CC                             CMD_KERNEL_CC                             "${DEFAULT_KERNEL_CC}"
+	set_config_with_override STRING KERNEL_CFLAGS                         CMD_KERNEL_CFLAGS                         "${DEFAULT_KERNEL_CFLAGS}"
+	set_config_with_override STRING KERNEL_CXX                            CMD_KERNEL_CXX                            "${DEFAULT_KERNEL_CXX}"
 	set_config_with_override STRING KERNEL_LD                             CMD_KERNEL_LD                             "${DEFAULT_KERNEL_LD}"
-	set_config_with_override STRING KERNEL_AS                             CMD_KERNEL_AS                             "${DEFAULT_KERNEL_AS}"
+	set_config_with_override STRING KERNEL_NM                             CMD_KERNEL_NM                             "${DEFAULT_KERNEL_NM}"
+	set_config_with_override STRING KERNEL_MAKE                           CMD_KERNEL_MAKE                           "${DEFAULT_KERNEL_MAKE}"
+	set_config_with_override STRING KERNEL_OBJCOPY                        CMD_KERNEL_OBJCOPY                        "${DEFAULT_KERNEL_OBJCOPY}"
+	set_config_with_override STRING KERNEL_OBJDUMP                        CMD_KERNEL_OBJDUMP                        "${DEFAULT_KERNEL_OBJDUMP}"
+	set_config_with_override STRING KERNEL_RANLIB                         CMD_KERNEL_RANLIB                         "${DEFAULT_KERNEL_RANLIB}"
+	set_config_with_override STRING KERNEL_READELF                        CMD_KERNEL_READELF                        "${DEFAULT_KERNEL_READELF}"
+	set_config_with_override STRING KERNEL_STRIP                          CMD_KERNEL_STRIP                          "${DEFAULT_KERNEL_STRIP}"
+	set_config_with_override STRING UTILS_AS                              CMD_UTILS_AS                              "${DEFAULT_UTILS_AS}"
+	set_config_with_override STRING UTILS_AR                              CMD_UTILS_AR                              "${DEFAULT_UTILS_AR}"
 	set_config_with_override STRING UTILS_CC                              CMD_UTILS_CC                              "${DEFAULT_UTILS_CC}"
+	set_config_with_override STRING UTILS_CFLAGS                          CMD_UTILS_CFLAGS                          "${DEFAULT_UTILS_CFLAGS}"
 	set_config_with_override STRING UTILS_CXX                             CMD_UTILS_CXX                             "${DEFAULT_UTILS_CXX}"
 	set_config_with_override STRING UTILS_LD                              CMD_UTILS_LD                              "${DEFAULT_UTILS_LD}"
-	set_config_with_override STRING UTILS_AS                              CMD_UTILS_AS                              "${DEFAULT_UTILS_AS}"
+	set_config_with_override STRING UTILS_NM                              CMD_UTILS_NM                              "${DEFAULT_UTILS_NM}"
+	set_config_with_override STRING UTILS_MAKE                            CMD_UTILS_MAKE                            "${DEFAULT_UTILS_MAKE}"
+	set_config_with_override STRING UTILS_OBJCOPY                         CMD_UTILS_OBJCOPY                         "${DEFAULT_UTILS_OBJCOPY}"
+	set_config_with_override STRING UTILS_OBJDUMP                         CMD_UTILS_OBJDUMP                         "${DEFAULT_UTILS_OBJDUMP}"
+	set_config_with_override STRING UTILS_RANLIB                          CMD_UTILS_RANLIB                          "${DEFAULT_UTILS_RANLIB}"
+	set_config_with_override STRING UTILS_READELF                         CMD_UTILS_READELF                         "${DEFAULT_UTILS_READELF}"
+	set_config_with_override STRING UTILS_STRIP                           CMD_UTILS_STRIP                           "${DEFAULT_UTILS_STRIP}"
 
 	set_config_with_override STRING CROSS_COMPILE                         CMD_CROSS_COMPILE
 	set_config_with_override STRING BOOTDIR                               CMD_BOOTDIR                               "/boot"


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [gentoo-commits] proj/genkernel:master commit in: defaults/, /
@ 2020-08-28 20:18 Thomas Deutschmann
  0 siblings, 0 replies; 10+ messages in thread
From: Thomas Deutschmann @ 2020-08-28 20:18 UTC (permalink / raw
  To: gentoo-commits

commit:     88e1dd1c2ab49f232fed596927c15c3781fc6b28
Author:     Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
AuthorDate: Fri Aug 28 15:22:56 2020 +0000
Commit:     Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
CommitDate: Fri Aug 28 16:35:59 2020 +0000
URL:        https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=88e1dd1c

defaults/linuxrc: Add gksosreport

To help debugging, 'gksosreport' was added (idea was borrowed from dracut):

Whenever a user run into a problem and get to a rescue shell, running "gksosreport"
will generate /run/initramfs/gksosreport.txt containing useful debug information
suitable to attach to bug reports.

Signed-off-by: Thomas Deutschmann <whissi <AT> gentoo.org>

 defaults/gksosreport.sh | 74 +++++++++++++++++++++++++++++++++++++++++++++++++
 defaults/initrd.scripts | 20 +++++++++----
 defaults/linuxrc        |  4 +--
 gen_initramfs.sh        |  8 +++++-
 4 files changed, 98 insertions(+), 8 deletions(-)

diff --git a/defaults/gksosreport.sh b/defaults/gksosreport.sh
new file mode 100644
index 0000000..03b44b6
--- /dev/null
+++ b/defaults/gksosreport.sh
@@ -0,0 +1,74 @@
+#!/bin/sh
+
+echo 'Generating "/run/initramfs/gksosreport.txt" ...'
+
+if [ ! -d /run/initramfs ]
+then
+	mkdir -p /run/initramfs
+	chmod 0750 /run/initramfs
+fi
+
+exec >/run/initramfs/gksosreport.txt 2>&1
+
+PWFILTER='s/\(ftp:\/\/.*\):.*@/\1:*******@/g;s/\(cifs:\/\/.*\):.*@/\1:*******@/g;s/cifspass=[^ ]*/cifspass=*******/g;s/iscsi:.*@/iscsi:******@/g;s/rd.iscsi.password=[^ ]*/rd.iscsi.password=******/g;s/rd.iscsi.in.password=[^ ]*/rd.iscsi.in.password=******/g'
+
+echo "Genkernel SOS report from $(date +'%Y-%m-%d %H:%M:%S'):"
+
+set -x
+
+cat /lib/dracut/dracut-gk-version.info
+
+cat /lib/dracut/build-parameter.txt
+
+cat /proc/cmdline | sed -e "${PWFILTER}"
+
+[ -f /etc/cmdline ] && cat /etc/cmdline | sed -e "${PWFILTER}"
+
+lspci -k
+
+lsmod
+
+find /lib/modules/$(uname -r) -type f
+
+cat /proc/self/mountinfo
+cat /proc/mounts
+
+blkid
+blkid -o udev
+
+ls -l /dev/disk/by*
+
+if hash lvm >/dev/null 2>/dev/null
+then
+	lvm pvdisplay
+	lvm vgdisplay
+	lvm lvdisplay
+fi
+
+if hash dmsetup >/dev/null 2>/dev/null
+then
+	dmsetup ls --tree
+fi
+
+if [ -e /proc/mdstat ]
+then
+	cat /proc/mdstat
+fi
+
+if hash cryptsetup >/dev/null 2>/dev/null
+then
+	if [ -e /dev/mapper/root ]
+	then
+		cryptsetup status /dev/mapper/root
+	fi
+fi
+
+if hash ip >/dev/null 2>/dev/null
+then
+	ip link
+	ip addr
+fi
+
+dmesg | sed -e "${PWFILTER}"
+
+[ -f /run/initramfs/init.log ] && cat /run/initramfs/init.log | sed -e "${PWFILTER}"

diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts
index 36f4791..7a84755 100644
--- a/defaults/initrd.scripts
+++ b/defaults/initrd.scripts
@@ -983,7 +983,7 @@ check_loop() {
 		bad_msg 'Please export LOOP with a valid location, or reboot and pass a proper loop=...'
 		bad_msg 'kernel command line!'
 
-		run_shell
+		run_emergency_shell
 	fi
 }
 
@@ -1001,6 +1001,14 @@ run() {
 	return ${retval}
 }
 
+run_emergency_shell() {
+	echo
+	gksosreport
+	good_msg 'You might want to save "/run/initramfs/gksosreport.txt" to a USB stick or /boot'
+	good_msg 'after mounting them and attach it to a bug report.'
+	run_shell
+}
+
 run_shell() {
 	if [ -f "${GK_USERINTERACTION_DISABLED_STATEFILE}" ]
 	then
@@ -1092,7 +1100,7 @@ test_success() {
 		error_string=${1}
 		error_string="${error_string:-Failed to run command}"
 		bad_msg "${error_string}; Failing back to the shell ..."
-		run_shell
+		run_emergency_shell
 	fi
 }
 
@@ -1347,7 +1355,7 @@ prompt_user() {
 		'shell')
 			eval ${1}'='${oldvalue}
 			warn_msg "To leave and try again just press <Ctrl>+D"
-			run_shell
+			run_emergency_shell
 			;;
 		'')
 			eval ${1}'='${oldvalue}
@@ -1799,7 +1807,7 @@ openLUKS() {
 		# if crypt_silent=1 and some error occurs, enter shell quietly
 		elif [ \( ${CRYPT_SILENT} -eq 1 \) -a \( \( \( ${DEV_ERROR} -eq 1 \) -o \( ${KEY_ERROR} -eq 1 \) \) -o \( ${KEYDEV_ERROR} -eq 1 \) \) ]
 		then
-			run_shell
+			run_emergency_shell
 		elif [ ${DEV_ERROR} -eq 1 ]
 		then
 			prompt_user "LUKS_DEVICE" "${LUKS_NAME}"
@@ -2487,7 +2495,7 @@ cdupdate() {
 			if [ "$?" != '0' ]
 			then
 				bad_msg "Executing cdupdate.sh failed!"
-				run_shell
+				run_emergency_shell
 			fi
 		else
 			good_msg 'No cdupdate.sh script found, skipping ...'
@@ -2511,6 +2519,8 @@ rundebugshell() {
 	if is_debug
 	then
 		good_msg 'Starting debug shell as requested by "debug" option.'
+		good_msg "Run '${BOLD}gksosreport${NORMAL}' to generate debug report"
+		good_msg "in case you want to file a bug report."
 	else
 		return 0
 	fi

diff --git a/defaults/linuxrc b/defaults/linuxrc
index 061d3e0..e96b637 100644
--- a/defaults/linuxrc
+++ b/defaults/linuxrc
@@ -1071,7 +1071,7 @@ then
 						grep -Fq squashfs /proc/filesystems || \
 							bad_msg "HINT: Your kernel does not know filesystem \"squashfs\"."
 					fi
-					run_shell
+					run_emergency_shell
 				}
 			fi
 
@@ -1188,7 +1188,7 @@ FSTAB
 		) ||
 		{
 			bad_msg "Copying failed, dropping into a shell."
-			run_shell
+			run_emergency_shell
 		}
 
 		# Now we do the links.

diff --git a/gen_initramfs.sh b/gen_initramfs.sh
index 27e98fc..315bb22 100755
--- a/gen_initramfs.sh
+++ b/gen_initramfs.sh
@@ -348,6 +348,12 @@ append_base_layout() {
 	echo "Genkernel $GK_V" > "${TDIR}"/etc/build_id \
 		|| gen_die "Failed to create '${TDIR}/etc/build_id'!"
 
+	cp -a "${GK_SHARE}"/defaults/gksosreport.sh "${TDIR}"/usr/sbin/gksosreport \
+		|| gen_die "Failed to copy '${GK_SHARE}/defaults/gksosreport.sh' to '${TDIR}/usr/sbin/gksosreport'"
+
+	chmod 0755 "${TDIR}"/usr/sbin/gksosreport \
+		|| gen_die "Failed to chmod of '${TDIR}/usr/sbin/gksosreport'!"
+
 	# Allow lsinitrd from dracut to process our initramfs
 	echo "$(cat "${TDIR}/etc/build_id") ($(cat "${TDIR}/etc/build_date"))" > "${TDIR}"/lib/dracut/dracut-gk-version.info \
 		|| gen_die "Failed to create '${TDIR}/lib/dracut/dracut-gk-version.info'!"
@@ -474,7 +480,7 @@ append_busybox() {
 	done
 
 	# Set up a few default symlinks
-	local required_applets='[ ash sh mkdir mknod mount uname echo cut cat touch'
+	local required_applets='[ ash sh mkdir mknod mount uname echo chmod cut cat touch'
 	local required_applet=
 	for required_applet in ${required_applets}
 	do


^ permalink raw reply related	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2020-08-28 20:18 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-11-24 20:00 [gentoo-commits] proj/genkernel:master commit in: defaults/, / Thomas Deutschmann
  -- strict thread matches above, loose matches on Subject: below --
2020-08-28 20:18 Thomas Deutschmann
2020-08-28 20:18 Thomas Deutschmann
2020-08-01 21:41 Thomas Deutschmann
2020-07-23 23:57 Thomas Deutschmann
2020-07-16 15:03 Thomas Deutschmann
2020-01-12 14:59 Thomas Deutschmann
2017-01-02 20:14 Matt Thode
2016-01-05 18:51 Richard Farina
2015-04-12 21:04 Mike Frysinger

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox