Como fazer o downgrade do kernel após atualização incorreta (16.04)

20

As atualizações recentes do kernel do Ubuntu 16.04 (4.4.0-89 e -91) falharam muito no meu laptop. Felizmente, eu tenho a versão de trabalho anterior ainda instalada (4.4.0-57). Por enquanto, eu tenho o Grub configurado para me mostrar um menu e seleciono manualmente -57 na inicialização, mas isso parece frágil, com probabilidade de ser interrompido no futuro sudo apt upgrade.

Eu acho que quero:

  • Para remover -89 e -91, pois eles não estão me fazendo nenhum bem.
  • Tornar -57 o padrão para o Grub, de maneira que persista por meio de atualizações.
  • Para garantir que o -57 permaneça instalado, mesmo se eu instalar a atualização posterior do kernel
  • Para poder tentar facilmente atualizações posteriores do kernel, mas volte a -57 se falhar. Minha principal preocupação é -57 sendo removida automaticamente.
  • Se eu encontrar uma atualização posterior em funcionamento, é um caminho fácil para retornar para desfazer tudo isso e retornar às seguintes atualizações do kernel.

Tentar remover -91 com sudo apt remove linux-image-4.4.0-91-genericrequer que eu remova o linux-generic e o linux-headers-generic. Isso parece ruim, então eu não tentei.

Posso encontrar uma variedade de perguntas sobre o problema geral, mas nenhuma parece abordar todos os meus objetivos, e a maioria tem idade suficiente para que eu não pense mais que elas se apliquem.

Qual é a melhor forma de fazer isso?

Adendo : Isso foi sinalizado como uma duplicata de Como impedir a atualização de um pacote específico? . Essa resposta pode abordar uma parte da minha pergunta, mas não aborda o quadro geral.

Em termos gerais, o problema é que o kernel é tratado de uma maneira incomum. Ele é instalado via linux-generic, que nada mais é que uma dependência dos linux-image-generic e linux-image-headers. Esses, por sua vez, são apenas dependências dos pacotes linux-linux-image-VERSION-generic e headers-VERSION-generic, dignos de nota por inserir o número da versão no nome do pacote (presumivelmente para facilitar a instalação de vários em paralelo).

Especificamente não abordados nessa resposta são:

  • Não aborda como remover -89 e -91.
  • Não aborda como tornar o -57 o padrão para o Grub, mesmo que eu instale atualizações posteriores.
  • Não aborda como garantir que -57 permaneça instalado, mesmo se eu instalar atualizações posteriores. Mesmo se a resposta for reter um ou mais pacotes, dados os vários pacotes envolvidos, quais eu devo reter? Se é uma questão de manter o linux-generic, como faço o downgrade primeiro?
Alan De Smet
fonte
É muito improvável que os kernels "falhem" no seu laptop. Provavelmente você instalou algum driver de maneira errada e "falhou" após uma atualização do kernel. Você instalou algum driver gráfico?
precisa saber é o seguinte
Se você remover o kernel e o linux-generic mais recentes com os cabeçalhos, alcançará seu objetivo. Mas como eu disse, o problema é diferente.
precisa saber é o seguinte
11
"falhou" não era wifi e X infeliz com meus gráficos. Ambos são drivers de estoque integrados e usados ​​da Intel. O problema persistiu através de várias reinicializações, incluindo um desligamento / inicialização completos. Então, meu objetivo era uma pausa até que eu pudesse investigar seriamente. Naturalmente, começo a coletar algumas informações para investigações sérias e -91 começa a funcionar conforme o esperado. suspiro , cruzarei meus dedos por enquanto.
Alan De Smet
11
Isto não é uma duplicata. Não se trata apenas de congelar alguns pacotes. Talvez seja uma duplicata, mas não da pergunta proposta.
precisa saber é o seguinte

Respostas:

19

Remova o kernel mais recente

sudo apt remove linux-image-4.4.0-91-generic linux-headers-4.4.0-91-generic

Isso desinstalará os meta pacotes linux-generic, linux-image-generice linux-headers-generic. Kernels nunca serão atualizados.

Para revertê-lo, você pode executar

sudo apt install linux-generic

Isso instalará o kernel mais recente e os kernels receberão atualizações.

linux-genericé um meta pacote. Está vazio, mas depende de outros dois meta-pacotes: linux-image-generice linux-headers-generic.

Os dois últimos apontam para a imagem e os cabeçalhos mais recentes do kernel.

Se você remover os meta-pacotes, nada será removido do Linux, mas a imagem e os cabeçalhos do kernel não receberão atualizações. Você sempre pode instalá-los mais tarde. Eles puxarão os mais recentes pacotes "reais" do kernel.

Portanto, a solução é remover manualmente os pacotes do kernel que você não deseja e também os meta-pacotes.

Pilot6
fonte
3

Embora a solução do Pilot6 possa ser a melhor solução, você pode tomar medidas menos drásticas.

Eu pessoalmente removeria os kernels que você não deseja do centro de software e colocaria esses pacotes em espera - consulte Como impedir a atualização de um pacote específico?

Essa é uma alteração trivial e você pode acompanhar ou reverter a alteração facilmente.

Pantera
fonte
Qual pacote você sugere manter?
precisa saber é o seguinte
linux-genérico é provavelmente suficiente, não tenho certeza. Pode ser necessário adicionar os outros e pode precisar especificar o kernel exato, mas duvido.
Panther
3
sudo apt-mark hold linux-image-generic linux-headers-genericfará #
Panther
11
@ Pilot6 - Não, você pode manter os kernels antigos e marcar o grub em qual kernel inicializar. askubuntu.com/questions/216398/...
Panther
11
Sim você pode. Mas é muito complicado e não faz sentido prático.
precisa saber é o seguinte