Добавить дополнительную опцию загрузки в Grub для расширений X32?

Добавить дополнительную опцию загрузки в Grub для расширений X32?

Я работаю с проектом 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по странице вики и проверил записи в скомпилированном меню (см. ниже).

При загрузке системы эта опция не отображается ни в главном меню, ни в дополнительных параметрах:

Отсутствует запись Grub для X32

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. Вы можете сделать это двумя различными способами:

  1. По мере необходимости. Загрузитесь, в меню загрузки нажмите 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 

Теперь продолжайте загрузку.

  1. Систематически. В каталоге /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

Связанный контент