[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