[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Bug#632627: uswsusp patches for initramfs-tools (was: Bug#632627: Re[2]: resume file)



On Tue, 30 Jul 2013, Rodolfo García Peñas escribió:

> On Tue, 30 Jul 2013, Rodolfo García Peñas escribió:
> 
> [snip]
> 
> > Hi Askar,
> > 
> > thanks a lot for your reply. Could this initramfs-tools patch solve the problem?
> > 
> > Some tips:
> > 
> > 1. The patch reads the /etc/uswsusp.conf, and check if the file exists. The value is not changed to UUID.
> > 2. I check if uswsusp is installed if the s2disk binary exists. Checking the config file only could be an error if the package was removed (not purged).
> > 3. The resume device is created always, not only when initramfs-tools is installed. Because the user can change the device.
> > 
> > Comments are welcome.
> > 
> > Cheers,
> > kix
> 
> Hi,
> 
> I am attaching the git patches for the initramfs-tools git. Is only a proposal. Ben, what do you think? Please, apply them only if you agree with this behaviour (and code).
> 
> If you agree, I will forward the bug report to initramfs-tools and I will tag it with +patch. Then, uswsusp package doesn't need changes.
> 
> Cheers,
> kix

> From c92b6c76542baf254afe875d7fbc608460a3178a Mon Sep 17 00:00:00 2001
> From: =?UTF-8?q?"Rodolfo=20Garc=C3=ADa=20Pe=C3=B1as=20(kix)"?= <kix@debian.org>
> Date: Tue, 30 Jul 2013 19:49:29 +0200
> Subject: [PATCH 1/2] code style: Extra tab
> 
> This patch only adds an extra tab.
> ---
>  update-initramfs |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/update-initramfs b/update-initramfs
> index 998eaf0..251fb6b 100755
> --- a/update-initramfs
> +++ b/update-initramfs
> @@ -68,7 +68,7 @@ chrooted()
>  		# return false.
>  		return 1
>  	fi
> -return 0
> +	return 0
>  }
>  
>  mild_panic()
> -- 
> 1.7.10.4
> 

> From 47c8558cf3ae7b0918c96ae983d9738acfef8159 Mon Sep 17 00:00:00 2001
> From: =?UTF-8?q?"Rodolfo=20Garc=C3=ADa=20Pe=C3=B1as=20(kix)"?= <kix@debian.org>
> Date: Tue, 30 Jul 2013 19:54:43 +0200
> Subject: [PATCH 2/2] resume using uswsusp configuration
> 
> This patch reads the uswsusp configuration file (/etc/uswsusp.conf)
> to get the resume device. If the file exists and uswsusp package is
> installed, it save the value in the /etc/initramfs-tools/conf.d/resume
> file. When the initrd image is created, this value is stored in the
> conf/conf.d/resume file.
> 
> If the uswsusp package is not installed, if the configuration file
> doesn't exists, or the file included in the configuration file doesn't
> exist, the value is not used, and the previous scheme is used.
> 
> The main difference between this patch and the previous behaviour is
> the resume file is now created when the user run update-initramfs not
> when the user install the initramfs-tools package. The reason is because
> the user run 'dpkg-reconfigure uswsusp' can change the swap device, so
> the swap included in the configuration file could be wrong. The code
> to update the configuration file is moved from debian/initramfs-tools.preinst
> file to update-initramfs file. The function chrooted() was previously
> included in the file update-initramfs.
> ---
>  debian/initramfs-tools.preinst |   34 -------------------------------
>  update-initramfs               |   43 ++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 43 insertions(+), 34 deletions(-)
> 
> diff --git a/debian/initramfs-tools.preinst b/debian/initramfs-tools.preinst
> index b0216a1..01ff9df 100644
> --- a/debian/initramfs-tools.preinst
> +++ b/debian/initramfs-tools.preinst
> @@ -2,43 +2,9 @@
>  
>  set -e
>  
> -chrooted() {
> -	# borrowed from udev's postinst
> -	if [ "$(stat -c %d/%i /)" = "$(stat -Lc %d/%i /proc/1/root 2>/dev/null)" ]; then
> -		# the devicenumber/inode pair of / is the same as that of
> -		# /sbin/init's root, so we're *not* in a chroot and hence
> -		# return false.
> -		return 1
> -	fi
> -	return 0
> -}
> -
>  case "$1" in
>  	install)
>  		mkdir -p /etc/initramfs-tools/conf.d
> -
> -		# First time install.  Can we autodetect the RESUME partition?
> -		if [ -r /proc/swaps ]; then
> -			RESUME=$(grep ^/dev/ /proc/swaps | sort -rk3 \
> -				| head -n 1 | cut -d " " -f 1)
> -			if command -v blkid >/dev/null 2>&1; then
> -				UUID=$(blkid -s UUID -o value "$RESUME" || true)
> -			# FIXME: post-Wheezy remove vol_id invocations
> -			elif command -v vol_id >/dev/null 2>&1; then
> -				UUID=$(vol_id -u "$RESUME" || true)
> -			elif [ -x /lib/udev/vol_id ]; then
> -				UUID=$(/lib/udev/vol_id -u "$RESUME" || true)
> -			fi
> -			if [ -n "$UUID" ]; then
> -				RESUME="UUID=$UUID"
> -			fi
> -		fi
> -
> -		# write conf.d/resume if not in a chroot
> -		if [ -n "${RESUME}" ] && ! chrooted; then
> -			echo "RESUME=${RESUME}" > /etc/initramfs-tools/conf.d/resume
> -		fi
> -
>  	;;
>  esac
>  
> diff --git a/update-initramfs b/update-initramfs
> index 251fb6b..285e5c1 100755
> --- a/update-initramfs
> +++ b/update-initramfs
> @@ -161,6 +161,45 @@ remove_initramfs_bak()
>  	verbose "Removing ${initramfs_bak}"
>  }
>  
> +# Update the resume device
> +update_resume_device()
> +{
> +	USWSUSPCFG=/etc/uswsusp.conf
> +	S2DISK=/usr/sbin/s2disk
> +
> +	# If uswsusp installed, use that swap device
> +	if [ -r ${USWSUSPCFG} ] && [ -x ${S2DISK} ]; then
> +		RESUME=`sed -n 's/^[[:space:]]*'"resume device"'[[:space:]]*[=:][[:space:]]*\([^[:space:]]*\)/\1/ p' $USWSUSPCFG`
> +
> +		if [ ! -e ${RESUME} ]; then
> +			RESUME=""
> +		fi
> +	fi
> +
> +	# If not found in uswsusp config, get from running system
> +	if [ -z "${RESUME}" ]; then
> +		if [ -r /proc/swaps ]; then
> +			RESUME=$(grep ^/dev/ /proc/swaps | sort -rk3 \
> +				| head -n 1 | cut -d " " -f 1)
> +			if command -v blkid >/dev/null 2>&1; then
> +				UUID=$(blkid -s UUID -o value "$RESUME" || true)
> +			# FIXME: post-Wheezy remove vol_id invocations
> +			elif command -v vol_id >/dev/null 2>&1; then
> +				UUID=$(vol_id -u "$RESUME" || true)
> +			elif [ -x /lib/udev/vol_id ]; then
> +				UUID=$(/lib/udev/vol_id -u "$RESUME" || true)
> +			fi
> +			if [ -n "$UUID" ]; then
> +				RESUME="UUID=$UUID"
> +			fi
> +		fi
> +	fi
> +
> +	# write conf.d/resume if not in a chroot
> +	if [ -n "${RESUME}" ] && ! chrooted; then
> +		echo "RESUME=${RESUME}" > /etc/initramfs-tools/conf.d/resume
> +	fi
> +}
>  
>  generate_initramfs()
>  {
> @@ -307,6 +346,8 @@ create()
>  		fi
>  	fi
>  
> +	update_resume_device
> +
>  	generate_initramfs
>  
>  	run_bootloader
> @@ -344,6 +385,8 @@ update()
>  
>  	backup_initramfs
>  
> +	update_resume_device
> +
>  	generate_initramfs
>  
>  	run_bootloader
> -- 
> 1.7.10.4

Hi,

News? Ben, did you check the patch?

Thanks.
kix


Reply to: