問題タブ [bootloader]
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.
bootloader - 最低限のオペレーティング システムで単一のタスクを実行する
x86で単一のファイルを読み取り、単一のファイルに書き込むことができる、最低限の骨の折れるオペレーティングシステム用に、Linuxからansicプログラムをクロスコンパイルしたいと思います。次に、その裸のOSを再起動して、その単一のプログラムを実行したいと思います。私の選択は何ですか?
assembly - ブートローダーのスタックセグメントが0x3FF(リアルモードIVTの終了)になっているのはなぜですか?
「アドレス0x500はBIOSによって使用される最後のアドレスです」はウィキペディアのものです -
「00000000-000003FFリアルモードIVT(割り込みベクトルテーブル)」は、BIOSメモリマップに関するosdev.orgの記事に記載されています。
では、NASMが.comファイルのスタックポインタを0x3FFに配置し、命令ポインタが0x7C00で始まる理由を教えてください。私にとって、SPの最も直感的な場所は、0x7C00のすぐ下です。
windows - ライブCDからマシンを強制的に起動する
起動可能なCDでソフトウェアを配布したい場合、BIOSがCDからの起動でセットアップされていなくても、(Windowsから)マシンを強制的にCD OSで再起動する方法はありますか?
x86 - ビデオ メモリに対する CLI の影響
独自のブートローダーを作成することにしました。
ビデオモードを 3 に設定し (qemu はすでに 3 に設定していますが)、ビデオメモリを直接変更して、画面の最初の行の最初の文字に「A」を出力することができました。
コメントアウトされた cli 命令に注意してください。セミコロンとセミコロンのみを削除すると、「A」が出力されなくなります。IF フラグをクリアすると、メモリ内の内容に影響を与えるという副作用が生じる可能性があることを理解していません。誰かがこれに光を当てることができれば、それは素晴らしいことです.
ああ、価値があるのは、ブートローダーを実行するために使用するコマンドです
私はどこかで炎上し、できる限り読みました。誰かがスタックのセットアップについて言及しましたが、それが私の問題との関連性を理解していません。
助けていただければ幸いです。
operating-system - フォルダまたはディスクからの起動を可能にするシンプルなVM
ハードディスクに損傷を与えないフォルダまたはディスクイメージから起動できる、非常にシンプルで無料の仮想マシンがあるかどうか疑問に思いました。私はMacBookを使用していて、オペレーティングシステムのプログラミングを調べています。私はインターネット上で有望に見えるチュートリアルを見つけました。これを試してみたいのですが、実際にディスクから起動するのではなく、VMを使用しています。ファイルを含むフォルダーまたはディスクイメージを作成し、boot.bin
作成したOSを試してみたい場合(ディスクではなくフォルダーまたはディスクイメージから起動している場合)、それを実行できるVMはありますか?私はこれまで仮想マシンの経験がありません。また、ハードディスクが損傷しないようにしたいと思います。
assembly - int 0x13 の関数 0x42 のスタック ベースの実装の問題
int 0x13 への新しいアプローチを試みています (システムの仕組みについて詳しく知るためだけに): スタックを使用して DAP を作成する..
DL にディスク番号が含まれ、AX に PT の起動可能なエントリのアドレスが含まれ、DS が正しいセグメントに更新され、スタックが正しく設定されていると仮定すると、次のコードになります。
ご覧のとおり、dap 構造をスタックにプッシュし、それを指すように DS:SI を更新します。DL は既に設定されており、次に AX を 0x42 に設定し、int 0x13 を呼び出します。
その結果、AH でエラー 0x01 が発生し、明らかに CF が設定されます。セクターは転送されません。スタックトレースを際限なくチェックしましたが、問題ありません。パーティションテーブルも問題ありません..何が欠けているのかわかりません...
これは、ディスク アドレス パケットのスタック トレース部分です。
私はqemuの最新バージョンを使用しており、ハードドライブ(0x80)から読み取ろうとしていますが、同じ結果(CF 1 AH 0x01)で構造体の4バイトアライメントも試しました。拡張機能が存在します。
windows-7 - ブートローダーをプログラムする方法..? インストールに使用する Windows 7、XP、Vista、およびおそらく 98 SE を搭載した USB フラッシュ ドライブが必要
こんにちは、私の仲間の StackOverflow の友達です。
私が本当にやりたいことは、Windows 7、Windows XP (Pro および Home SP3)、Windows Vista の内容をコピーし、そのためのスペースが残っていると仮定して、最新の 98 SE インストール CD のコピーをフラッシュ ドライブにコピーすることです。実行する必要があるすべての OS インストールにそれを使用できるようにします。
明らかに、起動する OS インストールを選択できるブートローダーが必要になります。だから、これが可能かどうか興味があります。
だから - A) 私の小さなプロジェクトは実行可能ですか?
B) これを行うには、独自のカスタム ブート ローダーをプログラムする必要がありますか、それとも、Windows CD が既定で既に使用しているローダーを変更することは可能でしょうか (または、LiLo や Grub をハックして実行することもできます)。
C) ブートローダのプログラミング方法を学ぶのに適した場所を知っている人はいますか?それとも、これは私にはまったく当てはまりませんか? 私はプログラミングに関しては..まともですが、専門家という言葉の範囲ではありません。
私がフラッシュ ドライブでそれを必要とする理由は、単純に、それらからの読み取り速度が DVD や CD-ROM からの読み取り速度よりもはるかに高速になる傾向があるためです。
いつもお世話になっております!!
-スーター
c - ISOからカーネルをメモリにロードする方法
コンパイル時に、アセンブリ ブートストラップをカーネルと一緒に *.img ファイルにリンクし、MagicISO を使用して *.iso イメージに変換します。次に、この *.iso イメージから起動します。しかし問題は、ファイルの 2 番目のセクター (カーネル) を 0x1000 のメモリに読み込もうとしていることです。しかし、私はフロッピー ディスク イメージでしか方法を知らないので、*.iso で行う方法を誰か教えてもらえませんか? コードや何かが必要な場合は、教えてください。提供します:)。
assembly - MikeOS ブートローダーのスタック セグメント
このコードがわかりません:
- mov ax, 07C0h - ここで BIOS がコードをロードします。しかし、「4K」とは何ですか?キロバイト?私はそれを取得しませんでした:)
- add axe, 544 - なぜまた「8K」なのですか? そして、なぜ544を追加するのですか? なぜ512ではないのですか?
- mov sp, 4096 - ここでスタック ポインタを設定します。
スタック ポインターを設定する前に、これらすべての操作を行うのはなぜでしょうか。
c++ - C++のブートローダー
フロッピーディスク上に小さなアセンブリブートローダーを作成することで何度か混乱しましたが、C ++でブートローダーを作成できるかどうか疑問に思っていました。もしそうなら、どこから始めればよいでしょうか。私が知っているすべての人にとって、それが使用するかどうかさえわかりませんint main()
。
助けてくれてありがとう。