QEMUを使用して、SCSIテープデバイスと通信する必要がある非常に特殊なプロプライエタリソフトウェアを実行するMS-DOSシステムをエミュレートしたいと思います。
QEMUはホストSCSIバスへのパススルーアクセスを提供し、ゲストOSが使用できるSCSIアダプターもエミュレートできるようです。しかし、SCSIを使用してQEMUをセットアップした経験はほとんどなく、ドキュメントは少し密集していて複雑です。
これまでの私のQEMUコマンドラインは次のとおりです。
qemu-system-i386 -m 32 -drive file="dosdrive.img",format=raw \
-option-rom "8xx_64.ROM" \
-drive file=/dev/sg2,if=scsi,bus=0,unit=0,format=raw \
-device dc390
エミュレートされたBIOSは、テープドライブを確実に認識します。
...そしてDOSがASPIドライバーを正常にロードしたようです。しかし、ソフトウェアが実際にSCSIデバイスから読み取ろうとすると、ハングし、QEMUから次のエラーが発生します。
lsi_scsi: error: Unhandled writeb 0xbc = 0x0
lsi_scsi: error: IO mappings not implemented
これは私が運が悪かったことを意味し、QEMUはSCSIテープドライブで動作できませんか?または、構成に問題がありますか?
私は直接助けることはできませんが:
ヒント:使用するコンポーネントの正確なベンダー/名前/バージョンを常に投稿してください。
qemu/romバージョンと比較するためにubuntu19.04x64でqemugitをコンパイルしました
./i386-softmmu/qemu-system-i386 --version
QEMU emulator version 4.0.50 (v4.0.0-312-gdf06df4f41-dirty)
./i386-softmmu/qemu-system-i386 -nographic -device dc390 -option-rom "../lsi_bios/8xx_64.rom"
SeaBIOS (version rel-1.12.1-0-ga5cab58e9a3f-prebuilt.qemu.org)
iPXE (http://ipxe.org) 00:03.0 C980 PCI2.10 PnP PMM+07F912F0+07EF12F0 C980
LSI Logic Corp. Symbios SDMS (TM) V4.0 PCI SCSI BIOS, PCI Rev. 2.0, 2.1
Copyright 1995-2001 LSI Logic Corp.
PCI-4.19.00
だから私はより最新のROM4.16 /4.19を見つけたと思います:)
https://www.broadcom.com/site-search?q=lsi_bios.Zip から8xx_64.romを入手しました
だから私はあなたが本当にあなたのコンポーネントをアップグレードするべきだと思います、qemu gitビルドは簡単でインストールを必要としないのであなたはそれを試してみることができます
別のチェックでは、SCSI通信が正常に機能するかどうかをテストするためにqemu内の現在のqemu/romとlinuxを使用します(おそらく、qemuだけでなくDOSドライバーもここで問題になります)
qemuメーリングリストにもあなたの投稿を見ました
多分これは役立ちます: https://k1024.org/posts/2019/2019-02-22-qemu-scsi-tape-passthrough/
私はこのように行きます:
ホストx64:Debian/Ubuntu-qemu 4や他のバージョンの競合に関する依存関係の問題を減らすために、最新バージョンのディストリビューションを使用したいのですが、このようなテスト用の専用ハードディスクを備えたリムーバブルディスクスロットがあります
テープドライブがLinuxで完全に実行されていることを確認します(問題を可能な限りDOSまで減らすため)。テープアクセスのワイルドテストが利用できる可能性があります(たとえば、読み取り/書き込みベンチマーク https:// blog。 devnu11.net/2009/11/benchmarking-tape-drives/ またはmtツールの使用 http://fibrevillage.com/storage/121-linux-mt-control-magnetic-tape-drive-操作 )--->それが本番環境で使用されるかどうかを強力にチェックします
ソースからqemu4.0(qemu-system-i386)をビルドします(またはビルド前のパッケージを見つけます)
32ビットUbuntu/Debian(同じバージョン)非UI最小システム(テストのためだけにインストールが高速)を(virt-?)scsi-path-throughを使用してqemuにインストールします
ステップ2のように再テストします(ただし、qemuの内部)
->これで、scsi-pass-throughがデータの失敗や奇妙なエラーなどなしで機能することが100%明確になり、この段階までqemuメーリングリストで助けを得るのが簡単になりました-DOSが登場すると汚れます:)
6.ここでBIOSまたはDOSのみが失敗した場合は、DOSテストを再度実行します(qemu 4、最新のコンポーネントを使用)。ASPIが原因です。
6つに分割される場合-テープアクセスは機能しますか(たとえば、 https://winworldpc.com/product/pc-tools/9x -> Central Point Backup)、その後、ソフトウェアが動作します