Veja este bug: link
E este blogpost: link
Até agora não encontrei uma boa solução, mas atualizarei se o fizer.
Uma coisa a ter em mente além do grub, do kernel e do initrd é / usr / lib / modules /. Quando o pacote linux atualiza, o pacote antigo apaga suas pastas em / usr / lib / modules / eo novo kernel adiciona seus novos módulos. Se você quer que ambos os kernels funcionem, você vai querer os dois conjuntos de módulos. E / usr / src / contém os cabeçalhos do kernel (necessários para construir novos módulos, como os drivers da nvidia), então você provavelmente também desejará mantê-los.
Os passos que eu acho que seriam algo como:
1. Detectar pacote linux vai ser atualizado.
2. Faça backup do que será excluído na desinstalação (/ usr / src / $ (uname -r), / usr / lib / modules / $ (uname -r), /boot/{vmlinuz-linux,initramfs-linux.img , initramfs-linux-fallback.img})
3. Deixe o pacman fazer sua atualização |
4. Restaure tudo em 2 (provavelmente dando um novo nome ao material em / boot
5. Edite o grub ou o que for.
Etapas alternativas (um pouco menos boas)
1. Deixe a atualização do pacman |
2. Detectar o kernel foi atualizado
3. de /var/cache/packman/pkg/linux-${previous_version}-pkg.tar.xz extrair / usr / src /, / usr / lib / {modules, extramodules}, e / boot / vmlinuz (renomeando o um em / boot, obviamente)
4. execute o mkinitcpio com a opção -k para construir o init antigo
5. Editar grub ou qualquer outra coisa
Neste método alternativo, você perde seus módulos de terceiros (caixa virtual, ATI / Nvidia, etc), mas pode ser algo que você pode executar a partir do cron e detectar automaticamente atualizações do kernel.