Inicializando um novo kernel do Linux dentro do Linux?

2

Alguém sabe de uma maneira de "inicializar" outro kernel Linux a partir do Linux, descartando o kernel / initrd original? A idéia é que eu posso inicializar meu servidor a partir de uma pequena cópia somente leitura do Linux que faz algumas tarefas de coleta de dados e coleta de dados e, em seguida, faz check-in com um servidor de gerenciamento para descobrir o que fazer com o servidor. A maior parte do tempo será apenas inicializar o Linux / Windows nos discos rígidos locais ou criar uma imagem na caixa.

Basicamente, eu quero uma pequena cópia do Linux para ser o gerenciador de inicialização, ao invés de um pacote de bootloader especializado (e menos flexível). A minúscula cópia do Linux pode estar em uma chave USB ou entregue por PXE.

O Loadlin costumava fazer isso para o Windows, então eu poderia criar esse ambiente no DOS ... mas a rede pode ser complicada e eu perco muitas ferramentas.

Outras opções são a virtualização. Toda a automação acima é parte do sistema operacional host, e faz check-in com o servidor de gerenciamento para descobrir os convidados para o lançamento e assim por diante. Como os servidores em nuvem fazem isso. Ou eu poderia fazer alguma mágica no lado do PXE: PXE inicialize a cópia de coleta de dados do Linux primeiro, faça uma alteração no servidor PXE e reinicie-o com a segunda vez que ele carrega um kernel remoto, mas uma unidade local.

    
por mfarver 23.03.2011 / 02:02

3 respostas

2

Bem, em uma configuração do pure-linux, você tem o kexec que pode ser usado para "reinicializar" o kernel / OS sem ter que reiniciar o hardware / passar pela carga do BIOS novamente. Que funciona bem para tudo menos do que um pânico no kernel.

Mas em um ambiente misto, acho que o Eater my tem a solução. Essencialmente você inicializaria em seu linux, executaria qualquer script que você necessitasse / faça qualquer manutenção é requerido e então reinicia em seu OS de escolha.

Lembre-se, no entanto, de que isso se aplica a tempos de carga freneticamente lentos. Concedido você pode otimizar os tempos de inicialização do Linux para um ponto em que pode demorar alguns segundos, você ainda tem que lidar com o carregamento da BIOS duas vezes. Tudo o que é visível para o usuário, que pode então decidir enlouquecer.

    
por 23.03.2011 / 03:40
1

Usando o GRUB, você pode fazer algo assim:

[root@localhost ~]# echo "savedefault --default=2 --once" | grub --batch
[root@localhost ~]# reboot

Isso instrui o GRUB a ignorar as configurações timeout e default de /boot/grub.conf e a entrada de inicialização 2 somente uma vez . Usar o sinalizador --once garante que, nas inicializações subseqüentes, os padrões em boot/grub.conf sejam seguidos.

    
por 23.03.2011 / 03:25
-1

Pelo que eu sei, você não pode inicializar um segundo kernel de dentro de um kernel atualmente em execução.

Você seria melhor instalar uma VM por meio do Xen e fazer com que ela execute as tarefas por meio de uma interface de rede virtual. Se você configurar uma nova VM, poderá usar o SSH para se conectar ao host e executar scripts e ferramentas como desejar.

Para o que você está fazendo, essa seria minha escolha.

    
por 23.03.2011 / 02:35