私はフリー/オープンソースプロジェクトで働いています。 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
を実行し、コンパイルされたメニューのエントリを確認しました(以下を参照)。
システムを起動すると、メインメニューまたは詳細オプションでオプションが使用できないように見えます。
Debianの Grub2 docsにはまだまだ多くの要望があります。メニューエントリに色を付ける方法についてのみ説明します(この種のものを作成することはできません...)。
ドキュメントによって提供された処方箋に従った後、私は次のことを期待しました:
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...
に変更しました。その結果、カーネルパニックが発生しました。
私があなたを正しく理解しているなら、あなたはX32を使って起動するかどうかを選択する方法を見つけたいと思うでしょう。あなたは2つの異なる方法でそれを行うことができます:
必要に応じて。起動、起動メニューのヒットで 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
起動を続けます。
体系的に。ディレクトリ/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
を実行すると、完了です。
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パッケージのアップグレード後に残っている構成については、わかりません。おそらく、インストールはカスタマイズされた構成ファイルに気づき、それを保持するオプションを提供します。少なくとも、これはカーネルの更新後も存続します。