
我參與一個免費/開源專案。 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 的GRUB2文件還有很多不足之處。它只討論如何為菜單項目著色(你不能編造這種東西...)。
按照文件提供的處方後,我預計會出現以下情況:
- Debian 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 啟動。您可以透過兩種不同的方式來完成此操作:
當需要出現時。啟動,在啟動選單中點擊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
與第一個項目不同的名稱,否則您將無法區分這兩個條目。
運行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 論壇