Adiciona outra opção de inicialização ao Grub para extensões X32?

2

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 é o X86), e estou tentando configurar um ambiente de teste para reproduzi-lo.

De acordo com o Debian X32 Ports do Debian , eu preciso ativar as extensões X32 no kernel. Para fazer isso, preciso adicionar a entrada do Grub. Abaixo está o que eu adicionei ao /etc/default/grub , e é retirado da página wiki (exceto que eu comentei a entrada padrão).

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

Eu então executei um update-grub por a 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:

Osdocumentos Grub2 do Debian deixam muito a desejar. Ele apenas discute como colorir as entradas do menu (você não pode fazer esse tipo de coisa ...).

Esperei o seguinte após 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 eu adiciono as opções de inicialização do X32 ao Grub, nome como "Debian GNU / Linux (X32)", garanto que é uma opção de inicialização do kernel durante a inicialização, e garanto que as alterações sobrevivam após upgrade ou dist-upgrade ?

De acordo com a resposta de Marius abaixo, adicionei o seguinte a /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 como esperado, mas resulta em um erro de inicialização:

error: can't find command: 'linux/boot/vmlinuz-4'

Eu acho que foi devido a 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 um pânico no kernel:

    
por jww 18.09.2015 / 07:11

3 respostas

1

Você pode adicionar foo = bar no grub

De 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 seu final. Por exemplo:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash foo=bar"

Salve o arquivo e feche o editor.

Finally, start a terminal and run:

sudo update-grub

to update GRUB's configuration file (you probably need to enter your password).

Na próxima reinicialização, o kernel deve ser iniciado com o parâmetro de inicialização

Fonte: fóruns do Grub

    
por 21.09.2015 / 07:57
1

Se eu entendi bem, você quer encontrar uma maneira de escolher entre inicializar com / sem X32. Você pode fazer isso de duas maneiras distintas:

  1. Conforme necessário. Boot, no menu de inicialização, clique em e para edit , role para baixo até a linha

    linux /boot/vmlinuz-linux root=UUID=978e3e81-8048-4ae1-8a06-aa727458e8ff quiet splash
    

e modifique-o para

  linux /boot/vmlinuz-linux root=UUID=978e3e81-8048-4ae1-8a06-aa727458e8ff syscall.x32=y quiet 

Continue a inicialização.

  1. Sistematicamente. No diretório /etc/grub.d/ , há uma entrada, 40_custom , que é usada exatamente para isso. Você terá que copiar uma seção do arquivo /boot/grub/grub.cfg : a parte incluída entre menuentry Debian GNU/Linux... e o final das quebras, } . Após a inclusão, modifique a linha

     linux /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 do menuentry, em 40_custom para algo diferente da sua primeira entrada, caso contrário você não conseguirá distinguir as duas entradas.

Execute update-grub e está pronto.

    
por 07.10.2015 / 00:28
0

Se você quiser 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}"

em /etc/grub.d/10_linux e adicione 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 de acordo.

Desta forma, eu poderia inicializar o kernel mais recente com a opção "syscall.x32 = y", mas não noto diferença na inicialização sem ele. Isso está no Xubuntu 15.10 64 bits. Quanto à configração sobrevivente após a atualização do pacote grub, eu não sei; talvez a instalação perceba um arquivo de configuração personalizado e lhe dê uma opção para mantê-lo. Pelo menos isso sobrevive às atualizações do kernel.

    
por 24.01.2016 / 13:46