mirror of
				https://git.proxmox.com/git/mirror_zfs.git
				synced 2025-10-26 18:05:04 +03:00 
			
		
		
		
	Fix Plymouth passphrase prompt in initramfs script
Entering the ZFS encryption passphrase under Plymouth wasn't working because in the ZFS initrd script, Plymouth was calling zfs via "--command", which wasn't passing through the filesystem argument to zfs load-key properly (it was passing through the single quotes around the filesystem name intended to handle spaces literally, which zfs load-key couldn't understand). Reviewed-by: Richard Laager <rlaager@wiktel.com> Reviewed-by: Garrett Fields <ghfields@gmail.com> Signed-off-by: Richard Allen <belperite@gmail.com> Issue #9193 Closes #9202
This commit is contained in:
		
							parent
							
								
									e7a2fa70c3
								
							
						
					
					
						commit
						f335b8ffe1
					
				@ -411,29 +411,29 @@ decrypt_fs()
 | 
			
		||||
 | 
			
		||||
		# Determine dataset that holds key for root dataset
 | 
			
		||||
		ENCRYPTIONROOT=$(${ZFS} get -H -o value encryptionroot "${fs}")
 | 
			
		||||
		DECRYPT_CMD="${ZFS} load-key '${ENCRYPTIONROOT}'"
 | 
			
		||||
 | 
			
		||||
		# If root dataset is encrypted...
 | 
			
		||||
		if ! [ "${ENCRYPTIONROOT}" = "-" ]; then
 | 
			
		||||
 | 
			
		||||
			TRY_COUNT=3
 | 
			
		||||
			# Prompt with plymouth, if active
 | 
			
		||||
			if [ -e /bin/plymouth ] && /bin/plymouth --ping 2>/dev/null; then
 | 
			
		||||
				plymouth ask-for-password --prompt "Encrypted ZFS password for ${ENCRYPTIONROOT}" \
 | 
			
		||||
					--number-of-tries="3" \
 | 
			
		||||
					--command="${DECRYPT_CMD}"
 | 
			
		||||
				while [ $TRY_COUNT -gt 0 ]; do
 | 
			
		||||
					plymouth ask-for-password --prompt "Encrypted ZFS password for ${ENCRYPTIONROOT}" | \
 | 
			
		||||
						$ZFS load-key "${ENCRYPTIONROOT}" && break
 | 
			
		||||
					TRY_COUNT=$((TRY_COUNT - 1))
 | 
			
		||||
				done
 | 
			
		||||
 | 
			
		||||
			# Prompt with systemd, if active 
 | 
			
		||||
			elif [ -e /run/systemd/system ]; then
 | 
			
		||||
				TRY_COUNT=3
 | 
			
		||||
				while [ $TRY_COUNT -gt 0 ]; do
 | 
			
		||||
					systemd-ask-password "Encrypted ZFS password for ${ENCRYPTIONROOT}" --no-tty | \
 | 
			
		||||
						${DECRYPT_CMD} && break
 | 
			
		||||
						$ZFS load-key "${ENCRYPTIONROOT}" && break
 | 
			
		||||
					TRY_COUNT=$((TRY_COUNT - 1))
 | 
			
		||||
				done
 | 
			
		||||
 | 
			
		||||
			# Prompt with ZFS tty, otherwise
 | 
			
		||||
			else
 | 
			
		||||
				eval "${DECRYPT_CMD}"
 | 
			
		||||
				$ZFS load-key "${ENCRYPTIONROOT}"
 | 
			
		||||
			fi
 | 
			
		||||
		fi
 | 
			
		||||
	fi
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user