2

Я работаю с проектом с открытым исходным кодом. Сопровождающий Debian сообщил о сбое под X32 (не опечатка; это не X86), и я пытаюсь настроить тестовую среду для его воспроизведения.

Согласно вики Debian X32 Ports, мне нужно включить расширения X32 в ядре. Для этого мне нужно добавить запись Grub. Ниже приведено то, что я добавил в /etc/default/grub , и оно взято со страницы вики (за исключением того, что я прокомментировал запись по умолчанию).

# GRUB_CMDLINE_LINUX_DEFAULT="syscall.x32=y quiet"
GRUB_CMDLINE_LINUX="syscall.x32=y"

Затем я выполнил update-grub на странице вики и проверил записи в скомпилированном меню (см. Ниже).

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

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

Документация Debian Grub2 оставляет желать лучшего. В нем только обсуждается, как раскрасить пункты меню (вы не можете придумать такого рода вещи ...).

Я ожидал следующего после следования рецепту, предоставленному документами:

  • 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... Это привело к панике ядра:

3 ответа3

1

Если я вас правильно понял, вы хотите найти способ выбрать, загружаться ли с / без X32. Вы можете сделать это двумя разными способами:

  1. По мере необходимости возникает. Boot, в меню загрузки нажмите 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... и концом скобок, }. После включения измените строку

     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 и все готово.

1

Вы можете добавить foo = bar в grub

Из терминала запустить:

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 Forums

0

Если вам нужна опция только для самого последнего ядра в меню верхнего уровня, не помещайте «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, я не знаю; возможно, установка замечает настроенный файл конфигурации и дает вам возможность сохранить его. По крайней мере, это переживает обновления ядра.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .