旧ネジ位置に対応したディスクは、一年前くらいは普通にみかけたのに、最近では少ない。秋葉原でPCショップを15軒ほど回ってみたけど、新品を売っているショップは二軒しかみつからなかった(DOS/VパラダイスとOverTop。なお、TwoTopにはなかった。)。
とりあえず、まだ売っているうちに、いくつか買っておくことにした。
購入したのは、次の二つで、いずれも日立製、新ネジ及び旧ネジの両方の位置に穴が空けてある。この程度なら、どのメーカーもしてくれればいいのに、ちょっと高くなるからなんだろうか。
ところで、こう書くと連日秋葉原にいってるみたいですが、実際のところ6/5 は19:45、6/6は18:15にしか行けなかったので、滞在時間は短くって、効率が 悪いだけの話です。
ハードディスクは黒いプラスチックのフィルムのようなもので覆われているの で、これを少しめくって、ハードディスクからコネクタ(信号ケーブル)を外す。 ちょっと固いかもしれないけど、これを外さないとどうしようもないので、注 意しながら力を入れて並行に(ピンを曲げないように)外す。
買ってきたディスクを入れて、コネクタをつないで、ネジを閉めて、カバーを 閉じればできあがり。なのだが、ちょっと本体裏面とのあいだにすきまがある し、元のディスクは絶縁用か帯電防止用か私には分からないけど、なにかのフィ ルムにおおわれているので、これをつけてあげたいところ。
まず、秋月電子で買った帯電防止用(?)の黒いゴムシート(裏は両面テープが 貼ってある)。厚さは1mmよりちょっと薄いくらい、値段は100〜200円くらいだっ た気がする。使い方を尋ねたら、半田が固まったあと基盤に張ってくださいと いわれたので、これをハードディスクの基盤(の裏面)に貼っても大丈夫に違い ない。ただ、両面テープをべったり張るのはなんとはなしに嫌な気分なので、 ハードディスクとの間に帯電防止用の袋(よく拡張ボードなんかを入れてるあ れ。今回は秋月の近くにあった千石電商というお店で10枚入りを145円で買っ た。)を入れて、直接テープを貼る面積を抑えることにした。元のディスクで もそんな感じで、フィルムが貼ってあるし。でも、このシートとか袋って熱く なっても大丈夫なんだろうか。La13って長時間使ってると、全体的に熱を帯び て、ハードディスクのまわりも結構あったかくなってるからなあ。ちょっと不 安。無人で24時間動かしたくはないなあ。
とりあえず、はさみでハードディスクに合わせた形に切った(もちろんネジ穴 の位置の部分も)。このF-55-Aはなぜか(?)ディスクにピッタリのサイズで、 袋の折り目がハードディスクの角と丁度同じになって便利便利。両側にも垂ら しておく。
ゴムシートの大きさも、ほとんどピッタリ。だけど、少しはみでるだけで、ディ スクがはまらなくなるので、丁度の大きさに切る。
ゴムシートのフィルムを剥して、切り取った導電防止袋にベったり貼った。が、 このままでは、シートがハードディスクに固定されていないので、本体にうま く入れられない。シートがちょっとぶあついので、本体のディスク格納部分と の摩擦でハードディスクからずれてしまう。やっぱりディスクにシートの一部 を直接くっつける必要がありそう。袋を少しはがして、切り取って、シートの 一部をディスクにくっつけた。本当はハードディスクに直接シートをくっつけ るなら、あらかじめ袋に「穴」をあけておいた方が楽だし、きれいにできると 思う。今回はなんとなく、直接貼るのがためらわれたので、こういう手順になっ てしまった。うーん、シートをある程度ハードディスクに貼らないと、摩擦で ディスクが入れられないじゃないかー。
ふう。なんとか収まった。コネクタを付けて、カバーをして、ネジを閉めてと。 ほんとは、帯電防止袋は余分だったのかも。。。耐熱性が不安だけど、しばら くこれで使ってみることにする。
というわけで、新しいディスクを古いディスクに戻して、泥縄にバックアップ をはじめる。なんか、コネクタが痛みそうで恐い。
Linux パーティションについては、問題ない。UNIX(Linuxを含む)では物理的 なドライブと論理的なパス名は独立している。だから、基本的には、普通に tarでバックアップをとって、新しいディスクで書き戻すだけでいいだろう。 パーティションの位置や構成が変わって、変更の必要があるのは、物理的なド ライブと論理的なパス名を対応づける /etc/fstab だけくらいのはず。
問題はWindows95。まず、La13にはWindowsのシステムが入った CD-ROM やバッ クアップ用 CD-ROMがない。かといって、フロッピィ何十枚も用意して、バッ クアップをとるのは嫌だし、フロッピーが壊れていたら面倒なことになる。ま た、Windowsのバックアップを使って qic ファイルを作ると、復元にも Windowsが必要なので、ちょっと扱いづらい。では Linux からFATをマウント してtarでバックアップすればいいかというと、不安。LinuxでVFATかMSDOSファ イルシステムでFATパーティションをマウントして、tarを使った時の日本語ファ イル名がどうなるかをよく知らないのだ。LinuxにVFAT の日本語パッチとかも 当ててないので、正常に復元できるかちょっと恐い。さらに、Windows のパス 名には A: とかドライブ名がまじるので、どのみちパーティション構成が変わ ると、単純に tar で書き戻しただけでは、きちんと動いてくれるかどうかわ からない。多分、変になるだろう。やっぱり、元通り、A:ドライブとして使わ ざるをえないと思う。
そこで、今回はディスクの先頭から 640M バイトを MO へベタに dd で書き出すことにした。
# dd if=/dev/hda of=/dev/sda
ここで、hda が本体内蔵HD、sdaが640 MO。 逆にすると大変なことになるので、注意する。
ん?待てよ。FAT をマウントして、df でみると(マウントせず fdisk98 /dev/hda でもオッケー)、どうも FAT だけでも、640 M を超えてるっぽい。これじゃ、駄目だ。
うーん、仕方ない。時間がかかるけど、ディスクまるごと、ベタなイメージを圧縮して保存することにしよう。
# mke2fs -b 2048 /dev/sda
でMOをまるごと ext2 でフォーマット。ここで -b 2048は、640M バイトのMOは 512Mまでと違い、セクタサイズが 2048 バイトだから、そのおまじない。 230M とか 512M の MO なら -b 2048 は不要。
# mount -t ext2 /dev/sda /mnt
で、フォーマットしたMO をマウントして、ディスクイメージをバックアップ する。バックアップをしている間、間違っても、別の操作をしてはいけない。 ホントはシングルユーザモード(init 1 としてみよう)に移行しないとだめで、 デーモンとかも走らせちゃだめなんだけど(そうでないとディスクイメージの 整合性が保証されない。つまり、バックアップの意味がなくなる。)、シング ルユーザモードに移行するとPCMCIAサービスが止まってしまって、MOにアクセ スできなくなったので、やっぱやめ。とりあえず、マルチユーザモード(普通 に起動すると、こうなっている)で、何も考えず、ディスクイメージを保存し て、さらに、Linux パーティションについては、 tar.gz 形式で、必要なディ レクトリだけ念のためバックアップすることに決めた。DOSパーティションに ついては、マウントしてないので大丈夫だ。もっといいのは、インストールに 使用した PCMCIA の使えるフロッピーディスクから起動して、ハードディスク は一切マウントせずにこの操作を行うこと、これなら安心である。
# dd if=/dev/hda | gzip -6 -c > /mnt/diskimg.gz
dd が /dev/hda (ハードディスク)の内容をそのまま読み込んで、標準出力に 出す、それを、gzip が圧縮して標準出力に出す(-c オプション)ので、リダイ レクトしてMO 上のファイル diskimg.gz に書き込むことになる。 -6 という のは、gzip の圧縮速度と圧縮効率のトレードオフを指定するオプションで、- 9とかすると、一番縮むけど、時間がかかりそうなので、適当に-6にした。も しかすると、これがデフォルトかな?この作業は単純な入出力だけじゃなくて CPUも使うので、そのうち放熱用のファンが回り出した。
なお、この作業には、僕の場合、1時間ちょっとかかりました。気長に待ちましょう。 ちなみに、実行時間を測定したいなら、
# /usr/bin/time dd if=/dev/hda | gzip -6 -c > /mnt/diskimg.gz
としましょう。
次にLinuxパーティションをバックアップ。といっても、必要なものだけに限 定。/home, /etc/, /var, /root, /usr/src, /vmlinuz くらいかな?僕は基本 的にディストリビューションをそのまま使っていて、自分でソフトを追加する 時は自分のホームディレクトリとかにインストールしてしまう。どうせ、個人 でしか使わないんだし、/usr/local も /home も同じパーティションになって るので。。 新しい MO に入れ替えて、/mnt にマウントして、
# (cd /; tar cvfp - /home /etc /var /root /usr/src /vmlinuz) | (cd /mnt; tar xvvfp - )
とすれば、ツリーが(選択したディレクトリについて)そのままの形でMOにコピーされます。
2Gくらいのディスクを積んだ 98 だと、最初からパーティションが二つ用意されているので、使われていない方に Linux を入れれば、それですむ。でも、La13の場合は、1.3Gのディスクが丸ごと FAT になっていたので、そうはいかない。一つの手はFATのバックアップをとって、ディスクをフォーマット、新たにパーティションを三つ確保して(FAT + Linux ext2 + Linux swap)、Linux をインストール、Windows をバックアップから復元するという手順だが、いかにも面倒くさい。
AT互換機ならフリーの FIPS とか、商用のパーティションマネージャソフトとか売ってるので、それを使って、FATを分割するという手がある。98でもそういうソフトはありそうなもんだけど、僕はまだみたことがない。そこで自作することにした。 fdisk98にFATパーティション分割機能を実装しようとしたのは、極めて個人的な理由なのです。
パーティション情報というのは、ディスクの先頭にあるパーティションテーブルに収められている。これは 98 も AT も一緒だが、形式は違う。だから FIPS は適用できないはずだ。あと、FAT の中にもパーティションの大きさとかに関する情報がある。これは 98 でも AT でも同じはず(と信じて、実装したのだが、これで大丈夫なんだろうか)。
さて、FAT の構造を勉強すると、すぐわかるのだが、FAT パーティションは分 割というか縮小するのは、簡単である(その逆、つまり、拡大はわりと面倒)。 もちろん 、縮小後のサイズより大きな容量を既に使っていたら、だめですよ。 あと、分割前はデフラグメントツール(Windowsのdefrag)とかをかけておいて、 ハードディスクの中のデータの断片をディスクの先頭にまとめておいた方が、 より大幅に縮小できるようになるのは、原理的に当然だろう。
それで、まあ、実験台に使ったディスク(実は、このディスクは日常使ってい るディスクでもあるという、たいへん恐ろしい状況だったんだけど)の管理情 報を壊したりしながら、縮小機能を実装して、このfdisk98をPlamo Linux/98 のインストール用起動ディスクイメージに入れこんでやって、Plamo Linuxを インストールした。
それで、普通に使えていたのだが、実はこの実装にはバグがあって、時限爆弾 状態になっていた。というのは、パーティションを縮小する際に、ディスクの パーティションテーブルとFAT内の管理領域とで、矛盾した情報になっていて、 Windows95からみると、FAT領域の最後の方が、実はその直後に確保してある Linux ext2 と重なっていたのだ。そこで、FATを目一杯使った瞬間、Windows は、僕のLinux ext2パーティションの先頭部分に書き込んでしまい、ブートブ ロック、最初のスーパーブロックそして、若い(数字でいうと小さい)inodeが 失なわれてしまった。すると、もうさっぱりで、fsck -y とかやって回復させ ると、/ とかの情報がなくなって、/直下にあるディレクトリは全て /lost+found 行き。なんとか、手で復活させたけど、一瞬青ざめました。
とりあえず、ext2領域をバックアップして、一旦、ext2 と swap を削除する。 それから、FAT領域の後に、数Mバイトを何も使わず(パーティションも確保せ ず)空けておいて、そこから Liunx ext2 と Linux swap 領域を確保して、 Linux を復元させました。
実は、この機能はアスキーのDOSの黒本と、適当に実際のディスクを解析しただけで作ったものだったので、かなりいい加減なんですね。やっぱ、MSDOS ファイルシステムのソースとか FIPS のソースとかを、きちんと読んで、作らないと駄目かなあ。
お、ここで、いや、本当に、丁度 dd が終わった。
29.18user 420.05system 1:12:30elapsed 10%CPU
ファイルサイズは、ls -l /mnt/diskimg.gz と、げ、
614,328,320バイト
じゃないか。かなり、ぎりぎり。 本当は DOS パーティションだけということで、先頭の 700M くらいだけにしておいてもよかったかも。ま、結果オーライ。次に MO を入れ替えて、Linux パーティションのバックアップを開始する。 これは、結構すぐ終わった。今度こそ、ディスクを取り換えて、さあ、中身を入れよう。
# fdformat /dev/fd0h1440
で、2HDディスクをフォーマット。幸い Plamo Linux/98 1.4.1 のインストール用起動ディスクイメージがハードディスクの中にあったので、それを書き込む
# dd if=98pcmcia.img of=/dev/fd0
それにしても、インストール用ディスクで PCMCIA が使えるのは、楽なので、有難い。ありがとうございます>こじまさん
ありゃ、フロッピーディスクのCRCエラーが発生。Linux/98のフロッピーディスクドライバってエラーメッセージがではじめると、なかなか止まらない(本家でもそうだっけ?)。最近、エラーが起こるフロッピーが多いんだけど、フロッピーってこんなに壊れやすいものだったっけ?とりあえず、別のディスクで同じことをもう一度やってみる(今度はデバイス名を、一応 fd0h1440 にしてみた、でも、動作の違いは最初のディテクトだけなので、結局同じはずなんだが)。 やっぱりだめ、エラーが出て書き込めない。
悔やしいけど、再起動してEPSON MS-DOS 6.2を起動。すると、このフロッピー、不良セクタもなくフォーマットできて、起動ディスクイメージファイルも書き出せる。うーん、なんかこの PC-486NAT だと、フロッピーディスクドライバの動作が今ひとつ(ごめん>藤田さん)(というより、自分でなんとかしろって。)
さて、La13にフロッピーディスクドライブを装着して、PCMCIA SCSIカードにMO ドライブとCD-ROMドライブをつないで、このフロッピーを入れて、起動。おお、起ち上がるぞ。やっぱり、ちょっとハードディスクの音が違う。rootでloginしてfdisk98を起動すると、よしよしちゃんと未フォーマットである旨、警告が出るじゃないか。fコマンドで論理フォーマット。しかし、この否定の問いかけに対するy/nの選択って、日本人の感覚で作ってしまってるな。
dd も gzip も使えることを確認。よしよし。 fdisk98 で Linux ext2 のパーティションをダミーで確保して、 一旦、リブートする。CTRL+GRPH+DEL。
フロッピーから再起動したら、setupを選ぶつもりだったけど、 あれ? PCMCIA が使えてるやん。うーん、この辺、なんか遠回りやってるな。
# df
で /mnt や /var/adm/monunt に何もマウントされていないことを確認。されていたら umount で外しておくこと。MO ドライブにディスクイメージをバックアップした MO を入れて、
# mount -t ext2 /dev/sda /mnt
# cd /mnt
# gzip -dc diskimg.gz > /dev/hda
で、元のハードディスクの内容を、新しいディスクにそのままコピーする。 ファンの音にかきけされて、ハードディスクのアクセス音が聞こえない。なかなか静かなハードディスクみたいだ。 ところで、このあたり、シェルがまともに BackSpace を受け付けてくれないみたいなので、タイプミスのないように注意すること。
お、終わった?げっ!
gzip: diskimg.gz: unexpected end of file
あらー、ぎりぎり収まったと思っていたら、やっぱり、駄目で途中で切れていたのね。。。でも、FAT については、まあ大丈夫なはずだから、よしとする。
とりあえず、フロッピーディスクを抜いて、リブート。お、ちゃんと、固定ディ スク起動メニューも起ち上がる。Windows95は、、、無事、起動!こころなし か、速い気がする(容量が大きなディスクになったんだから(短絡的な表現だが)、 速くなったという思い込みがある)。 Linuxもブートはしたけれど、fsckが起きて、やっぱりちょっと不安。 X も起動するけれど、一沫以上の不安が残る。
さて、もちろん、これでは、元の状況になっただけである(正確にいうと、今回はディ スクイメージを全部復元できなかったので、元の状況の一部が復活しただけ。)。 ハードディスクにはあと、3G の残りがあるわけだけど。本当は このうち 1.5G を Linux用に確保して、CD-ROM からPlamo Linuxをインストールするつ もりだったけど、もう3時を30分以上、回っているので、明日会社があることを思い 出して、寝ることにする。おやすみなさい。
おやすみなさいと、ディスクイメージの復元中に書いたいたんだけど、この時 は、元の状態を復活できるはずと信じていたからで、結局、Linuxパーティショ ンは復活していないと想像されるので、やっぱ、Plamo Linux 1.4.1 をインス トールすることにする。
フロッピーディスクドライブにインストール用ディスクを入れて、FATはその ままにして、ext2 と swap を削除。先頭のFATの次に226Mのダミーパーティショ ンをext2で確保して、それから1.5Gのパーティションを確保(ここには、後で Windows95を入れる予定)、最後の1.5Gを Linux swap と ext2 (この順にした のは、空き容量の計算が面倒だったから)を確保してリブート。無事 Linux と Windows95 をそれぞれ 1.5G のパーティションに入れたあかつきには、先頭の 二つのパーティションを合体させて、1G の ext2 パーティションとして使う 予定。さて、fdisk98で設定が終わったら、wして、reboot。
あとは Plamo Linux のインストーラの setup を実行する。 面倒なので、お勧めパッケージを選ぶ。楽ちん楽ちん。 でも、容量が大きいと、こうやって、つい手抜きをするから、すぐに食い潰すんだろうな。数百Mしかなければ、カスタムで、ぎりぎりまで絞り込むはずだろうに。 この文書を読み返しているうちに、インストールが終わった。楽だ。でも、現在4:10。 ハードディスクからリブートしてみる。 固定ディスク起動メニューは、各パーティションをきちんとみれてるみたい。 grubから無事、Linuxが起ち上がった。 えらいえらい。 /etc/passwd, /etc/group を書き戻して、/home/pessi や /usr/src を MO から書き戻した。 ん?シャドウパスワードなので、/etc/passwdを書き戻しただけでは、駄目みたい。/etc/shadowも必要。 ありゃあ?なぜか、/home/pessi/.ppxp/ は、正常にバックアップされていない。不安だ。ほかにも、おかしいところがあるのだろうか。 と、この時点で、La13に乗り換えて、このファイルを編集している。 ~/.ppxp/ は、別のバックアップから持ってきた。 無事 PPP 接続できて、メールもとってこれる。 心なしか、速くなった気がする。 外にメールも出せることを確認。 とりあえず、今日は不器用な僕にしては、順調だった。 満足して今度こそ、寝る。でも、外は既に白んでいる。3時間くらいしか睡眠時間がないので、明日はしんどうそうだな。。
そこで、会社に持っていってる、今度 Linux + Oracle に使おうと思ってる、デスクトップPCのハードディスクとして使うことにした。このデスクトップPCは、今日、買ったばかりの ATAPI CD-R ドライブと 500M ちょっとの IDE HD をつなげて、RedHat 5 を入れてみたんだけど、やっぱ容量的にきつい。でも、どうも secondary の IDE/ATAPI インターフェースがないようなので、この 500M のディスクと交換することにする。
もちろん、2.5インチなので、そのままでは使えない。OverTop で今日買っておいた、 2.5インチと3.5インチハードディスクのコネクタの変換ソケット(マウント付き)を使うつもり。値段は税込み1,680円だった。
まだ、イメージの復元が済んでいないので、書き続けているんだけど(この部分は先読みならぬ先書きしてるんです)、最初、OverTop で 6G の 3.5 インチIDE HD をこのデスクトップのために買おうとしたら、店員さんに、大丈夫ですか?って言われて、よく考えると、E-IDEだけど、もう5年くらい前のATなので、4G超は駄目ということに気がついてやめた。4Gのを買おうかと思ったけど、質問したら、まだATXじゃなくてATのマザーボードも売ってるらしいので、マザーボードを交換してもいいなと思って、とりあえず 4G のディスクは買わないことにした。実は、その時に、今、交換している 1.3G の2.5インチのディスクを流用することに決めたんだけど。
で、このデスクトップにはCD-ROMドライブがついてないので、さきざき不便だろうと思って、CD-ROMドライブも買うことにした。
このお店だと、一番安くて、 6,000円くらい。別の店で 4,000円くらいのをみ ていたので、どうしようかな?と思ったんだけど、ふと横をみると、CD-R の ドライブが 21,000円くらいで売っているじゃない。もう数千円だせば、CD-RW もあるけど、これはいらないや。というわけで ATAPI CD-R ドライブを買った。 買う時に、店員さんに、486マシン(時代のマザーボードは古いので)、(ATAPI というかCD-Rドライブが)使えないと思いますよと、さんざん、おどされた。 いや、親切というべきだろうけど。この店は、店員さんに結構知識がある人が 多いので好きだ(旧ネジタイプの2.5インチハードディスクの厚さは1種類しか ないと教えてもらったのも、この店だったと思う。)。その辺が、PCショップ の多い秋葉原でも、いつもかなり混んでいる理由なのかもしれない。IDE と ATAPI とは違う規格なんですよと言われるのを、そんなこと知ってるよと内心 思いつつ(嫌な性格だなあ。でも、その解説が結構きちんとしてるのには敬服 しました。)、神妙に聞きながら、E-IDE も使えるし、多分、大丈夫なはずと 踏んで、買った。それでも、Linuxをブートする時に hdb に CD-ROM ドライブ が検知されて、マウントできたのは正直言ってうれしかったですが。あと、店 員さんに言われたのは、Pentium以上じゃないと、きちんと書きこめないんじゃ ないかということで、これはもっともな話。でも、今さら、CD-ROMドライブを 持ってたって、あんましうれしくないし、当分はCD-ROMドライブとしてしか使 えなくても、将来のことを考えて、CD-Rドライブにしました。
この項はこれでおしまい。
ところが、Windows95のfdiskではアクティブに設定できるパーティションが四つまでという制約があるらしく、FAT32のパーティションを使用可能にできない。こういう制約って DOS の FORMAT.EXE の時からあったのかな?
不便なので、fdisk98 の機能を拡張し、パーティションの状態(BOOT可/不可, Active/Sleep) の表示・変更を行えるようにした。今までできなかったのは、 単なる手抜きによる、ほとんどバグというべき仕様だなあ。 これをバージョン2.3として公開した。
ちなみに、Linux で使う / や swap などのパーティションは(少なくとも swap は)、 スリープでも問題ないのだけれど、 Windows95 の fdisk では他の OS のパーティション情報を変更することはできないので、 Linux swap のパーティションをスリープにして同時にアクティブなものを四つにするという逃げ方もできない。