From: Shigeharu TAKENO <shige@iee.niit.ac.jp>
Newsgroups: fj.os.bsd.freebsd
Subject: Re: MSDOS format FD の作成
Date: 02 Apr 2000 16:11:22 +0900
Organization: Niigata Institute of Technology, Kashiwazaki, Japan
Lines: 78
Message-ID: <87bt3t2d0l.fsf@pc98tak.iee.niit.ac.jp>
References: <877levwcmc.fsf@pc98tak.iee.niit.ac.jp> <8bem9r$iur$1@newsjp.mbn.or.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
X-Trace: nissv.cc.niit.ac.jp 954659373 14870 202.243.124.28 (2 Apr 2000 07:09:33 GMT)
X-Complaints-To: ccadmin@iee.niit.ac.jp
NNTP-Posting-Date: 2 Apr 2000 07:09:33 GMT
X-Newsreader: Gnus v5.3/Emacs 19.34
Xref: nissv.cc.niit.ac.jp fj.os.bsd.freebsd:1170

竹の＠新潟工科大 です。いつもどうもお世話になります。

記事 <8bem9r$iur$1@newsjp.mbn.or.jp> において
chi@bd.mbn.or.jp (Chiharu Shibata) さんは書きました:

> >[a] fdformat + dd 
=====
> ddで書き戻したイメージ中のboot signature(先頭から511バイト目)が"55 aa"以外
> ではないですか？

見落としていました。1232 は 0x55aa にしてもだめだったので 1440 で
試すのを忘れていました。強制的に 0x55aa に書き直して mount できる
ことを確認しました。

> 2.2.8R-Rev01では、このsignatureが(PC/ATでの標準値である)55 aa以外のものは
> mountできなくなっており、この問題は3.2R-Rev01で対応しています。

3.3R-Rev01 のソースは、signature のチェックをパスしているようでし
たので (/sys/msdosfs/msdosfs_vfsops.c)、2.2.8R でも安直にそうして
しまうパッチを作りました。

----- ここから (/sys/msdosfs/msdosfs_vfsops.c へのパッチ) -----
diff -rcN msdosfs/msdosfs_vfsops.c.ORG msdosfs/msdosfs_vfsops.c
*** msdosfs/msdosfs_vfsops.c.ORG	Wed Nov 10 23:37:32 1999
--- msdosfs/msdosfs_vfsops.c	Fri Mar 31 14:02:58 2000
***************
*** 509,522 ****
  	if (!(argp->flags & MSDOSFSMNT_GEMDOSFS)) {
  #endif
  #ifdef PC98
! 		if ((bsp->bs50.bsBootSectSig0 != BOOTSIG0
! 		    || bsp->bs50.bsBootSectSig1 != BOOTSIG1)
! 		    && (bsp->bs50.bsBootSectSig0 != 0       /* PC98 DOS 3.3x */
! 		    || bsp->bs50.bsBootSectSig1 != 0)
! 		    && (bsp->bs50.bsBootSectSig0 != 0x90    /* PC98 DOS 5.0  */
! 		    || bsp->bs50.bsBootSectSig1 != 0x3d)
! 		    && (bsp->bs50.bsBootSectSig0 != 0x46    /* PC98 DOS 3.3B */
! 		    || bsp->bs50.bsBootSectSig1 != 0xfa)) {
  #else
  		if (bsp->bs50.bsBootSectSig0 != BOOTSIG0
  		    || bsp->bs50.bsBootSectSig1 != BOOTSIG1) {
--- 509,516 ----
  	if (!(argp->flags & MSDOSFSMNT_GEMDOSFS)) {
  #endif
  #ifdef PC98
! 	        /* modified by shige 03/31 2000 */
! 		if ( 0 ){
  #else
  		if (bsp->bs50.bsBootSectSig0 != BOOTSIG0
  		    || bsp->bs50.bsBootSectSig1 != BOOTSIG1) {
----- ここまで (/sys/msdosfs/msdosfs_vfsops.c へのパッチ) -----

> PC-98のMS-DOSは1.44MB FDについて、読み込みの際には55 aaを受け入れるのに、
> format時は何故か55 aaではない値を書き込むようです。

私のところでは "68 be" でした。

> このせいで「boot signatureは55 aaである」と信じているいくつかの環境におい
> て、PC-98でformatした1.44MB FDを読ませることができません。

なるほど、これは恐いことですね。よくわかりました。1.44MB format 
FD を作るときは dd は使わない方が良さそうですね。どうもありがとう
ございました。ということで [a] は次のように修正です。

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

*1) 98 の MSDOS で format した 1440 FD はそのままでは mount でき
ないが、/sys/msdosfs/msdosfs_vfsops.c にパッチを当てれば可能。

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