
私はフリー/オープンソース プロジェクトに携わっています。Debian のメンテナーから、X32 で障害が発生したという報告がありました (タイプミスではありません。X86 ではありません)。私は、それを再現するためにテスト環境を設定しようとしています。
DebianのX32 ポート ウィキ、カーネルで X32 拡張機能を有効にする必要があります。そのためには、Grub エントリを追加する必要があります。以下は、私が に追加したもの/etc/default/grub
で、Wiki ページから取得したものです (ただし、デフォルトのエントリはコメントアウトしています)。
# GRUB_CMDLINE_LINUX_DEFAULT="syscall.x32=y quiet"
GRUB_CMDLINE_LINUX="syscall.x32=y"
update-grub
次に、 Wiki ページに従って実行し、コンパイルされたメニューのエントリを確認しました (下記参照)。
システムを起動すると、メイン メニューまたは詳細オプションの下にオプションが表示されないようです。
Debianのグラブ2ドキュメントには改善の余地が多々あります。メニュー エントリを色付けする方法のみが説明されています (このようなことは考えられません...)。
医師の指示に従った後、私は次のことを期待しました。
- デビアンGNU/Linux
- Debian GNU/Linux (X32)
- 高度なオプション
- メモリテスト (memtest86+)
- メモリテスト (memtest86+、シリアル)
- ...
Grub に X32 ブート オプションを追加し、「Debian GNU/Linux (X32)」のような名前を付け、ブート中にカーネルのブート オプションであることを確認し、またはの後も変更が維持されるようにするにはどうすればよいですupgrade
かdist-upgrade
?
以下の Marius の回答に従って、次の内容を追加しました/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...
。その結果、カーネル パニックが発生しました。
答え1
私が正しく理解していれば、X32 で起動するかしないかを選択する方法を見つけたいということですね。これには 2 つの異なる方法があります。
必要に応じて起動します。起動メニューでを押しe、
edit
次の行までスクロールします。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
最初のエントリとは異なる名前に変更することを忘れないでください。そうしないと、2 つのエントリを区別できなくなります。
実行update-grub
すれば完了です。
答え2
最新のカーネルのオプションだけをトップレベルメニューに表示したい場合は、 に「syscall.x32=y」と入力しないでください/etc/default/grub
。代わりに、
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" オプションを使用して最新のカーネルを起動できますが、このオプションなしで起動した場合との違いはわかりません。これは、Xubuntu 15.10 64 ビットの場合です。grub パッケージのアップグレード後に構成が存続するかどうかはわかりません。インストール時にカスタマイズされた構成ファイルが認識され、それを保持するオプションが提供されるのかもしれません。少なくとも、これはカーネルの更新後も存続します。
答え3
foo=bar
grubに追加できる
ターミナルから実行:
gksudo gedit /etc/default/grub
パスワードを入力してください。
GRUB_CMDLINE_LINUX_DEFAULT で始まる行を見つけて、その末尾に foo=bar を追加します。例:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash foo=bar"
ファイルを保存してエディターを閉じます。
最後に、ターミナルを起動して次のコマンドを実行します。
sudo update-grub
GRUB の設定ファイルを更新します (おそらくパスワードを入力する必要があります)。
次回の再起動時に、カーネルはブートパラメータで起動されるはずです。
出典: Grub フォーラム