問題タブ [floppy]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
assembly - フロッピー ディスクの最初のセクタ (セクタ 0) に bin ファイル (512 バイト) を書き込むにはどうすればよいですか?
フロッピー ディスク/仮想フロッピー ディスク/フロッピー イメージの最初のセクタに .bin ファイルを書き込むにはどうすればよいですか?
シンプルな 512 バイトのブートローダーを起動しようとしています。どこでもサイズが「512バイト」と表示されているので、もう大丈夫なはずです。
追加情報:
ブートローダーは文字列を表示するだけで、簡単な組み立てを学んでいます。作業の一部は Windows で行われ、一部はUbuntu 14.04 (Trusty Tahr) で行われました (これが重要な場合)。
ブートローダーのサインがあっても起動しません。
assembly - アセンブリ言語のブートローダーからフロッピーディスクが利用可能かどうかを確認します
アセンブリ言語を使用して、フロッピー ドライブが使用可能かどうかを確認する方法について質問があります。RAM メモリが十分かどうかを確認しましたが、フロッピー ドライブが使用可能かどうかを確認する方法がわかりません。私はこれを試しました:CMP AH,0
JNE disk_error
しかし、RAMのチェックの後にこれを置くと、何も起こりません。continueToLoad :を入れるとCMP AX,0
JNE fatal_disk_error
正常に動作しますが、バーを読み込んだ後にエラーメッセージが表示されます。ローダー ローディング バーの前にエラー メッセージが表示されるようにする必要があります。 エラー
linux - bin ファイル (512 バイト) をフロッピー *.img ファイルの最初のセクター (セクター 0) に書き込む方法は?
dd if=a.bin of=a.img bs=512 count=1
Commond を使用して、ubuntu 15.10 の *.img ファイルに bin ファイルを書き込むことができることを知っていました。ファイル サイズは bin ファイルと同じです。小さいため、他のファイルをこの img ファイルにコピーすることはできません。
既存の img ファイルに bin ファイルを書き込む方法
どうもありがとう
assembly - BIOS int 13h が最初のトラックを超えて読み取れない
FAT12 ブートローダーから、BIOS 割り込み 13h を使用してフロッピーから [ヘッド = 0、シリンダー (トラック) = 1、セクター = 1] からセクター番号をロードしようとしています。
サブルーチンを使用しread_sectors
てセクターを読み取り、es:bx
.
このコードは、最初のトラックの任意のセクターでうまく機能しますが、他のトラックの任意のセクターからは 0 だけを読み取りますが、それらのセクターは実際には読み込まれます。たとえば、セクター 18 の場合cx
は です0x0041
。これは正しいです。問題は、割り込みが CF を設定し、エラーがあることを示していることです。また、ah (戻りコード) を 1 に、al (読み取ったセクター) を 1 に設定します。
これは完全なブートローダー .asm ファイルです
Ubuntuのqemuでこのコードを実行し、コンパイルしています
windows - USB フロッピー ドライブで 10 セクター トラック フォーマットを使用する方法
古いシンセサイザー/キーボード楽器 (1980 年代製) 用のフロッピー ディスク抽出/マネージャーをプログラミングしています。私の問題: このソフトウェアは、USB フロッピー ドライブをサポートする必要があります。10 セクターのトラック形式で画像を読み書きする必要があります。ただし、USB フロッピー ドライブは 9 または 18 セクタ トラックしかサポートしていません。ソフトウェアでこれを制御する方法を見つけることができませんでした (ドライブのファームウェアにハードコードされているようです)。
以前にこれを成功させた人はいますか?ヒントをいただければ幸いです
boot - QEMU でマルチブートとフロッピーの両方を使用する
オペレーティングシステムを開発しようとしています。OSDevのBarebones チュートリアルを完了しましたが、マルチブートに関する問題がまだ残っています。
私が理解しているように、チュートリアルに従ってマルチブート イメージを作成すると、ELF 形式のバイナリ ファイルが作成されます。オプションを指定すると、この ELF 実行可能ファイルが QEMU によってメモリにロードされ-kernel
ます。したがって、メモリ内に単一の実行可能プログラムがあり、エントリ ポイントがあります。いくつかの関数とライブラリが並んでいます。記憶には他に何もありません。また、セクタを読み書きできるフロッピーまたはディスク イメージもありません。これは主に、その点に関して QEMU に何も指定していないためです。
しかし、私が達成したいのは、QEMU が ELF 実行可能ファイルをロードした後、セクターを読み書きできるディスクまたはフロッピー アーキテクチャが必要なことです。また、そこからいくつかのユーザープログラムをロードしたり、ファイルシステムをセットアップしたりしたいと考えています。これまでのところ、私が考えているのは次のとおりです。
qemu-system-i386 -kernel myKernel.bin -fda myDisk.image
または、myKernel.bin
ファイルを取得し、512 バイトに揃えられるまでゼロで埋めてから、残りのディスク イメージを追加する必要があります。
私の質問は、QEMU でこの機能を実現するにはどうすればよいかということです。ディスク ドライバの作成に取り掛かる前に、このような作業が可能かどうかを知る必要があります。無理なら別のアプローチも考えられますが、今の考えは以上です。私はすでに調べましたが-initrd
、それは私が望むものではありません。また、QEMU によって RAM にファイルをロードしたくありません。代わりに、ディスク イメージを自分で操作したいと考えています。それを行う方法に関する提案はありますか?
assembly - 仮想マシンで起動するブートローダー/カーネルのみ
そのため、ここ数週間、アセンブリ (x86/x86_64) でブートローダーとカーネルを作成する方法を検討してきました。より複雑なソリューションを試してみましたが、自分で作成する前に、Sinnedという名前のユーザーがここに投稿したコードを試してみることにしました。私のブートローダーコードは次のとおりです。
私のカーネルファイルは次のとおりです。
すべてをうまく組み立てることができ、フロッピーコントローラーに接続すると、VirtualBox内で作成された単一のバイナリが起動します。これにより、自分のローダーとカーネルで作業する自信が持てますが、ベアメタルで起動することに満足したいと思っています。
USB ドライブを使用してイメージを起動しようとしましたが、うまくいきませんでした。USB スティックを正しくイメージングしていることは確かです。ここで本当に明白な何かが欠けていると感じ始めています。USBから生のバイナリを実際に読み取ろうとしている「フロッピー」から読み取るために13hを使用することに関係があると思われます。これは事実ですか?もしそうなら、フロッピーの代わりに特定されていないディスクから読み取るようにブートローダーを書き直すにはどうすればよいですか?
linux - ブートローダーとカーネルを含むブート可能なフロッピーの作成中にエラーが発生しました
boot.bin および kernel.bin ファイル用の起動可能なフロッピー ドライブを作成しようとしています。私の boot.asm コードは次のとおりです。
私が使用する方法は、dd を使用してフロッピー イメージを作成し、ブートローダーを最初のセクターに書き込み、それをマウントしてカーネルをコピーすることです。
私が使用したコマンド
1- mkdosfs -C floppy.flp 1440
, このコマンドはフロッピー イメージを作成します
2- dd status=noxfer conv=notrunc if=boot.bin of=floppy.flp
,このコマンドは、ブートローダーを最初のセクターに焼き付けます
これらのコマンドは非常にうまく機能し、最初のセクターにブートローダーを含むフロッピー イメージが正常に作成されました
次のコマンドを使用して、フロッピー イメージをマウントしてカーネルをフロッピー イメージにコピーしようとすると、問題が発生します。
rm -rf tmp-loop
mkdir tmp-loop && mount -o loop -t vfat floppy.flp tmp-loop && cp kernel.bin tmp-loop/
フロッピー イメージをマウントしようとするたびに、このエラーが発生します。
このエラーの解決策は何ですか? Ubuntu 16.04 を使用しています。