ディスクイメージファイルの作成について FAT12 - HobbyOSs/opennask GitHub Wiki

OS自作をする際には、フロッピーディスクに情報を書き込むのが常道らしい(他の形式は面倒だから?)。
そこで、FAT12のディスクイメージファイルを作る必要が出てくる。

FAT12の仕様

FATファイル・システム仕様書 by Microsoft (FATの理解・実装に必要な唯一のリファレンス)
FATファイル・システム概要 (↑を読むためのガイド)
FATファイル システムのしくみと操作法

FAT12のファイル構造を作成できるライブラリ

  • FatFs
    とてもよくできたライブラリ。FATボリュームを作成できる(←これがほしい)。
    SDファイルなどの組み込み用途での使用が多そうです。下位レイヤへの書き込み・読み込みは自分で実装する必要がある。

  • fatlib
    小さなC言語製のライブラリ。FATボリュームの読み込みには強いが、作成はできない。

  • mtools
    GNU謹製ライブラリ。鶏を割くに焉んぞ牛刀を用いん。

  • mkfs
    Linux上ならば普通はこのコマンドを使用するだろう(その場合DOS上での動作が保証できない)。

  • mkdosfs
    とりあえずこれを使えば新規で指定したファイルを作成できそうである。

ddとmkfs

Loopback Device

$ mkdosfs -C -F 12 ./floppy.img 2880
$ mkdosfs -C -F 12 -s 128 -S 512 ./floppy.img 2880
Floppy Disk Images With FAT12
The steps mentioned below will be useful for the BrokenThorn Entertainment tutorials
Create an empty image.
$ dd if=/dev/zero of=floppy.img bs=512 count=2880
Set it up for mounting.
$ losetup /dev/loop0 floppy.img
Format it to FAT12.
$ mkdosfs -F 12 /dev/loop0
Mount!
$ mount /dev/loop0 /mnt -t msdos -o "fat=12"
Unmount
$ umount /mnt
Destroy loopback device
$ losetup -d /dev/loop0

osaskとの関係

河合氏は、ここにおいても独自ツールを作っている。