問題タブ [grub]

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 投票する
0 に答える
438 参照

linux - Grub2 で kgdb を構成するには?

PCIe HW デバイスでいくつかのレジスタを覗き見できるように、カーネル デバッグ セッションをセットアップする必要があります。Grub2 を使用する Ubuntu 12.04 を使用しています。私の /boot/config-3.5.0-23-generic ファイルに基づくと、カーネルは既に KGDB サポート付きでビルドされていますが、明らかに kgdb-over-ethernet サポート付きではありません。このため、カーネルを再構築中です。

それまでの間、Grub2 構成ファイルを変更して KGDB のエントリを追加する方法を見つけようとしています。これについて私が見つけることができた唯一のチュートリアルはすべて、これを行うための従来の Grub スタイルの構文を参照しています。

「kernel」コマンドが「linux」に置き換えられているように見えるため、Grub2 の構文は明らかに異なります。他にもさまざまな違いがあります。これにより、古い構文が「そのまま機能する」と期待することにはほとんど期待できません。

オンラインで Grub2 を使用して KGDB を構成するための手順を見つけることができませんでした。これを行う正しい方法は何ですか?Grub2 構文を使用してサンプルを提供できますか?

また、私は Linux でのカーネル デバッグに慣れていないので、おそらくこれについても正しい方法で行っていません。これに別の方法を使用する必要があるかどうかを教えてください。たとえば、イーサネットの既知の問題のために他の人がシリアルデバッグを使用している場合、またはその他の場合です。

ありがとう!

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 投票する
3 に答える
31429 参照

debian - Debian GRUB レスキュー - 「アーチに依存しない ELF マジックが無効です」

最近、Windows PC を Debian Wheezy でデュアルブートしました。インストールはエラーなく正常に完了しましたが、Debian を起動するとすぐに GRUB レスキューが表示されます。

コマンドを使用してさらに調べたところset、間違ったパーティションから起動していることに気付きました。

(hd0,gpt4)ここでは、Debian がインストールされている場所が であるときを指してい(hd0,gpt5)ます。setそこで、変数を本来あるべき状態に戻すために を使用して簡単な修正を行いました。

これを行った後、OSを起動して実行するために覚えていることだけを行いました。

これは、エラーが発生したときに問題が発生し始める場所です。

次に、この問題について調査したところ、ライブ CD から GRUB を再インストールするのが一般的な解決策のようでした。そこで、Debian のライブ CD を起動して、次のコマンドを実行しました。

エラーが表示される場所:

このファイルが存在し、編集可能であることは保証できますが、

では、何が問題になるのでしょうか?

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

assembly - 基本的なカーネルで GDT を実装する

私は最近、カーネル開発に夢中になり、OSDev Wiki の基本的なチュートリアルから始めました。Hello World の例を実装した後、次に進み、Global Descriptor Table の作成を試みました。オンラインのさまざまなソースから、GDT のコードをつなぎ合わせましたが、最終的には失敗しました。これの私の実装に何か問題がありますか?それがすぐに明らかにならない場合、より多くの情報を提供できるソースはありますか?

つまり、GDT を使用したカーネルの次の実装は、GRUB を使用したロードに失敗します。gccandでコンパイルしていasます。必要なその他の情報を提供できます。

ブーツ

カーネル.c

gdt.c

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

assembly - マルチブート ヘッダーがブート ファイルで機能しない

grub (レガシー) 仕様を使用してマルチブート カーネルに準拠したものを作成しようとしています。これが私の boot.s の内容です (gnu as で作成)

boot.h ファイルには、grub の定義が含まれています。

また、リンカーを次のように設定しました。

今のところ、kernel_main は %eax レジスタで期待している値 0x01 を返すだけですが、カーネルを次のように実行すると、次のようになります。

info registersqemu でコマンドを発行すると、 %eax の値は常に 18 になります。私の質問は次のとおりです。私の boot.s ファイルは grub に準拠するように正しく定義されていますか? また、%eax の値が 0x01 ではなく 18 である理由は何ですか?