[PC周辺] Linux 2.6.22-rc5 + yaird 0.0.12-20 (yaird error: unrecognised line in /proc/bus/input/devices: U: Uniq= (fatal)) (20070628)

[myn:2007062600] に書いたとおり Linux 2.6.22-rc5 (git 経由で取得したので,たぶん rc5 と rc6 の間) を使っているのであるが,この状態で linux-image*.deb を dpkg -i しよう とすると yaird (0.0.12-20) が

Using mkinitrd.yaird to build the ramdisk.
yaird error: unrecognised line in /proc/bus/input/devices: U: Uniq= (fatal)
mkinitrd.yaird failed to create initrd image.
Failed to create initrd image.

とかでこける.

<URL:http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=15e03ae811475c2beebfde18717935ee9ce64617> の影響で

U: Uniq=

という行が /proc/bus/input/devices に出現するようになったのが原因っぽい.

ということで,

diff -uw /usr/lib/yaird/perl/InputTab.pm.orig /usr/lib/yaird/perl/InputTab.pm 
--- /usr/lib/yaird/perl/InputTab.pm.orig        2007-06-28 15:54:37.000000000 +0900
+++ /usr/lib/yaird/perl/InputTab.pm     2007-06-28 15:59:54.000000000 +0900
@@ -73,6 +73,8 @@
                elsif ($line =~ /^B: ([A-Z]+)=(.*)$/) {
                        $work->{capabilities}{$1} = $2;
                }
+               elsif ($line =~ /^U: Uniq=/) {
+               }
                elsif ($line =~ /^$/) {
                        if (! exists ($work->{info})) {
                                Base::fatal ("missing I: in $name");

といったやるきなしなし patch を yaird にあてて回避.

関連リンク

[PC周辺] VMware Workstation 4.5.3 build-19414 + vmware-any-any-update109 + Linux 2.6.22-rc5 (20070626)

の組み合わせの場合の話.

まず,vmmon.o の compile で

include/asm/page.h: In function 'pte_t native_make_pte(long unsigned int)':
include/asm/page.h:111: error: expected primary-expression before ')' token
include/asm/page.h:111: error: expected ';' before '{' token
include/asm/page.h:111: error: expected primary-expression before '.' token
include/asm/page.h:111: error: expected `;' before '}' token

とかでこける.これに関しては,

diff -uwr /usr/src/linux-headers-2.6.22-rc5/include/asm/page.h.orig /usr/src/linux-headers-2.6.22-rc5/include/asm/page.h
--- /usr/src/linux-headers-2.6.22-rc5/include/asm/page.h.orig   2007-06-26 14:51:30.000000000 +0900
+++ /usr/src/linux-headers-2.6.22-rc5/include/asm/page.h        2007-06-26 14:51:48.000000000 +0900
@@ -106,10 +106,12 @@
 {
        return (pgd_t) { val };
 }
+/*
 static inline pte_t native_make_pte(unsigned long val)
 {
        return (pte_t) { .pte_low = val };
 }
+*/

 #define HPAGE_SHIFT    22
 #include <asm-generic/pgtable-nopmd.h>

みたいな header 側に patch をあててとりあえず回避. ちなみに該当箇所の kernel 側の変更は <URL:http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=3dc494e86d1c93afd4c66385f270899dbfae483d> に由来.

次に,vmnet.o の compile で

/tmp/vmware-config0/vmnet-only/userif.c: In function 'VNetCopyDatagramToUser': /tmp/vmware-config0/vmnet-only/userif.c:633: error: 'const struct sk_buff' has no member named 'h' /tmp/vmware-config0/vmnet-only/userif.c:633: error: 'const struct sk_buff' has no member named 'nh' /tmp/vmware-config0/vmnet-only/userif.c:639: error: 'const struct sk_buff' has no member named 'h'

とかでこける.これは,kernel 側の <URL:http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=b0e380b1d8a8e0aca215df97702f99815f05c094> という変更に由来.

つまり

変更すれば OK.以下のような patch を vmnet.tar 内の file にあてる.

diff -uwr a/vmnet-only/bridge.c b/vmnet-only/bridge.c
--- a/vmnet-only/bridge.c	2006-11-13 07:50:53.000000000 +0900
+++ b/vmnet-only/bridge.c	2007-06-26 14:44:58.000000000 +0900
@@ -1072,12 +1072,12 @@
 VNetBridgeComputeHeaderPos(struct sk_buff *skb) // IN: buffer to examine
 {
    /* Maybe some kernel gets it right... */
-   if (skb->h.raw != skb->nh.raw) {
+   if (skb->transport_header != skb->network_header) {
       return;
    }
    switch (be16_to_cpu(skb->protocol)) {
       case ETH_P_IP:
-         skb->h.raw = skb->nh.raw + (skb->nh.raw[0] & 0x0F) * 4;
+         skb->transport_header = skb->network_header + (skb->network_header[0] & 0x0F) * 4;
 	 return;
       default:
          LOG(3, (KERN_DEBUG "Unknown EII protocol %04X: csum at %d\n", 
@@ -1163,7 +1163,7 @@
 #  endif

    if (bridge->smac) {
-      if (VNetCallSMACFunc(bridge->smac, &skb, skb->mac.raw, 
+      if (VNetCallSMACFunc(bridge->smac, &skb, skb->mac_header, 
                            SMAC_CheckPacketFromHost) != 
           PacketStatusForwardPacket) {
          LOG(4, (KERN_NOTICE "bridge-%s: packet dropped .\n",
@@ -1187,7 +1187,7 @@
 #endif
 #endif

-   skb_push(skb, skb->data - skb->mac.raw);
+   skb_push(skb, skb->data - skb->mac_header);
    LOG(3, (KERN_DEBUG "bridge-%s: receive %d\n",
 	   bridge->name, (int) skb->len));

diff -uwr a/vmnet-only/userif.c b/vmnet-only/userif.c
--- a/vmnet-only/userif.c	2006-11-13 07:04:40.000000000 +0900
+++ b/vmnet-only/userif.c	2007-06-26 14:38:37.000000000 +0900
@@ -630,13 +630,13 @@
     */
    if (skb->pkt_type == PACKET_OUTGOING && 	/* Packet must be outgoing */
        skb->ip_summed == VM_CHECKSUM_PARTIAL &&	/* Without checksum */
-       skb->h.raw != skb->nh.raw &&		/* We must know where header is */
+       skb->transport_header != skb->network_header &&		/* We must know where header is */
        skb->len == count) {			/* No truncation may occur */
       size_t skl;
       int csum;
       u_int16_t csum16;

-      skl = skb->h.raw - skb->data;
+      skl = skb->transport_header - skb->data;
       if (VNetCopyDatagram(skb, buf, skl)) {
 	 return -EFAULT;
       }
diff -uwr a/vmnet-only/vnetInt.h b/vmnet-only/vnetInt.h
--- a/vmnet-only/vnetInt.h	2005-06-19 10:00:03.000000000 +0900
+++ b/vmnet-only/vnetInt.h	2007-06-26 14:43:34.000000000 +0900
@@ -25,8 +25,8 @@
 #define DEV_QUEUE_XMIT(skb, dev, pri)	(                 \
     (skb)->dev = (dev),                                   \
     (skb)->priority = (pri),                              \
-    (skb)->mac.raw = (skb)->data,                         \
-    (skb)->nh.raw = (skb)->data + sizeof (struct ethhdr), \
+    (skb)->mac_header = (skb)->data,                         \
+    (skb)->network_header = (skb)->data + sizeof (struct ethhdr), \
     dev_queue_xmit(skb)                                   \
   )
 #ifdef KERNEL_2_3_15
関連リンク
参照リンク

[PC周辺] graphviz 2.12-3 (20070617)

いつのまにか

fontname="Kochi Gothic"

とかが通らなくなっていた(graphviz 2.12-3 @Debian).

% dot -v -Tpng test.dot | display -

とかによると

dot: fontname "Kochi Gothic" resolved to "[internal times]"

らしい.ちなみに

% echo 'digraph{"A"->"B";}' | dot -v -Tpng | display -

とかによると

dot: fontname "Times-Roman" resolved to "[internal times]"

とのことで,Times-Roman さえ見付けてくれないっぽい.

% fc-match 'Kochi Gothic'
KochiGothic-Regular.ttf: "Kochi Gothic" "Regular"
% fc-match Times-Roman                                                     
timR12-ISO8859-1.pcf.gz: "Times" "Regular"

とかで,fontconfig は問題なさげ.ちなみに KochiGothic-Regular.ttf とかは

% ls -l /var/lib/defoma/fontconfig.d/K/KochiGothic-Regular.ttf
lrwxrwxrwx 1 root root 54 2007-04-02 17:53 /var/lib/defoma/fontconfig.d/K/KochiGothic-Regular.ttf -> /usr/share/fonts/truetype/kochi/kochi-gothic-subst.ttf

という感じのところにあるらしい.

<URL:http://www.graphviz.org/bugs/b1087.html> とかも参照したが <URL:http://www.graphviz.org/doc/FAQ.html> 追えず.

% (echo 'digraph{"A"->"B";}' | strace -f dot -v -Tpng | display -) |& less

とかによると

open("/usr/lib/libfontconfig.so.1", O_RDONLY) = 3

しているのは分るのであるが,こっち方面もそれ以上は追えず.仕方無しに

% apt-get source graphviz
% cd graphviz-2.12
% fakeroot make -f debian/rules binary

してみたが,

cmd/lefty/dot2l/Makefile.am:10: Libtool library used but `LIBTOOL' is undefined
cmd/lefty/dot2l/Makefile.am:10: 
cmd/lefty/dot2l/Makefile.am:10: The usual way to define `LIBTOOL' is to add `AC_PROG_LIBTOOL'
cmd/lefty/dot2l/Makefile.am:10: to `configure.ac' and run `aclocal' and `autoconf' again.
(snip)

とかでなんだかこける...

ということで<URL:/map.html> の文字化けを放置.

関連リンク

[PC周辺] VMware Workstation 4.5.3 build-19414 + vmware-any-any-update109 + Linux 2.6.21 + module-init-tools 3.3-pre11-1 (20070616)

という組合せの時の話.

vmware-config.pl が insmod をたたくのであるが, どうやら fullpath でたたかないと SEGV (Segmentation fault) で落ちるらしい.

とりあえず <URL:http://www.vmware.com/community/thread.jspa?messageID=650674&#650674> を参考に

\--- vmware-config.pl    2007/06/16 02:35:24     1.1
+++ vmware-config.pl    2007/06/16 02:47:24
@@ -933,9 +933,10 @@
  sub check_answer_binpath {
   my $answer = shift;
   my $source = shift;
+  my $fullpath = internal_which($answer);

-  if (not (internal_which($answer) eq '')) {
-    return $answer;
+  if ($fullpath ne '') {
+    return $fullpath;
   }

   if ($source eq 'user') {

みたいな patch をあてて対応.

<URL:http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=425458> によると,すぐに Debian の方で対応されてしまいそう.

追記

module-init-tools 3.3-pre11-2 で直った模様.

module-init-tools (3.3-pre11-2) unstable; urgency=high

  * New patch insmod-segv: prevents insmod from segfaulting if called without
    an explicit path, courtesy of Mikko Ylinen. (Closes: #425458)

既に 3.3-pre11-3 まで出てます.ちなみに 3.3-pre11-2 で modutils との compatibility が無くなった模様 (modutils と conflict を起す).

関連リンク
参照リンク

このページのインデックス


Last-modified: Fri Jul 20 10:43:53 +0900 2007

全インデックス