Bug#632627: Re[2]: Bug#632627: Re[2]: resume file

2013-07-29 Thread Askar Safin
1. uswsusp will use the initramfs resume device. So, uswsusp should read the 
file included in the initrd image at conf/conf.d/resume. Is ok?
If you mean configure time (i. e. dpkg-reconfigure uswsusp) or suspending time, 
then, of course, no. Because this requires unpacking initramfs, and this is 
slow.
Use /etc/initramfs-tools/conf.d/resume . Of course, at wake up time use 
/conf/conf.d/resume.

6. What file should read s2disk and s2both to find the resume device when they 
save the image?
They should use same device which used by early userspace when this userspace 
perform waking up (to be sure waking up is possible). So, we should read 
/etc/initramfs-tools/conf.d/resume .

8a. I am not sure about this, because initramfs-tools is required by the 
kernel, but there are case that uswsusp doesn't depends on initramfs-tools and 
use the resume device in /etc/uswsusp.conf if initramfs-tools is not 
installed? Could be initramfs-tools not installed and uswsusp installed?
Yes. Kernel depends on initramfs-tools | linux-initramfs-tool and 
linux-initramfs-tool is virtual package provided by initramfs-tools and dracut. 
So, this is possible if you using dracut instead of initramfs-tools. (This 
information is about sid.)

8. debian/control file: uswsusp will depends on initramfs-tools?
uswsusp triggers initramfs rebuilding. So, if you want initramfs-tools, add 
dependency initramfs-tools. If you can work with both initramfs-tools and 
dracut, add dependency initramfs-tools | linux-initramfs-tool.

 So, initramfs-tools should read /etc/uswsusp.conf and add the resume
 device to the resume file?
I think, yes.

 Then, when the user run dpkg-reconfigure uswsusp,
 update-initramfs-tools will update the initrd resume file and then the
 system know where find the resume file.
Yes

Askar

Bug#632627: Re[2]: Bug#632627: Re[2]: resume file

2013-07-29 Thread Rodolfo García Peñas
On Tue, 30 Jul 2013, Askar Safin escribió:

 1. uswsusp will use the initramfs resume device. So, uswsusp should read the 
 file included in the initrd image at conf/conf.d/resume. Is ok?
 If you mean configure time (i. e. dpkg-reconfigure uswsusp) or suspending 
 time, then, of course, no. Because this requires unpacking initramfs, and 
 this is slow.
 Use /etc/initramfs-tools/conf.d/resume . Of course, at wake up time use 
 /conf/conf.d/resume.
 
 6. What file should read s2disk and s2both to find the resume device when 
 they save the image?
 They should use same device which used by early userspace when this userspace 
 perform waking up (to be sure waking up is possible). So, we should read 
 /etc/initramfs-tools/conf.d/resume .
 
 8a. I am not sure about this, because initramfs-tools is required by the 
 kernel, but there are case that uswsusp doesn't depends on initramfs-tools 
 and use the resume device in /etc/uswsusp.conf if initramfs-tools is not 
 installed? Could be initramfs-tools not installed and uswsusp installed?
 Yes. Kernel depends on initramfs-tools | linux-initramfs-tool and 
 linux-initramfs-tool is virtual package provided by initramfs-tools and 
 dracut. So, this is possible if you using dracut instead of initramfs-tools. 
 (This information is about sid.)
 
 8. debian/control file: uswsusp will depends on initramfs-tools?
 uswsusp triggers initramfs rebuilding. So, if you want initramfs-tools, add 
 dependency initramfs-tools. If you can work with both initramfs-tools and 
 dracut, add dependency initramfs-tools | linux-initramfs-tool.
 
  So, initramfs-tools should read /etc/uswsusp.conf and add the resume
  device to the resume file?
 I think, yes.
 
  Then, when the user run dpkg-reconfigure uswsusp,
  update-initramfs-tools will update the initrd resume file and then the
  system know where find the resume file.
 Yes
 
 Askar

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
diff -ur initramfs-tools-0.113.orig/debian/initramfs-tools.preinst initramfs-tools-0.113/debian/initramfs-tools.preinst
--- initramfs-tools-0.113.orig/debian/initramfs-tools.preinst	2013-07-30 01:46:30.0 +0200
+++ initramfs-tools-0.113/debian/initramfs-tools.preinst	2013-07-30 01:11:08.0 +0200
@@ -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 21; then
-UUID=$(blkid -s UUID -o value $RESUME || true)
-			# FIXME: post-Wheezy remove vol_id invocations
-			elif command -v vol_id /dev/null 21; 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 -ur initramfs-tools-0.113.orig/update-initramfs initramfs-tools-0.113/update-initramfs
--- initramfs-tools-0.113.orig/update-initramfs	2013-07-30 01:46:30.0 +0200
+++ initramfs-tools-0.113/update-initramfs	2013-07-30 01:48:19.0 +0200
@@ -68,7 +68,7 @@
 		# return false.
 		return 1
 	fi
-return 0
+	return 0
 }
 
 mild_panic()
@@ -161,6 +161,45 @@
 	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 21; then
+UUID=$(blkid -s UUID -o value $RESUME || true)
+			# FIXME: post-Wheezy remove vol_id