Inicializando a partir do controlador RAID PCI baseado em firmware no SeaBIOS

2

Eu tinha um servidor rodando Windows 2003 que residia em um array RAID5 formado pelo Promise FastTrak SX4100, que eu achava que era baseado em hardware por causa de seu processador dedicado e memória buffer e sua capacidade de inicializar o DOS e o Windows. Acontece, no entanto, que o controlador é apenas hardware assistido , com lógica de nível mais alto executada pelo firmware x86 em execução no processador host. Agora que a placa-mãe antiga (ou processador?) Morreu e tentei migrar para um hardware mais moderno orientado por UEFI, o controlador RAID não pode inicializar mesmo no modo herdado (BIOS) - ele trava ao verificar discos, i. e. seu firmware recebe o controle do UEFI / BIOS e imprime mensagens de boas-vindas na tela, mas não faz progresso na identificação de unidades SATA conectadas.

Portanto, eu pensei que poderia ter melhor sorte executando o Windows dentro de uma máquina virtual com placa PCI transmitida para ele, tanto mais que é improvável que o NT 5.2 seja compatível com chipsets modernos, enquanto o Qemu fornece um ambiente emulado totalmente confortável no BIOS clássico modo. O problema, no entanto, é que SeaBIOS não lista o controlador RAID como um dispositivo inicializável , apesar de poder se comunicar com ele com sucesso.

Isto é:

  • O firmware do controlador faz receber o controle e é capaz de inicializar a matriz RAID antes do menu de inicialização ser exibido pelo SeaBIOS, entretanto esse menu não tem nenhuma menção ao disco da matriz .
  • O utilitário de configuração da matriz que pode ser chamado durante o processo POST mostra claramente que a matriz está íntegra.
  • Quando o Windows Installer é executado e carregado com drivers RAID, ele também exibe claramente o conteúdo do disco, comprovando sua disponibilidade.

Em outras palavras, o array parece totalmente operacional dentro do ambiente de VM, mas por algum tempo não reconhecido pelo SeaBIOS como um dispositivo inicializável , embora o último suporte dispositivos para a opção Boot ROM, como é evidente com a ROM de inicialização de rede do iPXE embutida no próprio SeaBIOS.

Eu também tive uma idéia de que o GRUB pode ser de alguma ajuda aqui, i. e. inicializando a partir do SeaBIOS no GRUB (em um pequeno disco separado) e, em seguida, carregando em cadeia para o Windows. No entanto, não fui muito bem-sucedido em configurá-lo, pois os ambientes Linux não vêem o array devido à falta de drivers e, portanto, não podem ajudar na criação de menus, mas o próprio GRUB não é muito amigável nem detalhado - não consegui entender se realmente vê a matriz como uma unidade de disco ou precisa que alguns drivers sejam carregados antecipadamente ou quaisquer outros pré-requisitos. Os kits de resgate, como o RescaTux ou o PartedMagic, também não são úteis, pois estão focados em reparar as instalações existentes do GRUB - não configurando novas.

Para referência, eu experimentei o Xen 4.7.2 usando o upstream do Qemu 2.6.2 com o SeaBIOS 1.9.1, além do openSUSE 42.2 com o Linux 4.4.62. Fóruns e listas de discussão indicam que a inicialização a partir do PCI RAID já era possível em versões mais antigas, por mais de uma década, então eu suponho que é minha configuração particular a ser culpada. Mas não consigo entender, o SeaBIOS é realmente capaz de inicializar a partir do meu controlador RAID?

O objetivo final é recuperar o servidor por qualquer meio disponível, incluindo a aquisição de outro hardware antigo compatível. Mas fiquei curioso com essa tecnologia específica, já que as máquinas virtuais pareciam um método mais versátil e futuro de prolongar a vida dos sistemas legados.

    
por Anton Samsonov 04.06.2017 / 16:09

2 respostas

0

Sim, o SeaBIOS suporta o carregamento e a execução de roms de opções PCI. O que aparentemente funciona como você pode ver as mensagens de inicialização do controlador RAID. A ROM PCI então tem que registrar qualquer disco inicializável, o que não está acontecendo aqui. Pode ser um problema de configuração. Verifique o utilitário de configuração da matriz sempre que você puder configurar o volume de inicialização lá. Também pode haver algum bug ou incompatibilidade ...

Se isso não funcionar, você pode tentar algo completamente diferente: Conecte os discos a algum controlador sata suportado pelo Linux e, em seguida, verifique sempre que o dmraid é capaz de decodificar o volume do RAID. Se isso funcionar, você pode anexá-lo como um disco simples à sua máquina virtual win2k3.

    
por 04.06.2017 / 23:04
0

Então você tem apenas um caminho:

  1. Você deve encontrar a placa-mãe antiga com o slot de expansão PCI V2.2 e tentar inicializar a partir do controlador RAID.
  2. Em seguida, instale drivers especiais para o KVM em todo o hardware virtual (veja abaixo).
  3. Faça backup. Em seguida, inicialize a partir do Live CD do Linux (pelo exemplo de SystemRescueCD ) e reduza o tamanho das partições sem alterar a posição inicial de partição de inicialização e raiz (geralmente é o disco C: da janela) por GParted program. Você deve ter mais 8Gb + RAM livre de tamanho não particionado na unidade RAID lógica. Certifique-se de que você pode inicializar depois.
  4. Duplicar o disco lógico pelo comando dd para um arquivo em uma unidade de backup. Em seguida, conecte os discos à nova placa-mãe, instale o Linux no software RAID1

Por exemplo: você tem 4 discos de 120Gb em RAID5 e uma unidade lógica /dev/sda . Você tem apenas uma partição /dev/sda1 , que é o disco C: do Windows. Tem tamanho de 300Gb após reduzir em GParted . Você monta outra unidade de backup por comando: mount /dev/sdb1 /mnt . Em seguida, copie os primeiros 301 GB de disco RAID para a unidade de backup pelo comando dd if=/dev/sda of=/mnt/disk-c.img bs=4M count=77056 . Quando é copiado, faça umount /mnt .

  1. Crie um RAID5 suave no espaço livre. Crie o grupo LVM nele e o volume LVM com tamanho maior que o arquivo de imagem.
  2. Copiar dados do arquivo de imagem para o volume do LVM. Ligue este volume como disco RAW à máquina virtual.

Por exemplo: Crie o volume lógico pelo comando lvcreate -L 302G -n win_disk vg0 . Monte a unidade de backup e copie os dados para o volume dd of=/dev/vg0/win_disk if=/mnt/disk-c.img bs=4M count=77056 .

Envie seu controlador RAID para uma lixeira.

PS:

Quando criei a máquina virtual Windows 2000, atribuí o próximo hardware virtual:

  • CPU - padrão do hipervisor
  • Disco - IDE bruto
  • NIC - Modelo de dispositivo rtl8139
  • Mouse e teclado - PS / 2
  • Vídeo - Cirrus

Drivers:

Realtek RTL3189C

Drivers convidados do Windows para libvirt KVM

Suporte antigo ao chipset Intel

    
por 04.06.2017 / 20:14