
Eu trabalho com um projeto de código aberto/gratuito. Um mantenedor do Debian relatou uma falha no X32 (não é um erro de digitação; não é X86), e estou tentando configurar um ambiente de teste para reproduzi-lo.
De acordo com o DebianWiki das portas X32, preciso habilitar as extensões X32 no kernel. Para fazer isso, preciso adicionar a entrada Grub. Abaixo está o que eu adicionei /etc/default/grub
e foi retirado da página wiki (exceto que comentei a entrada padrão).
# GRUB_CMDLINE_LINUX_DEFAULT="syscall.x32=y quiet"
GRUB_CMDLINE_LINUX="syscall.x32=y"
Em seguida, executei uma update-grub
verificação na página wiki e verifiquei as entradas no menu compilado (veja abaixo).
Quando inicializo o sistema, a opção não parece estar disponível no menu principal ou nas opções avançadas:
DebianGrub2documentos deixa muito a desejar. Ele apenas discute como colorir as entradas do menu (você não pode inventar esse tipo de coisa...).
Eu esperava o seguinte depois de seguir a prescrição fornecida pelos documentos:
- Debian GNU/Linux
- Debian GNU/Linux (X32)
- Opções avançadas
- Teste de memória (memtest86+)
- Teste de memória (memtest86+, serial)
- ...
Como adiciono opções de inicialização X32 ao Grub, dou a ele um nome como "Debian GNU/Linux (X32)", garanto que seja uma opção de inicialização para o kernel durante a inicialização e garanta que as alterações sobrevivam após um upgrade
ou dist-upgrade
?
De acordo com a resposta de Marius abaixo, adicionei o seguinte /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
}
Ele fornece a entrada nomeada conforme esperado, mas resulta em um erro de inicialização:
error: can't find command: `linux/boot/vmlinuz-4`
Acho que foi devido ao copiar/colar no Emacs (aparentemente remove espaços em branco???). Então eu mudei para linux /boot/vmlinuz-4.2.0-1-amd64...
. Isso resultou em pânico no kernel:
Responder1
Se entendi bem, você deseja encontrar uma maneira de escolher se deseja inicializar sem ou com o X32. Você pode fazer isso de duas maneiras distintas:
Conforme surgir a necessidade. Inicialização, no menu de inicialização clique eem
edit
, role para baixo até a linhalinux /boot/vmlinuz-linux root=UUID=978e3e81-8048-4ae1-8a06-aa727458e8ff quiet splash
e modificá-lo para
linux /boot/vmlinuz-linux root=UUID=978e3e81-8048-4ae1-8a06-aa727458e8ff syscall.x32=y quiet
Agora continue inicializando.
Sistematicamente. No diretório
/etc/grub.d/
existe uma entrada,40_custom
, que é usada exatamente para isso. Você deverá copiar nele uma seção do arquivo/boot/grub/grub.cfg
: a parte incluída entremenuentry Debian GNU/Linux...
e o final das brechas, }. Após a inclusão, modifique a linhalinux /boot/vmlinuz-linux root=UUID=978e3e81-8048-4ae1-8a06-aa727458e8ff quiet splash
em
linux /boot/vmlinuz-linux root=UUID=978e3e81-8048-4ae1-8a06-aa727458e8ff syscall.x32=y quiet
Além disso, lembre-se de alterar o nome da entrada do menu para 40_custom
algo diferente da sua primeira entrada, caso contrário você não conseguirá distinguir as duas entradas.
Corra update-grub
e pronto.
Responder2
Se você deseja a opção apenas para o kernel mais recente no menu de nível superior, não coloque "syscall.x32=y" em /etc/default/grub
. Em vez disso, encontre
linux_entry "${OS}" "${version}" simple \
"${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
e adicione /etc/grub.d/10_linux
isto depois:
linux_entry "${OS} (X32)" "${version}" simple \
"${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT} syscall.x32=y"
Em seguida, execute update-grub
para atualizar /boot/grub/grub.cfg
adequadamente.
Desta forma eu poderia inicializar o kernel mais recente com a opção "syscall.x32 = y", mas não noto diferença em inicializar sem ela. Isso está no Xubuntu 15.10 de 64 bits. Quanto à configuração que sobreviveu após a atualização do pacote grub, não sei; talvez a instalação detecte um arquivo de configuração personalizado e ofereça a opção de mantê-lo. Pelo menos isso sobrevive às atualizações do kernel.
Responder3
Você poderia adicionar foo=bar
no grub
Em uma execução de terminal:
gksudo gedit /etc/default/grub
e digite sua senha.
Encontre a linha que começa com GRUB_CMDLINE_LINUX_DEFAULT e anexe foo=bar ao final. Por exemplo:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash foo=bar"
Salve o arquivo e feche o editor.
Finalmente, inicie um terminal e execute:
sudo update-grub
para atualizar o arquivo de configuração do GRUB (provavelmente você precisará digitar sua senha).
Na próxima reinicialização, o kernel deve ser iniciado com o parâmetro de inicialização
Fonte: Fóruns Grub