Que kernel reinicializa o carregamento?

5

Estou usando o ssh para acessar remotamente algumas máquinas. Estas máquinas possuem um kernel personalizado instalado (baseado na fonte 2.6.28). No entanto, sempre que eu tento reiniciar as máquinas usando sudo reboot , o sistema usa o kexec e carrega o kernel 2.6.28-19-genérico, que também é instalado na máquina.

Então, como posso especificar qual imagem do kernel carregar após a reinicialização?

EDITAR: Eu tenho ubuntu 9.04 instalado na máquina, com grub 1.something. O kernel personalizado é baseado na origem 2.6.28 com o nome sendo 2.6.28.10-custom-1.1. Dois outros kernels estão instalados na máquina 2.6.28-19-generic e 2.6.28-6-386. Eu verifiquei que depois de chamar reboot, a máquina não reinicia, mas usa o kexec para carregar o kernel genérico de 19, mesmo se o kernel atual fosse o personalizado.

    
por apoorv020 16.02.2011 / 09:42

2 respostas

4

Normalmente, quando você reinicializa, a máquina retornará ao grub e permitirá que você selecione um kernel através do teclado ou inicialize o kernel configurado padrão. No entanto, se você tiver o kexec-tools instalado, o comando reboot causará um curto circuito nesse comportamento e será diretamente convertido em um kernel. Você pode desabilitar esse comportamento e retornar ao grub na reinicialização, desinstalando as ferramentas kexec ou editando o arquivo

/etc/default/kexec 

e configuração:

  LOAD_KEXEC=false 

Como alternativa, para manter o kexec ativo e reinicializá-lo no kernel de sua escolha, tente uma linha de comando como esta para carregar o kernel desejado:

 kexec -l /boot/vmlinux --append=root=/dev/hda1 --initrd=/boot/initrd

então quando o 'kexec -e' é executado mais tarde, o kernel configurado na linha kexec também será executado. Como acredito que o script de reinicialização acaba chamando de 'kexec-e', acredito que a mudança no kernel deve ter efeito.

    
por 16.02.2011 / 17:30
2

Eu encontrei uma postagem muito bacana aqui . Ele contém um script para chamar o kexec manualmente. Script de republicação aqui:

    UNAMER='uname -r' # this checks the version of the kernel 
            #just to save typing

    #This just puts all of the parameters for loading in one place

KPARAMS="-l " # tells kexec to load the kernel

# --append tells the kernel all of its parameters
# cat /proc/cmdline gets the current kernel's command line
KPARAMS=$KPARAMS"--append=\"'cat /proc/cmdline'\" "

# this tells the kernel what initrd image to use
KPARAMS=$KPARAMS"--initrd=/boot/initrd.img-$UNAMER "

# this tells the kexec what kernel to load
KPARAMS=$KPARAMS"/boot/vmlinuz-$UNAMER"

    # Message should end with a newline since kFreeBSD may
    # print more stuff (see #323749)
    log_action_msg "Will now restart"

    if [ -x 'locate kexec | grep sbin' ]; then # check for the kexec executable
            kexec $KPARAMS  # load the kernel with the correct parameters
            sync            # sync all of the disks so as not to lose data
            umount -a       # make sure all disks are unmounted
            kexec -e        # reboot the kernel
    fi

    #This next line should never happen.

    reboot -d -f -i
    
por 16.02.2011 / 17:38

Tags