Modificando o cmdline do kernel no Ubuntu

5

Eu tenho vários sistemas nos quais preciso modificar o cmdline do kernel, adicionando algumas opções.

No momento, faço isso usando o seguinte procedimento:

  1. Abra / etc / default / grub
  2. Modifique o GRUB_CMDLINE_LINUX_DEFAULT, adicionando as opções
  3. Executar update-grub
  4. Reinicializar

No entanto, eu preferiria automatizar esse processo como parte de uma instalação de pacote, e evitar modificar o arquivo padrão (pois isso geralmente é frágil).

O que eu gostaria de fazer é algo como:

  1. Solte um arquivo (em /etc/grub.d/?), substituindo GRUB_CMDLINE_LINUX_DEFAULT ou similar
  2. Execute update-grub e reinicialize

Há uma pilha de scripts em /etc/grub.d/* que são usados para construir a configuração real do menu, no entanto, não há nenhuma maneira óbvia de interagir com eles. O script que gera a configuração só parece ler / etc / default / grub: (

Alguém pode me esclarecer se houver uma maneira de descartar um arquivo para modificar a linha de comando padrão do kernel?

    
por pehrs 02.12.2014 / 11:35

3 respostas

5
  1. Crie o diretório /etc/default/grub.d se ele já não existir.
  2. Crie um arquivo /etc/default/grub.d/myextraoption.cfg adicionando à variável que deseja (acrescente apenas a ele, com um espaço extra. Você quer ter cuidado para não estragar ou mangle quaisquer dados existentes lá.):

    GRUB_CMDLINE_LINUX_DEFAULT="${GRUB_CMDLINE_LINUX_DEFAULT} extra-option"
    
  3. Executar update-grub .

Você deve poder incluir com segurança um arquivo yourpackage.cfg em seu pacote, sem o risco de ser sobrescrito ou sufocando outra coisa. Qualquer um desses arquivos .cfg é incluído após o arquivo padrão principal, então esteja ciente disso e planeje de acordo.

Você quase certamente também desejará que um script postinst execute o update-grub quando o pacote estiver instalado e, só por segurança, pois ele está em / etc você provavelmente também deve incluí-lo em conffiles no seu pacote. Eu acho que isso vai deixar isso para trás a menos que uma purga do pacote seja feita, então a escolha do revendedor nessa parte.

Para referência, / usr / sbin / grub-mkconfig na linha 157, é o que lê os arquivos padrão, incluindo qualquer coisa que corresponda a /etc/default/grub.d/*. cfg . Parece-me provável que esta situação é exatamente o porquê disso.

Eu escrevi isso com base em Trusty. Eu não sei até que ponto nos lançamentos isso ainda é aplicável. Acabei de verificar Lucid e não está lá. Está lá no Precise.

    
por 15.12.2014 / 00:56
0

O grub 2.02 aparece para os arquivos de origem correspondentes ao /etc/default/grub.d/*.cfg, além de / etc / default / grub.

Talvez isso funcione em qualquer versão do seu Ubuntu também.

    
por 10.12.2014 / 22:08
0

De acordo com a documentação do grub , você pode achar útil editar o arquivo /etc/grub.d/40_custom com grub-mkconfig ;

/etc/grub.d/40_custom is particularly useful for adding entire custom menu entries; simply type the menu entries you want to add at the end of that file, making sure to leave at least the first two lines intact.

Talvez você possa pegar uma das primeiras entradas e copiá-la para o final dessa configuração e anexar as opções desejadas? Isso deve ser à prova do futuro, pois é basicamente preservar a configuração existente e anexar sua configuração personalizada como uma opção de menu suplementar.

Edit: Percebo que você solicitou que fosse a linha padrão, mas o acima é um comprometimento da edição com uma metodologia menos potencialmente destrutiva (e, em qualquer caso, você poderia optar por usar grub-mkconfig para executar uma tarefa mais ousada, como alterar o padrão)

    
por 11.12.2014 / 13:33