問題タブ [multiboot]

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.

0 投票する
1 に答える
2251 参照

assembly - Grub2 でのカスタム カーネルの起動

Grub2 でカスタム カーネルを起動したいと考えています。古い(grub 1)マルチブートヘッダーを使用しました:

しかし、Grub2 では動作しないので、新しいマルチブート仕様を検索して見つけました: http://bzr.savannah.gnu.org/lh/grub/branches/multiboot2/annotate/head:/doc/multiboot2 .h (これは実際の仕様ではなく、単なるヘッダー ファイルです)

だから、今私はこのマルチブート ヘッダーを使用しています。

しかし、それも機能しません:マルチブートヘッダーはありません

助言がありますか?

ありがとう!

0 投票する
1 に答える
3912 参照

kernel - Grub 2 がカーネルでマルチブート ヘッダーを検出しない

Grub 2 (および QEMU の-kernel) がカーネルで Multiboot v1 ヘッダーを検出しないという問題があります。の前に別のセクションにヘッダーがあり.textます。

linker.ld:

boot.s(構文としての GNU):

ヘッダー セクションがマジック ナンバーで指定されたとおりに追加されていることを確認しました。

それでも Grub 2 は、カーネルに有効なマルチブート ヘッダーがなく、QEMU の-kernelオプションを使用すると次の原因になると述べています。

これは、マルチブートがあるべき場所ではなく、BIOS によってマップされた範囲内のアドレスのようです。

Bran と OSDev (および私の以前のカーネル) の通常のコードと比較しましたが、何が間違っているのかわかりません。

0 投票する
0 に答える
1009 参照

framebuffer - GRUB2 + VESA BIOS 拡張機能 / VBE が壊れていますか?

適切なブート イメージのビルドに関する以前の問題は修正されましたが、ほぼ 1 日中、別の GRUB2 関連の問題と格闘していました。

問題は、マルチブート ヘッダーにビデオ情報要求ビットを設定しても、GRUB2 が適切な VESA BIOS 拡張 (VBE) 情報を返さないことです。

カーネルは私自身の作品であり、以前のバージョンの GRUB2 で動作 (TM) していたことは注目に値します (画面を白いピクセルで埋めることができましたが、問題ありませんでした)。

これが私の現在のgrub.cfgです:

ブート イメージの作成に使用するスクリプトは次のとおりです。

0 投票する
1 に答える
2940 参照

bare-metal - エラー: マルチブート ヘッダーが見つかりません

この日、気になるものを見つけました。シンプルなベア OS をビルドする

マルチブート対応にする方法を読みました。NASM と GCC を使用しています。マルチブート ヘッダーを持つローダーを作成し、そのためにシステムのメイン ポイントを呼び出す必要があります。loader.asm と loader.ld の 2 つのファイルがあります。

loader.asm loader.ld main.c

私が使用しているビルドのために

そして最後のリンク

grub-mkrescue でシンプルな iso を構築し、qemu で実行しましたが、常に

ここに画像の説明を入力

問題はファイルにあると思いますloader.ldが、どこにあるのかわかりません

0 投票する
2 に答える
1812 参照

linker - GRUB マルチブート ヘッダーが見つかりません

この質問とそれが主な回答を読んだ後、カーネルで readelf を実行したところ、.text セクションが 0x00100000 ではなく 0x00101000 にあることに気付きました。また、.text セクションがあるはずの場所に .not.gnu.build-i と書かれている上記のセクションに気付きました。.text セクションを正しい場所に配置する方法はありますか? align 4以前は1Mに設定していました。

0 投票する
0 に答える
98 参照

assembly - カーネルの終了後に GRUB に戻る

したがって、GRUB2 によってロードされるプロテクト モード (32 ビット、x86) アセンブリ プログラムがあります。マルチブート対応です。このプログラムは、オペレーティング システムではなく、ゲームを意図したものです。したがって、GRUB を一種のプログラム スイッチャーとして使用したいと考えています。

0x7C00 に戻ることは明らかに機能しません。カーネルがロードされるまでに、CPU はすでに保護モードになっており、0x7C00 はリアル モード ブート セクターのエントリ ポイントだからです。では、ステージ 1 によってロードされた GRUB2 ステージ 2 ブートローダーはどこにあるのでしょうか? 私のプログラムが消去されないと仮定すると、それは消去されますか? また、ブートローダーにジャンプするだけで他に問題はありますか?

リアル モードに切り替えたり、マシンを再起動したりせずに、これを実行したいと考えています。