Tenho uma máquina com um ISO inicializável armazenada e outra em branco, na qual quero instalar o ISO. Ambos estão na mesma LAN (conectados ao mesmo switch). Como iniciar a máquina em branco a partir da ISO armazenada no meu computador principal?
Tenho uma máquina com um ISO inicializável armazenada e outra em branco, na qual quero instalar o ISO. Ambos estão na mesma LAN (conectados ao mesmo switch). Como iniciar a máquina em branco a partir da ISO armazenada no meu computador principal?
Respostas:
Eu acho que você quer um meio de inicialização pxe a partir de imagens ISO. Eu procurei um pouco e encontrei este artigo . Acredito que esse método funcione para qualquer imagem ISO inicializável que você possa ter. Este é outro artigo semelhante .
Por fim, parece que este artigo discute como fazer isso em um servidor PXE (Ambiente de pré-inicialização do eXecution) executado no Windows.
Sim, é muito possível. O tipo de sistema que você pode inicializar dependerá de como o sistema funciona.
Normalmente, você verá que sistemas muito simples (como DOS ou Win98) e sistemas muito complexos (como as distribuições modernas do Linux) são facilmente inicializáveis pela rede.
A maneira de conseguir isso nos dois tipos de sistemas é muito diferente.
Vamos ver os dois lados com mais detalhes. Suponho que você já tenha uma configuração do servidor de inicialização PXE ; se não, vá em frente e faça, é bem fácil.
Também estou assumindo uma dnsmasq
configuração em um servidor Linux com o tftproot /var/lib/tftpboot
, mas você poderá adaptar as instruções a qualquer outra configuração.
Para sistemas simples, basta carregar a imagem (ISO) na RAM e induzir o sistema a acreditar que é uma unidade real. Isso é feito com uma pequena ajuda do BIOS e um módulo de software chamado memdisk .
O sistema que você deseja carregar pela rede é freedos:
# /var/lib/tftpboot/pxelinux.cfg/default
UI vesamenu.c32
PROMPT 0
TIMEOUT 0
MENU DEFAULT freedos
LABEL freedos
MENU LABEL FreeDOS
KERNEL /syslinux/memdisk
INITRD /freedos.iso iso
É praticamente isso. As primeiras linhas são padrão do menu; os bits importantes são as últimas quatro linhas: carrega o memdisk com o dado ISO.
Sistemas modernos com coisas sofisticadas, como bom gerenciamento de memória e detecção adequada de hardware, praticamente ignoram tudo o que o BIOS tem a dizer.
Isso torna a memdisk
abordagem usada acima praticamente inútil, porque se você carregou o ISO dessa maneira, uma vez que o kernel foi lido do ISO e carregado na memória (isso é feito pelo gerenciador de inicialização no ISO; os gerenciadores de inicialização prestam atenção ao BIOS) , os dados ISO desapareceriam.
O que fazes, então? Bem, na verdade, você não carrega o ISO da rede, mas diz ao sistema que ele pode acessar os arquivos necessários a partir daí.
Para sistemas Linux, extraia o conteúdo ISO em algum lugar do tftproot e carregue o kernel e o initrd diretamente, deixando a eles a tarefa de encontrar o sistema de arquivos raiz e montá-lo.
Aqui está um exemplo usando o incrível CD do System Rescue . Na verdade, eu extraído todo o ISO para a raiz do servidor TFTP, porque se encaixar bem com a minha estrutura de diretórios, de modo que os grãos estão em /syslinux
.
# /var/lib/tftpboot/pxelinux.cfg/default
UI vesamenu.c32
PROMPT 0
TIMEOUT 0
MENU DEFAULT sysrescd64
LABEL sysrescd64
MENU LABEL 1) SysResCD 4.2.0 (x64)
KERNEL /syslinux/rescue64
APPEND setkmap=us nomodeset netboot=nbd://pxe:sysrcd.dat
INITRD /syslinux/initram.igz
A parte mais importante aqui é a APPEND
linha. Veja netboot=
o final? É assim que o sistema operacional sabe onde está o sistema de arquivos raiz. A sintaxe é <protocol>://<server>:<path>
.
Eu havia definido convenientemente um nome DNS pxe
para o meu servidor. Se você não possui, você usaria um endereço IP para o servidor.
Além disso, o sysresccd é um dos mais fáceis porque usa uma imagem squashfs para seu sistema de arquivos raiz, que pode ser facilmente baixado e carregado na RAM com qualquer método. Aqui eu uso o nbd; você também pode usar tftp, nfs e http .
Para outras distros, como o Ubuntu, acho que você só pode usar nfs.
Para sistemas Windows, é um pouco mais complexo de fazer . O esboço é:
Eu nunca tentei isso, e parece que não funciona para algumas pessoas. Para versões do NT anteriores ao Vista, acho que isso nem é possível. No Windows pré-NT (95, 98, ME, etc), você pode usar a abordagem do memdisk, mas inicializá-los faz mal à sua saúde :-p
O Ultimate Deployment Appliance oferece o que você precisa. A página inicial deles descreve sua funcionalidade; é reformatado aqui por conveniência:
O que é o Ultimate Deployment Appliance?
Quando você usaria isso?
Como funciona?
O UDA possui um canal no YouTube , onde você pode encontrar um vídeo deles instalando o Windows 7 como um exemplo de configuração no UDA para o Windows completamente instalado.
Sugiro várias ferramentas para esse trabalho, se você estiver interessado em estender esta pesquisa: