KVM e tendo o drive raiz como sda

1

O KVM, como é baseado no qemu, emula o disco rígido como / dev / hda, através de um adaptador IDE. No entanto, minhas imagens (tiradas de uma máquina real) assumem que a unidade de inicialização seja / dev / sda. Isso pode ser mudado, mas como essa informação está embutida no initramfs que está sendo usado para o kernel, e eu ainda quero ser capaz de inicializar a imagem em hardware real, prefiro não tocá-la.

Existe alguma maneira de eu conseguir que o disco apareça como / dev / sda em vez de / dev / hda?

(Além disso, o Xen é uma possibilidade para mim, mas o Xen + HVM compartilha o mesmo problema, já que ele usa emulação de hardware do qemu também.)

    
por Nakedible 28.07.2009 / 16:38

2 respostas

0

Embora o QEMU seja capaz de emular um dispositivo de armazenamento usb, o AFAIK, ele não pode inicializar diretamente a partir dele. KVM deve ser semelhante. Uma outra opção que eu recomendaria para você é esta. Eu não tenho certeza se vai funcionar como eu não tentei por mim, provavelmente seria.

Use sua imagem de unidade como um dispositivo de armazenamento usb. No entanto, inicie especificando o kernel e o initrd diretamente na linha de comando. Então, algo assim:

kvm -kernel <kernel image> -initrd <initrd image> -usb <usb options> ...

Para tornar a emulação mais precisa, você deve usar o kernel e as imagens initrd extraídas da imagem da sua unidade. Isto irá inicializar o seu kernel, que deve ter os drivers USB embutidos para detectar /dev/sda e então carregar seu initrd, o que fará sua mágica. Então, o boot deve continuar usando a imagem da sua unidade como /root como de costume.

    
por 28.07.2009 / 17:20
3

Na verdade, descobri a resposta adequada para mim por mim mesmo.

kvm -drive file=x,bus=scsi,boot=on

A opção de drive permite especificar o barramento. Mas por algum motivo, por padrão, o scsi não é inicializável. No entanto, o KVM suporta o sinalizador boot=on para tornar a unidade scsi inicializável.

No entanto, esta solução ainda tinha um problema - por algum motivo, levou vários segundos para a unidade scsi ser detectada adequadamente pelo kernel (eu estou supondo que é algum dispositivo usb settle wait ou similar). Devido a isso, tive que interromper manualmente a inicialização do initramfs em um local adequado para aguardar a exibição da unidade e continuar com a inicialização. Eu fiz isso fornecendo break=mount na linha de comando do kernel.

Portanto, com essa configuração do KVM e a opção break=mount , eu posso finalmente inicializar minha imagem de disco sem modificações.

Nota rápida: bus = scsi é hoje em dia se = scsi.

    
por 29.07.2009 / 15:45