[Yaird-devel] Bug#584565: [PATCH] enable yaird for kernel.org 2.6.33.4

Nils Radtke lkml at Think-Future.de
Fri Jun 4 16:14:58 UTC 2010


Package: yaird
Version: 0.0.13-5
Justification: breaks the whole system
Severity: critical
Tags: patch

*** Please type your report below this line ***

  Hi,

  Thanks for yaird. I take it as a great program that required hard work
  for tying everything up and knotting it against bare kernel /sys files.
  It's about aiming at a moving target.

  That's also the reason why I have to file this report as yaird breaks 
  regularly w/ kernel internals changing. But this is well-known, as previous
  reports witness.

  yaird failed to create an initramfs image on kernel 2.6.33.4. I believe
  it used to work w/ kernel 2.6.27.4, 2.6.29, 2.6.30 as I use yaird initramfs
  images with those kernels. For kernel 2.6.33.4 though I had to patch
  some files.

  I like yaird for the small images and I avoid any kernel-specific modules
  as it's more portable across kernel versions.

  After fixing yaird, the latest ramfs image and the just created ramfs image
  differ like so:

 ramfs2 |   22 +++++++++-------------
 1 file changed, 9 insertions(+), 13 deletions(-)

diff -Naur ramfs1 ramfs2 
--- ramfs1      2010-06-04 16:59:30.000000000 +0200
+++ ramfs2      2010-06-04 16:59:38.593836066 +0200
@@ -21,27 +21,23 @@
 ./etc/udev/udev.conf
 ./init
 ./lib
-./lib/ld-2.9.so
+./lib/i686
+./lib/i686/cmov
+./lib/i686/cmov/libc-2.10.2.so
+./lib/i686/cmov/libc.so.6
+./lib/i686/cmov/libdl-2.10.2.so
+./lib/i686/cmov/libdl.so.2
+./lib/ld-2.10.2.so
 ./lib/ld-linux.so.2
 ./lib/libblkid.so.1
-./lib/libblkid.so.1.0
-./lib/libc-2.9.so
-./lib/libcom_err.so.2
-./lib/libcom_err.so.2.1
-./lib/libc.so.6
+./lib/libblkid.so.1.1.0
 ./lib/libdevmapper.so.1.02.1
-./lib/libdl-2.9.so
-./lib/libdl.so.2
-./lib/libext2fs.so.2
-./lib/libext2fs.so.2.4
 ./lib/libpopt.so.0
 ./lib/libpopt.so.0.0.0
-./lib/libpthread-2.9.so
-./lib/libpthread.so.0
 ./lib/libselinux.so.1
 ./lib/libsepol.so.1
 ./lib/libuuid.so.1
-./lib/libuuid.so.1.2
+./lib/libuuid.so.1.3.0
 ./mnt
 ./proc
 ./sbin

So, it looks quite ok.

Though the patch for /usr/sbin/yaird doesn't quite fit into this report I 
filed it inline. Maybe it's better suited for the man page.

It tried to fix the copy function using File::Copy::Recursive::rmove but that
fails due to inadequate special file handling. Didn't find a better solution,
so just giving an annotation for users wondering. BTW, it seems this fs
boundary copy problem is caused by a debian-specific modification of yaird
using secure temporary files/dirs. As my /tmp is a tmpfs, this is due to
fail when not using something like: 
  yaird -f directory -o /tmp/initramfs_2.6.33.4
Where the target is on the same fs.



 ActiveBlockDevTab.pm |    4 +++-
 Hardware.pm          |    8 ++++++++
 Input.pm             |    6 ++++--
 yaird                |    4 ++++
 4 files changed, 19 insertions(+), 3 deletions(-)

--- ActiveBlockDevTab.pm_2010-06-03.bkp	2010-06-03 23:21:13.000000000 +0200
+++ ActiveBlockDevTab.pm	2010-06-04 16:53:52.000000000 +0200
@@ -58,7 +58,9 @@
 	if (exists ($abdTab->{$devno})) {
 		Base::fatal ("found duplicate devno in $blockPath/$entry");
 	}
-	my $hw = readlink("$blockPath/$entry/device");
+	### ven 2010-06-04, 16:53:23 CEST (+0200) -> Nils Radtke lkml_ at _Think-Future.de
+	### Working for kernel 2.6.33.4
+	my $hw = readlink("$blockPath/$entry");
 	# failure results in undef, which is exactly how
 	# we want to represent absence of a hw device.
 	if (defined ($hw)) {


--- Hardware.pm_2010-06-03.bkp	2010-06-04 16:49:35.000000000 +0200
+++ Hardware.pm	2010-06-04 16:50:33.000000000 +0200
@@ -204,6 +204,14 @@
 			# grouping of SCSI devices within a host
 			# (2.6.10 and later); harmless.
 		}
+		### ven 2010-06-04, 16:46:43 CEST (+0200) -> Nils Radtke lkml_ at _Think-Future.de
+		### Working for kernel 2.6.33.4
+		elsif ($abspath =~ m!/target\d+:\d+:\d+/\d+:\d+:\d+:\d+$!) {
+		}
+		elsif ($abspath =~ m!/\d+:\d+:\d+:\d+/block$!) {
+		}
+		elsif ($abspath =~ m!/block/sd.$!) {
+		}
 		elsif ($abspath =~ m!/\d+:\d+:\d+:\d+$!
 			&& -f "$abspath/device/scsi_level")
 		{


--- Input.pm_2010-06-03.bkp	2010-06-03 23:43:57.000000000 +0200
+++ Input.pm	2010-06-04 16:52:27.000000000 +0200
@@ -51,12 +51,14 @@
 		if ($handler !~ /^event\d+$/) {
 			next;
 		}
+		### gio 2010-06-03, 23:38:37 CEST (+0200) -> Nils Radtke lkml_ at _Think-Future.de
+		### Working for kernel 2.6.33.4
 		my $devLink = Conf::get('sysFs')
-			. "/class/input/$handler/device";
+			. "/class/input/$handler";
 		my $hw = readlink ($devLink);
 		if (defined ($hw) && $hw =~ s!^(\.\./)+(class/input/input\d+)$!$2!) {
 			# Linux 2.6.23 eventX -> inputX link
-			$devLink = Conf::get('sysFs') . '/' . $hw . '/device';
+			$devLink = Conf::get('sysFs') . '/' . $hw;
 			$hw = readlink ($devLink);
 		}
 		if (defined ($hw)) {


--- yaird_2010-06-04.bkp	2010-06-04 16:42:20.000000000 +0200
+++ yaird	2010-06-04 16:43:24.000000000 +0200
@@ -92,6 +92,10 @@
    -c, --config file	use this configuration file
    -f, --format form	produce the image in this format,
 			valid values: directory, cramfs, cpio
+      Debian-specific: When using format "directory" a temporary directory is 
+      created in /tmp and later moved to the directory specified with -o 
+      targetDir: /tmp/<tempDir> and targetDir must reside on the same device, 
+      move fails to cross fs boundaries.
    -t, --test		print overview of system data,
 			used as basis for debugging.
 

-- System Information:
Debian Release: squeeze/sid
  APT prefers testing
  APT policy: (990, 'testing'), (500, 'unstable'), (500, 'stable'), (1, 'experimental')
Architecture: i386 (i686)

Kernel: Linux 2.6.33.4 (SMP w/2 CPU cores; PREEMPT)
Locale: LANG=it_IT.UTF-8, LC_CTYPE=it_IT.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages yaird depends on:
ii  cpio                        2.11-4       GNU cpio -- a program to manage ar
ii  dash                        0.5.5.1-5    POSIX-compliant shell
ii  libc6                       2.10.2-9     Embedded GNU C Library: Shared lib
ii  libhtml-template-perl       2.9-1        HTML::Template : A module for usin
ii  libparse-recdescent-perl    1.964+dfsg-1 Perl module to create and use recu
ii  perl                        5.10.1-12    Larry Wall's Practical Extraction 

yaird recommends no packages.

Versions of packages yaird suggests:
ii  doc-base                      0.9.5      utilities to manage online documen

-- no debconf information






More information about the Yaird-devel mailing list