web-dev-qa-db-ja.com

X32拡張機能のGrubにブートオプションを追加しますか?

私はフリー/オープンソースプロジェクトで働いています。 DebianのメンテナがX32(タイプミスではなく、X86ではない)での障害を報告しました。私はそれを再現するためのテスト環境をセットアップしようとしています。

Debianの X32 Ports wiki によると、カーネルでX32拡張機能を有効にする必要があります。そのためには、Grubエントリを追加する必要があります。以下は、私が/etc/default/grubに追加したものであり、wikiページから取得したものです(デフォルトのエントリにコメントした場合を除く)。

# GRUB_CMDLINE_LINUX_DEFAULT="syscall.x32=y quiet"
GRUB_CMDLINE_LINUX="syscall.x32=y"

次に、wikiページごとにupdate-grubを実行し、コンパイルされたメニューのエントリを確認しました(以下を参照)。

システムを起動すると、メインメニューまたは詳細オプションでオプションが使用できないように見えます。

Missing Grub entry for X32

Debianの Grub2 docsにはまだまだ多くの要望があります。メニューエントリに色を付ける方法についてのみ説明します(この種のものを作成することはできません...)。

ドキュメントによって提供された処方箋に従った後、私は次のことを期待しました:

  • Debian GNU/Linux
  • Debian GNU/Linux(X32)
  • 高度なオプション
  • メモリテスト(memtest86 +)
  • メモリテスト(memtest86 +、シリアル)
  • .。

X32ブートオプションをGrubに追加し、「Debian GNU/Linux(X32)」のような名前を付け、ブート中にカーネルのブートオプションを確保し、upgradeまたはdist-upgrade


以下のマリウスの答えによると、私は/etc/grub.d/40_customに以下を追加しました。

menuentry 'Debian GNU/Linux (X32)' --class debian --class gnu-linux --class gnu --class os
  $menuentry_id_option 'gnulinux-simple-a4af7dfc-640c-4aa8-bf0b-068af3d72b01' {
    linux/boot/vmlinuz-4.2.0-1-AMD64 root=UUID=a4af7dfc-640c-4aa8-bf0b-068af3d72b01 ro syscall.x32=y quiet
}

期待どおりに名前付きエントリを提供しますが、起動エラーが発生します。

error: can't find command: `linux/boot/vmlinuz-4`

これはEmacsでのコピー/貼り付けが原因だと思います(明らかに空白が削除されます???)。そこで、linux /boot/vmlinuz-4.2.0-1-AMD64...に変更しました。その結果、カーネルパニックが発生しました。

enter image description here

2
jww

私があなたを正しく理解しているなら、あなたはX32を使って起動するかどうかを選択する方法を見つけたいと思うでしょう。あなたは2つの異なる方法でそれを行うことができます:

  1. 必要に応じて。起動、起動メニューのヒットで eeditの場合は、行まで下にスクロールします

    linux /boot/vmlinuz-linux root=UUID=978e3e81-8048-4ae1-8a06-aa727458e8ff quiet splash
    

に変更します

  linux /boot/vmlinuz-linux root=UUID=978e3e81-8048-4ae1-8a06-aa727458e8ff syscall.x32=y quiet 

起動を続けます。

  1. 体系的に。ディレクトリ/etc/grub.d/には、これに正確に使用されるエントリ40_customがあります。ファイル/boot/grub/grub.cfgのセクションをコピーする必要があります:menuentry Debian GNU/Linux...とブレースの終わりの間に含まれる部分。 }。含めた後、行を変更します

     linux /boot/vmlinuz-linux root=UUID=978e3e81-8048-4ae1-8a06-aa727458e8ff quiet splash
    

     linux /boot/vmlinuz-linux root=UUID=978e3e81-8048-4ae1-8a06-aa727458e8ff syscall.x32=y quiet

また、40_customのmenuentryの名前を最初のエントリとは異なる名前に変更することを忘れないでください。そうしないと、2つのエントリを区別できなくなります。

update-grubを実行すると、完了です。

1
MariusMatutiae

Grubでfoo = barを追加できます

ターミナル実行から:

gksudo gedit /etc/default/grub

パスワードを入力します。

GRUB_CMDLINE_LINUX_DEFAULTで始まる行を見つけて、その末尾にfoo = barを追加します。例えば:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash foo=bar"

ファイルを保存して、エディターを閉じます。

Finally, start a terminal and run:

Sudo update-grub

to update GRUB's configuration file (you probably need to enter your password).

次回の再起動時に、カーネルはブートパラメータを使用して起動する必要があります

出典:Grubフォーラム

トップレベルメニューの最新カーネル専用のオプションが必要な場合は、/etc/default/grubに「syscall.x32 = y」を入れないでください。代わりに、

linux_entry "${OS}" "${version}" simple \
"${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"

/etc/grub.d/10_linuxに追加し、その後に追加します。

linux_entry "${OS} (X32)" "${version}" simple \
"${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT} syscall.x32=y"

次に、update-grubを実行して、それに応じて/boot/grub/grub.cfgを更新します。

このようにして、「syscall.x32 = y」オプションを使用して最新のカーネルを起動できますが、それなしで起動する場合との違いはわかりません。それはXubuntu15.1064ビットにあります。 grubパッケージのアップグレード後に残っている構成については、わかりません。おそらく、インストールはカスタマイズされた構成ファイルに気づき、それを保持するオプションを提供します。少なくとも、これはカーネルの更新後も存続します。

0
jarno