2007年11月30日金曜日

(FreeBSD7) Fatal error 'Cannot allocate red zone for initial thread' at line 382 in file /usr/src/lib/libthr/thread/thr_init.c (errno = 12)

えーと、まだFreeBSD 7.0-RELEASEはリリースされていませんが、これは現時点での、7-STABLEでのお話。



FreeBSD 6.2-STABLEから、FreeBSD 7-STABLEに、make buildworld ...でアップグレードしたマシンで、FreeBSD6のころまで使っていた古いバイナリを実行したとき、



Fatal error 'Cannot allocate red zone for initial thread' at line 382 in file /usr/src/lib/libthr/thread/thr_init.c (errno = 12)



というエラーメッセージが大量に表示されて、最後にsegmentation faultとか出ておしまい、ということがあります。



今のFreeBSDには、libpthreadlibthrという2つのスレッドライブラリがあって、

'Cannot allocate red zone for initial thread'

というエラーは、この2つを混ぜて使ったときに発生するらしいです。
混ぜるな危険!



pthreadは、昔からある方で、libthrは、マルチプロセッサ環境のときにパフォーマンスがでるように改良されているみたいです。そのため、最近は、libthrが使われるみたいです。



昔のバイナリはpthreadとリンクされるのですが、FreeBSD7上で実行しようとしたとき、依存する共有ライブラリの何かがlibthrを要求するようになってしまうみたいです。



このエラーがでたとき、定番の修正方法というのは、

portupgrade -fでビルドしなおせ

とのことです。個人的な経験では、portupgradeだとまれに失敗することがあるので、そのときは、pkg_deleteしてmake installすれとか、FORCE_PKG_REGISTERをセットして上書きするなどすれば、だいたい大丈夫でした。





まあ、ソースからコンパイルできるものは、portupgradeで再ビルドでいいのですが、できないもの、たとえば、



  • ソースがないとか、


  • 新しいコンパイラ(GCC 4.2)ではコンパイルできないとか、


  • バイナリで提供されたソフトウェア、


  • 市販パッケージソフト


などでは、コンパイルしなおすことはできません。



そういうときは、どうすりゃいいんだい?

/etc/libmap.conf でライブラリのマッピングルールを指定する

これで、なんとかなるみたいです。



ちなみに、私が気がついた不具合としては、MH (/usr/ports/japanese/mh)と、オムロンソフトの市販ソフト「Wnn7 Personal」のjserver、GridEngine (SGE, /usr/ports/sysutils/sge)が動かなくなりました。



MHは、portsだからportupgrade -fすればいいと思ったのですが



# portupgrade -f mh-6.8.4.j3.05
** Port marked as IGNORE: japanese/mh:
        is marked as broken: Does not compile with GCC 4.2



といわれました。そういえば、BROKENのままだったために、ja-mhが削除される寸前までいってましたね。直してくれた方には、感謝。



Wnn7は、もともと FreeBSD5用だったりするんですよね。FreeBSD6では動いてたのですが、FreeBSD7になったら、私の環境ではlibthrホゲホゲ~エラーで動かなくなってしまいました。



GridEngineは、FreeBSD6なホストと同一バイナリを使っているため、FreeBSD7でビルドしなおすこともできません。



■ 準備



旧バージョンのバイナリを実行するので、ports/misc/compat6x や ports/misc/compat5x をインストールしておきます。



またmake buildworld && make installworld しただけでは、/libや/usr/libに、旧バージョンのライブラリがそのまま残っていて、あれこれ問題を起こします。旧バージョンのライブラリは、/lib、/usr/libなどから、きれいさっぱり、削除しておく必要があります。



(2007/12/5 追記) 実は先日知ったことなんですが、make installworldのあと、make delete-old、make delete-old-libsなどで、古いファイルを削除できるようになってます。昔は、こんな便利な機能はなかったです。
詳しいことは/usr/src/Makefile内のコメントを参照。
http://www.jp.freebsd.org/cgi/cvsweb.cgi/src/Makefile?rev=1.341.2.1&content-type=text/x-cvsweb-markup


■ いったい、どこからlibthrが呼び出されるのか?



手ごろなところで、MHのscanコマンドで調査。



% ldd /usr/local/bin/scan
/usr/local/bin/scan:
        libmh.so.3 => /usr/local/lib/libmh.so.3 (0x28084000)
        libncurses.so.5 => /usr/local/lib/compat/libncurses.so.5 (0x280a4000)
        libc.so.5 => /usr/local/lib/compat/libc.so.5 (0x280e3000)



う~ん、libc.so.5をリンクしてるってことは、これ、FreeBSD5なバイナリだったんですね・・・



lddではlibthrがリンクされていると見えなかったので、ktrace scanで実行してから、kdumpで眺めてみました。



# kdump | grep NAMI
~~略~~
34515 scan     NAMI  "/usr/local/lib/gcc-4.2.3/nss_dns.so.1"
34515 scan     NAMI  "/usr/local/lib/graphviz/nss_dns.so.1"
34515 scan     NAMI  "/usr/local/lib/kde3/nss_dns.so.1"
34515 scan     NAMI  "/usr/local/lib/mplayer/vidix/nss_dns.so.1"
34515 scan     NAMI  "/usr/local/lib/mysql/nss_dns.so.1"
34515 scan     NAMI  "/usr/local/lib/nss/nss_dns.so.1"
34515 scan     NAMI  "/usr/local/lib/pth/nss_dns.so.1"
34515 scan     NAMI  "/usr/local/lib/wine/nss_dns.so.1"
34515 scan     NAMI  "/lib/nss_dns.so.1"
34515 scan     NAMI  "/usr/lib/nss_dns.so.1"
34515 scan     NAMI  "/usr/local/lib/nss_ldap.so.1"
34515 scan     NAMI  "/usr/local/lib/nss_ldap.so.1"
34515 scan     NAMI  "/usr/local/lib/libldap-2.3.so.2"
34515 scan     NAMI  "/usr/local/lib/libldap-2.3.so.2"
34515 scan     NAMI  "/usr/local/lib/liblber-2.3.so.2"
34515 scan     NAMI  "/usr/local/lib/liblber-2.3.so.2"
34515 scan     NAMI  "/usr/local/lib/libc.so.7"
34515 scan     NAMI  "/lib/libc.so.7"
34515 scan     NAMI  "/lib/libc.so.7"
34515 scan     NAMI  "/usr/local/lib/libsasl2.so.2"
34515 scan     NAMI  "/usr/local/lib/libsasl2.so.2"
34515 scan     NAMI  "/usr/local/lib/libssl.so.5"
34515 scan     NAMI  "/usr/local/lib/libssl.so.5"
34515 scan     NAMI  "/usr/local/lib/libcrypto.so.5"
34515 scan     NAMI  "/usr/local/lib/libcrypto.so.5"
34515 scan     NAMI  "/usr/local/lib/libthr.so.3"
34515 scan     NAMI  "/lib/libthr.so.3"
34515 scan     NAMI  "/lib/libthr.so.3"



この結果から適当に目星をつけて、



# ldd /usr/local/lib/nss_ldap.so.1
/usr/local/lib/nss_ldap.so.1:
        libldap-2.3.so.2 => /usr/local/lib/libldap-2.3.so.2 (0x281a1000)
        liblber-2.3.so.2 => /usr/local/lib/liblber-2.3.so.2 (0x281d8000)
        libc.so.7 => /lib/libc.so.7 (0x28088000)
        libsasl2.so.2 => /usr/local/lib/libsasl2.so.2 (0x281e5000)
        libssl.so.5 => /usr/local/lib/libssl.so.5 (0x28300000)
        libcrypto.so.5 => /usr/local/lib/libcrypto.so.5 (0x28340000)
        libthr.so.3 => /lib/libthr.so.3 (0x28481000)



ということなので、nss_ldap.so.1からlibthr.so.3が引きずりだされているみたいです。



nss_ldap.soが使われるのは、/etc/nsswitch.confldapを使うようにかかれていたためです。ためしに、/etc/nsswitch.confを別のファイル名に変更してみると、scanは動きました。



ということは、LDAPを使っていない環境では、Wnn7のjserverも動くんでしょうね。



ちなみに、nss_ldap.soは、libcが要求しているみたいです。こんないい加減な方法で、さぐってみました(笑)。



# strings "/usr/local/lib/compat/libc.so.5" | grep nss
__nss_compat_getgrnam_r
__nss_compat_getgrgid_r
__nss_compat_getgrent_r
__nss_compat_setgrent
__nss_compat_endgrent
__nss_compat_getpwnam_r
__nss_compat_getpwuid_r
__nss_compat_getpwent_r
__nss_compat_setpwent
__nss_compat_endpwent
/etc/nsswitch.conf
nss_%s.so.%d     ← これがそうらしい
nss_module_register
nss_load_module
nss_method_lookup



というわけで、libthrが使われる原因は、nss_ldap.soにあることがわかりました。








■ (オマケ) nsswitch.confって切り替えられないの?



じゃあ、scanを実行するときは、別のnsswitch.confを使わせればいいじゃない?と思って、ソースをしらべてみると・・・セキュリティホールになるので、それはできない、とのこと。



lib/libc/net/nsdispatch.c にて



/*
* The first time nsdispatch is called (during a process's lifetime,
* or after nsswitch.conf has been updated), nss_configure will
* prepare global data needed by NSS.
*/
static int
nss_configure(void)
{
        static pthread_mutex_t conf_lock = PTHREAD_MUTEX_INITIALIZER;
        static time_t    confmod;
        struct stat      statbuf;
        int              result, isthreaded;
        const char      *path;



        result = 0;
        isthreaded = __isthreaded;
#if defined(_NSS_DEBUG) && defined(_NSS_SHOOT_FOOT)
        /* NOTE WELL:  THIS IS A SECURITY HOLE. This must only be built
         * for debugging purposes and MUST NEVER be used in production.
         */
        path = getenv("NSSWITCH_CONF");
        if (path == NULL)
#endif
        path = _PATH_NS_CONF;









■ (オマケ) jserverはどうよ?



jserverで同じことをやってみると、libthrは呼ばれていない?
もしかして、子processをforkして、ktraceでは見えていないのでしょうか。



35183 ktrace   NAMI  "/usr/local/bin/jserver"
35183 ktrace   NAMI  "/libexec/ld-elf.so.1"
35183 jserver  NAMI  "/etc/libmap.conf"
35183 jserver  NAMI  "/usr/X11R6/lib/libxpg4.so.3"
35183 jserver  NAMI  "/var/run/ld-elf.so.hints"
35183 jserver  NAMI  "/lib/libxpg4.so.3"
35183 jserver  NAMI  "/usr/lib/libxpg4.so.3"
35183 jserver  NAMI  "/usr/lib/compat/libxpg4.so.3"
35183 jserver  NAMI  "/usr/local/lib/libxpg4.so.3"
35183 jserver  NAMI  "/usr/local/lib/compat/pkg/libxpg4.so.3"
35183 jserver  NAMI  "/usr/local/lib/compat/libxpg4.so.3"
35183 jserver  NAMI  "/usr/local/lib/compat/libxpg4.so.3"
35183 jserver  NAMI  "/usr/X11R6/lib/libcrypt.so.2"
35183 jserver  NAMI  "/lib/libcrypt.so.2"
35183 jserver  NAMI  "/usr/lib/libcrypt.so.2"
35183 jserver  NAMI  "/usr/lib/compat/libcrypt.so.2"
35183 jserver  NAMI  "/usr/local/lib/libcrypt.so.2"
35183 jserver  NAMI  "/usr/local/lib/compat/pkg/libcrypt.so.2"
35183 jserver  NAMI  "/usr/local/lib/compat/libcrypt.so.2"
35183 jserver  NAMI  "/usr/local/lib/compat/libcrypt.so.2"
35183 jserver  NAMI  "/usr/X11R6/lib/libc.so.5"
35183 jserver  NAMI  "/lib/libc.so.5"
35183 jserver  NAMI  "/usr/lib/libc.so.5"
35183 jserver  NAMI  "/usr/lib/compat/libc.so.5"
35183 jserver  NAMI  "/usr/local/lib/libc.so.5"
35183 jserver  NAMI  "/usr/local/lib/compat/pkg/libc.so.5"
35183 jserver  NAMI  "/usr/local/lib/compat/libc.so.5"
35183 jserver  NAMI  "/usr/local/lib/compat/libc.so.5"
35183 jserver  NAMI  "/etc/malloc.conf"
35183 jserver  NAMI  "/usr/local/lib/wnn7/msg/libwnn.msg"
35183 jserver  NAMI  "/"



■ /etc/libmap.confで対処してみる



これまでlibmap.confをいじったことがなくて、よくわかんなかったのですが、libmap.confは、ダイナミックローダが共有ライブラリをリンクするときに、ライブラリを無理やり付け替える、つまり、本来とは別のライブラリをリンクさせられるようにする機能らしいです。



nss_ldap.so.1を別のライブラリに付け替えてしまえばいいのですが、どうすればいいんだろう? と思って、えいや、とlibc.so.5にしてしまいました。ようするに、nss_ldapが動かなくなっちゃうわけなんですが、/etc/libmap.confにこんな風に書いてみる。



[scan]
nss_ldap.so.1                   libc.so.5



[show]
nss_ldap.so.1                   libc.so.5



[mhn]
nss_ldap.so.1                   libc.so.5



[mhl]
nss_ldap.so.1                   libc.so.5



[/usr/local/bin/jserver]
nss_ldap.so.1                   libc.so.5



これで、実は、なんとなく動いてしまいました。



ちなみに



[/usr/local/bin/scan]



と書くと、コマンド名が「/usr/local/bin/scan」で実行したときだけlibmap.confでライブラリが付け替えられて、「scan」と実行したときはlibmap.confのマッピングルールは適用されなくなるのでした。試行錯誤しているとき、これに気がつかず、遠回りしてしまいました。



これでいいのか?というと、当然のことながら、ダメです。LDAPでpasswdやgroupがひけなくなってしまうのです。




 





■ ちゃんとnss_ldap.soが動くようにする



FreeBSD6なホストから、nss_ldap.so.1をもらってくることにしました。



FreeBSD6なホストで確認。



% ldd /usr/local/lib/nss_ldap.so.1
/usr/local/lib/nss_ldap.so.1:
        libldap-2.3.so.2 => /usr/local/lib/libldap-2.3.so.2 (0x88189000)
        liblber-2.3.so.2 => /usr/local/lib/liblber-2.3.so.2 (0x881ba000)
        libsasl2.so.2 => /usr/local/lib/libsasl2.so.2 (0x881c5000)
        libssl.so.5 => /usr/local/lib/libssl.so.5 (0x881da000)
        libcrypto.so.5 => /usr/local/lib/libcrypto.so.5 (0x88213000)



% ldd /usr/local/lib/libldap-2.3.so.2
/usr/local/lib/libldap-2.3.so.2:
        liblber-2.3.so.2 => /usr/local/lib/liblber-2.3.so.2 (0x8819f000)
        libsasl2.so.2 => /usr/local/lib/libsasl2.so.2 (0x881aa000)
        libssl.so.5 => /usr/local/lib/libssl.so.5 (0x881bf000)
        libcrypto.so.5 => /usr/local/lib/libcrypto.so.5 (0x881f8000)



となっているので、FreeBSD6の以下のファイルを、



/usr/local/lib/nss_ldap.so.1
/usr/local/lib/libldap-2.3.so.2
/usr/local/lib/liblber-2.3.so.2
/usr/local/lib/libsasl2.so.2
/usr/local/lib/libssl.so.5
/usr/local/lib/libcrypto.so.5



FreeBSD7なホストへコピーします。同名のファイルがありますので、とりあえず



/usr/local/lib/compat/freebsd6/



というディレクトリを作って、そこへコピーしました。



結局、私の環境では、/etc/libmap.conf は次のようになりました。



[/usr/local/lib/compat/freebsd6/nss_ldap.so.1]
libldap-2.3.so.2                freebsd6/libldap-2.3.so.2
liblber-2.3.so.2                freebsd6/liblber-2.3.so.2
libsasl2.so.2                   freebsd6/libsasl2.so.2
libssl.so.5                     freebsd6/libssl.so.5
libcrypto.so.5                  freebsd6/libcrypto.so.5



[/usr/local/lib/compat/freebsd6/libldap-2.3.so.2]
liblber-2.3.so.2                freebsd6/liblber-2.3.so.2
libsasl2.so.2                   freebsd6/libsasl2.so.2
libssl.so.5                     freebsd6/libssl.so.5
libcrypto.so.5                  freebsd6/libcrypto.so.5



[scan]
nss_ldap.so.1                   freebsd6/nss_ldap.so.1



[show]
nss_ldap.so.1                   freebsd6/nss_ldap.so.1



[mhl]
nss_ldap.so.1                   freebsd6/nss_ldap.so.1



[/usr/local/bin/jserver]
nss_ldap.so.1                   freebsd6/nss_ldap.so.1



[wnnstat]
nss_ldap.so.1                   freebsd6/nss_ldap.so.1



[/sge/utilbin/fbsd-i386/]
nss_ldap.so.1                   freebsd6/nss_ldap.so.1



[/sge/bin/fbsd-i386/]
nss_ldap.so.1                   freebsd6/nss_ldap.so.1



[/sge/lib/fbsd-i386/]
nss_ldap.so.1                   freebsd6/nss_ldap.so.1



これで、とりあえずちゃんと動いているみたいです。








■ (オマケ)/usr/local/lib/compat/pkg/nss_ldap.so.1



こっちは、portupgradeしたときに上書きされるやつなので、今回の目的には使えません。そもそも、FreeBSD7用のバイナリですから。



# ldd /usr/local/lib/compat/pkg/nss_ldap.so.1
/usr/local/lib/compat/pkg/nss_ldap.so.1:
        libldap-2.3.so.2 => /usr/local/lib/libldap-2.3.so.2 (0x2819f000)
        liblber-2.3.so.2 => /usr/local/lib/liblber-2.3.so.2 (0x281d6000)
        libsasl2.so.2 => /usr/local/lib/libsasl2.so.2 (0x281e3000)
        libssl.so.5 => /usr/local/lib/libssl.so.5 (0x28300000)
        libcrypto.so.5 => /usr/local/lib/libcrypto.so.5 (0x28340000)
        libc.so.7 => /lib/libc.so.7 (0x28088000)
        libthr.so.3 => /lib/libthr.so.3 (0x28481000)








■ (オマケ) libmap.confの書き方を間違えた



最初、nss_ldap.so.1だけを/usr/local/lib/compatへコピーして、libmap.confに、これだけを書いてみたら・・・



[scan]
nss_ldap.so.1                   /usr/local/lib/compat/nss_ldap.so.1



うまくいく。これでいいのかと思ったら、間違ってました。



こういう風に、libthrが使われるはずなんだけど、なぜうまくいくのだろうか?



# ldd  /usr/local/lib/compat/nss_ldap.so.1
/usr/local/lib/compat/nss_ldap.so.1:
        libldap-2.3.so.2 => /usr/local/lib/libldap-2.3.so.2 (0x2819f000)
        liblber-2.3.so.2 => /usr/local/lib/liblber-2.3.so.2 (0x281d6000)
        libsasl2.so.2 => /usr/local/lib/libsasl2.so.2 (0x281e3000)
        libssl.so.5 => /usr/local/lib/libssl.so.5 (0x28300000)
        libcrypto.so.5 => /usr/local/lib/libcrypto.so.5 (0x28340000)
        libc.so.7 => /lib/libc.so.7 (0x28088000)
        libthr.so.3 => /lib/libthr.so.3 (0x28481000)


ktraceしたらわかりました。



52188 scan     NAMI  "/usr/local/lib/mplayer/vidix/nss_dns.so.1"
52188 scan     NAMI  "/usr/local/lib/mysql/nss_dns.so.1"
52188 scan     NAMI  "/usr/local/lib/nss/nss_dns.so.1"
52188 scan     NAMI  "/usr/local/lib/pth/nss_dns.so.1"
52188 scan     NAMI  "/usr/local/lib/wine/nss_dns.so.1"
52188 scan     NAMI  "/lib/nss_dns.so.1"
52188 scan     NAMI  "/usr/lib/nss_dns.so.1"
52188 scan     NAMI  "/usr/local/lib//usr/local/lib/compat/nss_ldap.so.1"
52188 scan     NAMI  "/lib//usr/local/lib/compat/nss_ldap.so.1"
52188 scan     NAMI  "/usr/lib//usr/local/lib/compat/nss_ldap.so.1"
52188 scan     NAMI  "/usr/lib/compat//usr/local/lib/compat/nss_ldap.so.1"
52188 scan     NAMI  "/usr/local/lib//usr/local/lib/compat/nss_ldap.so.1"
52188 scan     NAMI  "/usr/local/lib/compat/pkg//usr/local/lib/compat/nss_ldap.so.1"
52188 scan     NAMI  "/usr/local/lib/compat//usr/local/lib/compat/nss_ldap.so.1"
52188 scan     NAMI  "/usr/local/lib/gcc-4.2.3//usr/local/lib/compat/nss_ldap.so.1"
52188 scan     NAMI  "/usr/local/lib/graphviz//usr/local/lib/compat/nss_ldap.so.1"
52188 scan     NAMI  "/usr/local/lib/kde3//usr/local/lib/compat/nss_ldap.so.1"
52188 scan     NAMI  "/usr/local/lib/mplayer/vidix//usr/local/lib/compat/nss_ldap.so.1"
52188 scan     NAMI  "/usr/local/lib/mysql//usr/local/lib/compat/nss_ldap.so.1"
52188 scan     NAMI  "/usr/local/lib/nss//usr/local/lib/compat/nss_ldap.so.1"
52188 scan     NAMI  "/usr/local/lib/pth//usr/local/lib/compat/nss_ldap.so.1"
52188 scan     NAMI  "/usr/local/lib/wine//usr/local/lib/compat/nss_ldap.so.1"
52188 scan     NAMI  "/lib//usr/local/lib/compat/nss_ldap.so.1"
52188 scan     NAMI  "/usr/lib//usr/local/lib/compat/nss_ldap.so.1"
52188 scan     NAMI  "/usr/local/lib/nss_compat.so.1"
52188 scan     NAMI  "/lib/nss_compat.so.1"
52188 scan     NAMI  "/usr/lib/nss_compat.so.1"
52188 scan     NAMI  "/usr/lib/compat/nss_compat.so.1"
52188 scan     NAMI  "/usr/local/lib/nss_compat.so.1"



ようするに、nss_ldap.so.1が見つからなくなって、nss_ldap.soが無効になってるだけのことでした。



う~ん、libmap.confって、奥が深い!



nss_ldap.so.1以外にも、あれこれファイルが必要なのは、以下のように、みんな、あれこれたくさん依存関係をひきづっているためです。



% ldd /usr/local/lib/libsasl2.so.2
/usr/local/lib/libsasl2.so.2:
        libc.so.7 => /lib/libc.so.7 (0x28088000)



% ldd /usr/local/lib/libssl.so.5
/usr/local/lib/libssl.so.5:
        libcrypto.so.5 => /usr/local/lib/libcrypto.so.5 (0x28300000)
        libthr.so.3 => /lib/libthr.so.3 (0x281c4000)
        libc.so.7 => /lib/libc.so.7 (0x28088000)



% ldd /usr/local/lib/libcrypto.so.5
/usr/local/lib/libcrypto.so.5:
        libthr.so.3 => /lib/libthr.so.3 (0x28184000)
        libc.so.7 => /lib/libc.so.7 (0x28088000)



libmap.confでの対策が不完全なときは、こんな風にlibthrが入ってしまいます。



# ldd /usr/local/lib/compat/freebsd6/libldap-2.3.so.2
/usr/local/lib/compat/freebsd6/libldap-2.3.so.2:
        liblber-2.3.so.2 => /usr/local/lib/liblber-2.3.so.2 (0x281b5000)
        libsasl2.so.2 => /usr/local/lib/libsasl2.so.2 (0x281c2000)
        libssl.so.5 => /usr/local/lib/libssl.so.5 (0x28300000)
        libcrypto.so.5 => /usr/local/lib/libcrypto.so.5 (0x28340000)
        libc.so.7 => /lib/libc.so.7 (0x28088000)
        libthr.so.3 => /lib/libthr.so.3 (0x281d9000)



一通り、libmap.confでマッピングルールを入れてやれば、こうなりました。



% ldd /usr/local/lib/compat/freebsd6/nss_ldap.so.1
/usr/local/lib/compat/freebsd6/nss_ldap.so.1:
        libldap-2.3.so.2 => /usr/local/lib/compat/freebsd6/libldap-2.3.so.2 (0x2819f000)
        liblber-2.3.so.2 => /usr/local/lib/compat/freebsd6/liblber-2.3.so.2 (0x281d0000)
        libsasl2.so.2 => /usr/local/lib/compat/freebsd6/libsasl2.so.2 (0x281db000)
        libssl.so.5 => /usr/local/lib/compat/freebsd6/libssl.so.5 (0x28300000)
        libcrypto.so.5 => /usr/local/lib/compat/freebsd6/libcrypto.so.5 (0x28339000)



% ldd /usr/local/lib/compat/freebsd6/libldap-2.3.so.2
/usr/local/lib/compat/freebsd6/libldap-2.3.so.2:
        liblber-2.3.so.2 => /usr/local/lib/compat/freebsd6/liblber-2.3.so.2 (0x281b5000)
        libsasl2.so.2 => /usr/local/lib/compat/freebsd6/libsasl2.so.2 (0x281c0000)
        libssl.so.5 => /usr/local/lib/compat/freebsd6/libssl.so.5 (0x28300000)
        libcrypto.so.5 => /usr/local/lib/compat/freebsd6/libcrypto.so.5 (0x28339000)


(2007/12/5 追記)



ここに書いた方法で動かしたGridEngine(SGE)ですが、ちゃんと動いてませんでした。あれ?



ジョブが割り当てられたとき、ログイン名をLDAPで引けてない、って感じのエラーメッセージが出てました。ソースを少しながめた限りでは、getpwnam_r()でエラーが出てる雰囲気がしたので、簡単なプログラムを書いて試したんですけど、うまく動きました。なんだろう?



  1. getpwnam_r()を使った簡単なテストプログラムを書く。


  2. FreeBSD6でコンパイル。一応実行できることを確認。


  3. FreeBSD7で実行。動かないことを確認。


  4. FreeBSD7でlibmap.confにルールを追加。動くことを確認した。


libmap.confを使わずに、FreeBSD6とFreeBSD7とでアーキテクチャ名を変えられれば、それが一番いいんですけど。FreeBSDのportsでビルドするときSGE_ARCHで指定できそうだったんですが、ダメでした。





(2007/12/11 追記)



ふと気がつけば、FreeBSD 6-STABLEなマシンでも、wnnenvutilなどで、一部のライブラリのnot foundになってました。

# ldd /usr/local/bin/wnnenvutil
/usr/local/bin/wnnenvutil:
    libxpg4.so.3 => /usr/lib/libxpg4.so.3 (0x280b2000)
    libgtk12.so.2 => not found (0x0)
    libgdk12.so.2 => not found (0x0)
    libgmodule12.so.3 => not found (0x0)
    libglib12.so.3 => not found (0x0)
    libintl.so.5 => not found (0x0)
    libXi.so.6 => /usr/X11R6/lib/libXi.so.6 (0x280e7000)
    libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x280ef000)
    libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x280fc000)
    libc.so.5 => /usr/local/lib/compat/libc.so.5 (0x281e1000)
    libXau.so.6 => /usr/local/lib/libXau.so.6
    libm.so.2 => /usr/lib/compat/libm.so.2 (0x280b4000)
    libcrypt.so.2 => /usr/local/lib/compat/libcrypt.so.2 (0x280cf000)
    libgtk12.so.2 => not found (0x0)
    libgdk12.so.2 => not found (0x0)
    libgmodule12.so.3 => not found (0x0)
    libglib12.so.3 => not found (0x0)
    libintl.so.5 => not found (0x0)
    libXi.so.6 => /usr/X11R6/lib/libXi.so.6 (0x280e7000)
    libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x280ef000)
    libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x280fc000)
    libc.so.5 => /usr/local/lib/compat/libc.so.5 (0x281e1000)
    libXau.so.6 => /usr/local/lib/libXau.so.6 (0x282bb000)
    libXdmcp.so.6 => /usr/local/lib/libXdmcp.so.6 (0x282be000)
    librpcsvc.so.3 => /usr/lib/librpcsvc.so.3 (0x282c3000)



どうも、ライブラリのファイル名がある時期から変更されているみたいなので(例: libgtk12.so.2が、libgtk-12.so.2へ)、/etc/libmap.confでマッピングを指定してみました。



libgdk12.so.2       libgdk-12.so.2
libgtk12.so.2       libgtk-12.so.2
libgmodule12.so.3   libgmodule-12.so.3
libglib12.so.3      libglib-12.so.3



あと、libintl.so.5が行方不明になってしまっていたので、たまたまそのファイルがあったマシンから/usr/local/lib/compat/pkg/にコピーしました。



# ldd /usr/local/bin/wnnenvutil
/usr/local/bin/wnnenvutil:
    libxpg4.so.3 => /usr/lib/libxpg4.so.3 (0x280b2000)
    libm.so.2 => /usr/lib/compat/libm.so.2 (0x280b4000)
    libcrypt.so.2 => /usr/local/lib/compat/libcrypt.so.2 (0x280cf000)
    libgtk12.so.2 => /usr/X11R6/lib/libgtk-12.so.2 (0x280e7000)
    libgdk12.so.2 => /usr/X11R6/lib/libgdk-12.so.2 (0x28205000)
    libgmodule12.so.3 => /usr/X11R6/lib/libgmodule-12.so.3 (0x28238000)
    libglib12.so.3 => /usr/X11R6/lib/libglib-12.so.3 (0x2823b000)
    libintl.so.5 => /usr/local/lib/compat/pkg/libintl.so.5 (0x28263000)
    libXi.so.6 => /usr/X11R6/lib/libXi.so.6 (0x2826c000)
    libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x28274000)
    libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x28281000)
    libc.so.5 => /usr/local/lib/compat/libc.so.5 (0x28366000)
    libm.so.4 => /lib/libm.so.4 (0x28440000)
    libintl.so.8 => /usr/local/lib/libintl.so.8 (0x28456000)
    libc.so.6 => /lib/libc.so.6 (0x2845f000)
    libiconv.so.3 => /usr/local/lib/libiconv.so.3 (0x2854f000)
    libXau.so.6 => /usr/local/lib/libXau.so.6 (0x28645000)
    libXdmcp.so.6 => /usr/local/lib/libXdmcp.so.6 (0x28648000)
    librpcsvc.so.3 => /usr/lib/librpcsvc.so.3 (0x2864d000)



2007年11月29日木曜日

「恐竜キング」に気になるサブタイトル

「古代王者 恐竜キング Dキッズ・アドベンチャー」というアニメ。
私は見てないんですけど、次回の放映作品のサブタイトルが、なんか気になりました。



20071128

シベリア恐竜特急


子供には、わかるまい(笑)。



予告では、シベ超とは無関係ぽかったですけど、一応チェックすべきかな?



2007年11月28日水曜日

犬の散歩のときに注意すること

ちょうど今ごろ、一番注意しなければならないのが、コレ。



20071127



犬の毛にくっついちゃうと、とるのが大変。



これまで、ずっと、アメリカセンダングサだと思い込んでいたのですが、実は違うみたい。
コシロノセンダングサ、もしくは、コセンダングサみたいです。
どこで間違った知識が注入されたんだろう?



このセンダングサですが、昔に比べて、ものすごく増えた気がします。





しっかりと見張っていないと、すぐに草むらに突入していってしまう・・・





200711272



2007年11月27日火曜日

晩秋

20071126



今日から、自転車に乗るとき手袋をするようになりました。


先々週まで、半袖シャツだったのに。



2007年11月26日月曜日

マーク(BlogPet)

きのう、素人とかマークしたかも。

*このエントリは、ブログペットの「pochi」が書きました。

2007年11月25日日曜日

11月25日はハイビジョンの日…だった (過去形?)

20071125



昔、NHKとかが、ハイビジョンを普及させるために、走査線の本数1125にちなんで、11月25日をハイビジョンの日と決めて、宣伝活動などをしてました。



もっともそのときのハイビジョンってのは、アナログ方式のもので、アナログハイビジョンは、2007年9月30日に終了してしまいました。



それと入れ違いに、デジタル方式のハイビジョンが、衛星放送、地上波でそこそこ広まってきてはいます。



アナログハイビジョンってのは、時代が早すぎた、って感じなんでしょうか。





NHKはチャンネル数が多すぎだ、という意見があって、とりあえず衛星を1つ減らしましょうか?てなことから、NHK BS hiが切り捨てられる話がありましたが、どうなってるんでしょうか。



蜃気楼…みたいな?

朝。



だんだん寒くなってきました。



200711240



海の向こう側が…



200711241



蜃気楼っぽい感じで見えました。
かなり微妙ですけど。



200711242





今夜は満月とのこと。



200711243



■ 過去記事







2007年11月23日金曜日

ドラえもんの目は、じつは小さい

200711232



最近のドラえもんのアニメやキャラクターグッズなどでは、顔の真ん中に大きな目がついていることが多いようですが、原作マンガでは、実際にはそんなに大きくなくて、しかも顔の上の方についてるんですよね。



どっかの評論家みたいな人が昔言ってたんですけど、顔の上のほうにあるのは、お母さんが子供をやさしく見つめる目線を表現してるとかなんとか。日本のマンガ・アニメでは、目が顔の中央あたりについてるのが定番で、上のほうにあるのはかなりめずらしいとか。





突然そんなことを思い出したのは、最近、「しおんの王」を見て、それはやりすぎじゃないか?と違和感を感じたので・・・



200711231



欧米人には、日本独特のアニメ・キャラの大きな目が、まるで宇宙人かのように見えると聞いたことがありますが、これは私にも宇宙人に見えました。



ただこれは回想シーンの絵で、レンズで光学的に絵をゆがませたようなエフェクトがかかっているため、余計にそう見えるだけなのかもしれません。





ドラえもんですが、デフォルメされるし、デザインを厳密には統一しない大らかさがあったのか、コマによって、目の大きさ、位置は、けっこうバラバラですね。必ずしも、小さくて上の方とは限らないようです。手描きの味あいがありますね。



200711233 なんだこりゃ?!



コミックス収録作品で、絵がなんか違うなと感じるもの中には、トレースのせいだったりするとか。





CLIP-IT DS-7 (FUJIFILM)

久々に、思い出の品物シリーズ(そんなシリーズあったのかい?)。



カシオのQV-10を貸してもらって、デジカメすごくいい!と感動し、そのあと、自分で初めて買った、デジタルカメラです。



DS-7 (富士フイルム)



200711221



CLIP-ITは、愛称なんだそうです。

「フジフイルム デジタルカメラ DS-7 ”クリップ・イット”」http://www.fujifilm.co.jp/news_r/nrj100.html

平成8年7月12日発売だそうです。私が買ったときは5万円くらいでした。



11年の間に、デジカメも相当に進歩したものですね。





けっこう大きいです。シャツの胸ポケットには、ぜんぜん入りません。



200711222



裏側。液晶ディスプレイがあるくらいで、今のデジカメと比べたら、すっきりしてますね。
QV-10の液晶表示がもっさりしてたのに対して、DS-7のはイイ感じでした。



200711223



ダイヤルがついてるのは今のデジカメに通じるところがあります。
ただし、今のデジカメのダイヤルは、主に撮影モードの切り替えだったりしますけど、DS-7には、撮影モードなんていう概念が無いですね。基本的に、撮影するか、見るか、だけ。





200711224



電池は、単3が4本。そういえば、QV-10って、電池すぐ切れましたね。DS-7も、まあ、そんな持ちませんでした。私はQV-10でたっぷり学習したので、最初からニッカド電池を使ってました。あのころ単3のニッカドの容量は1000mAhが最大でした。SANYOのカドニカ・・・あのときSANYOはバッテリでは一流メーカーだ、と知ったんだっけ。





200711227



記録メディアはスマートメディア(SmartMedia)。上のURLのページを見たら、SSFDCと書いてありました。え?




200711225



SSFDCって聞いた覚えがあるような感じがするけど、何だっけ?と調べてみると、Solid State Floppy Disc Cardの略だそうで、すぐにスマートメディアに名称が変わってました。

切手サイズのメモリーカード「SSFDC」を
「スマートメディア」に名称変更
'96/10/15 発表
http://pc.watch.impress.co.jp/docs/article/961016/ssfdc.htm

今ではあまり見かけなくなったスマートメディア。DS-7は、これを採用したはじめての製品でした。QV-10は、メモリは本体内蔵のものしかなかったので、これって、画期的な進歩だと思っていました。



200711226



この写真は4MBですが、最初は、2MBの容量でした。仲間内で、

すげー、こんな小さいのにフロッピーディスク1枚分以上のデータが記録できるんだ。いいねぇ。

とか話していたのは、懐かしい思い出です。



ところで、ちょっと待ってください。上のスマートメディア、普通よく知られているのとは、規格が違うのです。



よく使われていたほうのはこちら。



200711228



切り欠き(斜めにかけている部分)の位置が、逆なんです。



DS-7で使われていたのは、電圧が5Vタイプのものでして、この規格の品は、あっという間に消え去り(笑)、3.3Vタイプのものになってしまいました。



スマートメディアは、「切手サイズ」と言われてましたが、かなり大型の記念切手程度の大きさでしたね。



まあ、宣伝文句というのはそういうものですよね。昔よく言われていたことですが、



  • ポータブル・コンピュータは、いざ持ち運ぼうとすると、かなりしんどい


  • ラップトップ・コンピュータは、ひざの上で使うのは、つらすぎる


  • ノートブック・パソコンは、ノートよりもかなりでかいぞ


という感じで。





スマートメディアを読み書きするためのPCカードアダプタ。



200711234



SSFDCって書いてありますね。

200711235



この隙間にスマートメディアをさします。

200711236








2007年11月22日木曜日

(Firefox) Tab Mix Plusのせいでウインドウが閉じにくくなる?

長いこと、FreeBSDでFirefoxを使っていて、今日はじめて気がついたんですが、FileメニューのCloseを選択しても、ウインドウが閉じないんです。



200711211



ただし、ウインドウの中にタブが2つ以上開いているときは、FileメニューにClose Windowというのがあり、それを選択すると





200711213



閉じていいの?と確認メッセージが表示されたあと、ウインドウを閉じることができます。



200711214



なぜ、タブが無いときウインドウが閉じられないんだろう?と疑問に思って、あれこれ試行錯誤しているうちにやっとこさ判明したのですが、Tab Mix Plusの「Do not close window when closing latest tab by hotkey」というオプションがオンになっていると、そういうことになるみたいです。



200711212



hotkeyって、この場合、Ctrl + Wのことですよね?



このオプションの意味は、

ウインドウにタブが1つだけのときは、Ctrl + Wを押しても、ウインドウを閉じない

という意味だと思うのですが、なぜか勢いあまって(!?)、Fileメニューのコマンドでウインドウを閉じようとしたときまで、閉じなくなってるみたいです。



ちなみに、Tab Mix Plusのバージョンは、0.3.6でした。Firefoxは、2.0.0.9です。



200711215


試しにWindows XP上で確認してみたら、この現象は、Windows XP上でも同様におきていました。バージョンは同じで、Tab Mix Plus 0.3.6、Firefox 2.0.0.9です



200711218





タブブラウザなので、ウインドウを複数開くことがほとんどなかったので、これまで気がつかなかったのかもしれません。



それに、ファイルメニューではなくて、Xのウインドウマネージャのボタンで閉じられるし、まあ、そんなに困ることでもないです。





2007年11月21日水曜日

(FreeBSD) /usr/local/bin/libtool: /usr/local/bin/sed: not found というエラー

たぶん、このエラーメッセージを見る人はあまりいないんじゃないかと思うのですが、libtoolを実行したときに

/usr/local/bin/libtool: /usr/local/bin/sed: not found

というエラーが、状況によっては、確実に出ます。



not foundというように、/usr/local/bin/sedは存在しないのですが、なぜかlibtoolは、/usr/local/bin/sedを実行しようとします。



この現象は、以下のような状況が成立したときに、発生しています。



  1. あるホストAで、ports/devel/libtool15 にて、make packageして、バイナリパッケージを作成する。


  2. ホストAには、たまたま/usr/local/bin/sedが存在する。このsedは、ports/japanese/sedからインストールされたもの。


  3. すると、バイナリパッケージに入ってるlibtool(シェルスクリプトです)は、/usr/local/bin/sedを実行するようになっている。


  4. 別のホストBにて、バイナリパッケージでlibtoolをインストールする。


  5. ホストBでは、japanese/sedがたまたまインストールされていないとすると、/usr/local/bin/sedは存在しない。


  6. その結果、ホストBでlibtoolを実行すると、/usr/local/bin/libtool: /usr/local/bin/sed: not found となる。


libtoolのパッケージには、依存するパッケージとして、ja-sedが含まれていないんですよね。

# pkg_info -r /usr/ports/packages/All/libtool-1.5.24.tbz
Information for /usr/ports/packages/All/libtool-1.5.24.tbz:



Depends on:

もしもlibtoolが/usr/local/bin/sedを使うようにビルドされたのなら、依存するパッケージとして、ja-sedも入れば問題は起きないのですが、ちょっとportsの作り方がめんどくさくなっちゃいますね。



ホストBでも、ja-sedをインストールしてしまえば、とりあえずOKですかと。



ちなみに、なぜこんな状況がおきるかというと、



  • 複数のFreeBSDマシンがある環境にて、1台でのみportsからバイナリパッケージをビルドして、


  • そのほかのFreeBSDマシンでは、バイナリパッケージを使っている


からです。あまり知られていないかもれしないですけど、portupgrade -Pで、バイナリパッケージを利用してバージョンアップができるんです。でも・・・しばしばトラブルがおきるんですけど(笑)・・・
まれに、依存関係がうまく管理できていないらしくて、足りないものが出たりするんです。まさに、今回のlibtoolがその実例か?!





ふと手元にあるFreeBSDマシンで、libtoolを調べてみたら

# grep sed /usr/local/bin/libtool | head -3
# A sed program that does not truncate output.
SED="/usr/local/bin/gsed"
Xsed="/usr/local/bin/gsed -e 1s/^X//"

/usr/local/bin/sedではなくて、/usr/local/bin/gsedを呼んでました。



なんだこれ?と思ったら、

# pkg_which /usr/local/bin/gsed
gsed-4.1.5_1

という、ports/textproc/gsed/にあるもので、依存関係により自動的にインストールされてたみたいです。



たとえば、rpm4とかでインストールされてしまうみたいです。

# grep gsed archivers/rpm4/Makefile
BUILD_DEPENDS=  ${LOCALBASE}/bin/gsed:${PORTSDIR}/textproc/gsed



2007年11月19日月曜日

エラー(BlogPet)

pochiはエラーへひょっとするつもりだった?

*このエントリは、ブログペットの「pochi」が書きました。

Norton Internet Security 2006と格闘した午後の憂鬱

20071118



とある方から、ノートンアンチウイルスの更新サービスが期限切れになったのでなんとかして欲しい、と頼まれ、いってきました。



ようするに、シマンテックのウェブサイトにて、クレジットカード決済で、更新サービスを延長するためのキーを購入して、そのキーを入力するだけ・・・だったんですけどね。



それだけのことなのに、パソコン初心者には、かなり敷居が高くて、できないらしいです。お金もかかわることですから、慎重になったほうがいいことは確かですけどね。最近は、詐欺も多いみたいですし。



しかも、前回、その延長をしようとしたとき、なにやら失敗をしたらしくて(・・・そのときも、後始末をしてくれと、呼ばれましたが・・・)、今回は、より慎重になっているっぽいです。





何はともあれ、延長キーを購入。画面にここをクリックしろ、というような感じで、親切に表示されているので、そのとおり、クリックします。



パソコン初心者には、こんなこともわかんないのかね~?とか思いつつ



表示された画面を見ると・・・はぁ?



「以下の製品がおすすめです」みたいな宣伝文句とともに、ずら~っと表示されたのは、「ノートンインターネットセキュリティ2008」と「ノートンPCエキスパート」のパックで、期間限定の特別価格18,375円。



そのほかに一覧表示されているのは、「インターネットセキュリティ2008」 8190円とか、「ノートンアンチウイルス2008」 6195円。



一番下のほうに、目立たないかんじで、「延長キー」の「カートにいれる」がありました。



う~ん、これって、すごい戦略ですね(笑)。かつての(てゆーか、今は使わないので知らない)RealPlayerを思い出すような・・・



実は、先の「前回失敗した」ってのが、まさにこの罠で、延長キーを購入するつもりが、新製品を買ってしまった、というものでした。



・・・で・も・で・す・ね、延長キーの値段って、新バージョンを買うのと、あんまり値段が違わなかったりするんですよね。ま、いっかぁ!



へぇ~・・・知らなかったんですが、アンチウイルス2008って、同一世帯のパソコン3台までインストールできるんですね。同一世帯ってどうやって確認されているのか、よくわかりませんけど。





さてさて、延長キーを購入、キーを入力、期限が366日まで増加してOK。LiveUpdateを実行しました。



ちょっと時間がかかってるので、ついでにサービスのつもりで、Windowsの方もアップデートしておきますか、と面倒見てあげる。Microsoft Updateになってなかったので、Microsoft Updateにしたり、いくつかOfficeのアップデートがあったので、実行したり・・・



Windowsのアップデートについては、時間がそこそこかかったものの、トラブルも無く終了。



ノートンのLiveUpdateも終了。



なんだかんだあったので、1回、Windowsの再起動が強要される、と。



(しばらく待つ)



ちゃんと動いていることを確認して帰りますか・・・えっ?!タスクバーに表示されているノートンのアイコンに赤い×マーク。なんだか問題があるらしいです。



調べてみると、Norton Antivirusの「状態」で、Auto Protectがオフになってます。



じゃぁ、ってことでオンにしようとすると・・・しばらくたって、エラーメッセージが表示される。何度やってもダメ。



サポートサイトに掲載されている解決方法をいろいろ見てみたりしたんですが、1時間ほど格闘して、どの方法をためしても、すべてダメ。



最後の手段として、今の自分にできることは、Norton Internet Securityを再インストールするしかない、と判断。



シマンテックのサポートに泣きつけば、問題解決できるかもしれませんが、私にはそこまで付き合う時間もないので、そのパソコンのオーナーさんにサポート依頼をしてもらうしかないのですが、ど素人に近い人ですから、きっと、再インストールしてください、とか言われて、突き放されそうな予感。







これ、たぶんですね、古いバージョンのNorton AntiVirusのファイルが残っていたために、問題が起きてたんだと思います。



そのパソコンは、元々、買ったときからNorton AntiVirusがインストールされていました。それで、何度か延長キーを購入してたものの、前回(ひょっとすると2年前かな?)、延長キーではなく、Norton Internet Security 2006をダウンロード購入したものです。



余談ですけど、そのときは、私がやったんじゃないです。そのパソコンのオーナーさんのほうでされたことなので。まあ、古いバージョンのソフトを使い続けるのことに、あまりメリットもないですから、新バージョンを購入するというのも、そんなに悪い選択でもないでしょう。



しかし、買ったのが、Norton AntiVirusじゃなくて、Norton Internet Securityだったのは、シマンテックのウェブ・ショッピング・サイトがうまくデザインされていたおかげでしょうね。販売戦略に効果があることが実証されたようです(笑)





タスクバーに表示されているノートンのアイコンに赤い×マーク、そして、問題があるよ、というポップアップメッセージがときどき表示される・・・実はこれは、オーナーさんに話を聞いてみると、

「ずいぶん前から表示されてたけど、なんかやってると消えちゃうので、そのままにしてたんだよ」

とのこと。



あ、あのねぇ、ポップアップメッセージですから、しばらくすると消えちゃうんです。それに、消えたといって、問題が解決されたわけじゃないんですよ。



・・・と説明しても、オーナーさんは理解していない様子。なんだかなぁ。目障りなものが目の前から消えればいい、と思っているだけみたいです。



「今のこの状況では、ウイルスに対する防御がされていないんですよ。」



と説明しても、オーナーさんは理解していない様子。なんだかなぁ。

「知らないメールを開かなければいいんだよね。」

とか言ってます。



あ、あのねぇ・・・ そもそも、貴方がノートンに対して払ったお金は、何のためのお金だと思ってるんですか、とクドクド説教したくなる気分。





いろいろあってガックリきた気分の中、Norton Internet Security 2006をアンインストールしました。



「C:\Program Files\Norton AntiVirus」というフォルダがあって、タイムスタンプが2002年~2003年くらいのファイル(種類はさまざま)がたくさんあるので、これが古いバージョンのファイルだろう?と思い、そのフォルダを別の場所へ移動。



そして、Norton Internet Security 2006を再インストール。



とりあえず、インストールは完了。



インストール先フォルダは、C:\Program Files\Norton Internet Securityになってました。うーん、先ほどの、古いファイルをどかした判断は、正解?!



ウイルス定義の更新サービスが切れた状態になってるかも?と心配してたのですが、残り366日のままになっていました。



そしてLiveUpdateを実行。時間がかかります。時間がかかります。時間がかかります。

おいっ、いつ終わるんだぁー!!!



「Symantec Trusted Application Listの更新版のインストール中」のまま、先に進みません。ファイルのダウンロードは終わっている模様。ハードディスクへのアクセスはほとんど無し。「ALEUpdat.exe」というプロセスがCPUを99%程度消費中。メモリ使用量もじわじわと増加中。



なんだ、このALEUpdat.exeって?



わけわかんないので、一度、Windowsを再起動。LiveUpdateをやりなおす。



・・・再び、同じ状況になる。LiveUpdateを実行すると、「Symantec Trusted Application Listの更新版のインストール中」のまま、先に進みません。「ALEUpdat.exe」というプロセスが、CPUを占有中。



ウェブで検索すると、なんだか同じようなトラブル情報がちらほらと。個人的な結論としては、



よくわかんない

ということに帰着しました。



時間が経てば処理が進むかもしれない、と思い、このままにしておいてね、と頼んで帰ってきました。



オーナーさんによれば、そのあとでエラーが出たとのこと。もういいやってことで、何度か、LiveUpdateを実行してね、と頼んでおきました。直るかな?





ウイルス対策ソフトのことを、ウイルスソフトと呼ぶ、間違った言葉の使い方があります。まあ、笑い話ですけど。



しかし、ウイルス対策ソフトの方は、他への感染はしないものの(マーケティングにより感染してる?)、パソコン利用者に、しばしば迷惑をかけることがある、という意味では、ウイルスも、ウイルス対策ソフトも、実は紙一重では?と思ったり。





まあ、今日は、いろいろありましたとさ。
じゃあ、どうすればいいんだ?って質問に、1つ、回答をもってはいます。

別のウイルス対策ソフトに変える

それが万能な解決方法でないこともわかってますけど。



究極の解決方法は、

あなたには、今のパソコンを使うのは無理だ。

と言うこと。そんなこと言えないよね。





自動車を所有している人は、自分で運転はするけど、その自動車を自分でメンテナンスできるとは限らないですよね。パソコンも、それと同じこと、言えるでしょうか?



そうだとすれば、パソコンも、6ヶ月点検とかあって、強制的に監視がおこなわれるとかすれば
・・・うわぁ~、いやだな、そんなBig Brotherな世界は (「1984年」。読んだことないですけど)



最近読んだ、コレ。

http://pc.watch.impress.co.jp/docs/2007/1114/hot516.htm
元麻布春男の週刊PCホットライン
無くしてほしくないPCの自由な世界

この意見、個人的に大賛成で、大切にしたいです。



最近、ネットワーク利用に関して、じわじわと規制がきつくなってきていて、正直、うんざりしています。



熟練度の低い人のレベルにあわせて、インフラに厳格な規制がかかっていくんですけど、それは、ある意味、かなり不幸なことです。



  • 本当はもっと高速に処理できるパソコンなのに、なんかのせいで、ノロノロする。


  • 本当はもっと高速に使えるネットワークなのに、なんかのせいで、遅くなったり、通信できなくなったりする。


なんとかうまい妥協点へもっていけないものでしょうか。



2007年11月16日金曜日

マルゲリータ

200711161



マルゲリータ王妃


200711162



池田理代子先生が描きおろし!



ははは



ボジョレー・ヴィラージュ・ヌーヴォー 2007

一応、ラベルの表記にあわせて、タイトルも直しておくか。



200711152



というわけで、今年も、無駄に(?)ヴィラージュにしました。



PAR AVIONという単語を見て、うんうん、と今年もうなづく、と。





ハロウィーンが過ぎると、次は、もうクリスマス???



今日の都内某所
200711151



10月31日 ⇒ 12月25日って、間がちょっと開きすぎですよね。
その中間あたりに、何かイベントが入って欲しいところですが、ボジョレー・ヌーヴォーではちょっとダメですかね?



11月23日の勤労感謝の日ってのも、なんだかね、って感じですけど、勤労感謝の日は、昔は、新嘗祭ってやつだったそうなんですけど、それも何かケチをつけられそうですし。







■ 過去記事







2007年11月15日木曜日

金のロールパン 銀のロールパン

20071114



きこりは、昼飯のパンを泉に落としてしまいました。
すると泉から女神が現れました。



「あなたが落としたのは、この金のロールパンですか それとも銀のロールパンですか」



「いいえ、落としたのは、普通のパンです」



「あなたは正直な人です。ごほうびに、3個ともあげましょう」





金のロールパン1個で538kcal、銀のロールパンは506kcal。
2個とも食べたら、1044kcalです。軽々と1メガカロリー!
う~ん、恐ろしい。
ほんと、菓子パンは、見かけとは違って、相当に高カロリーですね。





ちなみに、「きれいなジャイアン」で有名になった、あのドラえもんのエピソードは、てんとう虫コミックス「ドラえもん」第36巻に収録されています。



2007年11月14日水曜日

今日は仕事モードで

何度も訪れたことのある「あの街」。
高いところから見下ろすと、見知らぬ街のような感じがしました。



200711131



聞いた話ですが、かつて、あの街に通う人々にとっては、肉の万世の最上階にて、「見ろ、人がゴミのようだ」と言いながら肉を食するのが究極の夢らしいですが、今では、万世よりも高いビルがいくつもあります。

200711132



もっとも、このあたりってのは、ほとんど立ち入らないエリアなのですけど。



200711133

■ 過去記事





2007年11月12日月曜日

朝日にそまる富士 ~ 新幹線の車窓から

20071112



赤く見えたのは、ほんの数十秒くらいでした。





知らないうちに、JR新横浜駅が大改装されてました。以前よりも、横浜線への乗り換えが不便になっている気がするのですが、乗り継ぎにぎりぎりでした。



これって、今だけ?最終形態?





端子(BlogPet)

きのうにょほほの、アンテナ端子も比較しないです。

*このエントリは、ブログペットの「pochi」が書きました。

夕日

20071111



秋ですねぇ。



2007年11月11日日曜日

BS朝日 魔法使いサリー

200711101

わざわざ書いてくれなくても、すぐわかるけど。



200711102



どうして、常時、表示しっぱなしなんだろう?





「あたしンち」も同じだ。





200711103



200711104



ということは…「パーマン」にもある。





200711105



「一休さん」もある。



200711106





デジタル放送っていったい何なんだろう。



そもそも、なぜ録画してあったんだろう。







2007年11月10日土曜日

(FreeBSD,Xorg) Xサーバが2~3回目以降起動しなくなる … (EE) I810(0): V_BIOS address 0x0 out of range

日常の私の使い方では、朝(?…笑)、パソコンの電源を入れて、FreeBSDをブートして、コンソールからログインして(xdmは使わないのだ)、startxでXを立ち上げて、仕事(?…笑)をして、夜になったら、Xから抜けて、shutdown -pして電源を切る、という感じ。



そのパターンを繰り返してきたので、これまで気がつかなかったことなのですが、つい最近、Xを一度落としたあと、2回目のstartxを実行すると、Xが立ち上がらないことに気がつきました。



もしかすると、2回目はまだXは立ち上がったかもしれません。



でも、3回目以降は、だいたいダメでした。一度でもエラーが出てXが立ち上がらなくなると、もうそれ以降は、リブートしない限り、2度とXが立ち上がりません。



だめだったとき、こんなログが出ています。



(II) Loading font Type1
(II) LoadModule: "i810"
(II) Loading /usr/local/lib/xorg/modules/drivers//i810_drv.so
(II) Module i810: vendor="X.Org Foundation"
        compiled for 1.4.0, module version = 1.6.5
        Module class: X.Org Video Driver
        ABI class: X.Org Video Driver, version 2.0
(II) LoadModule: "mouse"
(II) Loading /usr/local/lib/xorg/modules/input//mouse_drv.so
(II) Module mouse: vendor="X.Org Foundation"
        compiled for 1.4.0, module version = 1.2.3
        Module class: X.Org XInput Driver
        ABI class: X.Org XInput driver, version 2.0
(II) LoadModule: "kbd"
(II) Loading /usr/local/lib/xorg/modules/input//kbd_drv.so
(II) Module kbd: vendor="X.Org Foundation"
        compiled for 1.4.0, module version = 1.2.2
        Module class: X.Org XInput Driver
        ABI class: X.Org XInput driver, version 2.0
(II) I810: Driver for Intel Integrated Graphics Chipsets: i810, i810-dc100,
        i810e, i815, i830M, 845G, 852GM/855GM, 865G, 915G, E7221 (i915),
        915GM, 945G, 945GM, 965G, 965G, 965Q, 946GZ
(II) Primary Device is: PCI 00:02:0
(--) Chipset 915G found



~省略~



(II) Loading sub module "int10"
(II) LoadModule: "int10"
(II) Reloading /usr/local/lib/xorg/modules//libint10.so
(II) I810(0): initializing int10
(==) I810(0): Write-combining range (0xa0000,0x20000) was already clear
(==) I810(0): Write-combining range (0xc0000,0x40000) was already clear
(EE) I810(0): V_BIOS address 0x0 out of range
(EE) I810(0): VBE initialization failed.

(II) UnloadModule: "i810"
(II) UnloadModule: "int10"
(II) UnloadModule: "vgahw"
(II) Unloading /usr/local/lib/xorg/modules//libvgahw.so
(II) UnloadModule: "vbe"
(II) Unloading /usr/local/lib/xorg/modules//libvbe.so
(II) UnloadModule: "int10"
(II) Unloading /usr/local/lib/xorg/modules//libint10.so
(EE) Screen(s) found, but none have a usable configuration.

Fatal server error:
no screens found



EEというマークがついている行は、エラーのことらしいのですが、

(EE) I810(0): V_BIOS address 0x0 out of range
(EE) I810(0): VBE initialization failed.

というのが出てます。



正常に立ち上がるときは、その近辺の行は、こんな感じです。



(II) Loading sub module "int10"
(II) LoadModule: "int10"
(II) Reloading /usr/local/lib/xorg/modules//libint10.so
(II) I810(0): initializing int10
(==) I810(0): Write-combining range (0xa0000,0x20000) was already clear
(==) I810(0): Write-combining range (0xc0000,0x40000) was already clear
(WW) I810(0): Bad V_BIOS checksum
(II) I810(0): Primary V_BIOS segment is: 0xc000

(==) I810(0): Write-combining range (0x0,0x1000) was already clear
(II) I810(0): VESA BIOS detected
(II) I810(0): VESA VBE Version 3.0
(II) I810(0): VESA VBE Total Mem: 7872 kB
(II) I810(0): VESA VBE OEM: Intel(r)Grantsdale-G Graphics Chip Accelerated VGA BIOS
(II) I810(0): VESA VBE OEM Software Rev: 1.0
(II) I810(0): VESA VBE OEM Vendor: Intel Corporation
(II) I810(0): VESA VBE OEM Product: Intel(r)Grantsdale-G Graphics Controller
(II) I810(0): VESA VBE OEM Product Rev: Hardware Version 0.0
(II) I810(0): Integrated Graphics Chipset: Intel(R) 915G
(--) I810(0): Chipset: "915G"
(--) I810(0): Linear framebuffer at 0xC0000000
(--) I810(0): IO registers at addr 0xB0080000
(==) I810(0): Write-combining range (0xb0080000,0x80000) was already clear



Badとか言われちゃってますけど(笑)。



ま、いいか、と見なかったことにしていたのですが、先日、偶然見つけたのですけど、FreeBSDのメーリングリストで、同じ不具合を訴えている人がいて、解決方法がわかりました。



ログからもわかるように、ビデオチップは、Intelのチップセット統合のやつでして、これまで、i810というドライバを使っていました。それをやめて、代わりに、intelというドライバを使えばOKだよ、とのこと。



ほほぉ~ 最近は、そういうドライバがあったんですね。



これまで使っていたビデオドライバは、portsでインストールした
xf86-video-i810-1.6.5_3
なので、pkg_deleteでアンインストールしてしまえ・・・



# pkg_delete /var/db/pkg/xf86-video-i810-1.6.5_3
pkg_delete: package 'xf86-video-i810-1.6.5_3' is required by these other packages and may not be deinstalled:
xorg-7.3_1
xorg-drivers-7.3



というように依存しているものがあるのでアンインストールできません。



どうやら、xorg-driversというのがメタ・パッケージで、こいつの依存関係で、xf86-video-i810がインストールされている、ということらしいです。



ports/x11-drivers/xorg-drivers にて、make configすると、メニューが表示されるので、i810をoff、intelをon にすればよさそうです。



あとは、xorg-driversをビルドしなおせばOKっぽいですけど、私はめんどくさかったので、make configしただけで、そのあと、pkg_delete -f xf86-video-i810-1.6.5_3 で、強制的にアンインストールしたあと、ports/x11-drivers/xf86-video-intel にて、make installしました。あとで、pkgdb -Fでつじつまあわせすれば大丈夫かな、と思って。



なお、



# ls -l /usr/local/lib/xorg/modules/drivers/i810*
lrwxr-xr-x  1 root  wheel      12 11  8 18:19 /usr/local/lib/xorg/modules/drivers/i810_drv.so -> intel_drv.so



というように、昔のドライバ名からシンボリックリンクがつくられているので、xorg.confは書き換えることなく、そのまま使えています。



2007年11月9日金曜日

(FreeBSD, Bacula) The number of files mismatch! Volume=3 Catalog=4

ネットワークベースのバックアップソフト「Bacula」で、毎日、複数台のコンピュータのデータのバックアップを採っています。バックアップ先は、ほとんどはハードディスクで、1つだけ、ためしに、古いテープライブラリ(オートチェンジャーつきのテープドライブ。ジュークボックス。メディアはDLT7000)も使ってます。



先週か、先々週くらいに気がついたのですが、ボリュームの一覧を見たら、テープライブラリ内テープすべてで、Volume Statusが、Errorになってました。そのときは、う~んまいったな、古いテープだからエラーになったのかな?と思うだけで、volumeをすべてpurgeして、relabelしてしまいました。つまり、テープ内のデータをすべて破棄して、空の状態から、またテープを使うようにしました。



テープドライブのクリーニングをやってなかったので、そのせいかな?とか思ってたのですが、クリーニングを実行し、数日後のぞいてみると、やっぱりまた、Volume StatusがErrorに。



毎日メールで送られてくるログメッセージを見直してみると、こんな気になることが書かれていました。



hogetape-dir JobId 6468: Start Backup JobId 6468, Job=Client2.2007-11-07_23.05.31
hogetape-dir JobId 6468: Using Device "Drive-1"
hogetape-sd JobId 6468: 3301 Issuing autochanger "loaded? drive 0" command.
hogetape-sd JobId 6468: 3302 Autochanger "loaded? drive 0", result is Slot 4.

hogetape-sd JobId 6468: Volume "TAPE022" previously written, moving to end of data.
hogetape-sd JobId 6468: Error: Bacula cannot write on tape Volume "TAPE022" because:
The number of files mismatch! Volume=3 Catalog=4

hogetape-sd JobId 6468: Marking Volume "TAPE022" in Error in Catalog.
hogetape-sd JobId 6468: 3307 Issuing autochanger "unload slot 4, drive 0" command.
hogetape-sd JobId 6468: 3304 Issuing autochanger "load slot 3, drive 0" command.
hogetape-sd JobId 6468: 3305 Autochanger "load slot 3, drive 0", status is OK.
hogetape-sd JobId 6468: 3301 Issuing autochanger "loaded? drive 0" command.
hogetape-sd JobId 6468: 3302 Autochanger "loaded? drive 0", result is Slot 3.
hogetape-sd JobId 6468: Wrote label to prelabeled Volume "TAPE023" on device "Drive-1" (/dev/nsa0)



気になるのはココです。

The number of files mismatch! Volume=3 Catalog=4


カタログ(MySQLのデータベース)には4個のデータがあることになっているのに、テープの中には3個しかない。



それはおかしいから、このテープを使うのはやめにして、別のテープを使うことにするよ。

ってことのようですね。



テープってのは、前回のバックアップ記録時、テープの途中までしか使ってなければ(たいていそう)、今回は、前回のつづき、途中から続けて、データを追記していくらしいです。



さて、続きの場所を読んでみたら、最後に記録したデータの番号と、データベース中に覚えていた番号とが不一致してる、ってわけで、それってそのテープが変なんじゃない? ってことで使うのをやめて、ステータスをErrorにされてしまうんでしょうね。



以前は、ちゃんとテープに追加書き込みができていたし、リストアもできてたんですが、いつからこうなってしまったのか・・・?



思い当たるのは

bacula-2.2.5へアップデートした



FreeBSD 7.0-BETA1へアップデートした

くらいです。



昔の環境へ戻す、という方法もあるでしょうが、それってかなり後ろ向き、って思うので、今回、それはやめておこう、ということにしました。





btape
というコマンドで、テープドライブがBaculaでちゃんと使えるか、テストできます。



# btape -c /usr/local/etc/bacula-sd.conf /dev/nsa0
Tape block granularity is 1024 bytes.
btape: butil.c:285 Using device: "/dev/nsa0" for writing.
08-11 10:56 btape JobId 0: 3301 Issuing autochanger "loaded? drive 0" command.
08-11 10:56 btape JobId 0: 3302 Autochanger "loaded? drive 0", result is Slot 1.
08-11 10:56 btape JobId 0: 3301 Issuing autochanger "loaded? drive 0" command.
08-11 10:56 btape JobId 0: 3302 Autochanger "loaded? drive 0", result is Slot 1.
btape: btape.c:368 open device "Drive-1" (/dev/nsa0): OK
*test (と入力)



(~省略~)



=== Append files test === テープへの追加書き込みをテストするらしい



This test is essential to Bacula.



I'm going to write one record  in file 0,
                   two records in file 1,
             and three records in file 2



btape: btape.c:471 Rewound "Drive-1" (/dev/nsa0)
btape: btape.c:1573 Wrote one record of 64412 bytes.
btape: btape.c:1575 Wrote block to device.
btape: btape.c:501 Wrote 1 EOF to "Drive-1" (/dev/nsa0)
btape: btape.c:1573 Wrote one record of 64412 bytes.
btape: btape.c:1575 Wrote block to device.
btape: btape.c:1573 Wrote one record of 64412 bytes.
btape: btape.c:1575 Wrote block to device.
btape: btape.c:501 Wrote 1 EOF to "Drive-1" (/dev/nsa0)
btape: btape.c:1573 Wrote one record of 64412 bytes.
btape: btape.c:1575 Wrote block to device.
btape: btape.c:1573 Wrote one record of 64412 bytes.
btape: btape.c:1575 Wrote block to device.
btape: btape.c:1573 Wrote one record of 64412 bytes.
btape: btape.c:1575 Wrote block to device.
btape: btape.c:501 Wrote 1 EOF to "Drive-1" (/dev/nsa0)
08-11 10:29 btape JobId 0: 3301 Issuing autochanger "loaded? drive 0" command.
08-11 10:29 btape JobId 0: 3302 Autochanger "loaded? drive 0", result is Slot 3.
btape: btape.c:368 open device "Drive-1" (/dev/nsa0): OK
btape: btape.c:471 Rewound "Drive-1" (/dev/nsa0)
btape: btape.c:1093 Now moving to end of medium.
btape: btape.c:522 Moved to end of medium.
We should be in file 3. I am at file 2. This is NOT correct!!!!
Append test failed. Attempting again.
Setting "Hardware End of Medium = no
    and "Fast Forward Space File = no
and retrying append test.



(失敗したので、設定を変えて、もう一度テストするらしい)



=== Append files test ===



This test is essential to Bacula.



I'm going to write one record  in file 0,
                   two records in file 1,
             and three records in file 2



btape: btape.c:471 Rewound "Drive-1" (/dev/nsa0)
btape: btape.c:1573 Wrote one record of 64412 bytes.
btape: btape.c:1575 Wrote block to device.
btape: btape.c:501 Wrote 1 EOF to "Drive-1" (/dev/nsa0)
btape: btape.c:1573 Wrote one record of 64412 bytes.
btape: btape.c:1575 Wrote block to device.
btape: btape.c:1573 Wrote one record of 64412 bytes.
btape: btape.c:1575 Wrote block to device.
btape: btape.c:501 Wrote 1 EOF to "Drive-1" (/dev/nsa0)
btape: btape.c:1573 Wrote one record of 64412 bytes.
btape: btape.c:1575 Wrote block to device.
btape: btape.c:1573 Wrote one record of 64412 bytes.
btape: btape.c:1575 Wrote block to device.
btape: btape.c:1573 Wrote one record of 64412 bytes.
btape: btape.c:1575 Wrote block to device.
btape: btape.c:501 Wrote 1 EOF to "Drive-1" (/dev/nsa0)
08-11 10:30 btape JobId 0: 3301 Issuing autochanger "loaded? drive 0" command.
08-11 10:30 btape JobId 0: 3302 Autochanger "loaded? drive 0", result is Slot 3.
btape: btape.c:368 open device "Drive-1" (/dev/nsa0): OK
btape: btape.c:471 Rewound "Drive-1" (/dev/nsa0)
btape: btape.c:1093 Now moving to end of medium.
btape: btape.c:522 Moved to end of medium.
We should be in file 3. I am at file 2. This is NOT correct!!!!



That appears *NOT* to have corrected the problem.



Append test failed. (失敗したぞ)



!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Unable to correct the problem. You MUST fix this
problem before Bacula can use your tape drive correctly
(この問題を解決しない限り、Baculaではこのテープドライブは使えないねぇ)



Perhaps running Bacula in fixed block mode will work.
Do so by setting:



Minimum Block Size = nnn
Maximum Block Size = nnn



in your Storage daemon's Device definition.
nnn must match your tape driver's block size, which
can be determined by reading your tape manufacturers
information, and the information on your kernel dirver.
Fixed block sizes, however, are not normally an ideal solution.



Some systems, e.g. OpenBSD, require you to set
   Use MTIOCGET= no
in your device resource. Use with caution.



なんかいろいろメッセージが出てきましたが、Baculaのドキュメントを探していたら、これが見つかりました。




Tape Modes on FreeBSD

http://www.bacula.org/dev-manual/Testing_Your_Tape_Drive.html#SECTION004037000000000000000



これによれば、こんなコマンドを実行しておけ、とのこと。



# mt  -f  /dev/nsa0  seteotmodel  2
/dev/nsa0: old model was 1 filemark at EOT
/dev/nsa0: new model  is 2 filemarks at EOT
# mt  -f  /dev/nsa0  blocksize   0
# mt  -f  /dev/nsa0  comp  enable



え!?こんなの、ぜんぜん知りませんでした。
で、やってみて、もう一度btapeでtestを実行したのですが、やっぱりダメ。



もうちょっとドキュメントをちゃんと読んでみました。



bacula-sd.confにて、Deviceの設定を書け、と言ってます。
ただ、どう書けばいいのかは、使っているハードウェアによって異なるみたいです。



とりあえず、推奨されているものをためしたら、うまくいきました。



=== Append files test ===



This test is essential to Bacula.



I'm going to write one record  in file 0,
                   two records in file 1,
             and three records in file 2



btape: btape.c:471 Rewound "Drive-1" (/dev/nsa0)
btape: btape.c:1573 Wrote one record of 64412 bytes.
btape: btape.c:1575 Wrote block to device.
btape: btape.c:501 Wrote 1 EOF to "Drive-1" (/dev/nsa0)
btape: btape.c:1573 Wrote one record of 64412 bytes.
btape: btape.c:1575 Wrote block to device.
btape: btape.c:1573 Wrote one record of 64412 bytes.
btape: btape.c:1575 Wrote block to device.
btape: btape.c:501 Wrote 1 EOF to "Drive-1" (/dev/nsa0)
btape: btape.c:1573 Wrote one record of 64412 bytes.
btape: btape.c:1575 Wrote block to device.
btape: btape.c:1573 Wrote one record of 64412 bytes.
btape: btape.c:1575 Wrote block to device.
btape: btape.c:1573 Wrote one record of 64412 bytes.
btape: btape.c:1575 Wrote block to device.
btape: btape.c:501 Wrote 1 EOF to "Drive-1" (/dev/nsa0)
btape: btape.c:501 Wrote 1 EOF to "Drive-1" (/dev/nsa0)
08-11 11:04 btape JobId 0: 3301 Issuing autochanger "loaded? drive 0" command.
08-11 11:04 btape JobId 0: 3302 Autochanger "loaded? drive 0", result is Slot 1.
btape: btape.c:368 open device "Drive-1" (/dev/nsa0): OK
btape: btape.c:471 Rewound "Drive-1" (/dev/nsa0)
btape: btape.c:1093 Now moving to end of medium.
btape: btape.c:522 Moved to end of medium.
We should be in file 3. I am at file 3. This is correct!



Now the important part, I am going to attempt to append to the tape.



btape: btape.c:1573 Wrote one record of 64412 bytes.
btape: btape.c:1575 Wrote block to device.
btape: btape.c:501 Wrote 1 EOF to "Drive-1" (/dev/nsa0)
btape: btape.c:501 Wrote 1 EOF to "Drive-1" (/dev/nsa0)
btape: btape.c:471 Rewound "Drive-1" (/dev/nsa0)
Done appending, there should be no I/O errors



Doing Bacula scan of blocks:
1 block of 64448 bytes in file 1
End of File mark.
2 blocks of 64448 bytes in file 2
End of File mark.
3 blocks of 64448 bytes in file 3
End of File mark.
1 block of 64448 bytes in file 4
End of File mark.
Total files=4, blocks=7, bytes = 451,136
End scanning the tape.
We should be in file 4. I am at file 4. This is correct!



The above Bacula scan should have output identical to what follows.
Please double check it ...
=== Sample correct output ===
1 block of 64448 bytes in file 1
End of File mark.
2 blocks of 64448 bytes in file 2
End of File mark.
3 blocks of 64448 bytes in file 3
End of File mark.
1 block of 64448 bytes in file 4
End of File mark.
Total files=4, blocks=7, bytes = 451,136
=== End sample correct output ===



If the above scan output is not identical to the
sample output, you MUST correct the problem
or Bacula will not be able to write multiple Jobs to
the tape.



Skipping read backwards test because BSR turned off.



=== Forward space files test ===



This test is essential to Bacula.



I'm going to write five files then test forward spacing



btape: btape.c:471 Rewound "Drive-1" (/dev/nsa0)
btape: btape.c:1573 Wrote one record of 64412 bytes.
btape: btape.c:1575 Wrote block to device.
btape: btape.c:501 Wrote 1 EOF to "Drive-1" (/dev/nsa0)
btape: btape.c:1573 Wrote one record of 64412 bytes.
btape: btape.c:1575 Wrote block to device.
btape: btape.c:1573 Wrote one record of 64412 bytes.
btape: btape.c:1575 Wrote block to device.
btape: btape.c:501 Wrote 1 EOF to "Drive-1" (/dev/nsa0)
btape: btape.c:1573 Wrote one record of 64412 bytes.
btape: btape.c:1575 Wrote block to device.
btape: btape.c:1573 Wrote one record of 64412 bytes.
btape: btape.c:1575 Wrote block to device.
btape: btape.c:1573 Wrote one record of 64412 bytes.
btape: btape.c:1575 Wrote block to device.
btape: btape.c:501 Wrote 1 EOF to "Drive-1" (/dev/nsa0)
btape: btape.c:1573 Wrote one record of 64412 bytes.
btape: btape.c:1575 Wrote block to device.
btape: btape.c:1573 Wrote one record of 64412 bytes.
btape: btape.c:1575 Wrote block to device.
btape: btape.c:501 Wrote 1 EOF to "Drive-1" (/dev/nsa0)
btape: btape.c:1573 Wrote one record of 64412 bytes.
btape: btape.c:1575 Wrote block to device.
btape: btape.c:501 Wrote 1 EOF to "Drive-1" (/dev/nsa0)
btape: btape.c:501 Wrote 1 EOF to "Drive-1" (/dev/nsa0)
btape: btape.c:471 Rewound "Drive-1" (/dev/nsa0)
btape: btape.c:1307 Now forward spacing 1 file.
We should be in file 1. I am at file 1. This is correct!
btape: btape.c:1319 Now forward spacing 2 files.
We should be in file 3. I am at file 3. This is correct!
btape: btape.c:471 Rewound "Drive-1" (/dev/nsa0)
btape: btape.c:1332 Now forward spacing 4 files.
We should be in file 4. I am at file 4. This is correct!



btape: btape.c:1350 Now forward spacing 1 more file.
We should be in file 5. I am at file 5. This is correct!



=== End Forward space files test ===



Ah, I see you have an autochanger configured.
To test the autochanger you must have a blank tape
that I can write on in Slot 1.



Do you wish to continue with the Autochanger test? (y/n): y



=== Autochanger test ===



3301 Issuing autochanger "loaded" command.
Slot 1 loaded. I am going to unload it.
3302 Issuing autochanger "unload 1 0" command.
unload status=OK 0
3303 Issuing autochanger "load 1 0" command.
3303 Autochanger "load 1 0" status is OK.
08-11 11:41 btape JobId 0: 3301 Issuing autochanger "loaded? drive 0" command.
08-11 11:41 btape JobId 0: 3302 Autochanger "loaded? drive 0", result is Slot 1.
btape: btape.c:368 open device "Drive-1" (/dev/nsa0): OK
btape: btape.c:1237 Rewound "Drive-1" (/dev/nsa0)
btape: btape.c:1244 Wrote EOF to "Drive-1" (/dev/nsa0)



The test autochanger worked!!



追加したのは、

  BSF at EOM = yes
  Backward Space Record = no
  Backward Space File = no
  Fast Forward Space File = no
  TWO EOF = yes

でした。今では、bacula-sd.confは、こんな感じになりました。



Device {
  Name = Drive-1                      #
  Drive Index = 0
  Media Type = DLT7000
  Archive Device = /dev/nsa0
  AutomaticMount = yes;               # when device opened, read it
  AlwaysOpen = yes;
  RemovableMedia = yes;
  RandomAccess = no;
  AutoChanger = yes
  Hardware End of Medium = no
  BSF at EOM = yes
  Backward Space Record = no
  Backward Space File = no
  Fast Forward Space File = no
  TWO EOF = yes
  # Enable the Alert command only if you have the mtx package loaded
  Alert Command = "sh -c '/usr/local/sbin/tapeinfo -f %c |grep TapeAlert|cat'"
}



ためしに、バックアップジョブを数個、実行してみましたが、正常にバックアップを採取できました。




■ 過去記事






2007年11月7日水曜日

元祖 頭脳パン

久々に、頭脳パンをみつけました。



200711071
元祖 頭脳パン



名前に「元祖」とついているように、これは、1992年に、頭脳パンが復活したときの、最初の製品らしいです。

頭脳史
http://www.ito-pan.co.jp/product/zunou/zunousi.htm

なるほど。私はあまり見たことなかったですが、これは長年売られ続けているんですね・・・と思ったら、2007年10月発売と書いてありました。ぎゃふん。何回復活してるんだか。

頭脳パンシリーズ
http://www.ito-pan.co.jp/product/zunou/index.htm

200711072



微妙な感じの、マスコット・キャラクタ?
「頭脳博士」とはだいぶ違いますが・・・



昔の吉田戦車のマンガに、こんな感じのキャラがいたような。



ところで、レーズンって、そんなに好きじゃないんだ(笑)



■ 過去記事