goo blog サービス終了のお知らせ 

ttt

getttyent

(FreeBSD) bacula-fdが ERR=Cannot allocate memory というエラーを出す

2014-11-17 22:37:22 | デジタル・インターネット

どういう条件で発生するのか、これまでよくわからなかったのですが、baculaでバッグアップをとっている最中に、bacula-fd(Baculaのクライアント)が、こんなエラーを出すことがあります。

DATE BACULA-FD JobId 9999: Error: bsock.c:427 Write error sending 46858 bytes to Storage daemon:SERVER:9103: ERR=Cannot allocate memory
DATE BACULA-FD JobId 9999: Fatal error: backup.c:1200 Network send error to SD. ERR=Cannot allocate memory
DATE BACULA-SD JobId 9999: Fatal error: append.c:223 Network error reading from FD. ERR=Broken pipe

baculaのバッグアップジョブを実行するたびに、エラーが出るタイミングは変化します(エラーがでるまでに書き込んだデータ量が、ころころ変わる)。

Cannot allocate memoryというエラーメッセージは、baculaの中で作った文字列ではなくて、strerror()で帰ってくるメッセージっぽい。

ということは、もしかすると、Bacula固有のエラーではなくて、FreeBSD一般の問題???と思いまして、ネット検索。

すると、こんな情報が見つかりました。

http://lists.freebsd.org/pipermail/freebsd-stable/2011-July/063228.html
http://lists.freebsd.org/pipermail/freebsd-emulation/2011-July/008962.html

どうやら、VirtualBoxが動いていると、ネットワーク関係の処理でCannot allocate memoryが出るらしい、みたいな話。

思い当たるところがあります。

bacula-fdでCannot allocate memoryが出るホストでは、VirtualBoxが動いています。そして、これまで仮想マシンの数が1個だったのを、最近、2~3個に増やしました。

ためしに、仮想マシンを1個だけにしてから、baculaのバックアップジョブを実行してみたら、正常終了しました。

ん~、VirtualBoxが原因?

netgraphがなんとやら、という話も出ていて、loader.confで、net.graph.maxdata=65536 とか設定をしてみたら直った、とかいう・・・

今はちょっと再起動できないサーバなので、それを試して確認することはできないのですが、一応、loader.confに書くだけ書いてみました。



 

 


cadaverで環境変数http_proxyで「http://USER:PASS@hogehoge」を使わせる

2014-11-15 23:59:59 | デジタル・インターネット

cadaverという、コマンドラインで動くWebDAVクライアントソフトがあって、たまに使っています。

cadaverは、一応、認証付きのHTTP proxyも通るのですが、毎回、「Authentication required for ほげほげ」と聞かれるのでうざったい。

どこかで、ユーザー名とパスワードを保存することはできないのだろうか?

ということでソースコードを眺めてみる。

ENABLE_NETRCというマクロがあって、もしかして、$HOME/.netrcを使ってくれるのかな???と思うところもあったのですが、結局よくわからず、環境変数http_proxyで「http://USER:PASS@hogehoge」を無理矢理使わせるように改造。

環境変数にパスワードを保存しておくって、いったい何を考えているんですかね、というセキュリティ面の問題はさておき・・・

たしか、supply_creds_proxy()のところだったかな。

--- cadaver.c.ORG    2008-10-29 18:35:33.000000000 +0900
+++ cadaver.c    2014-09-12 14:21:12.000000000 +0900
@@ -1156,7 +1156,26 @@
 {
     if (attempt > 1)
     return -1;
-
+    {
+    char* http_proxy = getenv("http_proxy");
+    if (http_proxy != NULL ) {
+        char* s0 = strstr( http_proxy, "http://");
+        if ( s0 != NULL ) {
+        char* s1 = s0 + 7;
+        char* s2 = strchr( s1, ':' );
+        if ( s2 != NULL ) {
+            char* s3 = strchr( s2, '@' );
+            if ( s3 != NULL ) {
+            *s2 = '\0';
+            *s3 = '\0';
+            ne_strnzcpy(username, s1, NE_ABUFSIZ);
+            ne_strnzcpy(password, s2+1, NE_ABUFSIZ);
+            return 0;
+            }
+        }
+        }
+    }
+    }
     return supply_creds(
     _("Authentication required for %s on proxy server `%s':\n"), realm,
     proxy_hostname, username, password);

うーん。gooブログって、ファイルのアップロード、できないのですか?

gooブログになって、今までできていたことができなくなった、というのがいくつかあって、すっげー不満がたまっています

 


CPUを交換してみる

2014-11-06 23:59:00 | デジタル・インターネット

壊れたパソコンに載ってたCPUは、Core 2 Duo E6600。購入は7年前でしたか…。

201411061

これってLGA775という古い規格で、今はもうほとんど使われなくなっちゃったもの。

で同じLGA775のPCが、うちにはもう1個ありました

HP ProLiant ML110 G5

201411062

これ、一番安い構成だったので、CPUがとってもしょぼいCeleron 440。

じゃあ、これをCore 2 Duoに交換しましょ!というわけです。

リサイクル!エコです

まあ当然ですが、普通に動きました。

ただ、メモリ。

もともと1GBのDIMMがあって、あまってた512MB DIMMもさして(ML115についてたやつ)、1.5GBで使ってました。

壊れたPCで、2GB DIMM 2枚があまるのでそれも刺しちゃえ!

1+0.5+2+2 = 5.5GBになる・・・と思ったら、ビープ音が鳴って起動しませんでした。

ML110 G5は最大8GBまでサポートしているようですが、どうも、4枚で刺すときは、2枚ずつ同じものをペアにしないとダメっぽいです。

というわけで、2+2=4GBにしました。

OSがFreeBSD 10 x86の32bit版なので、amd64 64bit版にしたいな…。

 


(Windows) ログオンすると、すぐにログオフしてしまう

2014-11-02 23:59:00 | デジタル・インターネット

故障したパソコンは、どうやらマザーボードの故障らしいので、ダメだこりゃ・・・ということで別のパソコンに置き換えることにしました。

古いケースに、別PCのパーツ一式組み込んで、OS(Windows)は故障したパソコンのHDDを使うと、再アクティベーションが要求されてしまうだろうから、そのPCのHDDをそのまま使う。

で、ファイルをコピーするのに、HDDを2台くっつけて、コピー。

必要なファイルのコピーが終わったので、不要なHDDを外して、再起動。

で、ログオンすると、すぐにログオフしてしまう

あれ?

もう一度。

ログオフしちゃう。

なんですかこれ。

うーん、なんか、こういう症状、昔見た記憶がある。

あーっ! 起動ディスクのドライブレターがCじゃない何か(たぶんD)に変わっちゃったんだ。

その2台のHDD、昔、コピーして使ったような? なんかWindows 2000/XPって、一度マウントしたディスクの情報を覚えていて、それに従ってドライブレターを決める、とか余計なことをしてくれるんでしたよね・・・

ネットワーク経由で、別PCからレジストリを書き換える、とかで直せたような気がするけど、うーん、うまくいかね。

しょうがないので、2台のHDDをつないでブート。

あー、こんなひどいことになってる。

20141102

本来Cドライブになるべきパーティションが、Dドライブになっちゃってる

(自分用メモ)

レジストリを書き換えて、修正しました。

201411022

あれ、XP?
うん・・・


パソコン故障 2014

2014-11-01 23:42:35 | デジタル・インターネット

実家のパソコン、壊れた

20141101

電源を入れると、しばらくして電源が勝手に切れて、また入って、切れて、・・・の繰り返し。

古くなったパソコンを実家送りにして使っていたので、そこそこ古いんだけど、「日々の雑用」をやらせていたので、故障したせいで、けっこう困っている。

電源ユニットの故障かと思って、電源を変えてみたけど、同じ症状。というわけで電源ではない。

マザーボードかなぁ。

CPU、初期のころのCore 2 Duoなんだけど、こいつがマザーボードを壊したのは、これで2枚目。

けっこう大きいヒートシンクがついてて、重さのためか、なんとなく基板がそってるような・・・


BASIC

2014-10-29 23:59:00 | デジタル・インターネット

なんとなく気になってしまったもの

魔法のプリンセス ミンキーモモ
第42話 「間違いだらけの大作戦」

20141029

BASICのプログラムですね…。ストーリーの流れからすれば、「画像はイメージです。」なのですが、プログラムの内容自体はデタラメということもなく、何かそれっぽい処理を行っている雰囲気です。

  • 注釈(REM)にて、(1982, 4, 14)という日付らしきもの
  • 16進数の表記方法が、「$12」のように「$」を使っている。「&H」ではない。SHARPのBASICっぽい
  • POKEで、アドレス$12、$13などに書き込む。当時のほとんどのパソコンはその辺りはROM領域だったので、これってクリーンコンピュータ(笑)なSHARP MZシリーズ?
  • RENUMBERと書かれているが、BASICの行番号をつけなおすプログラム? BASICのコードが格納されるメモリ領域を直接読み書きしているような感じもする
  • 32300行で、メモリから4文字取り出して、32210~32230行で比較している。メモリ中ではBASICのコードは、中間コードで格納されているのが普通なので、"GOTO","THEN","GOSU"(GOSUBの最初の4文字だろう)といった文字列が取り出せるとは思えないが…
  • アドレス K=$0246(よく読めない)から、元のBASICコードが格納されていて、アドレス J=$3C00へ、変換後のコードを書き込んでいる?
  • 32180行で、SPCという関数を使っている。スペース文字を指定した回数だけ作る?
  • 32350行で、POKE 6,K/256:POKE 7,K ・・・16bit値を上位バイト、下位バイトの順に格納。だとするとZ80じゃない?
  • 32070行でも、I=256*PEEK(K)+PEEK(K+1) ・・・これも上位、下位の順序。ひょっとして6809とか?

どうでもいいことなのに、なんか気になる~

あとから気がついたけど、6809などでは、ゼロページアドレッシングというのがあって、アドレス0000~00FFは特別扱いできるようになっていたんですよね。80系しか使ったことがないのでよく知らないですが。というわけで、勘で、FM-7/8あたりでしょうか?


Raspberry PiでFreeBSD 10.1

2014-10-24 23:59:00 | デジタル・インターネット

以前から、Raspberry PiでFreeBSDを動かせる、ということは知ってたのですが・・・

201410241

先日、FreeBSD 10.1-RC1のインストールファイルの置き場所を見たら、Raspberry Pi用のファイルも置いてあるじゃありませんか。

FreeBSD 10.1からは、ARMアーキテクチャのいろんなプラットフォーム用のインストールファイルも配布されるんですかね。

201410242

最初、2GBのSDカードを使ったときは、rootファイルシステムがマウントされない、とか、ディスクの内容がぶっこわれるとか、なんかおかしかったけど、8GBのSDHCカードを使ったら、ごく普通に動いてしまいました。

201410243

ふむ・・・どうしようか。

 


(FreeBSD) VLCで、曲が変わる度に、ボリュームが45%に戻る

2014-10-22 22:50:21 | デジタル・インターネット

先日、偶然、気がついたこと。

FreeBSD 10-RELEASE、GNOME2な環境で、VLCで音楽を再生してるときに、VLCのボリュームを変更しても、曲が変わると、ボリュームが勝手に45%に戻ってしまう、っていう謎の現象。

20141022

ネット検索してみたら、同じような症状を報告しているのを見つけました。

https://forums.freebsd.org/threads/solved-vlc-resets-audio-volume-on-start.43929/

回答が何のことか最初わからなかったのですが、あ、sysctlのことでした。

FreeBSD 10だと、こんな感じでいいみたいです。

% sudo sysctl hw.snd.vpc_autoreset=0
パスワード:
hw.snd.vpc_autoreset: 1 -> 0

これで45%に戻ることはなくなりました。

なのですが、さらに気がついたこと。

VLCでボリュームを70~100%くらいにすると、あきらかに音が割れてます。
聴いてて音がそれほど大きくなるわけではないのて、デジタル的なミキサー処理のところでsignedのオーバーフロー?みたいな予感。

結局、VLCは45%でいいや、ということになりました。マスターの側で調整します。


(FreeBSD) rdesktop 1.8.2だと、Windowsキーが無視されてしまう

2014-07-26 23:59:00 | デジタル・インターネット

最近になって、なんか変だな~と薄々気になっていたのが、

rdesktopを使ってWindowsをリモートデスクトップな環境で使っているとき、Windowsキーが使えなくなっていた、

ということ。Windowsキーのほかに、PrintScreenキーも使えないような気がする。

たしか以前は使えていたはずだと思うんだけど、自信がなかったので、portdowngradeして、rdesktop 1.8.2から、1.7.1に戻してみた。

ネット検索して見つけた、Keymillというツールを使って、キースキャンコードを調べてみた。

20140726

  • rdesktop 1.7.1だと、VK_LWINとか表示され、Windowsキーが使える。
  • rdesktop 1.8.1だと、何も表示されず、Windowsキーが無視される。MENUキーなら使えるんだけど…

もしかして、1.8.1から、Windowsキーを無効化する新機能が実装された、とかあるかもしれないと思いつつも、とりあえず1.7.1を使えばいいや、ということにしてしまいました。

「-Kオプション」とか、なんとなく気になるところはあるのですが…。


(FreeBSD) portsで、fetchがすべてNo address recordで失敗する

2014-06-19 22:57:54 | デジタル・インターネット

もう修正されてしまったのですが、今朝、なんだこりゃと思った障害。

portmasterを実行したら、fetchがすべてNo address recordと表示されてエラーになる。

portmasterが原因ではなくて、portsの問題らしい。

たとえば

root@somehost:/usr/ports/graphics/ImageMagick # make
===>  Found saved configuration for ImageMagick-6.8.9.3,1
===>   ImageMagick-6.8.9.3,1 depends on file: /usr/local/sbin/pkg - found
=> ImageMagick-6.8.9-3.tar.xz doesn't seem to exist in /usr/ports/distfiles/.
=> Attempting to fetch http://www.imagemagick.org/download/ImageMagick-6.8.9-3.tar.xz
fetch: http://www.imagemagick.org/download/ImageMagick-6.8.9-3.tar.xz: No address record
=> Attempting to fetch http://www.imagemagick.org/download/legacy/ImageMagick-6.8.9-3.tar.xz
fetch: http://www.imagemagick.org/download/legacy/ImageMagick-6.8.9-3.tar.xz: No address record
=> Attempting to fetch http://servingzone.com/mirrors/ImageMagick/ImageMagick-6.8.9-3.tar.xz
fetch: http://servingzone.com/mirrors/ImageMagick/ImageMagick-6.8.9-3.tar.xz: No address record
=> Attempting to fetch http://mirror.checkdomain.de/imagemagick/ImageMagick-6.8.9-3.tar.xz
fetch: http://mirror.checkdomain.de/imagemagick/ImageMagick-6.8.9-3.tar.xz: No address record
以下省略

fetchを実行するのは、
/usr/ports/Mk/bsd.port.mk
のなかにある
if ${SETENV} ${FETCH_ENV} ${FETCH_CMD} ${FETCH_BEFORE_ARGS} $${args} ${FETCH_AFTER_ARGS}; then \
と書いてあるところ。

いったいどんなコマンドが実行されているんだろう?と、ちょっと小細工して調べてみたら、こんな感じだった。

/usr/bin/env -i PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/root/bin SSL_NO_VERIFY_PEER=1 SSL_NO_VERIFY_HOSTNAME=1 /usr/bin/fetch -Fpr -S 7555684 ftp://ftp.kddlabs.co.jp/graphics/ImageMagick/ImageMagick-6.8.9-3.tar.xz
fetch: ftp://ftp.kddlabs.co.jp/graphics/ImageMagick/ImageMagick-6.8.9-3.tar.xz: No address record

fetchコマンドに指定しているオプションがおかしいのか?と思ったら、そうではなくて、先頭にある「/usr/bin/env -i」が原因だった。
「-i」オプションがあると、もともと設定している環境変数を引き継がなくなるとのこと。
つまり、環境変数http_proxyやftp_proxyなどが、fetchへ渡されなくなってしまう、ということだった。

あーあー、納得です。だからNo address recordなんですね。
直接インターネットに接続しておらず、proxyサーバが必須な環境(しかもDNSで名前解決もできない)の場合、proxyサーバを使わずに、自力でダウンロードしてしまうわけですか。

/usr/ports/Mk/bsd.commands.mk
というファイルで
SETENV?=          /usr/bin/env -i PATH="${PATH}"
と書いてあったのですが、それが間違い。
SETENV?=          /usr/bin/env
ですね・・・

http://svnweb.freebsd.org/ports/head/Mk/bsd.commands.mk?r1=358219&r2=358268

を見れば、何がどうなったのか、一目瞭然。5時間ほどたって、修正されていました

なぜこうなった!

20140619