sfsboot.bin フロッピーイメージを作成する手順

2005/11/19 更新

 この文章では sfsboot.bin を作る手順について説明します。

行った環境

必要なもの

 nasm と gcc-2.95 をインストールします (gcc バージョン 3/4 では EOTA ソースのコンパイルに失敗します。Linux用EOTAクロス開発環境の i686-pc-eota-gnu-gcc ではできると思いますが、手順が煩雑になります)。私は Debian を使っているので apt-get でインストールしました。

# apt-get install gcc-2.95 nasm

で良いと思います。Linux 標準の gcc と gcc-2.95 は共存できます。
 nasm の version は

$ nasm -v

で確認できます。私の環境では

NASM version 0.98.38 compiled on May 17 2005

と表示されました。

 gcc の version は

$ gcc --version

で確認できます。私の環境では

gcc (GCC) 3.3.5 (Debian 1:3.3.5-13)
Copyright (C) 2003 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

と表示されました。

 gcc-2.95 の version は以下のようになりました。

$ gcc-2.95 --version
2.95.4

作業

 適当なディレクトリで EOTA のソースを解凍します。

$ tar xvzf eota-current.tar.gz

 ディレクトリを移動し、make をします。

$ cd eota/sfsboot
$ make CC=gcc-2.95

 カーネルの make をします。

$ cd ../kernel/BTRON/make
$ make CC=gcc-2.95

 kernel/POSIX/mkfs へ移動し、make をします。mksfs、statfs などのツールができます。

$ cd ../../POSIX/mkfs
$ make

 続いて mk_sfsboot.sh を実行します。

$ ./mk_sfsboot.sh

 これで1枚で起動するフロッピーディスクイメージができました。この段階でも一応使えますが、アプリケーションが色々不足しています。一つ一つ作るのを説明するのは大変なので既にある sfsboot.bin から取り出して組み込むのが簡単です。取り出し書き込む手順は (下記は新たに作ったのを sfsboot.bin、Web から入手したのを sfsboot.bin_download としています)

$ ./statfs sfsboot.bin_download read /frtm > frtm
$ ./statfs sfsboot.bin write /frtm frtm

です。
 新たに書き込んだファイルが実行バイナリの場合は、

$ ./statfs sfsboot.bin chmod 777 /frtm

とする必要があります。数値は 777 でも 755 でも 700 でもたぶん構わないと思います。

 既にある sfsboot.bin からアプリケーションとフォント、かな漢字変換辞書、それにワードファイルを一括して取り出し新たに作成した sfsboot.bin へ書き込むスクリプトを用意しました。新たに作成した sfsboot.bin、ダウンロードした sfsboot.bin を sfsboot.bin_download と名をかえたもの、それに下記のスクリプトを同じディレクトリに置いて実行すれば一発でできます。

$ ls 
sfsboot.bin    sfsboot.bin_download    rw_statfs.sh
$ ./rw_statfs.sh
----- rw_statfs.sh ---------------------------------------------------
#!/bin/sh

echo "$0 start ....."
mkdir statfs_tmp
statfs sfsboot.bin_download dir /
echo 'sfsboot.bin_download read start .....'
statfs sfsboot.bin_download read /test > statfs_tmp/test
statfs sfsboot.bin_download read /frtm > statfs_tmp/frtm
statfs sfsboot.bin_download read /k14.bfb > statfs_tmp/k14.bfb
statfs sfsboot.bin_download read /mandel.fm > statfs_tmp/mandel.fm
statfs sfsboot.bin_download read /wbmaker.fm > statfs_tmp/wbmaker.fm
statfs sfsboot.bin_download read /wd-sut.fm > statfs_tmp/wd-sut.fm
statfs sfsboot.bin_download read /frtm.txt > statfs_tmp/frtm.txt
statfs sfsboot.bin_download read /ari > statfs_tmp/ari
statfs sfsboot.bin_download read /SKK-JISYO.M > statfs_tmp/SKK-JISYO.M
statfs sfsboot.bin_download read /pager > statfs_tmp/pager
statfs sfsboot.bin_download read /i-scheme > statfs_tmp/i-scheme
statfs sfsboot.bin_download read /mksfs > statfs_tmp/mksfs
statfs sfsboot.bin_download read /statfs  > statfs_tmp/statfs
statfs sfsboot.bin_download read /sash > statfs_tmp/sash
statfs sfsboot.bin_download read /rd.fm > statfs_tmp/rd.fm

statfs sfsboot.bin dir /
echo 'sfsboot.bin write start .....'
statfs sfsboot.bin write /test statfs_tmp/test
statfs sfsboot.bin write /frtm statfs_tmp/frtm
statfs sfsboot.bin write /k14.bfb statfs_tmp/k14.bfb
statfs sfsboot.bin write /mandel.fm statfs_tmp/mandel.fm
statfs sfsboot.bin write /wbmaker.fm statfs_tmp/wbmaker.fm
statfs sfsboot.bin write /wd-sut.fm statfs_tmp/wd-sut.fm
statfs sfsboot.bin write /frtm.txt statfs_tmp/frtm.txt
statfs sfsboot.bin write /ari statfs_tmp/ari
statfs sfsboot.bin write /SKK-JISYO.M statfs_tmp/SKK-JISYO.M
statfs sfsboot.bin write /pager statfs_tmp/pager
statfs sfsboot.bin write /i-scheme statfs_tmp/i-scheme
statfs sfsboot.bin write /mksfs statfs_tmp/mksfs
statfs sfsboot.bin write /statfs statfs_tmp/statfs
statfs sfsboot.bin write /sash statfs_tmp/sash
statfs sfsboot.bin write /rd.fm statfs_tmp/rd.fm

statfs sfsboot.bin chmod 755 /test
statfs sfsboot.bin chmod 755 /frtm
statfs sfsboot.bin chmod 755 /ari
statfs sfsboot.bin chmod 755 /pager
statfs sfsboot.bin chmod 755 /i-scheme
statfs sfsboot.bin chmod 755 /mksfs
statfs sfsboot.bin chmod 755 /statfs
statfs sfsboot.bin chmod 755 /sash
statfs sfsboot.bin mkdir /mnt

rm -fr statfs_tmp
echo 'new sfsboot.bin dir .....'
statfs sfsboot.bin dir /
----------------------------------------------------------------------

完成品の sfsboot.bin の内容

2002/3/4 現在の最新版の sfsboot.bin のルートディレクトリに置かれているファイルは

----------------------------------------------------------------------
  6  40777      0000    0000    .               440 bytes
  6  40777      0000    0000    ..              440 bytes
  2  40777      0000    0000    lost+found      40 bytes
  2  40777      0000    0000    system          120 bytes
  2  40777      0000    0000    dev             380 bytes
  1  100666     0000    0000    init.fm         152 bytes
  1  100777     0000    0000    test            8193 bytes
  1  100777     0000    0000    frtm            48657 bytes
  1  100666     0000    0000    k14.bfb         201168 bytes
  1  100666     0000    0000    mandel.fm       532 bytes
  1  100666     0000    0000    wbmaker.fm      741 bytes
  1  100666     0000    0000    wd-sut.fm       648 bytes
  1  100666     0000    0000    frtm.txt        12510 bytes
  1  100777     0000    0000    ari             73760 bytes
  1  100666     0000    0000    SKK-JISYO.M     114251 bytes
  1  100777     0000    0000    pager           7828 bytes
  1  100777     0000    0000    i-scheme        145908 bytes
  1  100777     0000    0000    mksfs           37456 bytes
  1  100777     0000    0000    statfs          63356 bytes
  1  100777     0000    0000    sash            103028 bytes
  1  100666     0000    0000    rd.fm           132 bytes
  2  40777      0000    0000    mnt             40 bytes
----------------------------------------------------------------------

となっています。
 簡単に説明すると、

です。
 /system ディレクトリの中は、

----------------------------------------------------------------------
  2  40777      0000    0000    .               120 bytes
  6  40777      0000    0000    ..              480 bytes
  1  100666     0000    0000    2ndboot         31492 bytes
  1  100666     0000    0000    btron386        288768 bytes
  1  100755     0000    0000    wconsole        53531 bytes
  1  100755     0000    0000    ramdisk         15487 bytes
----------------------------------------------------------------------

となっています。
 /dev ディレクトリは、

----------------------------------------------------------------------
  2  40777      0000    0000    .               380 bytes
  6  40777      0000    0000    ..              480 bytes
  1  20666      0000    0000    console         00000000
  1  20666      0000    0000    win1            00000001
  1  20666      0000    0000    win2            00000002
  1  20666      0000    0000    keyboard        00010000
  1  20666      0000    0000    psaux           00020000
  1  60666      0000    0000    fd              80000000
  1  60666      0000    0000    ide0            80010000
  1  60666      0000    0000    ide1            80010001
  1  60666      0000    0000    ide2            80010002
  1  60666      0000    0000    ide3            80010003
  1  60666      0000    0000    ide4            80010004
  1  60666      0000    0000    ide5            80010005
  1  60666      0000    0000    ide6            80010006
  1  60666      0000    0000    ide7            80010007
  1  60666      0000    0000    ide8            80010008
  1  60666      0000    0000    ide9            80010009
  1  60666      0000    0000    rd              80020000
----------------------------------------------------------------------

です。


2001/10/19 作成
2005/11/19 更新

NAKANISHI Shin (snakani at users.sourceforge.jp)

[戻る]