From: Shigeharu TAKENO <shige@iee.niit.ac.jp>
Newsgroups: fj.os.bsd.freebsd
Subject: MSDOS format FD の作成
Date: 22 Mar 2000 18:57:47 +0900
Organization: Niigata Institute of Technology, Kashiwazaki, Japan
Lines: 202
Message-ID: <877levwcmc.fsf@pc98tak.iee.niit.ac.jp>
NNTP-Posting-Host: pc98tak.iee.niit.ac.jp
Mime-Version: 1.0 (generated by tm-edit 7.106)
Content-Type: text/plain; charset=ISO-2022-JP
NNTP-Posting-Date: 22 Mar 2000 09:56:02 GMT
X-Newsreader: Gnus v5.3/Emacs 19.34
Xref: nissv.cc.niit.ac.jp fj.os.bsd.freebsd:1089

竹の＠新潟工科大 です。PC9821Xs + FreeBSD(98)2.2.8R-Rev03 での、
MS-DOS フォーマットのフロッピーの作成に関する報告と質問です。長く
て申し訳ありません。

以前 FreeBSD(98)2.2.1R-Release で、MS-DOS フォーマットのフロッピ
ーを作るときは、fdformat した後で、dd であらかじめ保存しておいた
MS-DOS フォーマットのフロッピーのディスクイメージを dd で書き戻す、
という方法を取っていました。しかし、現在はそれで 1.44MB のフロッ
ピーを作ると FreeBSD 上での mount (mount_msdos) がうまくいかなく
なっています。

そこで、いくつかの方法を試してみました。

[a] /usr/sbin/fdformat + dd によるディスクイメージの書き戻し
[b] /usr/sbin/fdformat + /sbin/newfs_msdos 
[b-2] /usr/sbin/fdformat + /usr/sbin/mkdosfs
[c] /usr/sbin/fdformat + mformat (mtools-3.9.1)
[c-2] /usr/sbin/fdformat + mformat (mtools-3.6)

そして、これらで作ったフロッピーに対して、FreeBSD、MS-DOS での以
下のようなアクセスを試しました。

(1) FreeBSD: /sbin/mount -t msdos によるマウント (と cp 等)
(2) FreeBSD: mtools (mcopy,mdir 等)
(3) MS-DOS: dir, chkdsk 等の通常のアクセス

これらを、640,720,1200,1232,1440 のサイズのフロッピーに対して行っ
た結果を後につけます。

とりあえず [b] newfs_msdos でやれば一応なんとかなるのですが、この
ようになるのは私のところだけでしょうか。後の結果の *1),*4),*5) が
うまくいかないのは原理的なものでしょうか。もしうまくいく方法をご
存知でしたらお知らせください。


==== 環境 ==== 
OS  : FreeBSD(98) 2.2.8R-Rev03
本体: PC9821Xs/C8W (CPU 486DX2 66MHz, memory 80MB) 
FDD : 標準 3 mode FDD
      (fdc0 at 0x90-0x97 irq 11 drq 2 on isa; fd0: 1.44M FDD)


==== フォーマット時に使用したコマンドのオプション等 ====
fdformat:
・/usr/sbin/fdformat /dev/rfd0.[size] 
([size]=640,720,1200,1232,1440)

newfs_msods:
・/sbin/newfs_msdos -f [size] fd0.[size]
  ([size]=720,1200,1440)
・/sbin/newfs_msdos -S 512 -c 2 -r 1 -n 2 -e 112 -s 1280 \
    -m 0xfb -a 2 -u 8 -h 2 fd0.640
  (640 のみ)
・/sbin/newfs_msdos -S 1024 -c 1 -r 1 -n 2 -e 192 -s 1232 \
    -m 0xfe -a 2 -u 8 -h 2 fd0.1232
  (1232 のみ)

ただし、以下のパッチを当てれば 640,1232 も -f でサポートできます

----- ここから (/usr/src/sbin/newfs_msdos/ での差分) -----
diff -rcN newfs_msdos/newfs_msdos.c.ORG newfs_msdos/newfs_msdos.c
*** newfs_msdos/newfs_msdos.c.ORG	Wed Sep 30 02:44:20 1998
--- newfs_msdos/newfs_msdos.c	Mon Mar 20 10:30:37 2000
***************
*** 30,35 ****
--- 30,39 ----
  	"$Id: newfs_msdos.c,v 1.4.2.1 1998/09/29 17:44:20 obrien Exp $";
  #endif /* not lint */
  
+ /* modified by shige 03/20 2000 */
+ /* #undef PC98disk */
+ #define PC98disk
+ 
  #include <sys/param.h>
  #include <sys/stat.h>
  #include <sys/diskslice.h>
***************
*** 167,174 ****
--- 171,184 ----
      {"180",  {512, 1, 1, 2,  64,  360, 0xfc, 2,  9, 1}},
      {"320",  {512, 2, 1, 2, 112,  640, 0xff, 1,  8, 2}},
      {"360",  {512, 2, 1, 2, 112,  720, 0xfd, 2,  9, 2}},
+ #ifdef PC98disk
+     {"640",  {512, 2, 1, 2, 112, 1280, 0xfb, 2,  8, 2}},    
+ #endif
      {"720",  {512, 2, 1, 2, 112, 1440, 0xf9, 3,  9, 2}},
      {"1200", {512, 1, 1, 2, 224, 2400, 0xf9, 7, 15, 2}},
+ #ifdef PC98disk
+     {"1232", {1024,1, 1, 2, 192, 1232, 0xfe, 2,  8, 2}},    
+ #endif
      {"1440", {512, 1, 1, 2, 224, 2880, 0xf0, 9, 18, 2}},
      {"2880", {512, 2, 1, 2, 240, 5760, 0xf0, 9, 36, 2}}
  };
diff -rcN newfs_msdos/newfs_msdos.8.ORG newfs_msdos/newfs_msdos.8
*** newfs_msdos/newfs_msdos.8.ORG	Wed Sep 30 02:44:20 1998
--- newfs_msdos/newfs_msdos.8	Mon Mar 20 10:34:53 2000
***************
*** 98,104 ****
  Number of root directory entries (FAT12 and FAT16 only).
  .It Fl f Ar format
  Specify a standard (floppy disk) format.  The eight standard formats
! are (capacities in kilobytes): 160, 180, 320, 360, 720, 1200, 1440,
  2880.
  .It Fl h Ar heads
  Number of drive heads.
--- 98,104 ----
  Number of root directory entries (FAT12 and FAT16 only).
  .It Fl f Ar format
  Specify a standard (floppy disk) format.  The eight standard formats
! are (capacities in kilobytes): 160, 180, 320, 360, 640, 720, 1200, 1232, 1440,
  2880.
  .It Fl h Ar heads
  Number of drive heads.
----- ここまで (/usr/src/sbin/newfs_msdos/ での差分) -----

mformat:
・mformat [drive]:
  ([drive]=a,c,d,e)
・mformat -M 1024 -c 1 -r 6 b:
  (1232 のみ)

使用している mtools.conf は以下の通りです。
----- ここから (mtools.conf) -----
#'A' 1.44M
drive a: file="/dev/rfd0.1440" exclusive fat_bits=12 
  cylinders=80 heads=2 sectors=18

#'B' PC98 2HD
drive b: file="/dev/rfd0.1232" exclusive fat_bits=12 blocksize=1024
  tracks=77 heads=2 sectors=8

#'C' 2HC 1.2M
drive c: file="/dev/rfd0.1200" exclusive fat_bits=12
  tracks=80 heads=2 sectors=15

#'D' 720K
drive d: file="/dev/rfd0.720" exclusive fat_bits=12
  tracks=80 heads=2 sectors=9
  
#'E' 640K
drive e: file="/dev/rfd0.640" exclusive fat_bits=12
  tracks=80 heads=2 sectors=8
----- ここまで -----
ただし、mtools-3.6 では B: の "blocksize" を "buffsize" としてい
ます。また、mtools は、3.6, 3.9.1 とも小金丸さんの PC98 2HD のた
めのパッチを当てています。


==== 実験結果 ====
[a] fdformat + dd 
    disk  |1440|1232|1200| 720| 640
----------+----+----+----+----+----
(1) mount | × | ○ | ○ | ○ | ○ *1)
(2) mtools| ○ | ○ | ○ | ○ | ○ 
(3) MSDOS | ○ | ○ | ○ | ○ | ○ 

*1) 1.44MB フロッピーは mount できないが、MS-DOS 上でフォーマット
したディスクも mount できなかったので、dd の問題ではなさそう。

[b] fdformat + newfs_msdos *2)
    disk  |1440|1232|1200| 720| 640
----------+----+----+----+----+----
(1) mount | ○ | ○ | ○ | ○ | ○
(2) mtools| ○ | ○ | ○ | ○ | ○
(3) MSDOS | ○ | ○ | ○ | ○ | ○

*2) newfs_msdos は -f では 1232,640 をサポートしていないので、細
かくオプションを指定して実行するか、パッチを当てる必要あり。

[b-2] fdformat + mkdosfs *3)
    disk  |1440|1232|1200| 720| 640
----------+----+----+----+----+----
(1) mount | ○ | -- | ○ | ○ | --
(2) mtools| ○ | -- | ○ | ○ | --
(3) MSDOS | ○ | -- | ○ | ○ | --

*3) mkdosfs は newfs_msdos に置き換えられたコマンドであるが、
2.2.8R には一応残っている。ただし 1232,640 はサポートしていない。

[c] fdformat + mformat (3.9.1)
    disk  |1440|1232|1200| 720| 640
----------+----+----+----+----+----
(1) mount | ○ | ○ | ○ | ○ | ○ 
(2) mtools| ○ | ○ | ○ | ○ | ○
(3) MSDOS | ○ | × | ○ | ○ | × *4)

*4) mformat でフォーマットしたものは MS-DOS でのアクセスができな
くなっている。

[c-2] fdformat + mformat (3.6)
    disk  |1440|1232|1200| 720| 640
----------+----+----+----+----+----
(1) mount | ○ | ○ | ○ | ○ | ○ 
(2) mtools| ○ | ○ | ○ | ○ | ○
(3) MSDOS | ○ | × | ○ | ○ | × *5)

*5) *4) と同様。

+=================================================+
 竹野茂治   〒945-1195 新潟工科大学 情報電子工学科 
 shige@iee.niit.ac.jp      TEL(&FAX): 0257-22-8161 
+=================================================+
