Windows が壊れた要因は良く分からない2017年03月01日 15時39分40秒

Windows が起動しなくなったが、実は再現環境が今でも分からない。Windows 7 が入っているのは、この Samsung の機種一機のみ。Windows Vista や Windows XP、それ以前の Windows が入っていた機種なら、HP や Toshiba などが複数台ずつあったが、間違ったボタンを押してもキーキーキーと不快音がなる程度で、起動しなくなった事は無い。

Windows 7 の問題なのか、Windows 7 から変わった LBA 等の起動機構に寄るものなのか、FreeBSD のブートローダが Windows 7 とは相容れないのか、はたまた Samsung 機種だからかなのかは分からない。

取り敢えず、この機械に、外付けのハードディスクを繋いで FreeBSD を起動するときには一段と気を付けなければいけないようだ。特に F5。

この機種に、FreeBSD のブートローダの入った USB ディスクで、F5 を押すと壊れるのは USB ディスクと内蔵ディスクの二台。MBR や LBA の情報が入っている、先頭 512 バイトが破壊される様だ。

BIOS で CD-ROM から起動するようにしたり、他の外付けの USB ディスクを繋ぎ直して、FreeBSD を起動することは出来る。ディスクも起動情報を直せばデータは無くならない。

壊れた外付け USB ディスクの様子を FreeBSD で見る2017年03月02日 14時09分18秒

取り敢えず、前回破壊した外付け USB ディスクを FreeBSD に繋げると、こうなる。
da2 at umass-sim2 bus 2 scbus5 target 0 lun 0
da2: <I-O DATA HDPS-U > Fixed Direct Access SCSI-2 device
da2: Serial Number 000902A1541C
da2: 40.000MB/s transfers
da2: 305245MB (625142448 512 byte sectors)
da2: quirks=0x2<NO_6_BYTE>
GEOM_PART: integrity check failed (da2, MBR)
GEOM_PART: integrity check failed (ufsid/4cff0efe10087de1, MBR)
GEOM_PART: integrity check failed (diskid/DISK-000902A1541C, MBR)
ディスクの先頭領域が壊れているようだ。
% ls /dev/da2*
/dev/da2
ls でもパーティションは表示されていない。

FreeBSD には、この整合性の点検を無効にする方法がある。MBR 等を破壊してしまったディスクからの復旧に、役に立つ。root ユーザで。

$ sysctl kern.geom.part.check_integrity=0
% ls /dev/da2*
/dev/da2        /dev/da2s1      /dev/da2s2      /dev/da2s3      /dev/da2s4
これで、mount やら ntfs-3g などで、ディスクの中のファイルを見られる様になる。

なお、このディスクを繋いでも、起動画面が出ることも無い。

壊れたのは Windows と外付けのハードディスク2017年03月05日 16時29分40秒

Windows を壊して外付けのハードディスクも壊した。今回壊れたのは結局ハードディスク二つの MBR だった。

Windows の方は起動不可能だが、CD から起動した FreeBSD で見るとパーティションは壊れていない。そこで、このディスクの MBR のバックアップは古かったので、パーティション構成が違っていたはず。そのため、MBR を修復する前に、FreeBSD で第三と第四パーティションのデータを複製。

その後、古い MBR のバックアップで、元に戻す。FreeBSD の dd で 512 バイトのみ。

$ dd if=rv515-ada0.mbr of=/dev/ada0 bs=512 count=1
この後、案の定、第三と第四パーティションは見えなくなったが、取り敢えず Windows は起動するようになり、第二パーティションのデータは無事だった。

外付けのディスクは、バックアップはとても古いものしか無かった。こちらは、比較的最近 FreeBSD を起動できる様に再構成したものだった。どうもこちらは、パーティションテーブルも壊したようで、後部のパーティションの復帰は無理そう。古いバックアップの MBR を戻しても、第一パーティションのあったデータは無事見えるようになったが、それ以降のパーティションは無理だった。システムの複製が入っていただけなので、被害は軽微。

自宅からニューヨークのバスは 186 番2017年03月06日 14時00分51秒

ニューヨークへ行くバスの路線番号を探すのは何故だか大変。普段は乗らないので、必要になるたびに調べていたが、結構時間が掛かる。

一番近くのバス停に止まるのは 186 George Washington Bridge Bus Terminal の様だ。これは、一時間に、一、二本であまり本数は無いようだ。

橋を渡るだけなら、ジョージワシントン橋に行けば、多い時には毎分通過する。渋滞の時間を過ぎると本数は減るが、それでもまあまあ来る。

DEBUG カーネルなら ndis を動かせる2017年03月07日 13時20分12秒

デバッグを有効にしたカーネルを用い、以下の変更を加えると通信が出来る様にはなる。
Index: sys/dev/if_ndis/if_ndisvar.h
===================================================================
--- sys/dev/if_ndis/if_ndisvar.h        (revision 317316)
+++ sys/dev/if_ndis/if_ndisvar.h        (working copy)
@@ -155,9 +155,9 @@
        u_int                   ndis_80211:1,
                                ndis_link:1,
                                ndis_running:1;
+                       struct ifnet            *ifp;
        union {
                struct {                /* Ethernet */
-                       struct ifnet            *ifp;
                        struct ifmedia          ifmedia;
                        int                     ndis_if_flags;
                };
しかし、同じ変更を GENERIC カーネルで使うと、今度は kldload が失敗する。

問題はまだあるようだが、取り敢えず回避策は見付かった。一応システムを更新したら使い物にならない現状からは一歩前進。

sys/compat/ndis が変更されていないのが怪しい2017年03月08日 13時14分58秒

デバッグカーネルのみで動くパッチが動作するのは、ただの偶然だろう。デバッグを有効にしたときの構造体の違いが偶然動く形に収まっているのだと思う。

もう少し良く見ると、if_ndisvar.hに使われているイーサネットの構造体の ifp は sys/compat/ndis にて使われている。kern_ndis.csubsr_ndis.c にて ifp はあちこちで使われているが、net80211 の変更らしき跡は無い。

texlive-full がでかい2017年03月09日 12時13分19秒

新しい Tex の TexLive に対応した FreeBSD の ports の名前は texlive-full。これは全てが入るバージョン。これをインストールしようとすると、2 GiB のファイルをダうンロードし、3 GiB のディスクが必要になるとpkg に言われる。

取捨選択をすれば、もっと絞れるのだが、Tex を長いこと使っていなかったので、新しい環境を学ぶことから始めなければいけない。若干時間が掛かりそうな作業だ。

取り敢えず、texlive-full をインストールしてみて、以前の tex ファイルの処理の結果などを見比べねば。

ニューヨーク近隣は冷え込んでいる2017年03月10日 21時59分21秒

金曜日になって、雪が降っていた。朝起きて、子供が登校の時間には若干積もっていた。芝生や車の上に薄い一層程度。コンクリートの上は融けている。子供達は、芝の上の雪を固めて、投げて遊んでいた。

最近、暖かい日が続いていたが、今日から来週にかけて冷え込む予報。週末も朝は、零下摂氏五度ぐらい。暖かいときでも零度ぐらい。

娘のアトピーに小麦粉は影響は無いようだ2017年03月12日 15時39分06秒

娘の肌荒れが酷いので小麦粉を極力避けてみたが、肌荒れに改善の様子は見られない。小麦粉はあまり影響は無いみたいだ。

月曜日がピザの日となっていたり、誕生日などで呼ばれていったら、ピザやパスタ等避け切れるものではない。完全に断絶するのは、無理だったが、それでも良くもならず、悪くもならずといった感じ。

小麦粉の食品を摂り過ぎると、悪くなる傾向ではあるが、神経質になるほど避ける必要は無いとの結論に達した。

夏時間初日2017年03月13日 15時41分57秒

アメリカで、夏時間の運用が始まった。英語では「Daylight Saving Time」。夏という表現は入らない。また、日の出が早いので、早く起きて夕方日が暮れる前に家に行こうという趣旨だ。

英語で、「Summer Time」と言うと夏の時期を指すので、しっかりと、「Daylight Saving Time」と使い分けたい。

子供達は、通常通りに起きて活動。昼頃にあちこちの時計を一時間進めた。夕方のサッカーの後あと明るいねと会話をしながら帰ってきた。しかし、疲れていたようで、既に新しい九時に就寝。前日の八時に当たる。