2010年12月12日

パソコン日記(2010)




1997年からはじめた身の回りのコンピュータ全体の日記コーナーです。

仕事でソフトウェア開発をやっていたので、仕事も趣味もコンピュータです。 そんな生活の中で起こったことや気づいたことを紹介します。
毎日書いてるわけではないのですが、のらりくらりと続いています。

特定のテーマで独立したページを書くのは結構大変なのですが、日々の出来事を エッセイ風に書くのはかなり楽なので最近はこちらばかり更新しています。



2020年 2019年 2014年 2013年
2012年 2011年 2009年 2008年 2007年
2006年 2005年 2004年 2003年 2002年
2001年 2000年 1999年 1998年 1997年

リンクアイコン トップページへ戻る


2010/12/12(日)

MP-XP7310 のHDDを320GBに換装

2003年に購入したVictor のノートPC InterLink MP-XP7310 のHDDを40GByte から100GByte のものに換装して利用していましたが、この100G HDD の利用が6年を超えたので故障する前にと、320Gバイトのものに交換しました。

MP-XP7310 写真
WESTERN DIGITAL のWD3200BEVE という製品で、 SATAではないPATAインタフェースの2.5inch HDD では流通している最大容量のものになります。
2004年12月05日の記事の手順 で今回も交換できました。

交換したWD3200BEVE ですが、動作音がかなりうるさいです。 6年前の製品からの換装なので、WindowsXP の起動はとても速くなったように感じます。

簡単なベンチマークをしてみました。
2004年12月に実施した、換装前の100G HDDでの結果を再掲します。
 ★ ★ ★  HDBENCH Ver 3.40 beta 6 (C)EP82改/かず ★ ★ ★
M/B Name
Processor    1000.04MHz[GenuineIntel family 6 model 9 step 5]
VideoCard   Intel(R) 82852/82855 GM/GME Graphics Controller
Resolution  1024x600 (32Bit color)
Memory      777,008 KByte
OS           5.1 (Build: 2600) Service Pack 2
Date        2004/12/07  22:59

Intel(R) 82801DBM Ultra ATA Storage Controller - 24CA
プライマリ IDE チャネル
  TOSHIBA MK1031GAS

Intel(R) 82801DBM Ultra ATA Storage Controller - 24CA
セカンダリ IDE チャネル

   ALL  Integer   Float  MemoryR MemoryW MemoryRW  DirectDraw
 20844    45971   46367    34139   23491    40329          30

Rectangle   Text Ellipse  BitBlt    Read   Write   RRead  RWrite  Drive
    19570  15564    7520     123   28001   22064    9765   10975  C:\100MB


今回の結果は次の通りです。
 ★ ★ ★  HDBENCH Ver 3.40 beta 6 (C)EP82改/かず ★ ★ ★ 
M/B Name      
Processor    1000.04MHz[GenuineIntel family 6 model 9 step 5]  
VideoCard   Intel(R) 82852/82855 GM/GME Graphics Controller  
Resolution  1024x600 (32Bit color)  
Memory      777,008 KByte  
OS           5.1 (Build: 2600) Service Pack 3  
Date        2010/12/12  20:42  

Intel(R) 82801DBM Ultra ATA Storage Controller - 24CA
プライマリ IDE チャネル
  WDC WD3200BEVE-00A0HT0

Intel(R) 82801DBM Ultra ATA Storage Controller - 24CA
セカンダリ IDE チャネル

   ALL  Integer   Float  MemoryR MemoryW MemoryRW  DirectDraw
 31442    46343   46746    37704   31414    59452          30

Rectangle   Text Ellipse  BitBlt    Read   Write   RRead  RWrite  Drive
    18926  15340    7380     117   58480   57463    8130   21342  C:\100MB


HDBench のversion は2004年時のものに合わせてます。OSのSPが今回はSP3 になっています。HDDの性能としては、ランダムRead が遅くなっているのを除けば、 おおむね倍以上の結果となっています。


2010/11/23(火)

Fedora14 のclock-applet が外部と通信する

Fedora14 にログインすると、clock-applet がHTTP で118.155.230.32 に対してコネクションを張るようです。このIP アドレスは逆引きすることができません。 なんか怪しい?!

$ netstat -a | grep http
tcp   0   0 XXXXX.localdomain:53079     118.155.230.32:http         ESTABLISHED
$ su
パスワード:
# fuser -a -v -u -n tcp 53079
                     USER        PID ACCESS COMMAND
53079/tcp:           YYYYY       1806 F.... (YYYYY)clock-applet


デスクトップに表示される時計は、 クリックするとカレンダーとともに、 設定した場所の天気や気温を表示できるようです。 その情報を取得しているのかもしれません。
時計を右クリックして、設定で天気の表示と気温の表示をはずしてログインし直すと コネクションを張らないようになりました。


2010/11/21(日)

ATOM機で3T HDDマシンの自作

ついにHDD 1台の容量が3T Byte を突破しました。HDD の取り扱いでは2.2TB に壁があり、それを超えるサイズのハードディスクに対してはUEFI (Unified EFI)の対応やOS 側の対応が必要であり、取り扱いには注意を要するようです。
私も自作機で3T HDDに挑戦してみました。

ATOM機 写真

UEFI はもともとインテルが設計したEFI(Extensible Firmware Interface) をもとにしていて、現在UEFIの対応はIntel のマザーボードが中心となるそうです。私はMini ITXフォームファクタでATOM D525 をオンボード搭載したマザーボード D525MW を購入しました。
事前の調査でこのマザーボードがUEFIに対応しているという確証は得ることができず、 いちかばちか購入してみたのですが、ちゃんとBIOSメニューにありました。 画面の一番下がUEFI Boot の設定です。
BIOSメニューでのUEFIブート設定

HDD は日立HGST の HDS723030ALA640 で7200rpm の3Tバイト のものです。
インストールするOS はWindows7 Professional 64bit版とLinux です。 UEFIは起動するOSとして、64bit 版のもののみを対象としています。 ATOM D525 は64bit に対応したCPUです。(VTは非対応なのが残念)

SilverStone のSST-SG05B-B というMini ITX用ケースをチョイスしたのですが、 3.5inch HDDを固定するシャドーベイ金具の設計がお粗末でHDD の重みでお尻側がたれさがってしまいます。 ヒモで上に吊り上げるようにしてみました。

シャドーベイの構造の図 シャドーベイを固定しているネジの様子写真 シャドーベイをヒモで吊り上げている様子
拡張カードのスロットをふさぐ金具をシャドーベイとHDDの間に挟みこみ、 ヒモで上側のDVD-ROM固定金具に巻きつけてます。
そのほか、電源スイッチに凹凸がなく、プッシュ感がないというか、 電源をやや入れにくいです。 事故で押しちゃうことはなさそうですが。それと、パワーとHDDアクセスの青色LED 明るすぎです。


その他の機器構成は
マシンの紹介 を参照してください。

BIOS のメニューからUEFI をenable に変更し、SATA をIDEモードではなくAHCI (Advanced Host Controller Interface)モードに変更するとWindows7 Pro 64bit 版は普通にインストールできました。 Cドライブの他に、2つシステムパーティションが自動で作成されました。 最初はマザーボードのSATA をIDE モードにしていると途中でエラーになったんですが、BIOS メニューからAHCIに変更するとうまく入りました。

BIOSメニューでのSATAのAHCI設定

Windows7 は対応するドライバを持ってないようで、マザーボード付属のCD から入れることでLANと Audio が利用できるようになりました。 SATAのドライバは特に何もしていません。Windows7 が持っていたものです。


3T HDD について、インターネット上で次の2つの情報をよく目にします。

この2つの情報を総合すると、日立の3T HDDは自分で物理フォーマットを変更しないと 2.2Tを越える部分を利用できないように思います。HGSTのUSのサイトを探したのですが フォーマットをAFTに変更するツールなどは見当たらず、また2.2T より上を利用するための特別な作業に関する記述も見当たりませんでした。
結局、そのまま3T としてWindows7 をインストールすることができました。 不思議な気分です。


Linux は最初CentOS v5.5 64bit 版を入れようとしたのですが、 パーティションの設定ステップで「ディスク上のブートパーティションはGPT パーティションスキームを使用しています。ただし、このマシンはGPT を使用してブートできません。」というエラーが発生し、 インストールをそれ以降継続できなくなってしまいましした。
Linux は、カーネルレベルでは3T Byteを超えるストレージに対応している のですが、ディストリビューションが採用しているブートローダや インストーラが対応していないと3Tを超えるHDDを起動ディスクとするように インストールできないことを認識しました。

仕方がないのでFedora 14 の64bit版を入手して試してみたところ、こちらは うまくインストールすることができました。
悩ましかったのはブートローダのインストール先の質問で、選択肢はMBR とインストール先パーティションの2つでした。 HDD をGPTスキームで利用しているので、MBR領域はないんじゃないかと思います。 MBR領域に相当するアドレスにブートローダを書き込まれると、そこにある別の データが上書きされてしまう心配がありました。しかしインストール先パーティション の先頭にブートローダをインストールされても、それを呼び出すものが何もないので Linux を起動できなくなると思われます。
これらを総合的に判断し、壊れたらWindows7 から入れなおす覚悟でMBR を選択しました。

ブートローダーインストール先の選択
結果としては正解だったようで、64bit版のFedora14 がうまく共存インストールできました。
ただ、起動の方法がスマートでなく、普通に電源スイッチを入れるとWindows7 が立ち上がります。Fedora14 を起動したい場合は起動の初期のタイミングでF10 キーを押すとBIOSが提供する起動メニューが現れ、そのメニューからHDD を選択するとLinux が起動します。 デフォルトで起動するOSをLinux にする方法が現在不明となっています。

F10で出るブートメニュー

そうそう、BIOSの設定でDVD-ROM ドライブの優先順位をHDDより上にしているのに、 Windows7 を入れた後Linux のインストーラ(DVD-R)が起動せず、HDD からWindows7 が起動するという現象がありました。
Linux のインストーラを起動する時もF10キーで上のBoot Option Menu を出し、 DVD-ROM ドライブを指定することで起動しました。


Windows7 とLinux はそれぞれ300GByte のパーティションを切って入れました。 OSを2つ共存で入れ終わってから、3T HDD上の残りの領域に2.3TByte のNTFS パーティションを作成し、Windows7 とFedora14 から利用することにしました。 Fedora14 では/etc/fstab に次の記述を追加することで、再起動後NTFS への読み書きができるようになりました。Windows7 で作成した日本語ファイル名も普通に見えています。

/dev/sda5  /ntfs  ntfs-3g  defaults 0 0


2010/05/12(水)

SONY BDZ-EX200 のWOL

昨年末にSONY の2TB レコーダBDZ-EX200を購入しました。
それまではSHARP の1TB レコーダ DV-ACW60を利用していたところ、 DLNAに対応してないことやHD解像度でファイルをメディアにコピーできないことや 1T のHDDがあふれてきたことがありBDZ-EX200 を買い増ししました。
BDZ-EX200 は次のメリットもあり重宝しています。

私の生活スタイルとして、リビングのPS3 でゲームをしながら待ち時間に 録画したコンテンツを楽しむというのがあります。 メインの42inch 液晶TV(SHARP LC-42RX1W)にはPS3 の画面を出し、 当初はPSPへ録画番組をおでかけ転送してPSPで再生していました。 ですがPSPへの転送は結構手間がかかるし、 画質が非常に残念なこともあるため近いうちにノートPCを新調してDLNA でネットワーク再生しようと考えていました。
ところが調べているとDTCP-IPをデコードしてAVC圧縮のHD解像度 コンテンツを再生するためにはCore Duo 2GHz 程度のスペックが必要であること、 そのためにノートPCの選択肢がかなり狭くなることが判明しました。
特にスティックタイプのポインティングデバイスを装備した1Kg 以下のノートPCでは選択肢がありません。例えばVAIO Type P 等、CPUが非力です。

結局方針を変え、リビングの42inch 液晶のとなりにもう1台TVを追加購入しました。 2010年2月に発売となった、SONY KDL-22EX300 という22inch 液晶TVです。 この製品はDTCP-IP対応のDLNAクライアントになり、AVC 圧縮録画した番組も再生可能です。更にHDMIの入力が4系統もあります。 これで有線LAN越しにDLNAで録画コンテンツを見ることができるようになりました。
副産物として、SHARP DV-ACW60 もHDMIで接続してそちらにたまったコンテンツも PS3 プレー中に楽しめるようになりました。 (ノートPCではDV-ACW60 の録画コンテンツは見ることができません. DLNAサーバ機能がないので。)

ところでPS3 もファームウェアv3.0以降でDTCP-IP対応のDLNAクライアントに なることができます。
しかしPS3 でBDZ-EX200 にアクセスする場合はBDZ-EX200 がアクティブになっている必要があります。 対して、KDL-22EX300 はWOL(Wake On LAN)でBDZ-EX200 が待機中でもDLNA サーバ機能を起こしてくれます。設置場所が離れている場合はKDL-22EX300 の方が PS3 のDLNA機能より便利です。 ただし、気合を入れて録画番組を消化する場合はPS3 の1.5倍早見機能の方が音声のクオリティが高いので利用することもあります。

ここから脱線して本題となります。 BDZ-EX200 のDLNAサーバはWOL で起動可能ということなので、 それをするプログラムを検討しました。
例によってGUIインタフェースのプログラムは様々なものがあるようですが、 コマンドラインのものが見当たりません。ならばと自作してみたところ、 うまくできました。

作成したWOL プログラムのソースは次のとおりです。(2010/5/13 最新版さしかえ)
Windows 用にコンパイルしたバイナリも公開します →
wolsend.exe(これも5/13版です)


/******************************************************************************
"wolsend.c"    Wake On Lan Magic packet sender

                 Ver0.1        2010/05/11  create
                    1.0             05/13  setsockopt()

・引数に与えたローカルセグメントにあるMACアドレスに対して
  UDP形式 WOL Magic packet を送信します
・UDPなので、念のために0.1秒間隔で4回送信します
・Linux でもVisual Studio 2005 でもコンパイルできるようにしています
・本プログラムはフリーソフトです. 改造や再配布は自由にどうぞ

       コンパイル方法: gcc -o wolsend wolsend.c
                       (Visual Studio) cl wolsend.c /link ws2_32.lib
             実行方法: wolsend <MACアドレス>
               実行例: wolsend 11:22:33:44:55:66

              by S.Komatsu (http://www.lares.dti.ne.jp/~seiki/)
******************************************************************************/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>

#ifdef _MSC_VER
#include <winsock2.h>
#else
#include <sys/socket.h>
#include <arpa/inet.h>
#endif

#define WOLSEND_PORT   9
#define SEND_MAX       4


int wol_send(int sockfd, struct sockaddr *dst_addr,
    int sockaddrlen, const unsigned char *pbody)
{
    int len = 102;  /* strlen() はダメ DATA に0x00 があることがあるため */
    int iret = 0;

    if( (iret = sendto(sockfd, pbody, len, 0, dst_addr, sockaddrlen)) != len ){
      if( iret == -1 )
        perror("sendto() failed");
      return -1;
    }
    return 0;
}

/*
 * magic packet のデータを作成する
 *
 * magic packet は0xFF の連続6byte に続いて16回のMAC Address 繰り返しで
 * 合計108byte。
 * なぜこのようなフォーマットかというと、たまたま他のUDPパケットの
 * 中身がマジックパケットとバッティングしないように16回も繰り返す
 * ことで確率を低めているのだと思う。
 *
 * 引数
 *  mac_addr:  XX:XX:XX:XX:XX:XX 形式の文字列
 */
unsigned char *make_packet_body(const char *mac_addr)
{
    static unsigned char body[1024];
    int index=0;
    int count=0;
    int part=0;
    int bin_mac[6];

    if( mac_addr == NULL ){
        printf("MAC address is NULL\n");
        return NULL;
    }

    if( sscanf(mac_addr, "%x:%x:%x:%x:%x:%x", &bin_mac[0], &bin_mac[1],
               &bin_mac[2],&bin_mac[3],&bin_mac[4],&bin_mac[5]) != 6 ){
        printf("MAC address format error: [%s]\n", mac_addr);
        return NULL;
    }

    for(index=0; index < 6; index++){
      body[index] = 0xFF;
    }

    for(count=0; count < 16; count++){
      for(part=0; part < 6; part++)
        body[index++] = bin_mac[part];
    }
    body[index] = '\0';
    return body;
}

void wsa_cleanup()
{
#ifdef _MSC_VER
    WSACleanup();
#endif
}

int main(int argc, const char *argv[])
{
    int sockfd, iret;
    struct sockaddr_in dst_addr;
    unsigned char *pbody = NULL;
    int ii = 0;
    int n_sent = 0;
    int yes = 1;
#ifdef _MSC_VER
    WSADATA wsaData;
    WORD wVersionRequired;
#endif

    if( argc < 2 ){
      printf("WOL send utility.\n");
      printf("give me target MAC address.\n");
      printf("  ex) %s 11:22:33:44:55:66\n", argv[0]);
      exit(1);
    }

    pbody = make_packet_body(argv[1]);
    if( pbody == NULL ){
      exit(2);
    }

#ifdef _MSC_VER
    wVersionRequired = MAKEWORD(1,1);
    WSAStartup(wVersionRequired, &wsaData);
#endif

    /* 通信先情報構造体を作成 */
    memset((void *)&dst_addr, 0, sizeof(dst_addr));
    dst_addr.sin_family      = AF_INET;
    dst_addr.sin_addr.s_addr = inet_addr("255.255.255.255");
    dst_addr.sin_port        = htons(WOLSEND_PORT);

    if( (sockfd = socket(AF_INET, SOCK_DGRAM, 0)) <0 ){
        perror("socket call error");
        wsa_cleanup();
        exit(3);
    }

    if( setsockopt(sockfd, SOL_SOCKET, SO_BROADCAST,
                   (char *)&yes, sizeof(yes)) != 0 ){
        perror("setsockopt() error");
        wsa_cleanup();
        exit(4);
    }

    for(n_sent=0; n_sent < SEND_MAX; n_sent++){
      iret =
      wol_send(sockfd, (struct sockaddr *)&dst_addr, sizeof(dst_addr), pbody);
#ifdef _MSC_VER
      Sleep(100); /* 100 msec */
#else
      usleep(100000); /* 100 msec */
#endif
    }

    if( iret != 0 )
        printf("Last WOL send error\n");

#ifdef _MSC_VER
    closesocket(sockfd);
#else
    close(sockfd);
#endif
    wsa_cleanup();
    if( iret == 0 )
      exit(0);
    else
      exit(100);
}



おまけ

BDZ-EX200 の改善希望点として、次の事項があります。
  1. リモコンでボタン1つで録画コンテンツリストが出ない

    クロスメディアバーでいくつか階層をたどってやっと録画コンテンツのリストに たどりつきます。これまでに入手した3台のレコーダは、全てボタン1つで録画済 コンテンツのリストを出すことができました。 BDZ-EX200のリモコンは非常に使いづらいです。
    ただ、15秒早送りのボタンは3回押すと45秒になったり、とても便利です。

  2. クロスメディアバーによる操作画面がしょぼい

    HD解像度ではないんじゃないでしょうか。 数万円のマルチメディアプレーヤ並のしょぼさで20 万を超える高級機の画面には程遠いです。
    Playstation3 の操作画面は非常にかっこよいのですが。

  3. PC 用のDLNAクライアントアプリを同梱してほしい
購入後そろそろ半年になりますが、ハングアップが1回ありました。
固まったらリセットボタンを押してみろ、とマニュアルに書いてあります(^^;)
第2チューナでもAVC圧縮できる機種が増えてきましたが、この点は不満はなく、 私はPSP転送やめてからはDR(圧縮無し)ばかりです。

22inch 液晶TV のKDL-22EX300 の方は、BS で深夜など放送停止チャンネル(放送大学など)に一度チャンネルを合わせてしまうと、 他のBSチャンネルに変更しても受信できなくなってしまいます。 そういう時でも、地デジにすると受信できます。再度BSを見るためには一度電源を 切る必要があります。
この4月から5月頭にかけて放送波によるファームウェアアップデートがありましたが、 自動アップデートをONにしていたのにアップデートが起こりませんでした。
正式発売日より前に購入できたので、 ファームウェアが最新ということはないはずです。
起動しないことが1度ありました。コンセントを抜いて入れなおすと起動しました。
それと、電源を入れて放送がみれるようになるまでの時間が短いけどOS が起動するまではDLNAクライアント起動などの操作はできません。 TVというより端末ですな。




メインメニュー へ戻る