alpinelinux / alpine-make-vm-image

Make customized Alpine Linux disk image for virtual machines
MIT License
300 stars 101 forks source link

Help / Suggestions how to get this working with OVH? #39

Open shofetim opened 1 year ago

shofetim commented 1 year ago

Hello,

I'm building an image (on an Alpine 3.18 host) for deployment on OVH bare metal, using the following:

alpine-make-vm-image --image-format qcow2 \
--image-size 2G \
--boot-mode UEFI \
--packages "chrony doas doas-sudo-shim less logrotate openssh ssmtp" \
--script-chroot  \
alpine.qcow2 -- ./configure.sh

The built image is available here: https://jordanschatz.com/alpine.qcow2

When loading it in OVH via their BYOI (bring-your-own-image)

After installing the host does not respond to a ping. Using IPMI the host hangs (?) after booting to EFI

image

Any suggestions how to debug or what to try?

Thank you!

dermotbradley commented 1 year ago

[ I hope @jirutka doesn't mind me jumping in here ]

@shofetim Looking at the BYOI document you linked to, OVH Bare Metal assumes you'll be using cloud-init for the machine's initial configuration.

Also you're trying to bootstrap a physical machine rather than a VM, which this script appears to be designed for.

You might be interested in my alternative script which uses cloud-init and handles physical machines: https://github.com/dermotbradley/create-alpine-disk-image

My script doesn't specifically target OVH Bare Metal but I believe I'd just need to create a new config profile derived from the existing "physical PC" profile with a few minor changes for OVH.

jirutka commented 1 year ago

for deployment on OVH bare metal

The default kernel flavor is virt, this is for virtual machines and it won’t work on bare metal. You have to set the option --kernel-flavor lts.

When loading it in OVH via their BYOI (bring-your-own-image)

This page says it needs cloud-init in the image. It looks like you don’t have it installed unless it’s in your ./configure.sh. However, cloud-init is a bloated complexity mess, so I recommend trying tiny-cloud instead – it should work as a drop-in replacement. Don’t forget also to enable the service to start on boot (you can do this in configure.sh.

However, as @dermotbradley wrote, this script is intended for virtual machines, not for bare metal. I’ve never tested it on bare metal and anything special that would only be needed for bare metal is outside the scope of the project. That said, I don’t know of anything that would prevent it from working on bare metal. You may just need to enable some initfs features (--initfs-features) and install some firmware packages – the script installs linux-firmware-none by default.