Источник тут: http://www.keepingkidsonshred.com/2011/05/ubuntu-1104-on-citrix-xenserver-55-part.html
1. Сначала надо создать темплейт.
# DebianTemplate=`xe template-list name-label="Debian Squeeze 6.0 (64-bit) (experimental)" params=uuid --minimal` # echo $DebianTemplate
Мы получили UUID темплейта Debian 6.0
Клонируем его и задаем параметры нового темплейта:
# xe vm-clone uuid=$DebianTemplate new-name-label="Ubuntu 12.04 (64-bit)" # UID=`xe template-list name-label="Ubuntu 12.04 (64-bit)" params=uuid --minimal` # xe template-param-set uuid=$UID \ other-config:install-methods=http,ftp \ other-config:debian-release=precise \ other-config:default_template=true
Для будущих версий Ubuntu актуально будет изменение параметра other-config:debian-release=precise. Тут указывается имя дистриба. Для Ubuntu 12.04 это precise.
2. Потом делаем из этого нового темплейта виртуальную машину.
Перед установкой убеждаемся, что хост XenServer имеет доступ в интернет.
При установке указываем источник установки - http://archive.ubuntu.com/ubuntu/
При разбиении диска для загрузочного раздела обязательно нужно указать файловую систему ext2 или ext3. ^Ext4 не поддерживается!!!^
Я не использовал LVM, но он должен работать.
После установки можно перезагрузиться и увидеть в логах XenServer 5.5 сообщение типа такого:
RuntimeError: Unable to find partition containing kernel
Такое происходит потому, что XenServer не поддерживает GRUB2.
3. Для исправления этого недостатка нужно скорректировать параметры загрузки.
В консоли XenServer выполняем:
xe-edit-bootloader -n -Disk-Label- -p 1 -f /boot/grub/grub.cfg
Тут -Disk-Label- - это метка диска, которая обычно соответствует имени виртуальной машины.
В открывшемся файле находим кусочек, который собствено загружает Ubuntu:
linux /vmlinuz-2.6.38-8-generic root=UUID=5f05322a-a159-4604-9da9-905b0506d882 ro console=hvc0 quiet vt.handoff=7 initrd /initrd.img-2.6.38-8-generic
Надо сохранить этот куда-нибудь в текстовый файлик, или оставить открытым файл в консоли. Оно нам понадобится.
4. Затем выясним uuid виртуальной машины:
# VMUUID=`xe vm-list name-label="[VM name]" params=uuid --minimal` # echo $VMUUID
Тут VM name это имя нашей виртуальной машины.
В переменную VMUUID мы поместили uuid
5. Приступаем собственно к корректировке параметров виртуальной машины:
# xe vm-param-clear uuid=$VMUUID param-name=HVM-boot-policy # xe vm-param-set uuid=$VMUUID PV-bootloader=pygrub # xe vm-param-set uuid=$VMUUID PV-args="root=UUID=5f05322a-a159-4604-9da9-905b0506d882 ro console=hvc0 splash quiet vt.handoff=7" # xe vm-param-set uuid=$VMUUID PV-bootloader-args="--kernel=/vmlinuz-2.6.38-8-generic --ramdisk=/initrd.img-2.6.38-8-generic"
В последних двух командах указываем значения root=UUID, kernel и ramdisk из /boot/grub/grub.cfg виртуальной машины, полученные на этапе 3.
6. Теперь надо сделать диск виртуальной машины загрузочным.
Получаем uuid диска (VBD):
# VBDUUID=`xe vm-disk-list uuid=$VMUUID | grep -A1 VBD | tail -n 1 | cut -d: -f2 | awk '{print $1}'` # echo $VBDUUID
Делаем его загрузочным:
# xe vbd-param-set uuid=$VBDUUID bootable=true
Все. Теперь виртуальная машина должна грузиться.