
Я работаю с проектом free/open source. Сопровождающий Debian сообщил о сбое в X32 (это не опечатка; это не X86), и я пытаюсь настроить тестовую среду, чтобы воспроизвести его.
Согласно DebianX32 Порты вики, мне нужно включить расширения X32 в ядре. Чтобы сделать это, мне нужно добавить запись Grub. Ниже приведено то, что я добавил в /etc/default/grub
, и это взято со страницы вики (за исключением того, что я прокомментировал запись по умолчанию).
# GRUB_CMDLINE_LINUX_DEFAULT="syscall.x32=y quiet"
GRUB_CMDLINE_LINUX="syscall.x32=y"
Затем я выполнил проверку update-grub
по странице вики и проверил записи в скомпилированном меню (см. ниже).
При загрузке системы эта опция не отображается ни в главном меню, ни в дополнительных параметрах:
Debian'sGrub2docs оставляет желать лучшего. Там обсуждается только, как раскрасить пункты меню (нельзя же такое придумать...).
После выполнения предписаний врачей я ожидала следующего:
- 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...
. Это привело к панике ядра:
решение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...
и концом breaces, }. После включения измените строку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-bit. Что касается конфигурации, сохраняющейся после обновления пакета 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