[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[fol] Re: why 'dd' is used to make boot floppy instead of 'cp'


unix の仕組みの説明をいろいろしても、なかなか理解が進まないようなので、
MSDOSの世界での説明をしてみます。要は階層が違うということなんですが。

In article <wkwvlhuv46.wl _at_ sun.interq.or.jp> Chihiro Kuroda <kuroda _at_ sun.interq.or.jp> writes:
> > 何がそんなに疑問なのかよくわからないんですが,とりあえず以下のよ
> > うな実験をしてみてはいかがでしょう?
> > 
> > cat /dev/fd0 hoge1
> > cp /dev/fd0  hoge2
> > dd if=/dev/fd0 of=hoge3
> >
> > で,それぞれを cmp します。
> それにいったいどんな意味があるのでしょうか。。
> 
> 別にそれらのコマンドラインによって「ファイルとして異なる」
> ものができるなんてことを言ってはいませんし、場合によっての
> fs上のデータブロックの配置を問題にしているだけですが。。

まずおさらいで、

COPY/B file CON
COPY/B file LPT1:
COPY/B file NUL
COPY/B file \\server\dir\file
COPY/B file A:
それぞれ結果として起こることは違いますが、COPYコマンドの処理としては
ファイルを読んでデータを順に、コピー先のドライバに渡すという
動作は同じで、ドライバの性質によって起こることが違う

ということはいいですよね。

そこで、
BIOSに物理トラック番号、セクタ番号を指定しての読み書き機能があるはず
なので、その機能を使って、
・書きこみに対しては、FDDに入っているメディアの物理的な先頭トラックの
  先頭セクタから順にデータを書いていく
・読みこみも同様に先頭トラックの先頭セクタから読んで行く
・メディアの最終セクタに行く途中でクローズされてもその先のセクタの
 データはそのまま
という機能のドライバを作ったとします。
私には作れませんが、DOSのドライバの知識があれば簡単ですよね。
このドライバのデバイス名をRAWFDとしたとして、

COPY/B file RAWFD

としたらどういうことが起こるか?
unixではそれと同じことが、cp file /dev/fd0 等で起こるということです。

PCのBIOSはFATだのNTFSだのは知りません。それと同じく/dev/fd0の
ドライバはそこに入っているメディアがどのOSで論理フォーマット
(ファイルシステム作成)されてるかは知ったことではありません。

この情報があなたの探していたものかどうか選択してください。
yes/まさにこれだ!   no/違うなぁ   part/一部見つかった   try/これで試してみる

あなたが探していた情報はどのようなことか、ご自由に記入下さい。特に「まさにこれだ!」と言う場合は記入をお願いします。
例:「複数のマシンからCATV経由でipmasqueradeを利用してWebを参照したい場合の設定について」
Follow-Ups: References: