もう一度私は簡単にgooglableではない質問があります。 BIOSが指定されたデバイスからブートローダーをロードしたと仮定しましょう。どのデバイスを使用しているのかを今どのように調べて、残りのOSをRAMにロードできますか?起動デバイスを特定する方法
3
A
答えて
2
それはMBR bootstrapなら(そうでない場合も、おそらく、私は100%わからない?)あなたはこの(ように独自のメモリレイアウトを代用して)のような何かを行うことができます。すなわちDL
が ドライブ番号が含まれています:
EntryPoint:
xor ax, ax
mov ss, ax
mov ds, ax
mov sp, 0x7c00
.DiskReset:
mov ah, 0
int 0x13
jc .DiskReset
mov ax, 0x50 ; load to 0x500 linear address. It has unused space up to 0x7bff
mov es, ax
xor bx, bx
mov ax, 0x023B ; count = 0x3b = 59, the maximum..
mov cx, 0x0002
xor dh, dh ; leave (dl = drive number) intact
int 0x13
jnc .ReadDone
mov si, ReadError
call PrintString16
jmp .DiskReset
.ReadDone:
; ......
を
0
There's actually a whole protocol between the firmware and the bootstrap program in sector #0.しかし、わかりますように、ほとんどのドキュメントは標準ドキュメントのページにのみ存在し、実際には存在しません。実際には、古いPC/ATおよびPC98の方法でブートするときには、ファームウェアドライブ番号にDL
を使用し、BIOS Parameter Blockの「隠されたセクタ」フィールドを使用する(または、あまり好ましくはないが、ドライブ内のボリュームの位置を特定するために使用します。
新しい(x86 PCの世界に)少なくとも、ブートストラップがあれば、もちろんthings are a lot differentです。オペレーティングシステムのブートローダは、ブートマネージャメニューのエントリであり、ブートマネージャのメニューエントリにはパラメータシステムがあり、実行時にブートマネージャによってローダプログラムに渡されます。パラメータの1つは、オペレーティングシステムのブートローダがオペレーティングシステムファイルを見つけるために使用するブートボリュームの場所です。これは、Windows NTが長い間実績を上げてきた理由です。
関連する問題
- 1. udevでデバイスを特定する方法
- 2. サーバーの起動時に特定のSpring Beanを起動する方法
- 3. デバイスを起動する方法、ラズベリーパイのプログラムを自動実行する方法
- 4. 特定のiOSシミュレータでMeteorアプリケーションを起動する方法
- 5. ios:特定の位置でカーソルを起動する方法は?
- 6. 特定の時刻にアプリケーションを起動する方法
- 7. アプリから特定のiBookを起動する方法は?
- 8. 起動時に特定のデータベース上で実行するようにSpring起動アプリケーションを設定する方法
- 9. 端末を特定の方法で起動しますか?
- 10. アンドロイド:デバイスを起動する
- 11. デバイスの再起動後にアラームを保持する方法
- 12. 特定のBluetoothデバイスとの接続後にアプリケーションを起動します。
- 13. Androidデバイスのセキュリティパッチレベルを特定する方法は?
- 14. iPhone - デバイスのキャリアを特定する方法(AT&T、Verizonなど)
- 15. PyAudioで特定の入力デバイスを選択する方法
- 16. Androidデバイスで特定のアプリケーションを実行する方法
- 17. WebRTC - MediaStream(トラック)のソースID(デバイスID)を特定する方法
- 18. App Storeに特定のデバイスを許可する方法は?
- 19. エスプレッソレコーダーから特定のアクティビティを起動する方法はありますか?
- 20. jUnitでパラメータを使用して特定のTestSuiteを起動する方法は?
- 21. Xiaomiデバイスで自分のアプリの自動起動を有効にする方法
- 22. Selenium c#:特定のバージョン(IE8など)でInternet Explorerドライバを起動する方法
- 23. 私のw3wpプロセスの再起動の原因を特定する方法
- 24. アンドロイドウェブブラウザを起動してページ内の特定の位置にナビゲートする方法
- 25. 特定の日付と時刻にMysqlトリガを起動する方法
- 26. 特定の時刻にWindowsマシン上でjarファイルを起動する方法
- 27. 特定の範囲のビーコンからアプリを起動する方法は?
- 28. 特定のUbuntu isoを選択して起動するプログラムを起動する
- 29. AndroidStudioからアプリを起動するときにデバイスを選択する方法
- 30. デバイスの再起動後にアラームを設定する
thx私は決してそれがDLの価値が何を意味しているのか分からなかった。 – Pyjong