2006年3月2日木曜日

VMware+Windows+gpartでパーティションテーブルの修復

壊れたハードディスクをgpartで修復



にちょこっと書いたのは、2台のパソコンを使って修復する方法でしたが、VMware Playerと、IDEをUSBに変換するアダプタを使うことで、1台のWindowsパソコンだけでもできそうです。ちょっと気になるところはありましたが・・・



注意



  • 直せるのは、MBRなどパーティションテーブルが壊れてしまった場合だけです。


  • カッコン、カッコンと、異音がするようなハードディスクは、物理的故障ですので、この方法では無理です。


  • 電源をいれてもうんともすんともいわないハードディスクは(中のお皿が回っていないわけでして)、この方法では直せません。ちなみに回らないディスクは、絶妙なタイミングで適度な衝撃を与えると、再び回りだすことがあります(経験と勘によりますので、その筋の達人に頼みましょう)


  • ハードディスクにアクセスしようとすると、パソコンがだんまり状態になってしまったり、やたらと時間がかかるようなケースも、たぶん無理っす


  • 作業には、それなりに高度な知識を必要とします。マウスクリックするだけで直るようなことはありません。ヘマして事態を最悪にしたとしても、私には責任をとれません。あしからず




参考



(VMware) FreeBSD 6.0-RELEASEのインストール



  • VMware Playerを使ってFreeBSDをインストールする手順について。ちなみに今回はFreeBSD 6.0ではなく、5.5-PRERELEASEを使ってます。uname -aはこんな。

FreeBSD freebsd.vmware.local 5.5-PRERELEASE-20060212-JPSNAP
FreeBSD 5.5-PRERELEASE-20060212-JPSNAP #0: Sun Feb 12 02:35:57 UTC 2006  root@ushi.jp.freebsd.org:/usr/obj/usr/src/sys/GENERIC  i386

(VMware) USB接続のHDDにFreeBSDをインストール



  • USB接続のHDDをVMwareで使う方法についてです。


(QEMU)FreeBSDのportsを使う



  • ごく簡単なports利用方法の紹介


(FreeBSD) portsnapでportsを最新に



  • portsを最新版へ更新する方法です


(FreeBSD) portsnapが暴走する?



  • ある時期のportsnapがバグってます、という話




■ gpartのインストール



portsで楽々インストール。「cd ほにゃらら」して「make install clean」だけです。



freebsd# cd /usr/ports/sysutils/gpart/
freebsd# make install clean
===>  Vulnerability check disabled, database not found
=> gpart-0.1h.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
=> Attempting to fetch from ftp://ftp2.jp.freebsd.org/pub/FreeBSD/ports/distfile
s/.
gpart-0.1h.tar.gz                             100% of   51 kB  286 kBps
===>  Extracting for gpart-0.1h_1
=> MD5 Checksum OK for gpart-0.1h.tar.gz.
=> SHA256 Checksum OK for gpart-0.1h.tar.gz.
===>  Patching for gpart-0.1h_1
===>  Applying FreeBSD patches for gpart-0.1h_1
===>   gpart-0.1h_1 depends on executable: gmake - found
===>  Configuring for gpart-0.1h_1
===>  Building for gpart-0.1h_1
(以下略)



■ ハードディスクをVMwareなFreeBSDに接続



IDEなハードディスクを、USB接続で使えるようにするアダプタを使いました。



USBコネクタをさして、VMware Playerの上のほうにあるUSBのボタンを押してやれば、ゲストOS側で、そのUSBデバイスが認識されます。



Vmwareusb



で、ですが・・・なぜか、USB1.1って認識してるみたいなんですよね・・・



カーネルのリコンフィグをすると、USB2.0になるんでしょうか???



■ パーティションとは何のこと?



googleしてみたら、ものすごく詳しく説明してくれているページがありました。



http://nobumasa-web.hp.infoseek.co.jp/partition/partition.html



すごく参考になります。



■ gpartを実行する



今回USBで接続したハードディスクは、/dev/da0というデバイス名で認識されているので、

freebsd# gpart -vv /dev/da0

となります。



しばらく待っていれば、

壊れたハードディスクをgpartで修復

に示したような結果が表示されます。



出力結果をファイルに保存したければ、

freebsd# gpart -vv /dev/da0 |& tee /tmp/gpart-da0.log

とかやれば、/tmp/gpart-da0.logに保存されます。



ところで、ディスクを接続したときにFreeBSDのログにでていたとおり、どうも、USB1.1並の転送速度になっているみたいです。ここで書いた方法では、gpartでディスクからデータを抽出するのに、数分程度かかりました。120GBのHDDの場合です(ディスク全領域を読み出しているわけではないらしい)。ちなみにUSBではなく、直接接続した場合は、数秒でした。



■ gpartの結果の読み方



FreeBSDのfdiskコマンドで、パーティション(スライス)を切れる人なら、たぶんすぐわかるでしょうが・・・まあ、ここでそんな話の説明もするわけにもいかないので、ハードディスクのパーティションに関する詳細はgoogleしてみるか、上の「パーティションとは何のこと?」であげたページを参考にしてください。



行方不明になってしまったパーティションの情報は、

Begin scan...

というところから後に表示されます。



で、私の場合、なくなってしまったパーティションの情報が、運良くみつかって、そのうちの1つが、こういうかんじでした。

Possible partition(Windows NT/W2K FS), size(49999mb), offset(15994mb)
   type: 007(0x07)(OS/2 HPFS, NTFS, QNX or Advanced UNIX)
   size: 49999mb #s(102398240) s(32756598-135154837)
   chs:  (1023/15/63)-(1023/15/63)d (32496/10/1)-(134082/2/56)r
   hex:  00 0F FF FF 07 0F FF FF 76 D3 F3 01 20 79 1A 06

パーティション情報を、どこかのファイルに保存したり、メモってあれば、gpartを使わなくてもよかったんですけどねぇ。



■ fdiskコマンドでパーティション情報を書き込む



FreeBSDのfdiskコマンドを使いましたが、パーティション情報を編集するツールなら、同様な感じでできるかと思います。私のお気に入りのブートセレクタの「MBM」でも、パーティション情報を書き換えることができたような気がします。



「fdisk -i ディスク」というコマンドで、fdiskを実行します。

freebsd# fdisk -i da0
******* Working on device /dev/da0 *******
parameters extracted from in-core disklabel are:
cylinders=14946 heads=255 sectors/track=63 (16065 blks/cyl)



Figures below won't work with BIOS for partitions not in cyl 1
parameters to be used for BIOS calculations are:
cylinders=14946 heads=255 sectors/track=63 (16065 blks/cyl)



Do you want to change our idea of what BIOS thinks ? [n]

BIOS用のジオメトリ情報を変更する?みたいなことを聞いてくるので、この場合、変更しなくていいと思うので、nと答えます。

Media sector size is 512
Warning: BIOS sector numbering starts with sector 1
Information from DOS bootblock is:
The data for partition 1 is:
sysid 11 (0x0b),(DOS or Windows 95 with 32 bit FAT)
    start 63, size 16384062 (8000 Meg), flag 0
        beg: cyl 0/ head 1/ sector 1;
        end: cyl 1023/ head 15/ sector 63
Do you want to change it? [n]

1つめのパーティションの情報を変更する?と聞かれます。この情報が正しければ、つまりこのパーティションが正常にアクセスできているのなら、nと答えます。うその値が書き込まれていて修復する必要があるのならyと答えます。



これ、あってますので、nでつぎにすすみます。



もう修復しちゃったので、正しそうな値が入力されているのですが、例として、以下の3番目のパーティションの情報を修正する手順を示します。

The data for partition 3 is:
sysid 7 (0x07),(OS/2 HPFS, NTFS, QNX-2 (16 bit) or Advanced UNIX)
    start 32756598, size 102398240 (49999 Meg), flag 0
        beg: cyl 1023/ head 15/ sector 63;
        end: cyl 1023/ head 15/ sector 63
Do you want to change it? [n]

yと答えます。

Supply a decimal value for "sysid (165=FreeBSD)" [0]

これにはパーティションのsysidを入力します。NTFSのパーティションなら7番なので、7と入力します。FreeBSDのパーティションなら165です。



さきほどのgpartのログをみると、typeのところに、入力すべき値が示されています。

Possible partition(Windows NT/W2K FS), size(49999mb), offset(15994mb)
   type: 007(0x07)(OS/2 HPFS, NTFS, QNX or Advanced UNIX)
   size: 49999mb #s(102398240) s(32756598-135154837)
   chs:  (1023/15/63)-(1023/15/63)d (32496/10/1)-(134082/2/56)r
   hex:  00 0F FF FF 07 0F FF FF 76 D3 F3 01 20 79 1A 06

007、つまり、7ですね。



先ほどのページにも、ID(パーティションタイプ)の一覧表がのっていました。
http://nobumasa-web.hp.infoseek.co.jp/partition/partition.html



ただ、このページでは16進数で表記されていますが、fdiskで入力するのは10進数です。16進数のA5は10進数で165です。16進を10進に変換するのは、たとえばFreeBSDのprintfコマンドでもできます。こんな感じです。16進数には0xをつけてね。

freebsd# printf '%d\n' 0xA5
165

とりあえず、7と入力しました。

Supply a decimal value for "sysid (165=FreeBSD)" [0] 7
Supply a decimal value for "start" [0]

今度は、パーティションの先頭セクタ番号を入力します。これは、gpartの「s(数字-数字)」のところの、1つめの数字になります。

Possible partition(Windows NT/W2K FS), size(49999mb), offset(15994mb)
   type: 007(0x07)(OS/2 HPFS, NTFS, QNX or Advanced UNIX)
   size: 49999mb #s(102398240) s(32756598-135154837)
   chs:  (1023/15/63)-(1023/15/63)d (32496/10/1)-(134082/2/56)r
   hex:  00 0F FF FF 07 0F FF FF 76 D3 F3 01 20 79 1A 06

というわけで、「32756598」と入力します。

Supply a decimal value for "start" [0] 32756598
Supply a decimal value for "size" [0]

今度は、パーティションのサイズをセクタ数で入力します。これは、gpartの「#s(数字)」のところの値になります。

Possible partition(Windows NT/W2K FS), size(49999mb), offset(15994mb)
   type: 007(0x07)(OS/2 HPFS, NTFS, QNX or Advanced UNIX)
   size: 49999mb #s(102398240) s(32756598-135154837)
   chs:  (1023/15/63)-(1023/15/63)d (32496/10/1)-(134082/2/56)r
   hex:  00 0F FF FF 07 0F FF FF 76 D3 F3 01 20 79 1A 06

というわけで、102398240と入力します。

Supply a decimal value for "size" [0] 102398240
fdisk: WARNING: partition does not end on a cylinder boundary
fdisk: WARNING: this may confuse the BIOS or some operating systems
Correct this automatically? [n]

シリンダ境界にそろってないよ、とのWARNINGメッセージがでますが、そろわなものは仕方がないので、そろわないままにしておきます。つまりnと答えます。

Correct this automatically? [n] n
Explicitly specify beg/end address ? [n]

次ですが・・・よくわかんないのですが、とりあえずyと答えました。

Explicitly specify beg/end address ? [n] y
Supply a decimal value for "beginning cylinder" [0]

gpartで「chs:  (1023/15/63)-(1023/15/63)d」と表示されているなかの、1つ目の数字、1023が該当すると思われます。

Possible partition(Windows NT/W2K FS), size(49999mb), offset(15994mb)
   type: 007(0x07)(OS/2 HPFS, NTFS, QNX or Advanced UNIX)
   size: 49999mb #s(102398240) s(32756598-135154837)
   chs:  (1023/15/63)-(1023/15/63)d (32496/10/1)-(134082/2/56)r
   hex:  00 0F FF FF 07 0F FF FF 76 D3 F3 01 20 79 1A 06



Supply a decimal value for "beginning cylinder" [0] 1023
Supply a decimal value for "beginning head" [0]

つぎは、「chs:  (1023/15/63)-(1023/15/63)d」と表示されているなかの、2つ目の数字、15が該当すると思われます。

Supply a decimal value for "beginning head" [0] 15
Supply a decimal value for "beginning sector" [0]

つぎは、「chs:  (1023/15/63)-(1023/15/63)d」と表示されているなかの、3つ目の数字、63が該当すると思われます。

Supply a decimal value for "beginning sector" [0] 63
Supply a decimal value for "ending cylinder" [0]

つぎは、「chs:  (1023/15/63)-(1023/15/63)d」と表示されているなかの、4つ目の数字、1023が該当すると思われます。

Supply a decimal value for "ending cylinder" [0] 1023
Supply a decimal value for "ending head" [0]

つぎは、「chs:  (1023/15/63)-(1023/15/63)d」と表示されているなかの、5つ目の数字、15が該当すると思われます。

Supply a decimal value for "ending head" [0] 15
Supply a decimal value for "ending sector" [0]

つぎは、「chs:  (1023/15/63)-(1023/15/63)d」と表示されているなかの、6つ目の数字、63が該当すると思われます。

Supply a decimal value for "ending sector" [0] 63
sysid 7 (0x07),(OS/2 HPFS, NTFS, QNX-2 (16 bit) or Advanced UNIX)
    start 32756598, size 102398240 (49999 Meg), flag 0
        beg: cyl 1023/ head 15/ sector 63;
        end: cyl 1023/ head 15/ sector 63
Are we happy with this entry? [n]

これでよければyと答えます。



4番目のパーティションについて回答したあとは、

Do you want to change the active partition? [n]

と聞かれます。ようするにどのパーティションからブートするかを変更するか?って聞いてます。とりあえずnと答えます。必要なら変更してください。



Do you want to change the active partition? [n] n



We haven't changed the partition table yet.  This is your last chance.
parameters extracted from in-core disklabel are:
cylinders=14946 heads=255 sectors/track=63 (16065 blks/cyl)



Figures below won't work with BIOS for partitions not in cyl 1
parameters to be used for BIOS calculations are:
cylinders=14946 heads=255 sectors/track=63 (16065 blks/cyl)



Information from DOS bootblock is:
1: sysid 11 (0x0b),(DOS or Windows 95 with 32 bit FAT)
    start 63, size 16384062 (8000 Meg), flag 0
        beg: cyl 0/ head 1/ sector 1;
        end: cyl 1023/ head 15/ sector 63
2: sysid 165 (0xa5),(FreeBSD/NetBSD/386BSD)
    start 16386300, size 16370235 (7993 Meg), flag 0
        beg: cyl 1023/ head 15/ sector 63;
        end: cyl 1023/ head 15/ sector 63
3: sysid 7 (0x07),(OS/2 HPFS, NTFS, QNX-2 (16 bit) or Advanced UNIX)
    start 32756598, size 102398240 (49999 Meg), flag 0
        beg: cyl 1023/ head 15/ sector 63;
        end: cyl 1023/ head 15/ sector 63
4: sysid 7 (0x07),(OS/2 HPFS, NTFS, QNX-2 (16 bit) or Advanced UNIX)
    start 135154908, size 104952576 (51246 Meg), flag 0
        beg: cyl 1023/ head 15/ sector 63;
        end: cyl 1023/ head 15/ sector 63
Should we write new partition table? [n]



最後に、この情報でパーティションテーブルに書き込んでいいですか?と確認してきます。本当によければyと答えます。



以上のようなかんじで、FreeBSDのfdiskコマンドで、パーティション情報を手入力で直すことができます。



これで直るかと思ったのですが、

壊れたハードディスクをgpartで修復

に書いたように、なぜかWindowsからは、どうも読めてませんでした。あ、フォーマットしちゃ、ぜったいダメですよ。ぜったい!



というわけで、なぜかFreeBSDではNTFSをマウントできたので、FTPで吸い出した、という次第です。



つづきはまた明日。



■ 関連記事



(2008/2/21追記) パーティションテーブルを復活させたい場合、gpartよりも、TestDiskというツールの方がお手軽な場合もあります。









2006年3月1日水曜日

3年前の倉田ねじまき堂

私の職場では、仕事中、イヤフォンで音楽なんかを聴いていてもべつにかまわないのですが、私もよくパソコンで曲を聴きながら、そのパソコンで仕事をしています。ちなみに、FreeBSDでxmmsを使ってます。xmmsにはwmaプラグインとかも用意されているので、なにかと重宝しています。



さて、今日もそうやって仕事をしていたんですが、なんと、倉田ねじまき堂が聞こえてきました。



BSQRでいまだに続いているeXtendedMusicっていう番組を、よく録音してMP3ファイルにしてたんですが、たまたま、そのあとの番組まで全部録音されて、残っていたみたいです。



どうやら、2003年3月5日の20時からのeXtendedMusic Limited(たぶん)を録音していて、そのまま、再放送の「倉田ねじまき堂」(本放送が2月27日。74回目の営業)、そして、再放送の「井上喜久子のしいたけラジオ」と、3時間分、録音されていたようです。



これ、今まで、聞いたことなかったみたいです。
なんか、思わぬところで、宝物をみつけちゃったみたいなぁ?かんじです。



☆ ☆ ☆ ☆ ☆



昔からラジオのリスナーって、好きな番組を毎回録音して残すなど、熱烈的な方が多いとよく聞きますけど、中には、文字におこしてネット上で公開している人もいるんですよね。たしかに、地方だとノイズで聞こえにくかったりして、そういうのをありがたくおもう人もいるんでしょうね。それにしても、よくやりますね。



幸いにもBSQRは、衛星放送、しかもデジタルで、日本中、どこでもとってもクリアに聞こえます。もうすぐ閉局しちゃうけどね。あと、大雨だと受信できなくなっちゃいますね。



それはさておき、そういう文字でおこす作業って、どんなかんじかなぁ?と思って、無駄に挑戦してみました。

(ねじをまく音)
(オルゴールの曲)
(西村知道さんナレーション)
ここは 心のねじをとりあつかう
不思議な不思議なアンティークショップ
倉田ねじまき堂
勇気 愛 希望 夢
いろんなねじが ここからは生まれます
そしてそれは世界中で素敵な幸せを作り出しているのです。
さぁ 今夜も 倉田ねじまき堂の不思議な時間のはじまりです。



(女主人)
倉田ねじまき堂開店です



いらっしゃいませ
倉田ねじまき堂へようこそ
女主人の倉田雅世です。



この番組は この世のどかにあるアンティークショップ倉田ねじまき堂の宣伝番組です。



ねじまき堂のおすすめ商品を紹介したり 新商品を開発したりして
日々の生活に ああ もうやんだぁ~ と疲れちゃったあなたの心のねじを巻いていきたいとおもいます。



2月最後の営業となりました。
もうね なんか昼間歩いていても おもてあったかくってさぁ
コートなんかきていると ちょっと汗ばむぐらいになってきてますよね
春の足音がすぐそこに ああ きこ きこ きこえると思ったらなんかぁ
はぁっくしょ~んみたいな
お花が咲く前にですね花粉症前線なんか 花盛りみたいなかんじで
えぇ 現場とかね いろんなところでですね
花粉症になっちゃったよぉとかはじまっちゃったよぉとか
もうすぐきそうだよ という声も聞こえたりしますけれども
みなさんはいかがですかぁ 大丈夫ですかぁ?
はい  ということで そうそう先週さぁ



・
・
・

あぁ、もうやだぁ~~~



無理です。私にはできません。キー入力は人並み以上に速いほうだと思っているのですが、さすがにしゃべってる速度では入力できません(漢字変換が追いつかない!!)。



きっと、こういう作業をするのに適したソフトとかあるんでしょうね。



☆ ☆ ☆ ☆ ☆





というわけで、あとは、おおまかな内容だけ。





・ねじまきしりとり
そういえば、こんなコーナーあったような・・・



・1曲目は、クリィミーマミの「デリケートにスキして」



・ゲスト 水野愛日。
「まほろDE放送局」以来の文化放送とのこと。そういやあったあった、そういう番組。おもしろかったな。



・お茶は、白桃烏龍



・小山プリンセスは、まほろでは「小山さんの熱湯」で有名。高田由美さんが生放送中に具合が悪くなって、薬を飲むことになったら、小山さんが熱湯をもってきた。そしたら、その熱湯で、すっかり直ってしまって、魔法の熱湯ということになった。



・愛日ちゃんはロン毛が好き、ということで、カツラで放送。



・2曲目 「パラシュート」(水野“B”愛日)
おもしれぇ曲・・・いい!



・ねじまきのこころ
お悩み相談。2月のテーマは、「ラブストーリーは突然に」。
水野:「いいなと思う男の人には、普通にしゃべれなくなってしまう。」
女主人:「好きな子に、いたずらをしちゃう、ってのはどう?
女主人:「私は、手紙を書く。」
女主人:「まなびちゃんは、踊りが得意なので、好きな人の前で踊りを踊るのがいい」
ねじ 5つ



・鉄うちのコーナー
「香水にはまってる。」
「今話題の、メーテルの香り。」
「メーテル・・・けっこう・・・オバサンぽい~」
このコーナー、聞いた記憶がぜんぜんなかったのですが、冒頭のstrike while the iron is hotって、片寄オーナーがしゃべってたんでしたっけ?(勘違いだったらすみません)



・ねじまき月報
(1)「へぇー」(某泉のアレ)
(2)ハッピーバレンタイン2
(3)ガチャガチャ
水野「女主人の字がすごい」
女主人「筆記体」



・3曲め あの素晴らしい愛をもう一度
アナログレコードのプチノイズが聞こえて、ねじまき堂らしくて、いい雰囲気です。



・告知
水野愛日さんは、告知で、舞台にでるよ~と言ってたんですが、そういえば、倉田さんも今度舞台にでるんですよね。若手新人女優として(!)。3月10日にはアフタートークあり。



http://happybirdy521.blog10.fc2.com/blog-entry-54.html
http://blog.so-net.ne.jp/yukikura/2006-01-24
http://blog.so-net.ne.jp/yukikura/2005-12-17



☆ ☆ ☆ ☆ ☆



というわけで、改めて聞いてみて、やっぱりおもしろいラジオ番組だったんだなと再認識。



そんな倉田ねじまき堂が、



2006年3月30日(木曜日)



に、BSQR489にて生放送で、最後の営業を行う予定。



電子談話室もあるかな?





2006年2月28日火曜日

お土産は、コースター

昨日の、「倉田ねじまき堂~女主人のSmile for you~」でのシークレットお土産は、コースターでした。



物販でも、ねじまき堂の名前入り手ぬぐいとセットで売られていました。



200602272





コースター無しで、手ぬぐいのみでも売られていたという話でしたが、気が付きませんでした。



200602271





というわけで、コースターが2つになってしまいました。



でも、ね?!2つあればさ・・・なんなのさ。



2つのコースターを有効活用できる日が、早くきますように。



200602273



☆ ☆ ☆ ☆ ☆ 



森永理科さんCDは、帰りの時にはすでに売り切れてました・・・あーあ、遅かったんですね。



というか、「5枚しか持ってこなかった」って本人が言ってましたから。



だめぢゃん・・・





2006年2月27日月曜日

帰ってきた 倉田ねじまき堂―――そして伝説へ

ただいまもどりました。

BSQR閉局記念
ユキクラpresents



倉田ねじまき堂
~女主人のSmile for you~



テーマは、卒業

よかった。



すごくよかった。



伝説級によかった。



一生の中で、こんな体験をすることは、2度とないのではないかと思うほど。



歳をとったら、ホント、涙腺が弱くなって・・・



何がよかったって、まずは、・・・



なにやら(笑)、まだ書いちゃダメ、って言われたので書けません・・・



開示できる範囲とか、解禁日とか、言ってもらえなかったので、何を書いちゃダメなのか、明確にはなっていないのですが ・・・ 勝手に判断させてもらって、これだけは書いてもいいと思うことを、今日は1つだけ。

3月30日 木曜日を楽しみに

休憩時間にあんな楽しいことがあったり、待望のアレの発表があったりもしたけど、書いていいのかなぁ?1次情報源から正式発表があってからにしたほうがいいのかナ。



今回、BSデジタルラジオのBSQRもおしまれつつ閉局ということで(倉田ねじまき堂がないBSデジタルラジオなんて、もうやめてしまえ、って日本の国の偉い人がやけっぱちになったのかな?)、とうとう卒業ということになってしまいましたが、いつか、「同窓会」ができたらいいなと思います。



信じていれば、きっとミラクルはおきる  かな?



200602261



☆ ☆ ☆ ☆ ☆ 



終わって、帰るころには、雨は、すっかりやんでいました。そこで、246を渋谷まで歩いて帰りました。



実は、倉田さん(16)が生まれたころに、私は学生でしたが、骨董通り沿いにあった会社で、アルバイトをしていたことがあったり、そのあとに、青山1丁目にある会社で大変お世話になったりしまして、今の自分を形成するのに非常に重要な経験をたくさんしたのですが、そのころを懐かしく思いながら帰りました。



真夜中、終電もなくなったころ、雨がやみ、都心が霧につつまれ、幻想的な風景になった中、青山墓地のとなりをとぼとぼ歩いて帰ったりしたことも思い出しながら。



お店とかすっかり変わっちゃってるけど、志賀昆虫だけは、何があっても、あのままなんだな・・・とか思いながら(たしか北杜夫のエッセイにもでてきたような)。



あのころの自分と今の自分とを比べると、住所は、都から県に変わったものの、数キロの範囲でしか動いていないので、どこかまだ学生気分が抜けていないところがあります。やっぱり、卒業できていないのかなぁ・・・



200602262



今日の午前中は、一生懸命、my PowerMacくん(10年のビンテージ)にがんばってもらって、シールを作っていました。



さて、今晩は、これでも飲んで、余韻に浸ろう。



200602263



くわしくは、こちらを。

スパークリング大吟醸 ゆきくら

☆ ☆ ☆ ☆ ☆



酔っ払いのマメ知識



recursive callってのは、こういうやつです。日本語では「再帰呼び出し」。関数が、自分自身を呼び出すこと。



int function( int x )
{
  if ( x == 0 )
    return 1;
  else
    return x * function( x-1 );
}



このプログラムは階乗(factorial)の計算をします。
5!=5*4*3*2*1=120 みたいな。



まあ、これはよくあるサンプルなので出したんですが、優秀なプログラマは、このようなコードを書いちゃダメです。xがマイナスの値のとき暴走しますから。





2006年2月26日日曜日

壊れたハードディスクをgpartで修復

(2006/3/1追記) こちらに続きを書きました。





パーティションテーブル以外にも徹底的に壊れたときの最終手段は、こちらを試すといいかもしれません。





(2008/2/21追記) パーティションテーブルを復活させたい場合、gpartよりも、TestDiskというツールの方がお手軽な場合もあります。



               


☆ ☆ ☆ ☆ ☆ 



いよいよ明日です。いつもよりも、5割増しくらいで、年甲斐も無く興奮気味なんですが・・・
あqwせdrftgyふじこlp



倉田ねじまき堂~女主人のSmile for you~



公式情報はこちら
http://yuki-kura.web.infoseek.co.jp/top.htm



というわけで、興奮した気持ちを抑えるために???、先週壊れたハードディスクを直すことにしました。ここ1年ほど、パソコンが壊れるのは日常茶飯事だったのですが、最近はあまりなかったので、すっかり安心しきっていました。



さてさて、壊れたといっても、「パソコンを落として、中身が飛び出してきちゃった~」というように、機械的に壊れてしまったものは、直すのは難しいですが、ハードディスクにおかしなデータが書き込まれてしまって、整合性がとれなくなってしまった、というケースなら、



運がよければ



直すことができます。



今回も、たぶん、パーティションテーブルがとんでしまっただけのようでした。まあ言わば、大百科事典の目次がどっかにいっちゃって(のび太がページをやぶって鼻をかんだ、とか)、データがどこにあるのかわけがわからなくなってしまった、みたいな壊れ方でしょうか。



たぶん直るだろうな・・・と予想して、とりあえずNorton DiskDoctorを実行したら、

直りませんでした・・・

ちょっとあせってきました。



そこで、今回はじめて、FreeBSDのportsをさがしたところ、/usr/ports/sysutils/gpartにあった、gpartというツールを試してみました。



これは、ディスクの中を、さささーと探して、パーティションらしき部分を見つけ出してくれるツールです。まさに、今回の壊れ方にぴったりのツールではないでしょうか。



壊れたディスクが、FreeBSDで/dev/ad3の場合に、

gpart -dd /dev/ad3  間違えました



gpart -vv /dev/ad3

とかやると、数秒後(早い!?)、こんな情報を表示してくれました。



** Error: invalid extended ptbl found at sector(16384063).



dev(/dev/ad3) mss(512) chs(0/16/63) #s(0) size(0mb)
Primary partition(1)
   type: 011(0x0B)(DOS or Windows 95 with 32 bit FAT)
   size: 8000mb #s(16384000) s(63-16384062)
   chs:  (0/1/1)-(1019/219/31)d (0/1/1)-(16254/0/31)r
   hex:  00 01 01 00 0B DB DF FB 3F 00 00 00 00 00 FA 00



Primary partition(2)
   type: 015(0x0F)(Extended DOS, LBA)
   size: 109246mb #s(223737665) s(16384063-240121727)
   chs:  (1019/219/32)-(610/225/63)d (16254/0/32)-(238215/15/63)r
   hex:  00 DB E0 FB 0F E1 BF 62 3F 00 FA 00 41 F7 55 0D



   Logical partition
Primary partition(3)
   type: 000(0x00)(unused)
   size: 0mb #s(0) s(0-0)
   chs:  (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r
   hex:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00



Primary partition(4)
   type: 000(0x00)(unused)
   size: 0mb #s(0) s(0-0)
   chs:  (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r
   hex:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00



Begin scan...
Possible partition(DOS FAT), size(8000mb), offset(0mb)
   type: 011(0x0B)(DOS or Windows 95 with 32 bit FAT)
   size: 8000mb #s(16384000) s(63-16384062)
   chs:  (0/1/1)-(1023/15/63)d (0/1/1)-(16254/0/31)r
   hex:  00 01 01 00 0B 0F FF FF 3F 00 00 00 00 00 FA 00



Possible partition(*BSD disklabel), size(7993mb), offset(8001mb)
   type: 165(0xA5)(FreeBSD/NetBSD/386BSD)
   size: 7993mb #s(16370235) s(16386300-32756534)
   chs:  (1023/15/63)-(1023/15/63)d (16256/4/1)-(32496/8/63)r
   hex:  00 0F FF FF A5 0F FF FF FC 08 FA 00 3B CA F9 00



Possible partition(Windows NT/W2K FS), size(49999mb), offset(15994mb)
   type: 007(0x07)(OS/2 HPFS, NTFS, QNX or Advanced UNIX)
   size: 49999mb #s(102398240) s(32756598-135154837)
   chs:  (1023/15/63)-(1023/15/63)d (32496/10/1)-(134082/2/56)r
   hex:  00 0F FF FF 07 0F FF FF 76 D3 F3 01 20 79 1A 06



Possible partition(Windows NT/W2K FS), size(51246mb), offset(65993mb)
   type: 007(0x07)(OS/2 HPFS, NTFS, QNX or Advanced UNIX)
   size: 51246mb #s(104952576) s(135154908-240107483)
   chs:  (1023/15/63)-(1023/15/63)d (134082/4/1)-(238201/13/57)r
   hex:  00 0F FF FF 07 0F FF FF DC 4C 0E 08 00 73 41 06



End scan.



Checking partitions...



* Warning: partition(DOS or Windows 95 with 32 bit FAT) starts beyond disk end.



* Partition invalid(invalid partition entry (see comments above)):
   type: 011(0x0B)(DOS or Windows 95 with 32 bit FAT)
   size: 8000mb #s(16384000) s(63-16384062)
   chs:  (0/1/1)-(1023/15/63)d (0/1/1)-(16254/0/31)r
   hex:  00 01 01 00 0B 0F FF FF 3F 00 00 00 00 00 FA 00



* Warning: partition(FreeBSD/NetBSD/386BSD) starts beyond disk end.



* Partition invalid(invalid partition entry (see comments above)):
   type: 165(0xA5)(FreeBSD/NetBSD/386BSD)
   size: 7993mb #s(16370235) s(16386300-32756534)
   chs:  (1023/15/63)-(1023/15/63)d (16256/4/1)-(32496/8/63)r
   hex:  00 0F FF FF A5 0F FF FF FC 08 FA 00 3B CA F9 00



* Warning: partition(OS/2 HPFS, NTFS, QNX or Advanced UNIX) starts beyond disk end.



* Partition invalid(invalid partition entry (see comments above)):
   type: 007(0x07)(OS/2 HPFS, NTFS, QNX or Advanced UNIX)
   size: 49999mb #s(102398240) s(32756598-135154837)
   chs:  (1023/15/63)-(1023/15/63)d (32496/10/1)-(134082/2/56)r
   hex:  00 0F FF FF 07 0F FF FF 76 D3 F3 01 20 79 1A 06



* Warning: partition(OS/2 HPFS, NTFS, QNX or Advanced UNIX) starts beyond disk end.



* Partition invalid(invalid partition entry (see comments above)):
   type: 007(0x07)(OS/2 HPFS, NTFS, QNX or Advanced UNIX)
   size: 51246mb #s(104952576) s(135154908-240107483)
   chs:  (1023/15/63)-(1023/15/63)d (134082/4/1)-(238201/13/57)r
   hex:  00 0F FF FF 07 0F FF FF DC 4C 0E 08 00 73 41 06



Partition(DOS or Windows 95 with 32 bit FAT): invalid primary
   type: 011(0x0B)(DOS or Windows 95 with 32 bit FAT)
   size: 8000mb #s(16384000) s(63-16384062)
   chs:  (0/1/1)-(1023/15/63)d (0/1/1)-(16254/0/31)r
   hex:  00 01 01 00 0B 0F FF FF 3F 00 00 00 00 00 FA 00



Partition(FreeBSD/NetBSD/386BSD): invalid primary
   type: 165(0xA5)(FreeBSD/NetBSD/386BSD)
   size: 7993mb #s(16370235) s(16386300-32756534)
   chs:  (1023/15/63)-(1023/15/63)d (16256/4/1)-(32496/8/63)r
   hex:  00 0F FF FF A5 0F FF FF FC 08 FA 00 3B CA F9 00



Partition(OS/2 HPFS, NTFS, QNX or Advanced UNIX): invalid primary
   type: 007(0x07)(OS/2 HPFS, NTFS, QNX or Advanced UNIX)
   size: 49999mb #s(102398240) s(32756598-135154837)
   chs:  (1023/15/63)-(1023/15/63)d (32496/10/1)-(134082/2/56)r
   hex:  00 0F FF FF 07 0F FF FF 76 D3 F3 01 20 79 1A 06



Partition(OS/2 HPFS, NTFS, QNX or Advanced UNIX): invalid primary
   type: 007(0x07)(OS/2 HPFS, NTFS, QNX or Advanced UNIX)
   size: 51246mb #s(104952576) s(135154908-240107483)
   chs:  (1023/15/63)-(1023/15/63)d (134082/4/1)-(238201/13/57)r
   hex:  00 0F FF FF 07 0F FF FF DC 4C 0E 08 00 73 41 06



Ok.



Guessed primary partition table:
Primary partition(1)
   type: 000(0x00)(unused)
   size: 0mb #s(0) s(0-0)
   chs:  (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r
   hex:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00



Primary partition(2)
   type: 000(0x00)(unused)
   size: 0mb #s(0) s(0-0)
   chs:  (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r
   hex:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00



Primary partition(3)
   type: 000(0x00)(unused)
   size: 0mb #s(0) s(0-0)
   chs:  (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r
   hex:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00



Primary partition(4)
   type: 000(0x00)(unused)
   size: 0mb #s(0) s(0-0)
   chs:  (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r
   hex:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00





うーむ・・・これ、わかる人にしかわからない情報ですなぁ・・・



とりあえず、私が欲しかったのは、ココです。

Possible partition(Windows NT/W2K FS), size(49999mb), offset(15994mb)
   type: 007(0x07)(OS/2 HPFS, NTFS, QNX or Advanced UNIX)
   size: 49999mb #s(102398240) s(32756598-135154837)
   chs:  (1023/15/63)-(1023/15/63)d (32496/10/1)-(134082/2/56)r
   hex:  00 0F FF FF 07 0F FF FF 76 D3 F3 01 20 79 1A 06



Possible partition(Windows NT/W2K FS), size(51246mb), offset(65993mb)
   type: 007(0x07)(OS/2 HPFS, NTFS, QNX or Advanced UNIX)
   size: 51246mb #s(104952576) s(135154908-240107483)
   chs:  (1023/15/63)-(1023/15/63)d (134082/4/1)-(238201/13/57)r
   hex:  00 0F FF FF 07 0F FF FF DC 4C 0E 08 00 73 41 06

この、007、32756598、102398240といった値を、FreeBSDのfdiskコマンドで、書き込んでいって、パーティションテーブルを復活させてやります。



そして、Windows上でこの壊れたディスクにアクセスすると、ほぉ~ら、



20060225



あれ???読めないよ・・・



おかしいなぁ。実は、このパーティションは、もともと拡張パーティション内に作った論理パーティションだったのですが、FreeBSDのfdiskコマンドでは、論理パーティションをいじくることができなかった???みたいで、基本パーティション(primary partition)として作ったのです。そのために、うまく復旧できなかったのでしょうか???



幸運なことに、このパーティション、FreeBSDでマウントできました。

mount_ntfs -C eucJP /dev/ad3s3 /mnt

とかやると、ちゃーんと、日本語のファイル名もちゃんと読めました。こうして見えるようになったファイルを、もう1台のWindowsパソコンでFTPクライアントの「FFFTP」を使ってダウンロードすることで、無事、復旧することができました。





教訓。



データのバックアップは大事。まじで。



☆ ☆ ☆ ☆ ☆



本当は、ディスクのデータ復旧作業をするとき、まず最初に、ディスクのすべての内容を、別のディスクへコピーしておき、コピー先のディスクに対して、修復作業を試みます。



論理的な故障だけでなく、物理的な故障に対しても、同様です。



復旧操作に失敗したり、物理的障害の程度が進んだりして、壊れたディスクに、さらなるダメージを与えたり、致命傷を与えたりするのを防ぐためです。





2006年2月25日土曜日

Firefox ― なめらかにスクロール(BlogPet)

pochiはツールへテキストっぽい機能するはずだった。

D e s i g n W a v e m a g a z i n eデザインウェーブマガジンM A R M7T D M32C00.h t m l仕様の概要マイクロコントローラA D M Iコアフラッシュメモリ62K B S Dに玄箱には、こんなかんじです。
A R.20ピンヘッダ。
J T A G P I OタイマP W M発生器A DコンバータD Aコンバータ雑誌付属のC D-S u b9ピンオスコネクタ開発マシンと接続するためのシリアルケーブルさらに、必要ならばオプションとして、以下が必要だそうです。
より精度の高い、32.768k H zの水晶振動子。
C F S-308など34ピンヘッダを2個(リセットスイッチと、そうはいかなくて、少なくとも、以下もつけられるとのことです。
A R M7T D M3202L E D2個スイッチ2個(リセットスイッチと、シリアルインターフェイスからのプログラムロード開始)寸法60m mこの基板だけで何かおもしろいことできるかっていうと、そうはいかなくて、少なくとも、以下が必要だそうです。
電源。
4.5V〜6V程度の出力のA Cアダプタなど基板に電源をつなぐためのヘッダピンなどR S232C A D U C7026(A N A L O G D E V I C E S)リニア・レギュレータA D P3335R S232.768k H zの水晶振動子。
C F S-308など34ピンヘッダ。
J T A Gデバッガ用A D U C702L E D2個。
拡張I/O用2006特別号定価2180円C Q出版社普段、この雑誌は、買ってしまいました。
まだ、ぜんぜん内容を把握していませんし、これで何をするか特に目的もないのですが、何かできるかな?と思ったのですが。
(クリックして拡大表示)クリックしています。
さて、どうしようかな。
ふと、玄箱で遊ぶF r e e B S R A M8K B P L A G P I OタイマP W M発生器A DコンバータD Aコンバータ雑誌付属のC D-R O-B O X X(限定版)玄箱K U R O Mには、内部の基板上にシリアルインターフェイスが作れるそうです。
A R.20ピンヘッダを2個(リセットスイッチと、シリアルインターフェイスの信号が出ているところがあるので、そこにレベルコンバータをはさめば、R S23200.h t t p://w w w.a n a l o g.c o m/j p/p r o d/0%2C006特別号定価2180円C Q出版社普段、このA D P3335R S232.768k H zの水晶振動子。
C F S-308など34ピンヘッダ。
J T A Gデバッガ用A D u C7026%2C A D P3335R S232Cインターフェイスが作れるそうです。
電源も、玄箱からもらっちゃえばいいでしょうし。
玄人志向玄箱K U R O-B O X X(限定版)玄箱からもらっちゃえばいいでしょうし。
玄人志向玄箱につないでなんかしようかな?玄箱のクロス開発環境を構築



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


Firefox ― なめらかにスクロール

昔々、15,6年前のこと、MS-DOS時代の話ですが、「Vzエディタ」というテキストエディタがありました。たしか、DOS/V版とかJ3100版(懐かし!?)とか、いろいろな機種用のVzがあったと思いますが、PC-9801版のVzにだけ、スムーズスクロールという機能がありました。



普通、テキストを上下にスクロールさせると、1行ずつ、ガクガクって動いていきますが、スムーズスクロールの場合は、映画のエンディングロールのように、なめらかに動いていきます。



はじめてそれを見せられたとき、

気持ち悪い~

と文句を言ってしまったのですが、いざ使ってみると、すごく気持ちよくて、病み付きになってしまいました。それ以来、Vz派となり、WindowsでもWZエディタを使っています(でも、WZでは、スムーズスクロールはしないんですけど)。



Firefoxに、「SmoothWheel」という拡張機能をインストールすると、ホイール機能のあるマウスで、ホイール(真ん中のくるくる回るやつ)を回すと、なめらかにスクロールするようになります。



SmoothWheel拡張機能はこちらからどうぞ



https://addons.mozilla.org/extensions/moreinfo.php?id=357&application=firefox



インストールするだけで、なめらかにスクロールするようになります。スクロール速度を変更するなど、SmoothWheelの設定をするには、[ツール]メニューの[拡張機能]を選び、「SmoothWheel」をクリックして選択してから、[設定]ボタンをクリックします。すると、SmoothWheelの設定をするウィンドウが現れます。



20060224





ちょっと試してみたところ、[Apply]ボタンをクリックしても変更が反映されなくて、[OK]ボタンを押さないとだめみたいでした。



また、「Hold while scrolling to achive」という機能も、キーがほかの機能と重複しないように、なにやら設定を変更しないとダメとか書いてあるので、めんどくさいから、結局、デフォルトのままつかっています。