Booting Ubuntu 12.10 guest no Debian 6.0.4 Xen com pygrub

1

Estou tentando executar um Ubuntu 12.10 em um Debian 6.0.4 e Xen-4.0. Eu percebi que o pygrub pode não ser capaz de analisar o menu.lst (eu vinculei o menu menu.lst ao grub.cfg em / boot) e terminei com esta configuração:

#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os {
    insmod gzio
    insmod ext2
    search --no-floppy --fs-uuid --set=root 7098a9fb-df7a-4e37-841d-73641c6b79c5
    loopback loop0 /sdd
    set root=(loop0)
    linux   /boot/vmlinuz-3.5.0-27-generic root=UUID=7098a9fb-df7a-4e37-841d-73641c6b79c5 ro console=hvc0  splash quiet
    initrd  /boot/initrd.img-3.5.0-27-generic
}

Mas infelizmente o pygrub ainda não consegue analisar o arquivo de configuração e mostra a seguinte saída:

Eupercebiqueopygrubtemproblemascomodispositivodeloopbacknomenuentry.Euremoviaslinhasofensivasesubstituí-asporumaconfiguraçãodireta(similaràsminhasoutrasinstânciasdoDebianXen).

menuentry'Ubuntu'--classubuntu--classgnu-linux--classgnu--classos{insmodext2setroot=(hd0)linux/boot/vmlinuz-3.5.0-27-genericroot=UUID=7098a9fb-df7a-4e37-841d-73641c6b79c5roconsole=hvc0splashquietinitrd/boot/initrd.img-3.5.0-27-generic}

Masinfelizmenteissonãoinicia:ElemostraomenudoPygreeumamensagemdeerro:Traceback(últimachamadamaisrecente):

File"/usr/lib/xen-4.0/bin/pygrub", line 704, in <module>
chosencfg = run_grub(file, entry, fs, incfg["args"])
File "/usr/lib/xen-4.0/bin/pygrub", line 570, in run_grub
img = g.cf.images[0]
IndexError: list index out of range
root@xenhost7:~# Error: Boot loader didn't return any data!

O erro parece indicar que o pygrub é capaz de analisar os dados, mas de alguma forma é incapaz de encontrar o kernel. Mas o kernel existe. Fdisk também mostra que / boot está na primeira partição:

Disk part: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000c7dc8

Device Boot      Start         End      Blocks   Id  System
 part1               1        3851    30924800   83  Linux
 part2            3851        3917      529409    5  Extended
 part5            3851        3917      529408   82  Linux swap / Solaris

Note que inicializar a máquina com um kernel externo não é realmente uma opção, já que todas as VMs são inicializadas via iSCSI (e mudaremos para o KVM em algum momento no futuro próximo). O dispositivo de loopback na configuração original do grub também pode produzir problemas ao inicializar.

Alguma sugestão, ideias?

    
por Pascal 30.04.2013 / 16:31

1 resposta

2

Conseguimos inicializar o sistema com a configuração indicada:

menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os {
    insmod gzio
    insmod ext2

    set root='(hd0)' 
    linux   /boot/vmlinuz-3.5.0-27-generic root=UUID=7098a9fb-df7a-4e37-841d-73641c6b79c5 ro console=hvc0  splash quiet
    initrd  /boot/initrd.img-3.5.0-27-generic
}

O problema foi que eu criei um arquivo menu.lst que o pygrub associa ao Grub 1.0 (ou 0.95) que foi analisado primeiro. O formato de arquivo usado no Ubuntu 12.10 é um arquivo do Grub 2.0, no entanto.

Portanto, para executar o Ubuntu 12.10 com o pygrub, a linha set root={...} deve ser substituída por set root='(hd0)' .

    
por 30.04.2013 / 18:32