2012年12月5日水曜日

Firefox 17.0.1

先週ぐらいからダウンロードできるようでしたが時間ができたので更新してみました。
またもや違いは全くわかりません(笑)

Vistaで使っていた15からのアップデートは11M程度でXPで使っていた16からのアップデートは27Mぐらいだったような?

このサイズの差はおそらくFunnelcakeの差だと思われますが詳細は不明。

2012年7月20日金曜日

Firefox 14.0.1

また上がってました。
アップデート後のページを見るとAndroid版への対応を行ったような感じですが。
PC不調により同系列機の古いPCを使ってFirefoxを一気に13に上げたら
Funnelcake Jul 2012
mozilla11 - 1.0
の表示が増えたのですけどよくわかりません。
デスクトップで13ぐらいから気になっていたフリーズに似た現象は14でも同様なようです。

2012年7月9日月曜日

マスクファイルの設定

撮影カメラの角度を変えればいいのだけど扇風機を使ってると常に動いてるのでとめたいと思っていたのですがようやく設定してみました。

motionでマスク画像を用意してマスクを掛けれることは知っていたのですが実際にやるまでが遅い遅い(笑)

そんなわけで早速現在の画像を取ってきてマスクを作ろうと思ってマスクファイルの形式を見てみると、「PGM」ファイルという物が必要らしい。

ファイル形式は知りませんが、PGM : portable gray map と呼ばれるらしく、motionサイトのドキュメントにもありました。

http://www.lavrsen.dk/foswiki/bin/view/Motion/MotionGuideAlphabeticalOptionReferenceManual#mask_file

Linuxではdjpegなるコマンドで変換もできるようで試しにUbuntuで
djpeg -?
と実行したらヘルプが表示されました。手軽なところでCygwinで実行してみると…インストールされているようで同じく動きました。(openwrtのコンパイルはできなかったのですが、色々入れておいたのでようやく役に立った感じです)

同じページにコマンドも表示されているので
djpeg -grayscale -pnm mask.jpg > mask.pgm
と実行して出来上がったファイルを適当なディレクトリにコピーして/etc/motion.confをviなどで
mask_file /home/motion/mask.pgm
と設定してopenwrt再起動。
これで扇風機を動かしても記録されません(笑)

2012年7月5日木曜日

XPのノートのスタンバイが不安定に

スタンバイからの復帰時にブルースクリーンが表示されるようになった。
原因はまだ特定できていないが気になるキーワードとして2つ
  • タッチパッドのマウスのドライバーのインストール
  • 先日AVGのメジャーバージョンのアップデート
マウスドライバも怪しいには怪しいが、もしかするとAVGなのかもしれないというのが今のところの感触。

AVGのアップデートを行ったらプログラムの更新があったので今後でなくなればうれしい。

2012年6月29日金曜日

編集時 カテゴリーを変更するとcategory_id.ini.phpがおかしくなる対処

ppBlog 1.8.8


色々とテストなどを行ってinclude_onceが問題なのかもとおもいつつ直接の原因は
utils_admin.phpの292行目あたりの
$CATEGORY_ID[$i] = "$cat|".implode(',', array_filter(explode(',', $ids)));
この赤字の$cat部分。
ここでカテゴリ名だけで書き換えて保存しちゃっているのでアウトでした。
$CATEGORY_ID[$i] = "$_cat|".implode(',', array_filter(explode(',', $ids)));
正しくは$_catで引っ張ってきている元の形で書き込めばいいのです。(直後のロジックでもそうなってる)
やってることはわかるのですが変数名をアンダースコアを多用して混乱を招きやすい変数名で子チョコちょやってるとよくある罠ですね(笑)

しかしinclude_onceの弊害がはっきり出ていないのでコードを修正したままにするかどうか悩みどころですが今回書き換えた部分は
utils_admin.php 277行目あたりのところと
 if($mode=='update' || is_numeric($ontime)){  # 編集後
  //////
  //include_once ($cat_id); // get::$CATEGORY_ID
  include($cat_id); // get::$CATEGORY_ID
  //////
  $index = get_article_index($id, $orgLINES);
  list(,$cat,) = explode('|', $orgLINES[$index], 3);
  if($cat != $category){ // カテゴリーの変更あり
   foreach ($CATEGORY_ID as $i => $catid){
    list($_cat, $ids) = explode('|', $catid);
    list($__cat,) = explode("\t", $_cat);
    if(strpos($catid, $org_id)){
     $ids = str_replace($org_id, '', $ids);
     //////
     //$CATEGORY_ID[$i] = "$cat|".implode(',', array_filter(explode(',', $ids)));
     $CATEGORY_ID[$i] = "$_cat|".implode(',', array_filter(explode(',', $ids)));
     //////
    }
    if($__cat == $category){
     $_ids = array_filter(explode(',', $ids)); array_push($_ids, $_id);
     $CATEGORY_ID[$i] = "$_cat|".implode(',', $_ids);
     }
同じくutils_admin.php最後のファンクション定義の949行あたり
 function make_category_id(){
 global $CATEGORY_LIST;
 $ini = OD.'category_id.ini.php';
 rewrite_ini($ini, '', '$CATEGORY_ID');
 $CATEGORY_ID = array();
 //////
 //include_once (OD.'category.ini.php');
 include(OD.'category.ini.php');
 //////
 foreach ($CATEGORY_LIST as $i => $line){
  list($_cat,) = explode('|', $line, 2);
  list($__cat, $catlink) = explode("\t", $_cat);
  $_articles = get_articles_by_category($__cat);
  $CATEGORY_ID[$i] = array();
  foreach ($_articles as $a){
   list($id,) = explode('|', $a, 2);
   $CATEGORY_ID[$i][] = $id;
  }
  $CATEGORY_ID[$i] = "$__cat\t$catlink".'|'.implode(",", $CATEGORY_ID[$i]);
 } #foreach
 rewrite_ini($ini, $CATEGORY_ID);
}
これでとりあえず記事更新時にカテゴリを変更しても対応できるようになりました。

残る部分としてはカテゴリ名を変更したときにcategory_id.ini.phpが更新されていないので内部的な不一致が起きているところでしょうか。ま、これも一旦category_id.ini.phpを削除して記事更新を行えば正しくなるので気になるまで放置しておきます。

カテゴリー(だらだらその2)

いろいろと試しているとどうもカテゴリーなどをいじった後は
  1. category_id.ini.phpの削除
  2. 記事更新
で、category_id.ini.phpの再作成を強制的に行えばなんとなく綺麗な状態になりそう。

ただし、サブカテゴリーがある状態でカテゴリーをクリックしたときのURLのパラメータの aim= が空っぽになっているので見てみると、category_id.ini.phpのカテゴリーにカテゴリーIDが空っぽのものができているようです。
この辺の動作がとてつもなく不安定に陥ってそうです。
これが仕様なのかどうなのかは若干不明。なのでちょっと確認をして見ました。

ppBlogの本家では静的リンクになっているので試しに静的リンクを有効にしてみると…webサーバーがだめなのか記事更新をしてもまったく動作がダメに(笑)
本家の状態を見る限り、カテゴリーにサブカテゴリーが含まれていてもカテゴリーをクリックすれば該当するカテゴリーの記事を表示するようになっているのでそのように動作するのが妥当かと思われます。

実際の仕様としては親カテゴリをクリックして表示される一覧はサブカテゴリーのものも含まれているのが仕様としては正しいような気がしますが。

さて、ではどうするべきか?

問題があるのはサブカテゴリーがあるカテゴリーがあった場合の挙動。

含まれているカテゴリーは
┬カテゴリー
│└サブカテゴリー
└その他
その他はあったほうがいいのかなと思って全部削除しましたが追加しておきました。
ゼロ件になるとアンカーが無効になってしまうので記事を追加し、サブカテゴリーにも含めておいて
テストを行ってみました。

category_id.ini.phpを削除し、記事を更新すると、カテゴリー、サブカテゴリーともにaimが指定された状態。
カテゴリー、サブカテゴリーの記事のどちらも更新するだけであればaimは変化なし。
(カテゴリー15件、サブカテゴリー1件、その他1件の状態で)カテゴリーの記事をサブカテゴリーに変更して更新するとカテゴリーのaimだけが消失。カウンタは正しい。
(カテゴリー14件、サブカテゴリー2件、その他1件の状態で)サブカテゴリーの記事をカテゴリーに変更して更新すると、カテゴリーとサブカテゴリーのaimが消失。カウンタは正しい。

ここでサブカテゴリーを0件にしないために再度category_id.ini.phpを削除し、記事を更新すると、カテゴリー、サブカテゴリーともにaimが指定された状態。

(カテゴリー15件、サブカテゴリー1件、その他1件の状態で)カテゴリーの記事をサブカテゴリーに変更して更新するとカテゴリーのaimだけが消失。カウンタは正しい。

再度category_id.ini.phpを削除し、記事を更新すると、カテゴリー、サブカテゴリーともにaimが指定された状態。

(カテゴリー14件、サブカテゴリー2件、その他1件の状態で)サブカテゴリーの記事をカテゴリーに変更して更新すると、サブカテゴリーのaimがカテゴリーのaimになっている。
(category_id.ini.phpはサブカテゴリー側のIDが消えている)

サブカテゴリー→カテゴリーへの変更の更新は見かけ上aimが上書きされているように見えるがあきらかに移動もとのカテゴリーIDが消失しているということなのでしょう。

明らかに記事更新時のカテゴリー移動がダメみたいですね。

カテゴリーの不具合(だらだら)

カテゴリーの表示がずっと変わらないので気になっていたのでちょっと様子を見てみました。
いままでカテゴリー操作で行ったことは、初期のカテゴリーを全削除。新規に一つカテゴリーを追加(この状態でエラーが出ていたかどうかは気にしていなかった)
そのまま使っていたのですけどね。
早速問題となるファイル名でgrepしてソースを眺める作業。
root@mzkw04nu:/home/htdocs/blog# grep "category_id.ini.php" *.php
cache.php:  include(OD.'category_id.ini.php');
utils_admin.php: $cat_id = OD.'category_id.ini.php';
utils_admin.php: if(!is_file($cat_id)) make_category_id(); // make category_id.ini.php
utils_admin.php: $ini = OD.'category_id.ini.php';
色々見ていくうちに「サブカテゴリー」の設定が無いからかも…という気がしたので試しに追加してみると…
Warning: include(owner/category_id.ini.php) [function.include]: failed to open stream: No such file or directory in /home/htdocs/blog/cache.php on line 139

Warning: include() [function.include]: Failed opening 'owner/category_id.ini.php' for inclusion (include_path='.:') in /home/htdocs/blog/cache.php on line 139

Warning: Invalid argument supplied for foreach() in /home/htdocs/blog/cache.php on line 141
設定画面でエラーが出るようになった(笑)

サブカテゴリーを削除するとエラーの表示はなくなったが、トップページの表示からカテゴリーが表示されなくなる状態に。

とても気になるのが utils_admin.php の function make_category_id() 中の include_one() のところ。
include_once 
実行中の環境に依存すると思うがinclure_oneは一度メモリーに取り込まれると2回目からは読み込まれないということなので、おそらくここが問題になっているのかな?という気がしたので試しに includeに変更。

サブカテゴリーを追加したり削除してもエラーは出なくなった。
トップページは依然としてカテゴリー表示が行われないので、記事を一つ編集画面を表示させて何も変更せずに更新してみると…
表示がまともになりました。

ここでinclude_oneに戻してから操作してみると問題はなさそうな挙動になるのはカテゴリーがまともになったからだと信じたい…
サブカテゴリーの表示がトップページのカテゴリーの枠に表示されないのが気になったので色々と更新したりサブカテゴリーを削除してみたり「その他」を追加してみたりしたところ、途中からカテゴリー名の右側の"[" "]"の中の数字が16から15に減っていることに気づいた。

category_id.ini.php の内容と記事一覧のURLのIDを見比べてみると一番上(最新のもの?)がcategory_id.ini.phpに含まれていないようだった。

思い切って category_id.ini.php を削除
カテゴリー名の変更が面で 更新ボタンを押すと…
Warning: include(owner/category_id.ini.php) [function.include]: failed to open stream: No such file or directory in /home/htdocs/blog/cache.php on line 139

Warning: include() [function.include]: Failed opening 'owner/category_id.ini.php' for inclusion (include_path='.:') in /home/htdocs/blog/cache.php on line 139

Warning: Invalid argument supplied for foreach() in /home/htdocs/blog/cache.php on line 141
エラー表示が(笑)

更新しても新たに category_id.ini.php は再作成されないようなので記事を一つ編集画面を表示して公開ボタンをおして更新してみると…

トップページのカテゴリーがまともになった雰囲気。

ここでちょっとテスト。

サブカテゴリーを一つ追加して記事のカテゴリーを移動したりしていると…
サブカテゴリーの表示が行われないので見かけ上記事の表示が減ったようにみえる。
記事のカテゴリをメインに戻すと元の数に戻る。
(サブカテゴリーが表示されていない状態がだめっぽい)

サブカテゴリーにしたまま、サブカテゴリーを削除すると、数字がおかしくなったまま。

先ほどの状態に戻りました。

挙動があやしいということはおそらくcategory_id.ini.phpを読み込んでいるところで作成後の再読み込みが行われていないのが問題なのだと思う。

動作としては再作成した直後に再読み込みする処理を入れるのが妥当なのかもしれない。が、、マルチタスクだとPHPのメモリ共有の状態にもよると思うが毎回読み込む必要がありそう。

おそらく作者が処理速度改善のためにinclude_oneを使用していると思うのでこの辺の処理を入れ替えるのは難しいところ。実際問題としては読み込んだファイルのタイムスタンプを保持して更新されていたら読み込む形が一番スマートだとは思う。

2012年6月22日金曜日

幾分まともに

ソースを書き換えて入れ替え終わっていたと思って写真をアップロード。
3分以上かかってようやく完了。

…おかしい…

ソースが変わってなかったですorz

寝ながら複数の環境をみつつやってるとこんなものですね。

気を取り直し書き換えて別の写真をアップしたところ25秒ほどで戻ってきました。
リサンプリングではないのでジャギーが目立ちますけどこれで十分かな?

サクッと戻ってくれば快適なんでしょうけど非力なルーターですしね(笑)

せっかくなのでどこかにオプション設定できればいいのでしょうけどアドイン形式で埋め込めればいいのかなぁ。

ソースをパラパラと見ているのですがうまい切り口が見えないのでとりあえずはここ(直接ソースを変更)まで。

2012年6月21日木曜日

ようやく発見

どうにもgrepで入力ミスしているのかうまく検索できないときがとても多いですが、ようやくたどり着きました。
root@mzkw04nu:/home/htdocs/blog# grep "create_thumbnail" *.php
mob.php:       create_thumbnail(IMG_DIR.$img_name, IMG_DIR.$img_name, $w, $h, $ratio0);
mob.php:       create_thumbnail(IMG_DIR.$img_name, $thumb2img=IMG_DIR.THUMB2.$img_name, $w, $h, $ratio);
upload.php:    create_thumbnail($attached_file, $_attached, $w, $h, $ratio, $quality);
upload.php:       create_thumbnail($_attached, $thumb2img=str_replace(IMG_DIR,IMG_DIR.THUMB2,$_attached), $real_w, $real_h, $ratio2, $quality);
upload.php:     if(!is_file($thumb)) create_thumbnail($_attached, $thumb, $real_w, $real_h, $ratio_s1, $quality);
utils_admin.php:function create_thumbnail($input, $output, $w='', $h='', $ratio='', $quality=75){ // Revised in v.1.8.6
utils_admin.php:    if(!is_file($thumb = IMG_DIR.THUMB1.$_img)) create_thumbnail($img, $thumb, $size[0], $size[1], $ratio1);
utils_admin.php:     create_thumbnail($img, $thumb, $size[0], $size[1], $ratio2);
utils_admin.php:     if(!is_file($thumb)) create_thumbnail($imgfile, $thumb, $size[0], $size[1], $ratio);
utils_admin.php内でImageCopyResampledを行っているのを。(とてもいまさら(笑))
 //@ImageCopyResampled($img_out, $img_in, 0, 0, 0, 0, $_w, $_h, $w, $h) or ImageCopyResized($img_out, $img_in, 0, 0, 0, 0, $_w, $_h, $w, $h);
  ImageCopyResized($img_out, $img_in, 0, 0, 0, 0, $_w, $_h, $w, $h);
コードを直接変更してResampleはコメントアウトさせて見ました。
時間があればもうちょっと何かやってあげようかとは思います。

2012年6月19日火曜日

Motion用のビュワーを作成中

Motionで監視カメラを動作させ続けていますが今のところ全く問題はありません。
ただ、OpenWrtの配布形態のバイナリではMPEG変換がどうも行われないようなので再構築する必要がありそうです。

ですがどうもよく動作を理解していないので今のところWEB/PHPでとりあえず対応しています。

2つの環境で動作させているのですが、ルータではやはり処理能力が不足気味で画像も320×240で動作させて2FPS程度が限界のようです。(保存先をメモリーにすれば幾分早くなるのかもしれませんが必要以上のコマが必要とも思わないのでこれでいいのかなと。)

またファイル数が千単位に膨れ上がるとターミナルやSAMBA接続で厳しくなっているので今のところ月別のディレクトリの中にさらに日ごとに分けて保存するようにしています。
部屋で監視させているとだいたいこれで毎日2000~4000枚のJpeg画像が生成されています。

保存形態は当初から大体このような形で大丈夫かな?と言った程度です。(MPEG運用になればまた違った形になるかもしれませんが。

ざっとした雛形は1日で出来上がったのですが細かいところでいろいろと欲が出てきていていまのところサムネイル用の画像を作成させるかどうかで仕様を悩んでいるところです。

ppBlogで実感していたのですが、どうもルータに画像処理を行わせるとどうしても処理が重すぎてどうにもならない様でどうしたものかと。
PHPで画像ファイルを扱うのは非常に簡素化されているので工夫するにしても差ほど変わらないだろうというのが今のところの感触です。
たった320×240の画像から160×120のサムネイル画像(原画自体がサムネイルじゃないかと思いますけど(笑))を生成するのに処理してるのがわかるぐらい待たされました。
画像のリサイズを行う方法は2つあり、一つは全ピクセル情報をつかってのリサンプリングしリサイズを行う方法。もう一つは単純にピクセルを間引いてリサイズを行う方法。
WindowsXPのころからこの様な処理はどちらにしてもほとんどがハードウェアなどで処理されたりCPU自体の処理能力の向上によって体感速度はあまりかわらないものなのですが、ルータでは明らかに前者よりも単純に間引いてリサイズするほうが処理時間が短く済みます。
出来上がった画像は当然不自然にはなりますが処理時間とのトレードオフと考えれば十分考える余地があります。(このへんの処理もppBlogで手を加えると処理時間が短くサクサク動くようになるのかも?とかちょっと目論んでいますがどうなることやら(笑))

2012年6月14日木曜日

ようやくマウスパッドのドライバを更新

先日のcal_days_in_montの対処として適当なコードで対処しました。(本来はきちんと対処する必要があるのですが目の前の対処だけで済ませました。

その後ふとしたきっかけでノートのマウスパッドのドライバがあるのではないかと感じたのでまた少し検索してみました。

ALPS DRIVERで検索してみるといくつか気になるページがありましたがそれらしいページがAcerのページにありました。

Acer TREIBER

Acer Aspire 5320 Notebook (TouchPad ALPS) Treiber
Version: 7.0.1101.14
Typ: Notebooktreiber
Datum: 2009-06-11 14:40:01
Hersteller Home/Support: Acer
http://www.treiberupdate.de/treiber-download/download-176893-treiber-Acer-Aspire5320Notebook(TouchPadALPS).html

ALPSのデバイスは基本的に実際に販売している側で公開されているのみでALPS側からはリリースされていないので面倒なデバイスですね。

現状一番困っているのはFirefoxが旧バージョンでのいい加減なドライバのサポートを行わない方針になってマウスパッド側でのスクロールが不自由になったのでずいぶん前から探していました。

以前に探したときは旧バージョンの表記ミスや広告表示のためのダミーページばかりでしたがようやくまともそうなページを開くことができました。

WindowsXP 32bit用のドライバもあったのでウィルスチェックを行ったあと入れてみました。

PCの再起動を行うとマウスパットが色々なマウスメッセージをハンドリングするためのダミーウィンドウ用のアプリやベースとなる設定プログラムが起動された。
zip圧縮形式のなかに未圧縮の実行ファイルが格納されていたためか再起動時に何度か起動確認のためのメッセージが表示された.

早速試してみるとようやくまともにFirefoxが動作するようになった。

2012年6月2日土曜日

cal_days_in_month はどこで定義されているのだろう?

<?php
$num 
cal_days_in_month(CAL_GREGORIAN82003); // 31echo "2003 年 8 月の日数は $num 日です";?>
 
Fatal error: Call to undefined function cal_days_in_month() in /home/htdocs/test_cal.php on line 2
 ちょっと使いたかったんですが、見当たらないようです。
どこで定義されているんでしょうかねぇ? 

2012年5月31日木曜日

ppBlog: 写真のアップロードから動かなくなる

写真のアップロードがとても重たい。
そもそもルータに対してやらせる処理ではないということは明らかですけど(笑)
最初は時間がかかりすぎて処理が止まって編集画面がうんともすんとも言わなくなり勘でタイムアウトかな?ということで/etc/php.ini のmax_execution_timeoutの設定値を30→300に変更しました。
アップロードは行われるようになったのですが、やはり時間が…。
luciの表示が行われなくなるのでターミナルからtopを叩いて直接見てみると。
Mem: 28296K used, 1132K free, 0K shrd, 128K buff, 2944K cached
CPU:  99% usr   0% sys   0% nic   0% idle   0% io   0% irq   0% sirq
Load average: 1.10 0.69 0.45 2/49 8774
  PID  PPID USER     STAT   VSZ %MEM %CPU COMMAND
 8774  1435 root     R    40808 139%  97% /usr/bin/php-cgi /www/blog/upload.php
 1443  1442 root     S     5096  17%   3% motion
 4017  2378 root     R     1380   5%   0% top
 1438     1 root     R     5096  17%   0% motion
 1444  1442 root     S     5096  17%   0% motion
 1442  1438 root     S     5096  17%   0% motion
 1476     1 root     S N   2632   9%   0% smbd -D
 1478     1 root     S     2132   7%   0% nmbd -D
 1487     1 nobody   S     1960   7%   0% proftpd: (accepting connections)
 1006     1 root     S     1516   5%   0% wpa_supplicant -B -P /var/run/wifi-wl
  387     1 root     S     1500   5%   0% syslogd -C128
 2378  2377 root     S     1392   5%   0% -ash
 1279     1 root     S     1388   5%   0% udhcpc -t 0 -i wlan0 -b -p /var/run/d
    1     0 root     S     1384   5%   0% init
  367     1 root     S     1384   5%   0% init
  529     1 root     S     1380   5%   0% udhcpc -t 0 -i eth1 -b -p /var/run/dh
 1498     1 root     S     1380   5%   0% watchdog -t 5 /dev/watchdog
  369   366 root     S     1376   5%   0% logger -s -p 6 -t sysinit
  366     1 root     S     1376   5%   0% /bin/sh /etc/init.d/rcS S boot
  389     1 root     S     1372   5%   0% klogd
こんな感じでメモリーも完全にスワップアウトしてシステムがロックしてる感じになってしまいます。
アップロードのオプションでリサイズ指定があるのがあるのに指定しても使用量は小さくなりません。
ソースを見ていませんが、一度jpegをメモリー展開してから処理に入っている感じがします。
とりあえず画像の扱い方を内部展開しないでファイルとしてそのまま処理できるように改良するのがよいのかも。

参考
PHPのタイムアウト対策 http://kikky.net/pc/php_timeout.html

2012年5月28日月曜日

D850GB ビープ音が鳴ってOSが起動しなくなった

ちょっとコンセントを抜いてしばらく経ってから差し込んでみると、本体からビープ音が鳴り続けて画面はBIOSの初期画面(この頃のものは起動時の画面が段々派手になっていった)が表示されたままHDDからの読み込みが行われなくなった。

最初はキーボードがおかしいだけかと思って抜いてみても効果なし。
あとはMBのバックアップバッテリが怪しい気がします。

インテルのページでは次のように書かれていました。
インテル® デスクトップ・ボード D850GB: ビープ音が鳴り続け、システムが起動しない (映像出力も行なわれない)
ビープ音が鳴り続け、システムが起動しない (映像出力も行なわれない) 場合、ビープ音が鳴る回数を確認することで、POST (Power On Self Test) 時に発生した問題が判ります。
ビープ音で表現されるエラー・コードは、下記のリストを参照してください。
なお、いくつかのエラー・コードは RAM に関連しています。
RAM に関するエラーが発生している場合、まずシステム・メモリと必要な全ての CRIMM* (Continuity RIMM*) モジュールが正しく装着されているか、また RIMM モジュールが インテル® デスクトップ・ボード D850GB のテスト済みメモリ・リストに挙げられているかを確認してください。

ビープ音によるエラー・コード

  1. リフレッシュに失敗しました
  2. パリティがリセットできません
  3. 64KB のメモリ領域を確保できません
  4. システム・タイマ・エラー
  5. 未使用
  6. 8042
  7. 割り込みエラー
  8. メモリのリード / ライト エラー
  9. 未使用
  10. レジスタ・テスト・エラー
  11. BIOS データが不正 (例: POST 用のモジュールが見つからない)
http://www.intel.com/jp/support/motherboards/desktop/d850gb/beep.htm
と、言うことらしいですがちょっとよくわかりません。

全般的なインテルのマザーボードではこのようになっているらしいです。
デスクトップ・ボード
BIOS のビープ音コード

このページは、システム起動時に ビープ音が鳴り、正常に起動完了しない場合のトラブルシューティングに使用してください。
現行デスクトップ・ボードのビープ音
ビープ音 / 点滅の状態 シーケンス / パターン 意味 システムが起動 / 終了できない場合のトラブルシューティング手順
ビープ音 1 回 長く継続するビープ音 外付けグラフィックス・カードに補助電源が接続されていない場合がある 取り付けられている外付けグラフィックス・カードの説明書で、補助電源の接続に関する情報を参照してください。
ビープ音 2 回 ビープ音、ビープ音 [中断]、ビープ音、ビープ音

その後に BIOS の起動が継続します。
ビデオが検出されません
  • アドイン・グラフィックス・カードを使用している場合、そのカードを差し直してください。
  • 互換性のあるプロセッサーが取り付けられていることを確認してください。
関連トピック:
起動中ビープ音が 2 回鳴り画面が表示されない
インテル® プロセッサーおよびボードの互換性ツール
ビープ音 3 回 ビープ音、ビープ音、ビープ音 [中断]

このパターンのビープ音は、システムをオフにするまで続きます。
メモリーエラー
  • メモリーを挿し直してください。
  • メモリーとソケットのコンタクト部分に汚れやごみがないか確認してください。
  • 複数のメモリーを取り付けている場合、一度取り外して確認してください。(システムによってはバンク 0 にメモリー・モジュールを取り付けなければならない可能性があります。)
  • RAM を使用している場合には、同じメーカーの同じ部品番号、転送速度の製品である事を確認してください。
  • 他の正常に動作しているシステムに、メモリーを使用して正常に動作するか確認してください。
高 / 低のビープ音 ビープ音のパターン:
高、低、高、低、高、低、高、低

高低それぞれのビープ音に対応してフロントパネル LED が合計 16 回点滅します。
CPU 温度エラー
  • プロセッサーのヒートシンク / ファンが正常に取り付けられていることを確認してください。
  • サーマル・インターフェイス・マテリアルが十分均一に塗布されていることを確認してください。
過去のデスクトップ・ボードのビープ音
ビープ音 / 点滅の状態 意味
長いビープ音 1 回、短いビープ音 2 回 ビデオ構成エラー (ビデオカードの故障またはビデオが付けられていない) または外付け ROM モジュールのチェックサムが正常に 0 にならない
1 更新エラー
2 パリティーがリセットできない
3 先頭 64K のメモリーエラー
4 タイマーが動作していない
5 プロセッサー・エラー (予約、未使用)
6 8042 GateA20 をトグルできない (メモリーエラーまたはメモリーがない)
7 例外割り込みエラー
8 ディスプレイ・メモリー R/W エラー
9 (予約、未使用)
10 CMOS シャットダウン登録テストエラー
11 BIOS 無効 (POST モジュールが見つからないなど)
http://www.intel.com/jp/support/motherboards/desktop/sb/cs-010249.htm?wapkw=%28%E3%83%93%E3%83%BC%E3%83%97%E9%9F%B3%29


2012年5月24日木曜日

そうかmountという手があったのか

今までも何度も困ったことが多かったのでproftpdならできるだろうと思ったらできませんでした。

ほんとに色々調べたのですが解決策が一向にうまく行かなく途方にくれていましたがようやく解決できそうです。
一体何が?という話ですが、具体的に
/
+--home/
|  +--siriuth/
|     +--dev/
|        +--openwrt/
|           +--backfire_10.03.1
+--srv/
   +--ftp/
      +--(ここにbackfire_10.03.1の内容を見せたい)
と、たったこれだけなのですが、シンボリックリンクを作成してもアクセスできないとか。
proftpdに接続後、chrootされてftpがrootとなっているのでそれより上位のディレクトリにはアクセスできない設定になっているので、当然といえば当然なのですができれば公開してほかのPCからいつでも参照できるようにしておきたいという欲求があります。

現状では単純にファイルコピーなどで適当に回避したりしていますがやはりスマートな対応じゃありません。

chrootで内容を見せたい階層群に設定すればいいのですが、複数に分散されたり開発環境と公開環境でディレクトリ構成が異なる場合などの対応がとれないわけで、ほんとに何とかならないかと感じていました。

いままでもwebサーバーでこのようなジレンマが多かったのですが小手先で切り抜けてたり割り切ってしまったりで逃げていましたが今回こそはと粘りに粘り調べた結果
「mount」すればいいんだよ と。

 なるほど!という感じでその言葉でストンと解決できました。
予め内容を見せたい部分にフォルダを作成(今回は/srv/ftp/backfire/10.03.1を作成)して
sudo mount -B /home/siriuth/dev/openwrt/backfire_10.03.1 /srv/ftp/backfire/10.03.1
再起動後にもmountさせるためには多分fstabとかに設定しなければならないとは思いますが、大筋でこれで完了です。

VMが悪いのかUbuntuが悪いのかそれともPC?

日本語入力へ切り替えるときにどうも調子が悪い。
顕著に現れるのがやはりブラウザで、書き込むときに切り替えが頻繁だからですが。

実際には他のタイミングでも多発していて最初は半角/全角キーだけでは切り替わらないのかと思ってALT+半角/全角にしても状況は変らず。

Ubuntuのデフォルトの画面だと右上のほうにキーボートのアイコンみないな表示をクリックすると入力切替や設定ができるので見てみると切り替えにCTRL+SPACEキーというのもあるらしい。
で、CTRL+SPACEで切り替えてみても状況は変わらず。

さらには切り替えた直後に入力して確定させてもそのまま消えてしまうとか…。

入力で消えてしまうのは切り替えた直後は少し間を空けると正しく入力ができるようですが、入力の切り替えはどうにもこうにも回避策が無くて困っています。

気づくと入力切替がちらついて何度も切り替えてる状態に陥っている場合もある様です。

現状ではVMが悪さをしているとしか思えないのですが何か改善策は無いのだろうか?

2012年5月23日水曜日

proftpd

vsftpdをアンインストールできたと思うので適当に
sudo apt-get install proftpd
とかやってみました。
パッケージの設定                                                               
                                                                               
                                                                               
 ┌─────────────────────────┤ ProFTPD configuration ├─────────────────────────┐ 
 │ ProFTPD は、inetd 経由のサービスとして実行することもできますし、 スタン   │ 
 │ ドアローンのサーバとしても実行できます。どちらにもそれぞれ利点があります  │ 
 │ 。1日に数回の ftp アクセスしかない場合は、資源を節約するために ProFTPD    │ 
 │ を inetd から起動するのが良いかも知れません。                             │ 
 │                                                                           │ 
 │ 一方、頻繁なアクセスがある場合は、接続ごとに新規プロセスが生成されるのを  │ 
 │ 避けるため、ProFTPD をスタンドアロンサーバとして動作させるべきです。      │ 
 │                                                                           │ 
 │ proftpd の起動方法:                                                       │ 
 │                                                                           │ 
 │                              inetd 経由                                   │ 
 │                              スタンドアロン                               │ 
 │                                                                           │ 
 │                                                                           │ 
 │                                  <了解>                                   │ 
 │                                                                           │ 
 └───────────────────────────────────────────────────────────────────────────┘ 
                                                                               
                                                                               
                                                                               
こんな画面が表示されopenwrtで敬遠されているようなスーパーサーバーの利用を選択できるようです。

root@ubntu-VirtualBox:/# sudo apt-get install proftpd
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています               
状態情報を読み取っています... 完了
注意、'proftpd' の代わりに 'proftpd-basic' を選択しています
提案パッケージ:
  proftpd-doc proftpd-mod-mysql proftpd-mod-pgsql proftpd-mod-ldap
  proftpd-mod-odbc proftpd-mod-sqlite openbsd-inetd inet-superserver
以下のパッケージが新たにインストールされます:
  proftpd-basic
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 439 個。
2,108 kB のアーカイブを取得する必要があります。
この操作後に追加で 4,391 kB のディスク容量が消費されます。
取得:1 http://jp.archive.ubuntu.com/ubuntu/ oneiric/universe proftpd-basic i386 1.3.4~rc2-4 [2,108 kB]
2,108 kB を 4秒 で取得しました (437 kB/s) 
パッケージを事前設定しています ...
未選択パッケージ proftpd-basic を選択しています。
(データベースを読み込んでいます ... 現在 132678 個のファイルとディレクトリがインストールされています。)
(.../proftpd-basic_1.3.4~rc2-4_i386.deb から) proftpd-basic を展開しています...
ureadahead のトリガを処理しています ...
man-db のトリガを処理しています ...
proftpd-basic (1.3.4~rc2-4) を設定しています ...
警告: 指定されたホームディレクトリ /var/run/proftpd にアクセスできません。:そのようなファイルやディレクトリはありません
システムユーザ `proftpd' (UID 114) を追加しています...
新しいユーザ `proftpd' (UID 114) をグループ `nogroup' に追加しています...
ホームディレクトリ `/var/run/proftpd' は作成しませんでした.
システムユーザ `ftp' (UID 115) を追加しています...
新しいユーザ `ftp' (UID 115) をグループ `nogroup' に追加しています...
ホームディレクトリ `/srv/ftp' を作成しています...
`/usr/share/proftpd/templates/welcome.msg' -> `/srv/ftp/welcome.msg.proftpd-new'
ProFTPD warning: cannot start neither in standalone nor in inetd/xinetd mode. Check your configuration.
root@ubntu-VirtualBox:/# 
 /etc/proftpd/proftpd.confの Anonymousのコメント部を解除。
スーパーサーバーのはずなので…
外部から接続してもつながりません(笑)

なんのせっていがひつようだったっけかなと。

 /etcを見たところinetdやxinetdの姿が見えないのでxinetdを入れてみました。
 root@ubntu-VirtualBox:/# sudo apt-get install xinetd
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています              
状態情報を読み取っています... 完了
以下のパッケージが新たにインストールされます:
  xinetd
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 439 個。
121 kB のアーカイブを取得する必要があります。
この操作後に追加で 397 kB のディスク容量が消費されます。
取得:1 http://jp.archive.ubuntu.com/ubuntu/ oneiric/main xinetd i386 1:2.3.14-7ubuntu4 [121 kB]
121 kB を 0秒 で取得しました (219 kB/s)
未選択パッケージ xinetd を選択しています。
(データベースを読み込んでいます ... 現在 132772 個のファイルとディレクトリがインストールされています。)
(.../xinetd_1%3a2.3.14-7ubuntu4_i386.deb から) xinetd を展開しています...
ureadahead のトリガを処理しています ...
man-db のトリガを処理しています ...
xinetd (1:2.3.14-7ubuntu4) を設定しています ...
xinetd start/running, process 1747
 たしかサービスごとに設定するはず。検索してみました(笑)
 http://www.turbolinux.com/support/document/knowledge/466.html
多分、/etc/xinetd.d/ftpファイルを作成して再起動すればいけるはず?
とりあえずとりあえず接続することが出きるようになりました。

パッケージの削除

先日VMでコンパイルしたものを外部から参照させて実機にインストールしようとしていたのですが、vsftpdでは簡単に内部の特定のディレクトリを簡単に公開できないようなのでアンインストールしようかと思ったのですが、どうすればよいのやら(笑)

「Ubuntu パッケージ アンインストール」 で検索してみました。

検索した結果このページで何となく書いてあったので早速実行。
root@ubntu-VirtualBox:/srv/ftp/openwrt# sudo apt-get remove vsftpd
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています               
状態情報を読み取っています... 完了
以下のパッケージは「削除」されます:
  vsftpd
アップグレード: 0 個、新規インストール: 0 個、削除: 1 個、保留: 439 個。
この操作後に 467 kB のディスク容量が解放されます。
続行しますか [Y/n]? y
(データベースを読み込んでいます ... 現在 132724 個のファイルとディレクトリがインストールされています。)
vsftpd を削除しています ...
vsftpd stop/waiting
ureadahead のトリガを処理しています ...
ureadahead will be reprofiled on next reboot
man-db のトリガを処理しています ...
これでうまくアンインストールできたのでしょうか?

2012年5月22日火曜日

uhttpd option index_pageの複数のファイル名への対応

最初は/etc/config/uhttpdの設定ファイルを変更してrestartさせたり、/etc/init.d/uhttpdの起動スクリプトを変更してみたり右往左往していましたが、根本的な原因がわかってからコンパイルができるようになるまでにかなりの時間を要しましたが、実際に修正して対応するまでには約1日程度。
動作確認できるようになるまでに数時間という感じで手間はかかりましたがようやく満足できる内容になりました。

そもそもwebサーバーのインデックスページの指定が内部だと4つ持っているのに指定は1つとかかなり作りはマニアックな雰囲気なサーバーですね(笑)

修正方針としては
・暫定的なテストプログラムでc言語の動作確認。
・実際に作ったコードを組み込む作業。
・コンパイル/テスト
の3段階。

意外とネックなのが最後の段階で、現状VMからどうやってファイルを転送すればよいかということ。

最初は単純にVM側でftpサーバーなりwebサーバーを動かせばいいかなとおもったのですが、VirtualBoxでこれを行おうとするとそれなりに面倒なことになってそうでした。
ifconfigで見てみるとIPアドレスが10. で始まっているという。
びっくりしたのですが、どうやらViurtualBoxがルータとなってVMにはその内部LANで動作するという形になっているようです。いくつか設定方法があるのですがよくわからず。
ブリッジとかならうまく表に出てくるのかな?(→普通のPCと同じようにIPアドレスを取得して振舞うようになりました(笑))

コンパイル/テストは実際に動作させてるのですが。最初は出来上がった実行ファイルだけ入れればいいかなと思ってたんですが、実行ファイルがどこに作成されるのかがわからないという(笑)

結果 make で全部をコンパイルして
siriuth@ubntu-VirtualBox:~/dev/openwrt/backfire_10.03.1$ make
 make[1] world
 make[2] target/compile
 make[3] -C target/linux compile
 make[2] package/cleanup
 make[2] package/compile
 make[3] -C package/iproute2 compile
 make[3] -C package/6in4 compile
 make[3] -C package/6to4 compile
 make[3] -C package/wireless-tools compile
 make[3] -C package/acx compile
 make[3] -C package/arptables compile
 make[3] -C package/opkg host-compile
 make[3] -C package/base-files compile
 make[3] -C package/hotplug2 compile
 make[3] -C package/block-mount compile
 make[3] -C package/block-extroot compile
 make[3] -C package/linux-atm compile
 make[3] -C package/br2684ctl compile
 make[3] -C package/bridge-utils compile
 make[3] -C package/busybox compile
 make[3] -C package/button-hotplug compile
 make[3] -C package/libpcap compile
 make[3] -C package/ppp compile
 make[3] -C package/comgt compile
 make[3] -C package/compcache compile
 make[3] -C package/libnl-tiny compile
 make[3] -C package/iw compile
 make[3] -C package/mac80211 compile
 make[3] -C package/crda compile
 make[3] -C package/libtool compile
 make[3] -C package/cyassl compile
 make[3] -C package/dnsmasq compile
 make[3] -C package/dropbear compile
 make[3] -C package/e2fsprogs compile
 make[3] -C package/ead compile
 make[3] -C package/ebtables compile
 make[3] -C package/fconfig compile
 make[3] -C package/iptables compile
 make[3] -C package/firewall compile
 make[3] -C package/fuse compile
 make[3] -C package/ncurses compile
 make[3] -C package/libreadline compile
 make[3] -C package/gdb compile
 make[3] -C package/gpioctl compile
 make[3] -C package/hostap-driver compile
 make[3] -C package/hostap-utils compile
 make[3] -C package/libipfix compile
 make[3] -C package/wprobe compile
 make[3] -C package/madwifi compile
 make[3] -C package/hostapd compile
 make[3] -C package/hostapd compile
 make[3] -C package/hostapd compile
 make[3] -C package/hostapd compile
 make[3] -C package/hostapd compile
 make[3] -C package/hostapd compile
 make[3] -C package/i2c-gpio-custom compile
 make[3] -C package/ifenslave compile
 make[3] -C package/ipset compile
 make[3] -C package/lua compile
 make[3] -C package/iwinfo compile
 make[3] -C package/kernel compile
 make[3] -C package/zlib compile
 make[3] -C package/kexec-tools compile
 make[3] -C package/libjson-c compile
 make[3] -C package/libnl compile
 make[3] -C package/libubox compile
 make[3] -C package/mmc_over_gpio compile
 make[3] -C package/uci compile
 make[3] -C package/mountd compile
 make[3] -C package/mtd compile
 make[3] -C package/nvram compile
 make[3] -C package/ocf-crypto-headers compile
 make[3] -C package/openssl compile
 make[3] -C package/opkg compile
 make[3] -C package/resolveip compile
 make[3] -C package/pptp compile
 make[3] -C package/px5g compile
 make[3] -C package/qos-scripts compile
 make[3] -C package/relayd compile
 make[3] -C package/robocfg compile
 make[3] -C package/siit compile
 make[3] -C package/spi-ks8995 compile
 make[3] -C package/spidev_test compile
 make[3] -C package/swconfig compile
 make[3] -C package/uboot-envtools compile
 make[3] -C package/udev compile
 make[3] -C package/udevtrigger compile
 make[3] -C package/uhttpd compile
 make[3] -C package/util-linux-ng compile
 make[3] -C package/w1-gpio-custom compile
 make[2] package/install
 make[3] -C package/base-files install
 make[3] -C package/busybox install
 make[3] -C package/button-hotplug install
 make[3] -C package/crda install
 make[3] -C package/dnsmasq install
 make[3] -C package/dropbear install
 make[3] -C package/firewall install
 make[3] -C package/hostapd install
 make[3] -C package/hostapd install
 make[3] -C package/hostapd install
 make[3] -C package/hostapd install
 make[3] -C package/hostapd install
 make[3] -C package/hostapd install
 make[3] -C package/hotplug2 install
 make[3] -C package/iptables install
 make[3] -C package/iw install
 make[3] -C package/kernel install
 make[3] -C package/libnl-tiny install
 make[3] -C package/mac80211 install
 make[3] -C package/mtd install
 make[3] -C package/opkg install
 make[3] -C package/ppp install
 make[3] -C package/swconfig install
 make[3] -C package/uci install
 make[3] -C package/udevtrigger install
 make[3] -C package/wireless-tools install
 make[2] package/rootfs-prepare
 make[3] package/preconfig
 make[2] target/install
 make[3] -C target/linux install
 make[3] -C target/sdk install
 make[3] -C target/imagebuilder install
 make[3] -C target/toolchain install
 make[2] package/index
出来上がった 最低限のファイルをftpサーバーに入れて(これも即席でfilezillaでftpサーバーを動かして(笑))/etc/opkg.confの設定を変えてopkg update。そこからopkg install uhttpd --force-reinstallで強制的にアップデートをかけてから/etc/init.d/uhttpd restartで再起動とかやってみました。(opkgのコマンドラインヘルプを見ると-o とか --offile-root で指定すればパッケージファイルから直接インストールもできそうですが、よくわからない…)


2012年5月21日月曜日

strncatを試してみました。

一般的な話は知らないのですが早速試してみました。
siriuth@ubntu-VirtualBox:~/dev/test$ cat strncat_test.c
#include    <stdio.h>
#include    <string.h>
void main(void){
    char    s1[256], s2[256];

    strcpy(s1, "1234567890");
    strcpy(s2, "abcdefghijklmnopqrstuvwxyz");

    printf("s1: %s \n", s1);
    printf("s2: %s \n", s2);
    strncat(s1, s2, 10);

    printf("after strncat s1: %s \n", s1);
}
 コンパイルも細かい点は完全に忘れてるので
gcc strncat_test.c
とだけ行ったところ a.out という実行ファイルが作られたので
./a.out
で実行(笑)
siriuth@ubntu-VirtualBox:~/dev/test$ ./a.out
s1: 1234567890
s2: abcdefghijklmnopqrstuvwxyz
after strncat s1: 1234567890abcdefghij
siriuth@ubntu-VirtualBox:~/dev/test$ 
となりました。
やはり第三引数の長さは第二引数の文字数の指定ですね。

uhttp…だいじょうぶなのだろうか(笑)

strncat

http://www9.plala.or.jp/sgwr-t/lib/strncat.html

ライブラリ関数の細かいところで何があるのか忘れてるのでリファレンス的な何かが無いかと検索したところなにやらstrncatの使い方が気になりました。

strncat(buffer, index_file, sizeof(buffer));

となっている部分。
これってbufferのサイズを超えてセットされませんかねぇ…
検索して引っかかったページの仕様とgccのライブラリの仕様が違うのかな?

どんな解釈が一般的だったかとかもあやしいのですけど。

delphiの解説で引っかかったページでは
#include <stdio.h>
#include <string.h>

void main(void)
{
 char *buf1="Borland";
 char buf2[]=" Delphi";
 
 strncat(buf1,buf2,strlen(buf2));
 printf("連結後:%s\n",buf1);
 getchar();

}
とかサンプルコードが載ってますけど、これこんなことしちゃいかんような(笑)
思いっきりリテラル領域を壊してる気がしますけどねw

いや…やりたいことは違うことなんですが。

vi

テキスト編集をしようとしたら [i] キーで入力してカーソルキーを押したら動作が変態的なことに…
AとかDとか表示されて改行されたり(笑)

さっそく「ubuntu vi コマンド」とかで検索してみると…
Ubuntu日本語フォーラム

$ sudo apt-get install vim
で幸せになれるとかで早速入れてみました。

vimとviって別物なんですね。
siriuth@ubntu-VirtualBox:~/dev/openwrt/backfire_10.03.1/package/uhttpd/src$ sudo apt-get install vim
[sudo] password for siriuth:
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています               
状態情報を読み取っています... 完了
以下の特別パッケージがインストールされます:
  vim-common vim-runtime vim-tiny
提案パッケージ:
  ctags vim-doc vim-scripts indent
以下のパッケージが新たにインストールされます:
  vim vim-runtime
以下のパッケージはアップグレードされます:
  vim-common vim-tiny
アップグレード: 2 個、新規インストール: 2 個、削除: 0 個、保留: 439 個。
7,371 kB のアーカイブを取得する必要があります。
この操作後に追加で 28.6 MB のディスク容量が消費されます。
続行しますか [Y/n]? y
取得:1 http://jp.archive.ubuntu.com/ubuntu/ oneiric-updates/main vim-tiny i386 2:7.3.154+hg~74503f6ee649-2ubuntu3.1 [373 kB]
取得:2 http://jp.archive.ubuntu.com/ubuntu/ oneiric-updates/main vim-common i386 2:7.3.154+hg~74503f6ee649-2ubuntu3.1 [86.5 kB]
取得:3 http://jp.archive.ubuntu.com/ubuntu/ oneiric-updates/main vim-runtime all 2:7.3.154+hg~74503f6ee649-2ubuntu3.1 [5,944 kB]
取得:4 http://jp.archive.ubuntu.com/ubuntu/ oneiric-updates/main vim i386 2:7.3.154+hg~74503f6ee649-2ubuntu3.1 [967 kB]
7,371 kB を 14秒 で取得しました (510 kB/s)                                                                     
(データベースを読み込んでいます ... 現在 130514 個のファイルとディレクトリがインストールされています。)
vim-tiny 2:7.3.154+hg~74503f6ee649-2ubuntu3 を (.../vim-tiny_2%3a7.3.154+hg~74503f6ee649-2ubuntu3.1_i386.deb で) 置換するための準備をしています ...
vim-tiny を展開し、置換しています...
vim-common 2:7.3.154+hg~74503f6ee649-2ubuntu3 を (.../vim-common_2%3a7.3.154+hg~74503f6ee649-2ubuntu3.1_i386.deb で) 置換するための準備をしています ...
vim-common を展開し、置換しています...
未選択パッケージ vim-runtime を選択しています。
(.../vim-runtime_2%3a7.3.154+hg~74503f6ee649-2ubuntu3.1_all.deb から) vim-runtime を展開しています...
'vim-runtime による /usr/share/vim/vim73/doc/help.txt から /usr/share/vim/vim73/doc/help.txt.vim-tiny への退避 (divert)' を追加しています
'vim-runtime による /usr/share/vim/vim73/doc/tags から /usr/share/vim/vim73/doc/tags.vim-tiny への退避 (divert)' を追加しています
未選択パッケージ vim を選択しています。
(.../vim_2%3a7.3.154+hg~74503f6ee649-2ubuntu3.1_i386.deb から) vim を展開しています...
man-db のトリガを処理しています ...
vim-common (2:7.3.154+hg~74503f6ee649-2ubuntu3.1) を設定しています ...
vim-tiny (2:7.3.154+hg~74503f6ee649-2ubuntu3.1) を設定しています ...
vim-runtime (2:7.3.154+hg~74503f6ee649-2ubuntu3.1) を設定しています ...
Processing /usr/share/vim/addons/doc
vim (2:7.3.154+hg~74503f6ee649-2ubuntu3.1) を設定しています ...
update-alternatives: /usr/bin/vim (vim) を提供するために 自動モード で /usr/bin/vim.basic を使います。
update-alternatives: /usr/bin/vimdiff (vimdiff) を提供するために 自動モード で /usr/bin/vim.basic を使います。
update-alternatives: /usr/bin/rvim (rvim) を提供するために 自動モード で /usr/bin/vim.basic を使います。
update-alternatives: /usr/bin/rview (rview) を提供するために 自動モード で /usr/bin/vim.basic を使います。
update-alternatives: /usr/bin/vi (vi) を提供するために 自動モード で /usr/bin/vim.basic を使います。
update-alternatives: /usr/bin/view (view) を提供するために 自動モード で /usr/bin/vim.basic を使います。
update-alternatives: /usr/bin/ex (ex) を提供するために 自動モード で /usr/bin/vim.basic を使います。
siriuth@ubntu-VirtualBox:~/dev/openwrt/backfire_10.03.1/package/uhttpd/src$
 ということで無事に入れることができました。

コンパイル環境

やはりバイナリイメージを動かしていたのでは限界が見えてきたのでコンパイル環境をなんとかならないかと右往左往していましたが最終的にVirtualBoxとUbuntu11.10で落ち着いた感じです。

ただVirtualBoxが悪いのかUbuntuが悪いのかわかりませんがどうもmake中で各サイトから必要なリソースを引っ張ってくるところで何度もVM自体がフリーズしていました。

makeするときにV=99をつけると細かいメッセージまで表示されるのである程度は判断がつくようになり判断がつく限り直接ダウンロードしたものをdlフォルダに入れて対応したところまともにコンパイルが通るようになりました。

色々躓きはしましたが…。

直接的な部分ではuhttpdを手直しして使いたいだけなのでパッケージだけでもコンパイルできればとおもって始めたのですが最終的には全コンパイルをかけていました。

VMなのでコンパイルにはかなり時間がかかりました。
ざっとデフォルトで2,3時間。そこから全パッケージがまた2,3時間。
CPUを半分以上ほかのものが使用していたとは思いますが(笑)

Ubuntuはかなり今風のつくりになっていてターミナルを開くのにも一苦労です。
[ALT]+[F2]でファイル名を指定して実行できるのでそれが救いでした。(最初はどうしようかと(笑))

失敗談としてはCygwinでできるかな?と頑張っては見たのですがOpenWrtのHowToにもかいてありますが無理でした。svnでソースは持ってこれるのですが、makeをしようとするとroot権限を持っているといろいろダメみたいでした。FORCE=1をつけてやったりもしましたが…

ただ最初はfeedとかもいれてなかったし色々足りなかったのは確か。

2012年5月18日金曜日

uhttpd: index_pageの指定は一つしかできない

昨日uhttpdでindex_pageの指定で複数のファイル名を設定できたと勘違いして記事を書いてみたのですが後から見直すとどうもやはり一つしか対応できないようで、本格的にソースを見てみました。

まずソースは/package/uhttpd/srcの中にあり適当に見てみます。
$ grep "index.html" *
uhttpd-utils.c: "index.html",
コンスタントで定義されているのはuhttpd-utils.cの中ということがわかります。
static char *uh_index_files[] = {
    "index.html",
    "index.htm",
    "default.html",
    "default.htm"
};
と定義されています。確かに4つデフォルト値が配列として定義されているようです。
次にuh_index_filesはどこで使われているかというと、
 $ grep "uh_index_files" *
uhttpd-utils.c:static char *uh_index_files[] = {
uhttpd-utils.c:                         for( i = 0; i < array_size(uh_index_files); i++ )
uhttpd-utils.c:                                 strncat(buffer, uh_index_files[i], sizeof(buffer));
同ファイルの中で使用されているというのはわかります。
その部分を実際に見てみると
            else if( cl->server->conf->index_file )
            {
                strncat(buffer, cl->server->conf->index_file, sizeof(buffer));

                if( !stat(buffer, &s) && (s.st_mode & S_IFREG) )
                {
                    memcpy(path_phys, buffer, sizeof(path_phys));
                    memcpy(&p.stat, &s, sizeof(p.stat));
                }
            }
            else
            {
                for( i = 0; i < array_size(uh_index_files); i++ )
                {
                    strncat(buffer, uh_index_files[i], sizeof(buffer));

                    if( !stat(buffer, &s) && (s.st_mode & S_IFREG) )
                    {
                        memcpy(path_phys, buffer, sizeof(path_phys));
                        memcpy(&p.stat, &s, sizeof(p.stat));
                        break;
                    }

                    *pathptr = 0;
                }
            }
ここで残念なことが発覚します。
定義されているものは配列でcl->server->conf->index_fileが定義されている場合はどうやら一つしか対応できないようです。

必死に複数の指定をしていたのですが残念な結果となりました。
蛇足ですがこの index_fileは2箇所で設定されていてコマンドラインの引数と/etc/httpd.confなどの設定ファイルから取得するようになっているようでした。(細かくは見ていませんが)

やはりソースを見るのが一番早いですね。

2012年5月16日水曜日

proftp: 起動時にエラー

rebootしたときにftpがつながらなかったので気になっていたのですが、システムログに
May 16 20:56:22 mzkw04nu user.info sysinit:  - Fatal: error processing configuration file '/etc/proftpd.conf'
とエラーと表示されていました。

/etc/init.d/proftp start

として起動するので細かい点は気にしていませんでしたが、rebootで起動しないのは問題があるので少し調べてみましょう。

まず原因がわからないのでとりあえず openwrt proftp で検索してみると
OpenWrt / proftpd not work
で、「DefaultAddress  127.0.0.1」を追加すれば良いということなので/etc/proftpd.confに追加して再起動してみました。
May 16 21:06:20 mzkw04nu user.info sysinit: udhcpc: ifconfig wlan0 *.*.*.* netmask *.*.*.* broadcast +
May 16 21:06:21 mzkw04nu user.info sysinit:  - setting default address to 127.0.0.1
May 16 21:06:21 mzkw04nu user.info sysinit: udhcpc: setting default routers: *.*.*.*
May 16 21:06:21 mzkw04nu daemon.notice proftpd[1295]: localhost. - ProFTPD 1.3.3e (maint) (built Mon Nov 14 2011 19:08:02 CET) standalone mode STARTUP
May 16 21:06:21 mzkw04nu user.info sysinit: udhcpc: setting dns servers: *.*.*.*
確かに起動するようにはなりました。
が、気になるのはデフォルトアドレスをローカルとする理由はおそらく実行時にゲートウェイがあるネットワークのIPアドレスが確定していないということなので、単純に起動順序の調整で話は終わりそうです。

追加したDefaultAddressをコメントにして、/etc/init.d/proftpdのSTARTを50からntpdと同じ65に下げてみます。
その後 /etc/rc.dのリンクを再作成するためにluciのスタートアップから(/etc/init.dの変更を行うと無効になっていますがS50proftpdのリンクは存在したままです。)有効に変更します。
それから再起動。
May 16 22:00:24 mzkw04nu daemon.notice proftpd[1479]: mzkw04nu.lan - ProFTPD 1.3.3e (maint) (built Mon Nov 14 2011 19:08:02 CET) standalone mode STARTUP
問題なく起動しました。
解決方法としてデフォルトアドレスをconfに追加するか、udhcpcが起動したあと起動すればよいということでしょうね。

2012年5月14日月曜日

ブログスクリプト

プライベートな出来事を記録するためのブログとしてこのbloggerを利用していますが、それでもやはりよりプライベートな記録を行いたいのでブログスクリプトを探しています。

openwrtで動かすので軽いもので、phpベースのものを探してみました。
最初はPHP Blogというものを見てみましたが、これはデータベースを使用する上に、LightSQLという使ったことが無いデータベースが必要なようなので動かす環境はありませんでした。

もう少し探しているとppBlogというものがありました。
これはphp単体で動作し、機能的にも一般的なblogサービスと遜色がないように感じました。

とりあえず入れて設定方法も何もわかりませんがファイルを転送してinstall.phpというものを動かしてみましたが、

Fatal error: Unknown: apc_fcntl_lock failed: in Unknown on line 0

というエラーが表示されてうまくどう探しませんでした。
別の環境で試すと最初は同じように動きませんでしたが、再起動してみると気がつくと動いていました。

無理やり動かした後に気づいたのですがマニュアルがあるようで、設定方法も書いてありました。
ppBlog Manual

2012年5月8日火曜日

proftpd

sambaの接続でお茶を濁していたファイル転送ですがいろいろな意味でftpでファイル転送ができないのは好ましくないので色々試してみました。

実際にopenwrtで導入例が検索してもこれと言ったものが引っかからないので途方にくれていました。
接続まではできるもののログインしようと試すとログインできなかったわけですが。

大まかなインストールから設定までは
http://www.ksknet.net/proftpd/proftpd.html
で紹介されている通り。

opkgでバイナリインストールした場合は何もしなくてもluciのSystem/StertUpで有効にして開始すれば自動的に起動まではするのですが、問題はそこから。
有効なユーザーでログインしてログインできず。
システムログを見てみると
daemon.info proftpd[18438]: mzkw04nu.lan (192.168.250.151[192.168.250.151]) - FTP session opened.
authpriv.notice proftpd[18438]: mzkw04nu.lan (192.168.250.151[192.168.250.151]) - USER siriuth (Login failed): No such user found.
authpriv.notice proftpd[18438]: mzkw04nu.lan (192.168.250.151[192.168.250.151]) - USER siriuth (Login failed): No such user found.
authpriv.notice proftpd[18438]: mzkw04nu.lan (192.168.250.151[192.168.250.151]) - USER siriuth (Login failed): No such user found.
authpriv.notice proftpd[18438]: mzkw04nu.lan (192.168.250.151[192.168.250.151]) - Maximum login attempts (3) exceeded, connection refused
daemon.info proftpd[18438]: mzkw04nu.lan (192.168.250.151[192.168.250.151]) - FTP session closed.
という形でユーザー自体の認識ができていない状態。
rootでログインしようとすると
authpriv.crit proftpd[18423]: mzkw04nu.lan (192.168.250.151[192.168.250.151]) - SECURITY VIOLATION: root login attempted.
となっていてスーパーユーザーと一般ユーザーで反応が違っていた。

エラーメッセージとopenwrt、proftpなどで検索してみると
https://forum.openwrt.org/viewtopic.php?id=31429
のページが引っかかった。
中を見てみるとどうも同じ状況のようで最後に

AuthUserFile /etc/passwd

を追加すれば改善できたとのこと。
早速/etc/proftpd.confに追記してみると、この状態でrootはログインできなかったが一般ユーザーはログインできるように。

(shadow passwordを入れれば動くのかもしれない?)

http://www.proftpd.org/docs/directives/linked/config_ref_AuthUserFile.html

とてつもなく危険ですが内部的には設定時に
RootLogin on
でrootのログインを許可できます。

2012年5月1日火曜日

motion

motionで簡単にjpeg画像は保存できたが、やはりバラバラのファイルよりは動画として一つのファイルの方が扱いやすいのでなんとかならないかと調べてみました。

motionではffmpegを利用することによって内部的にファイルを作成できるようだが…残念なことにうまく動いていないようです。
ターミナルなどから単独で起動を行ってみると
root@mzkw04nu:/etc# motion
[0] Processing thread 0 - config file /etc/motion.conf
[0] Unknown config option "ffmpeg_cap_new"
[0] Unknown config option "ffmpeg_cap_motion"
[0] Unknown config option "ffmpeg_timelapse"
[0] Unknown config option "ffmpeg_timelapse_mode"
[0] Unknown config option "ffmpeg_bps"
[0] Unknown config option "ffmpeg_variable_bitrate"
[0] Unknown config option "ffmpeg_video_codec"
[0] Unknown config option "mpeg_filename"
[0] Unknown config option "ffmpeg_video_codec"
[0] Unknown config option "movie_filename"
[0] Motion 3.2.11.1 Started
[0] Thread 1 is from /etc/motion.conf
[1] Thread 1 started
[1] cap.driver: "uvcvideo"
[1] cap.card: "UVC Camera (046d:0994)"
[1] cap.bus_info: "usb-ar71xx-ehci-1.2"
[1] cap.capabilities=0x04000001
[1] - VIDEO_CAPTURE
[1] - STREAMING
[1] Supported palettes:
[0] motion-httpd/3.2.11.1 running, accepting connections
[0] motion-httpd: waiting for data on port TCP 8082
[1] 0: MJPG (MJPEG)
[1] 1: YUYV (YUV 4:2:2 (YUYV))
[1] index_format 6 Test palette YUYV (352x288)
[1] Using palette YUYV (352x288) bytesperlines 704 sizeimage 202752 colorspace 00000008
[1] found control 0x00980900, "Brightness", range 0,255
[1]     "Brightness", default 128, current 128
[1] found control 0x00980901, "Contrast", range 0,255
[1]     "Contrast", default 32, current 32
[1] found control 0x00980902, "Saturation", range 0,255
[1]     "Saturation", default 32, current 32
[1] found control 0x00980913, "Gain", range 0,255
[1]     "Gain", default 0, current 0
[1] mmap information:
[1] frames=4
[1] 0 length=202752
[1] 1 length=202752
[1] 2 length=202752
[1] 3 length=202752
[1] Using V4L2
[1] Resizing pre_capture buffer to 1 items
[1] Started stream webcam server in port 8081
 と表示され、ffmpeg系のオプションが(旧体系)のものも含めて認識できないと怒られています。
motionのドキュメントを見る限り、ffmpegが利用できる環境で無い場合はコメントアウトしないとエラー表示になるようになっているようなので、motion自体がffmpegを認識できていないようです。

openwrt motion ffmpegなどのキーワードで検索を行ったところ、同様のはまり方をされている人も多々いらっしゃるようで…debianでは普通に動いているようなので、やはりソースからコンパイルする必要があるかも。

試しにスナップショットのチャンクのffmpegをインストールしたところ結果は一緒。(きちんと組み込めたかは不明ですが(笑))

10.03.1のffmpegは少しバージョンが古い(FFmpeg version 0.5.4)のでmotionのドキュメントにもあるように全てが動作するという チャンクのほうの0.8がインストールできれば動くかもと少し淡い期待があったのですが残念です。

現状だとイベントで動画ファイルに変換する方法でしのいでみるしかなさそうです。

バスの事故

夜行(?)バスの事故で、一つ疑問がある。
ガードレールがもう少しちゃんと整備されていたら死傷者は出なかったのではないかということ。
たしかに居眠り運転はダメだが、道路側の危険部分の排除は行われることが当然だと思うのだが、どのマスコミもそのことについて全く言及されていない。

電気料金の値上げ

一般の電気料金値上げの調整に入っているらしいが色々と疑問です。
そもそも企業努力は行われたのか?
賃金カットなんて当たり前の話ですよね?

ニュースで10%といっていて落とし所で5%とか7%とかでお互いの努力の結果とか値上げはただのかませで値上げしなくなりました→現行与党万歳のシナリオなのかよくわかりませんが。

また電気買取って作り方で変わるんですね。
そもそも一律でいいと思うのだが。

これも金持ち優遇の結果の意味不明のルールなんでしょうか。

そもそも設置時の優遇措置だけでいいとおもうのだが。

2012年4月28日土曜日

Autorun無効化

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Cdrom
AutoRun 1→0

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer
NoDriveTypeAutoRun 91(145)→b5(181)

USBやSDカードの実行もとめる。
※再起動が必要

さらにAutorun.infの実行を行わないようにするためには下記のレジストリを追加する。
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\IniFileMapping\Autorun.inf]
@="@SYS:DoesNotExist"
引用元
http://pctrouble.lessismore.cc/running/cancel_autorun.html

メモリと悪戦苦闘

10.03.1のfinalバージョンに入れ替えたMZK-W04NUですが、ハード的な面でどうしても非力なとこで無理をしてもいいことは無いのでいろいろと最小限で行って言う項と思っています。

簡単に使用できるので環境としては申し分ないので実用的な範疇を目標に。

WEBサーバー

HTTPサーバーとしてはApacheを動かしたかったのですが、やはり消費リソースが大きいことと、現状のバージョンではスーパーデーモン配下で動作しなくなっているのでプロセス数などを制限しても使用してないときにもある程度のメモリ消費があるので組み込み系のサーバーとしては現実的ではないようです。

phpもperlもuhttpdで動作するので個人使用であればと割り切ってuhttpdの使用を試しています。

USBカメラ

ライブ感覚で使用するのはmjpg-streamerが手軽なのですが、どうしてもその他の処理を行いたいときはmotionを使用するほかは選択肢が無いようです。
motionの問題点としては解像度を上げてしまうと消費メモリが肥大化するのとCPUに負荷をかけることになるので解像度もfpsも抑えて設定したほうが良いようです。

ファイルサーバー

ファイルサーバーとしてはsambaとftpを考えています。
sambaはwindowsから手軽にファイルアクセスが可能なのでいりぐちだけでもと思ってスーパーデーモン配下で動作させて見ましたが、ほかのサーバーも統括できそうにないので現状はスタンドアローンで。
xinetdの弊害としては接続時のレスポンスが悪くなるのですが、使用していないときのメモリの開放が行われるのでwindowsクライアントがいなくなればほとんどのプロセスが自動的に終了していきました。
ftpに関してはproftpを使ってみようと思っているのですが、いままでまともに接続できたことが無いのでそろそろ本格的に設定してみようかと思っているだけで終わっています。

データベース

データベースを動かす余力があればとおもってpostgreSQLをインストールしていますが実用で気ではない予感でいっぱいです。

2012年4月20日金曜日

10.03.1-rc6から10.03.1(ファイナルバージョン)に入れ替えてみました。
今回もMZKW04NUに対してはまずはLuciからフラッシュの書き換えを行った。
これらはインストール前と後とののopkgの状態。
まずはrootのoverlayをかける前の環境を整えてから。
10.03.1-rc6 10.03.1
base-files - 43.29-r28680 base-files - 43.32-r29592
block-extroot - 0.0.1-2.1
block-hotplug - 0.1.0-2.1
block-mount - 0.1.0-2.1
busybox - 1.15.3-3.1 busybox - 1.15.3-3.4
crda - 1.1.1-1 crda - 1.1.1-1
dnsmasq - 2.55-6 dnsmasq - 2.55-6.1
dropbear - 0.53.1-4 dropbear - 0.53.1-5
e2fsprogs - 1.41.11-1
fdisk - 2.13.0.1-4
firewall - 2-34.6 firewall - 2-34.8
hotplug2 - 1.0-beta-3 hotplug2 - 1.0-beta-3
iptables - 1.4.6-3.1 iptables - 1.4.6-3.1
iptables-mod-conntrack - 1.4.6-3.1 iptables-mod-conntrack - 1.4.6-3.1
iptables-mod-nat - 1.4.6-3.1 iptables-mod-nat - 1.4.6-3.1
iw - 0.9.22-2 iw - 0.9.22-2
kernel - 2.6.32.27-1 kernel - 2.6.32.27-1
kmod-ath - 2.6.32.27+2011-09-14-1 kmod-ath - 2.6.32.27+2011-11-15-1
kmod-ath9k - 2.6.32.27+2011-09-14-1 kmod-ath9k - 2.6.32.27+2011-11-15-1
kmod-ath9k-common - 2.6.32.27+2011-09-14-1 kmod-ath9k-common - 2.6.32.27+2011-11-15-1
kmod-button-hotplug - 2.6.32.27-1 kmod-button-hotplug - 2.6.32.27-1
kmod-cfg80211 - 2.6.32.27+2011-09-14-1 kmod-cfg80211 - 2.6.32.27+2011-11-15-1
kmod-crc-ccitt - 2.6.32.27-1 kmod-crc-ccitt - 2.6.32.27-1
kmod-crypto-aes - 2.6.32.27-1 kmod-crypto-aes - 2.6.32.27-1
kmod-crypto-arc4 - 2.6.32.27-1 kmod-crypto-arc4 - 2.6.32.27-1
kmod-crypto-core - 2.6.32.27-1 kmod-crypto-core - 2.6.32.27-1
kmod-fs-ext3 - 2.6.32.27-1
kmod-fs-mbcache - 2.6.32.27-1
kmod-input-core - 2.6.32.27-1 kmod-input-core - 2.6.32.27-1
kmod-input-gpio-buttons - 2.6.32.27-1 kmod-input-gpio-buttons - 2.6.32.27-1
kmod-input-polldev - 2.6.32.27-1 kmod-input-polldev - 2.6.32.27-1
kmod-ipt-conntrack - 2.6.32.27-1 kmod-ipt-conntrack - 2.6.32.27-1
kmod-ipt-core - 2.6.32.27-1 kmod-ipt-core - 2.6.32.27-1
kmod-ipt-nat - 2.6.32.27-1 kmod-ipt-nat - 2.6.32.27-1
kmod-ipt-nathelper - 2.6.32.27-1 kmod-ipt-nathelper - 2.6.32.27-1
kmod-leds-gpio - 2.6.32.27-1 kmod-leds-gpio - 2.6.32.27-1
kmod-mac80211 - 2.6.32.27+2011-09-14-1 kmod-mac80211 - 2.6.32.27+2011-11-15-1
kmod-nls-base - 2.6.32.27-1 kmod-nls-base - 2.6.32.27-1
kmod-ppp - 2.6.32.27-1 kmod-ppp - 2.6.32.27-1
kmod-pppoe - 2.6.32.27-1 kmod-pppoe - 2.6.32.27-1
kmod-scsi-core - 2.6.32.27-1
kmod-usb-core - 2.6.32.27-1 kmod-usb-core - 2.6.32.27-1
kmod-usb-ohci - 2.6.32.27-1 kmod-usb-ohci - 2.6.32.27-1
kmod-usb-storage - 2.6.32.27-1
kmod-usb2 - 2.6.32.27-1 kmod-usb2 - 2.6.32.27-1
libblkid - 1.41.11-1
libc - 0.9.30.1-43.29 libc - 0.9.30.1-43.32
libext2fs - 1.41.11-1
libgcc - 4.3.3+cs-43.29 libgcc - 4.3.3+cs-43.32
libip4tc - 1.4.6-3.1 libip4tc - 1.4.6-3.1
libiwinfo - 16 libiwinfo - 18

libiwinfo-lua - 18
liblua - 5.1.4-7 liblua - 5.1.4-7
libnl-tiny - 0.1-1 libnl-tiny - 0.1-1
libpthread - 0.9.30.1-43.29
librt - 0.9.30.1-43.29
libuci - 12012009.6-4 libuci - 12012009.7-4
libuci-lua - 12012009.6-4 libuci-lua - 12012009.7-4
libuuid - 1.41.11-1
libxtables - 1.4.6-3.1 libxtables - 1.4.6-3.1
lua - 5.1.4-7 lua - 5.1.4-7
luci - 0.10+svn7852-1 luci - 0.10.0-1
luci-app-firewall - 0.10+svn7852-1 luci-app-firewall - 0.10.0-1
luci-i18n-english - 0.10+svn7852-1 luci-i18n-english - 0.10.0-1
luci-lib-core - 0.10+svn7852-1 luci-lib-core - 0.10.0-1
luci-lib-ipkg - 0.10+svn7852-1 luci-lib-ipkg - 0.10.0-1
luci-lib-lmo - 0.10+svn7852-1 luci-lib-lmo - 0.10.0-1
luci-lib-nixio - 0.10+svn7852-1 luci-lib-nixio - 0.10.0-1
luci-lib-sys - 0.10+svn7852-1 luci-lib-sys - 0.10.0-1
luci-lib-web - 0.10+svn7852-1 luci-lib-web - 0.10.0-1
luci-mod-admin-core - 0.10+svn7852-1 luci-mod-admin-core - 0.10.0-1
luci-mod-admin-full - 0.10+svn7852-1 luci-mod-admin-full - 0.10.0-1
luci-proto-core - 0.10+svn7852-1 luci-proto-core - 0.10.0-1
luci-proto-ppp - 0.10+svn7852-1 luci-proto-ppp - 0.10.0-1
luci-sgi-cgi - 0.10+svn7852-1 luci-sgi-cgi - 0.10.0-1
luci-theme-base - 0.10+svn7852-1 luci-theme-base - 0.10.0-1
luci-theme-openwrt - 0.10+svn7852-1 luci-theme-openwrt - 0.10.0-1
mtd - 13 mtd - 13
opkg - 576-2 opkg - 576-2
ppp - 2.4.4-16.1 ppp - 2.4.4-16.1
ppp-mod-pppoe - 2.4.4-16.1 ppp-mod-pppoe - 2.4.4-16.1
swconfig - 9 swconfig - 9
uci - 12012009.6-4 uci - 12012009.7-4
udevtrigger - 106-1 udevtrigger - 106-1
uhttpd - 23.3 uhttpd - 28
wireless-tools - 29-4 wireless-tools - 29-4
wpad-mini - 20110527-1 wpad-mini - 20111103-2

2012年4月11日水曜日

Vistaからsambaへ接続できない

samba3でも同様なようですが、原因はVistaからLAN Manager認証レベルのデフォルト値がXP以前と異なっているために接続できなくなっているようです。
コントロールパネル→管理ツール→ローカルセキュリティー ポリシー
ローカルポリシー/セキュリティー オプションのネットワーク セキュリティ: LAN Manager認証レベルのプロパティーを「NTLN応答のみ送信する」よりもセキュリティーを低くする必要があるようです。

Windows Vista から Samba 2.2 系列以前へ接続できない

いままでVistaでアクセスできないことがあったのですが、稀に接続できたこともあったのでSamba側の設定がおかしいのかとも思ったのですが、こんなところも変化があったんですね。

2012年4月10日火曜日

suが一般ユーザーで使えない

何度やっても、rootグループに追加しても一般ユーザーからrootにスイッチできない。
siriuth@mzkw04u:/tmp$ su
Password:
su: incorrect password
siriuth@mzkw04u:/tmp$

エラーメッセージで検索したところLinuxではいくつかの制御が行われているらしい。
http://www.atmarkit.co.jp/fsecurity/rensai/unix_sec04/unix_sec01.html
一つは0(wheel)グループに所属しないとsuコマンドで拒否される方法。エラーは下記のようになるようだ。
su: you are not listed in the correct secondary group (wheel) to su root.
この場合は使用したいユーザーをグループに所属させるだけ。
エラーの内容が違うがとりあえず/etc/groupを編集しrootグループにユーザーを追加させてみたがだめ、デーモンの再起動ということでリブートしてみたけどやっぱりダメでした。
もう一つはPAM(Pluggable Authentication Module)という仕組みがあるらしく、こちらでは細かい制限が行われるようだ。が、OpenWrtにそれらしいパッケージも無く、それらしいモジュールも組み込まれていない様子。

再度検索してみたところOpenWrtのフォーラムでも上がっていた。
https://forum.openwrt.org/viewtopic.php?pid=91779
実際の解決策はbusyBoxのリコンパイルが有力だが、最後に全く違う視点のアプローチ
ssh 127.0.0.1 -l root
という考え方。
ありといえばありだがちょっと残念?

ハードウェアリセットがかかる

負荷テストをやっているわけではないが、どうもメモリを使い切ったときにハングアップ状態に陥って最終的にリセットがかかっているように思える現象に陥った。
ターミナルでファイルが2948個程度のディレクトリ(backfireのpackagesフォルダ)を ls -l で表示させて落ちたので気になったので何度か行ったが再現しやすかった。

ためしにswapをオンにしたりオフにしたり切り替えてみたが状況はあまり変わらず。

最初はLuciのステータスの概要でメモリー状況を確認していたが、別のターミナルでtopでみていると、lsコマンドで47%のメモリを消費していることが瞬間的に確認ができた。
1回だけlsコマンドを実行後しばらく経ってから
Killed
という表示が行われて強制的に実行が打ち切られた感じにはなったものの、その直後にlsコマンドを実行してみるとやはりハングアップ後リセットがかかった。

直接的なのか間接的なのかログが残されていないので空想の世界でしかないが、ハードウェア的なUSB関連の問題か、rootで操作しているのが問題なのかといったところ。

実験的に使っているだけなので負荷をかけるつもりは全く無いがこの手の問題は最終的に致命的な部分になるのかも。

2012年4月8日日曜日

cronのエラー表示

この問題はkamikaze時代からあるようでwikiにもどうしようもないとかかれている。
http://mizupc8.bio.mie-u.ac.jp/pukiwiki/index.php?OpenWrt#caca9880
現状ではこれをどのように回避するのかということで、ログそのものを消しているというのもありなようですが、これだとcronのエラーが拾えなくなるかも。
https://forum.openwrt.org/viewtopic.php?id=25225
/etc/init.d/cron
#!/bin/sh /etc/rc.common
# Copyright (C) 2006 OpenWrt.org
START=50

start () {
        loglevel=$(uci_get "system.@system[0].cronloglevel")
        [ -z "$(ls /etc/crontabs/)" ] && exit 1
        mkdir -p /var/spool/cron
        ln -s /etc/crontabs /var/spool/cron/ 2>/dev/null
#       crond -c /etc/crontabs -l ${loglevel:-5}
        crond -c /etc/crontabs -l ${loglevel:-5} -L /dev/null
}

stop() {
        killall -9 crond
}
静かにはなりそうですが。
/var/log/cronなどに設定しておくとそれなりの出力は得られるのかも。

2012年4月7日土曜日

telnet経由でリセットを行いたいと思って調べてみるとlinuxではシェルスクリプトだけで簡単にできそうだ。
しかしopenWrtではexpectが標準では外されているようでパッケージが存在するかいろいろと調べてみたところ見つかりませんでした。

rubyで(perlでも)同様の動作をさせることができるようなのでruby、ruby-coreをopkgでインストール後スクリプトを実行したのですがリセットはできるものの終了時にエラーが。
./testruby.sh: [BUG] pthread_mutex_lock: Invalid argument (EINVAL)
ruby 1.9.2p0 (2010-08-18 revision 29036) [i486-linux]

-- control frame ----------
c:0001 p:0000 s:0002 b:0002 l:000b1c d:000b1c TOP
---------------------------

[NOTE]
You may have encountered a bug in the Ruby interpreter or extension libraries.
Bug reports are welcome.
For details: http://www.ruby-lang.org/bugreport.html

Aborted
PTY.protect_signal を入れてみると今度は
Segmentation fault
rubyの知識は全くないのでこれ以上の詮索はやめて、暫定的な形でtelnetの対応を行するようにしておきます。

2012年3月15日木曜日

Firefox 11.0 release

バージョンアップされていました。
AVGのアドオンが動作しないという表示が出ていました。

Thunderbirdも更新がかかってました。
こちらもAVGのアドオンが動作しないという表示が出ていました。

2012年2月27日月曜日

時間のずれ

デスクトップのWindowsVistaで時間のズレが気になってしまうほどずれていることが多い。
今までのPCでここまで時刻のズレが表面化していることはなかったのだが、クロックがおかしいのかMBのハード的な不具合なのかは不明。

Windowsの時刻設定は時計のプロパティーから設定でき、インターネット時刻の同期もここから行えるが、更新間隔の調整はレジストリを変更することで行える。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient
SpecialPollInterval : 3600(10進数)で1時間ごとに同期を行うようになる。
初期値はワークグループであれば 0x93a80(10進数では604,800秒) ドメイン環境であれば0xe10(10進数では3,600秒) となっているらしい。

参考
http://www.atmarkit.co.jp/fwin2k/operation/winntp01/winntp01_03.html

2012年2月10日金曜日

phpinfoのエラー

date

Warning: phpinfo() [function.phpinfo]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Tokyo' for 'JST/9.0/no DST' instead in /htdocs/info.php on line 2
dateのところにという警告が出ていた。
警告されないためには/etc/php.iniの
[Date]
;date.timezone =
のコメントされている部分を
[Date]
date.timezone = Asia/Tokyo
とすれば警告がなくなるようだ。


http://d.hatena.ne.jp/shimooka/20090519/1242665027
http://d.hatena.ne.jp/tenkoma/20090711/1247340645

phpの設定

色々設定してみたが、OpenWrtではuHTTPdを使うことが前提になっているようでパッケージを入れるとApache関連の設定はどれもこれも外れているようだ。
なので考え方を変えてuHTTPdで試行錯誤してみることを考える。

http://wiki.openwrt.org/doc/uci/uhttpd
(uHTTPdで使用するだけならほとんどの設定はそのままで/etc/config/uhttpdのlist interpreterのコメントを外すだけで有効になり、設定を変更したら/etc/init.d/uhttpd restartで再起動を行えば反映される)


と思った矢先に
http://wiki.openwrt.org/doc/howto/http.apache#configuring.apache.and.php5
とものっていたのでこのまま続行w
上記の内容の通り、php.iniとhttpd.confを設定しApacheの再起動を行ったあと、
test.phpとして
<?php
    phpinfo();
?>
を、htdocsに入れてブラウザから読み出すとうまく動作するようになった。

2012年2月9日木曜日

apacheのプロセスの調整

メモリーが逼迫している環境ではできる限り不要なプロセスは起動しないほうが良いに決まっている。
(そもそもOpenWrtでapacheという選択肢も問題ですが(笑))

/etc/apache/httpd.conf
# Server-pool management (MPM specific)
#Include /etc/apache/extra/httpd-mpm.conf
コメントされている行をコメントアウト。
あとは/etc/apache/extra/httpd-mpm.confを好きなように調整
# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule mpm_prefork_module>
#    StartServers          5
    StartServers          1
#    MinSpareServers       5
    MinSpareServers       1
#    MaxSpareServers      10
    MaxSpareServers       2
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>
外部からの接続をほとんど考えていないのでできる限り小規模にしてみた。

2012年2月3日金曜日

AVG 2012

とりあえず今のところ表立った不具合は無いようです。

Firefox 10.0

マイナーアップデートかと思ったらメジャーバージョンアップでした。


メッセージの表示などのポップアップが画面の右下に出てくるようになったり、ヒントの表示方法が変わったりしていましたが…やはりマウスパットのスクロールがうまく行ってません。
以前調べたらもともとマウスドライバ側が悪いということでドライバを最新のものに更新してくださいとか書いてありましたが、最新のものがどこからも提供されていないVAIOはどうすればいいでしょうかね(笑)

2012年1月31日火曜日

修復したHDDの整理

以前Buffaloの外付けHDDを2台接続して付属のソフトをインストールして見事にバグでクラッシュしたHDDから引き上げたファイル郡がそのままだったので整理を行っています。

このバグは既に改修されているようですが、当時はほんとに開いた口がふさがりませんでした。
なにしろ整理しようとファイルを移動していざ中身を確認しようとしたら消えているわけなので、ただ削除したのと変わらないとかありえません。

で、修復したファイル群ですが、ディレクトリ情報が破損しているようで最初に見たときは何がなんだかわかりませんでしたが、ファイル名はなんとか救えていたことです。
フォルダ名が全く別物になっているものがほとんど。

これらのファイルはただのTV録画(I-O DATA mAgicTV)で当時まったくテレビを見る時間がなかったのでかなり取り溜めています。

ファイル構成が比較的簡単で、ファイル名からフォルダ名を復元できれば…と、最初は手作業でやっていましたが、やはりスクリプトで一気に変換ができたら楽かなと。

とにかくファイルが消えてしまうのが一番嫌なことなので比較的シンプルかつ、トライアンドエラーで手作業に近いことができればと、こんなスクリプトを見よう見真似で作ってみました。
Option Explicit

dim objFSO

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

Function FolderProc(objFolder)
    dim strResult
    dim strRetFileName
    dim objSubFolder, objFile
    dim intCount

    ' 再帰的にサブフォルダの処理を行う
    For Each objSubFolder In objFolder.SubFolders
        strRetFileName = FolderProc(objSubFolder)
        if strRetFileName <> "" then
            if strRetFileName <> objSubFolder.Name then
                WScript.Echo objSubFolder.Name & " [" & strRetFileName & "]"
                objSubFolder.Name = strRetFileName
            End if
        End if
    Next

    strResult = ""
    intCount = 0
    For Each objFile In objFolder.Files        if LCase(objFile.Name) = "thumbs.db" then
            objFile.Delete
        elseif LCase(objFSO.GetExtensionName(objFile)) = "gno" then
            intCount = intCount + 1
            strResult = objFSO.GetBaseName(objFile)
            if Mid(strResult, Len(strResult) - 2 + 1, 2) = "-0" then
                strResult = Mid(strResult, 1, Len(strResult) - 2)
            end if
        end if
    Next

    if intCount > 1 then
        strResult = ""
    end if

    FolderProc = strResult
End Function

dim objFolder
Set objFolder = objFSO.GetFolder("I:\Recuva\不明なディレクトリ")
FolderProc(objFolder)
実行する際にはコマンドラインから(SetFolderName.vbと保存した場合)
cscript SetFolderName.vbs
として実行します。
も しフォルダ名が変更できない場合(すでに同じフォルダ名がある場合)はエラーが出て止まりますので、"[ ]"内の既存のフォルダ名をみつけて適当に"[1]"とかつけて一時的に名前を変えて再度実行。そしてエラーがなくなるまで実行すれば元に近いフォルダ名 がつけられているといった感じです。

まぁ、エラー処理とか自動化するよりは止まってもらって判断するのがいいかなと(笑)

応用としてフォルダがなくなってごちゃ混ぜになっているファイルは、.gno と .mpg を 新しいフォルダ にでも小分けしてスクリプトを流すだけできちんとフォルダ名が設定されるという感じです。

関係ないですけど、このことが原因で私はさらにbuffaloは嫌いになっています。