FreeDOS上でFreeDOS kernelをビルド
はじめに
FreeDOS上でFreeDOS kernelをビルドする方法を書きます。
基本的にコード内に含まれるドキュメント通りに
すればよいのですが、一部(?)嵌ったところがあったので対処方法(※)を記載します。
※ベストな方法かは謎
ここに書く結果はVirtual Box上での動作の結果です。
FreeDOS kernelのビルド
コードの取得をします。現時点の最新はversion 2.43のようです。
$ git clone https://github.com/FDOS/kernel.git fdk
$ cd fdk
$ git checkout -b ke2043
config.bをベースにconfig.batを作成します。
(コメント行は削除しています。)
set XNASM=nasm
set COMPILER=WATCOM
set WATCOM=c:\DEVEL\OW
set PATH=%PATH%;%WATCOM%\binw
set XUPX=
set XLINK=C:\DEVEL\OW\BINW\WLINK.EXE
set MAKE=C:\DEVEL\OW\BINW\WMAKE.EXE /ms
set XCPU=386
set XFAT=32
これでビルドします。
残念ですが、これだと失敗します。
C:\FDK>build
USING OPTIONS of C=[] ASM=[]
Process UTILS ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Open Watcom Make Version 1.9
Portions Copyright (c) 1988-2002 Sybase, Inc. All Rights Reserved.
Source code is available under the Sybase Open Watcom Public License.
See http://www.openwatcom.org/ for details.
wcl -zq-zp1-os-s-we-e3-wx-bt=DOS -mt -Ic:\DEVEL\OW\H -I..\hdr patchobj.c
wcl -mc-zq-zp1-os-s-we-e3-wx-bt=DOS -Ic:\DEVEL\OW\H -I..\hdr exeflat.c
Process LIB ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Open Watcom Make Version 1.9
Portions Copyright (c) 1988-2002 Sybase, Inc. All Rights Reserved.
Source code is available under the Sybase Open Watcom Public License.
See http://www.openwatcom.org/ for details.
..\utils\rmfiles libm.lib
wlib -q c:\DEVEL\OW\lib286\dos\clibm.lib *i4m
C:\FDOS\BIN\COMMAND.COM /c for %i in (*.obj) do ..\utils\patchobj CODE=LCODE %i
C:\FDK\LIB>..\utils\patchobj CODE=LCODE I4M.OBJ
C:\FDK\LIB>..\utils\patchobj CODE=LCODE I4M.OBJ
wlib -q libm +i4m
..\utils\rmfiles *.OBJ
Process DRIVERS ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Open Watcom Make Version 1.9
Portions Copyright (c) 1988-2002 Sybase, Inc. All Rights Reserved.
Source code is available under the Sybase Open Watcom Public License.
See http://www.openwatcom.org/ for details.
nasm -DWATCOM -f obj -DWITHFAT32 -i../hdr/ -DXCPU=386 floppy.asm
nasm -DWATCOM -f obj -DWITHFAT32 -i../hdr/ -DXCPU=386 rdpcclk.asm
nasm -DWATCOM -f obj -DWITHFAT32 -i../hdr/ -DXCPU=386 wrpcclk.asm
nasm -DWATCOM -f obj -DWITHFAT32 -i../hdr/ -DXCPU=386 wratclk.asm
..\utils\rmfiles device.lib
wlib -q device.lib floppy.obj rdpcclk.obj wrpcclk.obj wratclk.obj
copy device.lib ..\lib
device.lib =>> ..\lib\device.lib
Process BOOT +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Open Watcom Make Version 1.9
Portions Copyright (c) 1988-2002 Sybase, Inc. All Rights Reserved.
Source code is available under the Sybase Open Watcom Public License.
See http://www.openwatcom.org/ for details.
nasm -dISFAT12 boot.asm -lfat12com.lst -ofat12com.bin
nasm -dISFAT16 boot.asm -lfat16com.lst -ofat16com.bin
nasm boot32.asm -lfat32chs.lst -ofat32chs.bin
nasm boot32lb.asm -lfat32lba.lst -ofat32lba.bin
nasm -dISFAT12 oemboot.asm -loemfat12.lst -ooemfat12.bin
nasm -dISFAT16 oemboot.asm -loemfat16.lst -ooemfat16.bin
Process SYS ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Open Watcom Make Version 1.9
Portions Copyright (c) 1988-2002 Sybase, Inc. All Rights Reserved.
Source code is available under the Sybase Open Watcom Public License.
See http://www.openwatcom.org/ for details.
wcl -mc-zq-zp1-os-s-we-e3-wx-bt=DOS -Ic:\DEVEL\OW\H bin2c.c
.\bin2c.exe ../boot/fat12com.bin fat12com.h fat12com
.\bin2c.exe ../boot/fat16com.bin fat16com.h fat16com
.\bin2c.exe ../boot/fat32chs.bin fat32chs.h fat32chs
.\bin2c.exe ../boot/fat32lba.bin fat32lba.h fat32lba
.\bin2c.exe ../boot/oemfat12.bin oemfat12.h oemfat12
.\bin2c.exe ../boot/oemfat16.bin oemfat16.h oemfat16
wcc -Ic:\DEVEL\OW\H -I..\hdr -DFORSYS -DWITHFAT32 -zq-zp1-os-s-we-e3-wx-bt=DOS sys.c
wcc -Ic:\DEVEL\OW\H -I..\hdr -DFORSYS -DWITHFAT32 -zq-zp1-os-s-we-e3-wx-bt=DOS fdkrncfg.c
wcc -Ic:\DEVEL\OW\H -I..\hdr -DFORSYS -DWITHFAT32 -zq-zp1-os-s-we-e3-wx-bt=DOS ..\kernel\prf.c
wcc -Ic:\DEVEL\OW\H -I..\hdr -DFORSYS -DWITHFAT32 -zq-zp1-os-s-we-e3-wx-bt=DOS talloc.c
wcl -zq-zp1-os-s-we-e3-wx-bt=DOS -mt sys.obj fdkrncfg.obj prf.obj talloc.obj
copy sys.com ..\bin
sys.com =>> ..\bin\sys.com
Process KERNEL +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Open Watcom Make Version 1.9
Portions Copyright (c) 1988-2002 Sybase, Inc. All Rights Reserved.
Source code is available under the Sybase Open Watcom Public License.
See http://www.openwatcom.org/ for details.
..\utils\rmfiles *.lnk
..\utils\echoto KWC38632.lnk kernel.obj entry.obj io.obj console.obj serial.obj printer.obj dsk.obj sysclk.obj+
..\utils\echoto KWC38632.lnk asmsupt.obj execrh.obj nlssupt.obj procsupt.obj dosidle.obj int2f.obj nls_hc.obj+
..\utils\echoto KWC38632.lnk apisupt.obj intr.obj irqstack.obj blockio.obj chario.obj systime.obj error.obj+
..\utils\echoto KWC38632.lnk break.obj dosfns.obj fatdir.obj fatfs.obj fattab.obj fcbfns.obj inthndlr.obj+
..\utils\echoto KWC38632.lnk ioctl.obj memmgr.obj task.obj newstuff.obj nls.obj network.obj+
..\utils\echoto KWC38632.lnk prf.obj misc.obj strings.obj syspack.obj lfnapi.obj iasmsupt.obj memdisk.obj+
..\utils\echoto KWC38632.lnk main.obj config.obj initoem.obj inithma.obj dyninit.obj iprf.obj+
..\utils\echoto KWC38632.lnk initdisk.obj initclk.obj cpu.obj
..\utils\echoto KWC38632.lnk kernel.exe
..\utils\echoto KWC38632.lnk kernel.map
..\utils\echoto KWC38632.lnk ..\lib\device.lib ..\lib\libm.lib
nasm -DWATCOM -f obj -DWITHFAT32 -i../hdr/ -DXCPU=386 kernel.asm
nasm -DWATCOM -f obj -DWITHFAT32 -i../hdr/ -DXCPU=386 entry.asm
nasm -DWATCOM -f obj -DWITHFAT32 -i../hdr/ -DXCPU=386 io.asm
nasm -DWATCOM -f obj -DWITHFAT32 -i../hdr/ -DXCPU=386 console.asm
nasm -DWATCOM -f obj -DWITHFAT32 -i../hdr/ -DXCPU=386 serial.asm
nasm -DWATCOM -f obj -DWITHFAT32 -i../hdr/ -DXCPU=386 printer.asm
wcc -I..\hdr -3 -DI386 -DWITHFAT32-zq-os-s-e5-j-zl-zp1-wx-we-zgf-zff-r-ntHMA_TEXT dsk.c
wcc -I..\hdr -3 -DI386 -DWITHFAT32-zq-os-s-e5-j-zl-zp1-wx-we-zgf-zff-r-ntHMA_TEXT sysclk.c
nasm -DWATCOM -f obj -DWITHFAT32 -i../hdr/ -DXCPU=386 asmsupt.asm
nasm -DWATCOM -f obj -DWITHFAT32 -i../hdr/ -DXCPU=386 execrh.asm
nasm -DWATCOM -f obj -DWITHFAT32 -i../hdr/ -DXCPU=386 nlssupt.asm
nasm -DWATCOM -f obj -DWITHFAT32 -i../hdr/ -DXCPU=386 procsupt.asm
nasm -DWATCOM -f obj -DWITHFAT32 -i../hdr/ -DXCPU=386 dosidle.asm
nasm -DWATCOM -f obj -DWITHFAT32 -i../hdr/ -DXCPU=386 int2f.asm
nasm -DWATCOM -f obj -DWITHFAT32 -i../hdr/ -DXCPU=386 nls_hc.asm
nasm -DWATCOM -f obj -DWITHFAT32 -i../hdr/ -DXCPU=386 apisupt.asm
nasm -DWATCOM -f obj -DWITHFAT32 -i../hdr/ -DXCPU=386 intr.asm
nasm -DWATCOM -f obj -DWITHFAT32 -i../hdr/ -DXCPU=386 irqstack.asm
wcc -I..\hdr -3 -DI386 -DWITHFAT32-zq-os-s-e5-j-zl-zp1-wx-we-zgf-zff-r-ntHMA_TEXT blockio.c
wcc -I..\hdr -3 -DI386 -DWITHFAT32-zq-os-s-e5-j-zl-zp1-wx-we-zgf-zff-r-ntHMA_TEXT chario.c
wcc -I..\hdr -3 -DI386 -DWITHFAT32-zq-os-s-e5-j-zl-zp1-wx-we-zgf-zff-r-ntHMA_TEXT systime.c
wcc -I..\hdr -3 -DI386 -DWITHFAT32-zq-os-s-e5-j-zl-zp1-wx-we-zgf-zff-r-ntHMA_TEXT error.c
wcc -I..\hdr -3 -DI386 -DWITHFAT32-zq-os-s-e5-j-zl-zp1-wx-we-zgf-zff-r-ntHMA_TEXT break.c
wcc -I..\hdr -3 -DI386 -DWITHFAT32-zq-os-s-e5-j-zl-zp1-wx-we-zgf-zff-r-ntHMA_TEXT dosfns.c
wcc -I..\hdr -3 -DI386 -DWITHFAT32-zq-os-s-e5-j-zl-zp1-wx-we-zgf-zff-r-ntHMA_TEXT fatdir.c
wcc -I..\hdr -3 -DI386 -DWITHFAT32-zq-os-s-e5-j-zl-zp1-wx-we-zgf-zff-r-ntHMA_TEXT fatfs.c
wcc -I..\hdr -3 -DI386 -DWITHFAT32-zq-os-s-e5-j-zl-zp1-wx-we-zgf-zff-r-ntHMA_TEXT fattab.c
wcc -I..\hdr -3 -DI386 -DWITHFAT32-zq-os-s-e5-j-zl-zp1-wx-we-zgf-zff-r-ntHMA_TEXT fcbfns.c
wcc -I..\hdr -3 -DI386 -DWITHFAT32-zq-os-s-e5-j-zl-zp1-wx-we-zgf-zff-r-ntHMA_TEXT inthndlr.c
wcc -I..\hdr -3 -DI386 -DWITHFAT32-zq-os-s-e5-j-zl-zp1-wx-we-zgf-zff-r-ntHMA_TEXT ioctl.c
wcc -I..\hdr -3 -DI386 -DWITHFAT32-zq-os-s-e5-j-zl-zp1-wx-we-zgf-zff-r-ntHMA_TEXT memmgr.c
wcc -I..\hdr -3 -DI386 -DWITHFAT32-zq-os-s-e5-j-zl-zp1-wx-we-zgf-zff-r-ntHMA_TEXT task.c
wcc -I..\hdr -3 -DI386 -DWITHFAT32-zq-os-s-e5-j-zl-zp1-wx-we-zgf-zff-r-ntHMA_TEXT newstuff.c
wcc -I..\hdr -3 -DI386 -DWITHFAT32-zq-os-s-e5-j-zl-zp1-wx-we-zgf-zff-r-ntHMA_TEXT nls.c
wcc -I..\hdr -3 -DI386 -DWITHFAT32-zq-os-s-e5-j-zl-zp1-wx-we-zgf-zff-r-ntHMA_TEXT network.c
wcc -I..\hdr -3 -DI386 -DWITHFAT32-zq-os-s-e5-j-zl-zp1-wx-we-zgf-zff-r-ntHMA_TEXT prf.c
wcc -I..\hdr -3 -DI386 -DWITHFAT32-zq-os-s-e5-j-zl-zp1-wx-we-zgf-zff-r-ntHMA_TEXT misc.c
wcc -I..\hdr -3 -DI386 -DWITHFAT32-zq-os-s-e5-j-zl-zp1-wx-we-zgf-zff-r-ntHMA_TEXT strings.c
wcc -I..\hdr -3 -DI386 -DWITHFAT32-zq-os-s-e5-j-zl-zp1-wx-we-zgf-zff-r-ntHMA_TEXT syspack.c
wcc -I..\hdr -3 -DI386 -DWITHFAT32-zq-os-s-e5-j-zl-zp1-wx-we-zgf-zff-r-ntHMA_TEXT lfnapi.c
nasm -DWATCOM -D_INIT -f obj -DWITHFAT32 -i../hdr/ -DXCPU=386 -o iasmsupt.obj asmsupt.asm
nasm -DWATCOM -f obj -DWITHFAT32 -i../hdr/ -DXCPU=386 memdisk.asm
wcc -I..\hdr -3 -DI386 -DWITHFAT32-zq-os-s-e5-j-zl-zp1-wx-we-zgf-zff-r-ntINIT_TEXT-gTGROUP-ndI main.c
wcc -I..\hdr -3 -DI386 -DWITHFAT32-zq-os-s-e5-j-zl-zp1-wx-we-zgf-zff-r-ntINIT_TEXT-gTGROUP-ndI config.c
wcc -I..\hdr -3 -DI386 -DWITHFAT32-zq-os-s-e5-j-zl-zp1-wx-we-zgf-zff-r-ntINIT_TEXT-gTGROUP-ndI initoem.c
wcc -I..\hdr -3 -DI386 -DWITHFAT32-zq-os-s-e5-j-zl-zp1-wx-we-zgf-zff-r-ntINIT_TEXT-gTGROUP-ndI inithma.c
wcc -I..\hdr -3 -DI386 -DWITHFAT32-zq-os-s-e5-j-zl-zp1-wx-we-zgf-zff-r-ntINIT_TEXT-gTGROUP-ndI dyninit.c
wcc -I..\hdr -3 -DI386 -DWITHFAT32-zq-os-s-e5-j-zl-zp1-wx-we-zgf-zff-r-ntINIT_TEXT-gTGROUP-ndI iprf.c
wcc -I..\hdr -3 -DI386 -DWITHFAT32-zq-os-s-e5-j-zl-zp1-wx-we-zgf-zff-r-ntINIT_TEXT-gTGROUP-ndI initdisk.c
wcc -I..\hdr -3 -DI386 -DWITHFAT32-zq-os-s-e5-j-zl-zp1-wx-we-zgf-zff-r-ntINIT_TEXT-gTGROUP-ndI initclk.c
nasm -DWATCOM -f obj -DWITHFAT32 -i../hdr/ -DXCPU=386 cpu.asm
C:\DEVEL\OW\BINW\WLINK.EXE @KWC38632.lnk;
Open Watcom Linker Version 1.9
Portions Copyright (c) 1985-2002 Sybase, Inc. All Rights Reserved.
Source code is available under the Sybase Open Watcom Public License.
See http://www.openwatcom.org/ for details.
Error! E3033: file KWC38632.lnk;: line(1): directive error near 'kernel.obj'
Error(E42): Last command making (kernel.exe) returned a bad status
Error(E02): Make execution terminated
Compilation was aborted!
なんかリンクで失敗しているように見えます。
KWC38632.lnkとは
ビルドの流れを追うと、*.lnk というファイルを作成します。
ここでは(KWC38632.lnk。config.batの記載内容でファイル名は変わるようです。)
で、このファイルの中はテキストで以下のように書かれています。
kernel.obj entry.obj io.obj console.obj serial.obj printer.obj dsk.obj sysclk.obj+
asmsupt.obj execrh.obj nlssupt.obj procsupt.obj dosidle.obj int2f.obj nls_hc.obj+
apisupt.obj intr.obj irqstack.obj blockio.obj chario.obj systime.obj error.obj+
break.obj dosfns.obj fatdir.obj fatfs.obj fattab.obj fcbfns.obj inthndlr.obj+
ioctl.obj memmgr.obj task.obj newstuff.obj nls.obj network.obj+
prf.obj misc.obj strings.obj syspack.obj lfnapi.obj iasmsupt.obj memdisk.obj+
main.obj config.obj initoem.obj inithma.obj dyninit.obj iprf.obj+
initdisk.obj initclk.obj cpu.obj
kernel.exe
kernel.map
..\lib\device.lib ..\lib\libm.lib
リンクするオブジェクトファイル、出力ファイル、マップファイル、ライブラリが書かれています。
なんで、いちいちファイルに書き出しているのか最初はわからなかったのですが、
どうもリンカ(WLINK.EXE)に渡せる引数の数に制約があるようでした。
試しに適当な値を渡してみたら以下のようなエラーが出ました。
C:\DEVEL\OW>WLINK a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a
Stub exec failed:
C:\DEVEL\OW\BINW\dos4gw.exe
Arg list too big
makefileの修正
いろいろ調べてみた結果、KWC38632.lnkの中身はいかのようにすると
良さそうなのでは?と思うようになりました。
F {
kernel.obj entry.obj io.obj console.obj serial.obj printer.obj dsk.obj sysclk.obj
asmsupt.obj execrh.obj nlssupt.obj procsupt.obj dosidle.obj int2f.obj nls_hc.obj
apisupt.obj intr.obj irqstack.obj blockio.obj chario.obj systime.obj error.obj
break.obj dosfns.obj fatdir.obj fatfs.obj fattab.obj fcbfns.obj inthndlr.obj
ioctl.obj memmgr.obj task.obj newstuff.obj nls.obj network.obj
prf.obj misc.obj strings.obj syspack.obj lfnapi.obj iasmsupt.obj memdisk.obj
main.obj config.obj initoem.obj inithma.obj dyninit.obj iprf.obj
initdisk.obj initclk.obj cpu.obj
} L ..\lib\device.lib L ..\lib\libm.lib N kernel.exe
参考にしたページは以下
kernel/makefile
を以下のように修正をしました。
diff --git a/kernel/makefile b/kernel/makefile
index aa0fd1c..9fde439 100644
--- a/kernel/makefile
+++ b/kernel/makefile
@@ -56,17 +56,16 @@ clean:
$(TARGET).lnk: turboc.cfg makefile ../mkfiles/generic.mak ../mkfiles/$(COMPILER).mak
-$(RM) *.lnk
- $(ECHOTO) $(TARGET).lnk $(OBJS1)+
- $(ECHOTO) $(TARGET).lnk $(OBJS2)+
- $(ECHOTO) $(TARGET).lnk $(OBJS3)+
- $(ECHOTO) $(TARGET).lnk $(OBJS4)+
- $(ECHOTO) $(TARGET).lnk $(OBJS5)+
- $(ECHOTO) $(TARGET).lnk $(OBJS6)+
- $(ECHOTO) $(TARGET).lnk $(OBJS7)+
+ $(ECHOTO) $(TARGET).lnk F {
+ $(ECHOTO) $(TARGET).lnk $(OBJS1)
+ $(ECHOTO) $(TARGET).lnk $(OBJS2)
+ $(ECHOTO) $(TARGET).lnk $(OBJS3)
+ $(ECHOTO) $(TARGET).lnk $(OBJS4)
+ $(ECHOTO) $(TARGET).lnk $(OBJS5)
+ $(ECHOTO) $(TARGET).lnk $(OBJS6)
+ $(ECHOTO) $(TARGET).lnk $(OBJS7)
$(ECHOTO) $(TARGET).lnk $(OBJS8)
- $(ECHOTO) $(TARGET).lnk kernel.exe
- $(ECHOTO) $(TARGET).lnk kernel.map
- $(ECHOTO) $(TARGET).lnk $(LIBS)
+ $(ECHOTO) $(TARGET).lnk } L ..\lib\device.lib L ..\lib\libm.lib N kernel.exe
# *Individual File Dependencies*
apisupt.obj: apisupt.asm segs.inc $(TARGET).lnk
再度ビルド
再度ビルドをしてみます。
C:\FDK>build
... 省略
C:\DEVEL\OW\BINW\WLINK.EXE @KWC38632.lnk;
Open Watcom Linker Version 1.9
Portions Copyright (c) 1985-2002 Sybase, Inc. All Rights Reserved.
Source code is available under the Sybase Open Watcom Public License.
See http://www.openwatcom.org/ for details.
loading object files
searching libraries
creating a DOS executable
..\utils\exeflat.exe kernel.exe kernel.sys 0x60 -S0x10 -S0x78 -S0x79
header len = 336 = 0x150
image size (less header) = 69218 = 0x10e62
first relocation offset = 32 = 0x20
relocation at 0x0000:0x0027 ->020a
relocation at 0x020a:0xa27d ->0fec
relocation at 0x020a:0xa661 ->0000
relocation at 0x020a:0xcbab ->020a
Processed 76 relocations, 72 not shown
copy kernel.sys ..\bin
kernel.sys =>> ..\bin\kernel.sys
copy kernel.sys ..\bin\KWC38632.sys
kernel.sys =>> ..\bin\KWC38632.sys
copy kernel.map ..\bin\KWC38632.map
Unable to open file 'kernel.map'
nasm -o ../bin/country.sys country.asm
Process SETVER +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Open Watcom Make Version 1.9
Portions Copyright (c) 1988-2002 Sybase, Inc. All Rights Reserved.
Source code is available under the Sybase Open Watcom Public License.
See http://www.openwatcom.org/ for details.
nasm -o ..\bin\setver.sys setver.asm
Processing is done.
成功しました!
BINディレクトリの中にビルドされたイメージが作成されます。
C:\FDK\BIN>dir
Volume in drive C is FREEDOS2021
Volume Serial Number is 3668-1A1E
Directory of C:\FDK\BIN
. <DIR> 12-11-2021 2:55p
.. <DIR> 12-11-2021 2:55p
AUTOEXEC BAT 72 12-11-2021 2:55p
CONFIG SYS 90 12-11-2021 2:55p
COUNTRY SYS 30,250 12-11-2021 3:46p
INSTALL BAT 671 12-11-2021 2:55p
KERNEL SYS 69,218 12-11-2021 3:46p
KWC38632 SYS 69,218 12-11-2021 3:46p
SETVER SYS 109 12-11-2021 3:46p
SYS COM 20,302 12-11-2021 3:46p
8 file(s) 189,930 bytes
2 dir(s) 2,025,521,152 bytes free
C:\FDK\BIN>
イメージのコピー
このディレクトリの中にあるINSTALL.BAT
を実行すると
必要なファイルをAドライブにコピーしてくれます。
Virtual Box上でFloppyイメージを追加します。
追加した状態の画面は以下のようになります。ここでは
FDOS_2.imgというファイル名にしています(適当です)。
(追加手順は省略)
Floppyが追加できたので
起動して、install.batを実行します。
C:\FDK\BIN>install
This utility will create a distribution floppy on the disk in drive A:
Press any key to continue . . .
SYS: failed to open "C:COMMAND.COM"
SYS: Trying shell from %COMSPEC%="C:\FDOS\BIN\COMMAND.COM"
System transferred.
copying remaining files...
copying autoexec.bat...
autoexec.bat =>> A:autoexec.bat
copying config.sys..
config.sys =>> A:config.sys
copying sys.com..
sys.com =>> A:sys.com
Aドライブの中を確認すると、イメージがコピーされています。
C:\FDK\BIN>dir a:\
Volume in drive A is FREEDOS
Volume Serial Number is 1D13-17E9
Directory of A:\
AUTOEXEC BAT 72 12-11-2021 2:55p
COMMAND COM 85,048 04-30-2021 12:54p
CONFIG SYS 90 12-11-2021 2:55p
KERNEL SYS 69,218 12-11-2021 3:46p
SYS COM 20,302 12-11-2021 3:46p
5 file(s) 174,730 bytes
0 dir(s) 1,281,024 bytes free
フロッピーから起動
フロッピーから起動できるか確認してみます。
設定は以下のように、フロッピーの起動順序を一番高くします。
起動してみると以下のようになります。
一行目に
FreeDOS kernel - GIT (build 2043 MEM:0xfd) [compiled Dec 11 2021]
と
ビルドしたバージョン(2.43)、ビルド日(Dec 11 2021)が出ているので
ちゃんとビルドできているようです。
まとめ
FreeDOS上でFreeDOS kernelのビルドができるか試してみましたができてよかったです。
何度かメーリングリストの助けを借りたりしてやっとできました。
次回は(?) FreeCOMをFreeDOS上でビルドする方法を書きます(もうビルドはできてます)。
Discussion