[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.
とかでこける.
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 にあてて回避.
の組み合わせの場合の話.
まず,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
いつのまにか
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> の文字化けを放置.
という組合せの時の話.
vmware-config.pl が insmod をたたくのであるが, どうやら fullpath でたたかないと SEGV (Segmentation fault) で落ちるらしい.
とりあえず <URL:http://www.vmware.com/community/thread.jspa?messageID=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