Thanks, Stephan For the workaround on building systemvm-template for RPI4
I was able to successfully build the systemvm template on my RPI4. Please raise a pull request to the upstream Github project so that it will be useful to others Regards Kiran On Tue, Jan 10, 2023 at 2:01 PM Rohit Yadav <[email protected]> wrote: > Thanks for sharing Stephan. I haven't been maintaining 4.17/4.18 arm64 > systemvmtemplates, your guide and branch could help others in the user > community who want to experiment with arm64. If your build doesn't break > x86_64, you may even decide to raise a pull request to the upstream Github > project. > > > > Regards. > > ________________________________ > From: Nux <[email protected]> > Sent: Saturday, January 7, 2023 17:04 > To: [email protected] <[email protected]> > Cc: Stephan Bienek <[email protected]> > Subject: Re: Cloudstack on arm64 and packer build systemvmtemplate success > > Stephan, > > That's amazing, thanks for sharing! > > --- > Nux > www.nux.ro > > On 2023-01-06 20:23, Stephan Bienek wrote: > > Hello Cloudstack Users, > > > > following the blog of Rohit about how to install and run Cloudstack on > > an Raspberry 4 using Ubuntu on arm64/aarch64 > > ( https://www.shapeblue.com/apache-cloudstack-on-raspberrypi4-with-kvm/ > > ) > > and Rohits commits to cloudstack to support arm64 (thx Rohit!) i tried > > it myself. > > > > For my setup i decided to use the latest release of Cloudstack without > > any modifications, as Rohits commits were already merged. > > Instead of using a Raspberry Pi4 i am using an Odroid M1, which shares > > the arm64 architecture with the rpi4. > > > > The installation following the ACS documentation and/or Rohits blog > > (without the special modifications required at that time) went quite > > smooth. > > > > Missing automatic systemvmtemplate build > > ---------------------------------------- > > > > One thing i felt still missing was how to build the required > > systemvmtemplate (Consoleproxy, SSVM and VRs) for arm64. > > Building the same automatic way on both - a x86_64 host, being able to > > build the amd64 systemvmtemplate and the arm64 systemvmtemplate, > > and/or directly building on the arm64 host would be great. > > > > After quite some work i figured the required changes and thought i'd > > share them here to see if it helps someone else and if it's useful, > > maybe the changes could contribute to cloudstack. > > > > All the existing logic using packer was kept, which is available for > > amd64 and arm64. > > > > I created a fork and applied the changes in a branch at > > > https://github.com/StepBee/cloudstack/tree/add_systemvmtemplate_arm64_support > > > > The changes in code > > ------------------- > > > > - changing debian preseed files > > tools/appliance/systemvmtemplate/http/preseed.cfg to create an EFI > > partition and instruct debian to copy /EFI/debian/grubaa64.efi to > > /EFI/BOOT/BOOTAA64.efi > > > > Detailed changes can be found at > > > https://github.com/apache/cloudstack/commit/8f406e7fd1bcf9b71202fe526f0adaff40402884 > > > > - changing tools/appliance/systemvmtemplate/template.json packer > > builder template(s) to provide the right qemuargs and adjust the > > boot_commands, as these are quite different from amd64 builds, > > increasing ssh_timeout and boot_wait > > > > Detailed changes can be found at > > > https://github.com/apache/cloudstack/commit/a7077a8453dc944048a236bb44e19beeffaec7f9 > > > > - changing tools/appliance/build.sh to support providing the target > > architecture as first parameter and skip all non-kvm builds when > > building for arm64 - building arm64 systemvmtemplate on x86_64 and > > arm64 hosts is supported > > - changing > > tools/appliance/systemvmtemplate/scripts/install_systemvm_packages.sh > > to handle repository additions etc for arm64 > > > > Detailed changes can be found at > > > https://github.com/apache/cloudstack/commit/fbacf5b2caed958e90ed4c134948aa4eb8dafed1 > > > > Required packages are based on the amd64 requirements plus, of course, > > the arm/aarch64 qemu packages > > - packer ( > > > https://developer.hashicorp.com/packer/tutorials/docker-get-started/get-started-install-cli > > ) > > - qemu-utils > > - qemu-system-arm > > - qemu-efi-aarch64 > > > > To build the arm64 systemvmtemplate: > > - Cloning the branch from my fork > > - cd tools/appliance/ > > - ./build.sh aarch64 systemvmtemplate > > > > > > Running Cloudstack > > ------------------ > > On arm64 i noticed the log was complaining about a missing > > /etc/cloudstack/agent/uefi.properties > > > > Which could look like this one: > > > > guest.nvram.template.secure=/usr/share/AAVMF/AAVMF_VARS.snakeoil.fd > > guest.nvram.template.legacy=/usr/share/AAVMF/AAVMF_VARS.fd > > guest.loader.secure=/usr/share/AAVMF/AAVMF_CODE.snakeoil.fd > > guest.nvram.path=/var/lib/libvirt/qemu/nvram/ > > guest.loader.legacy=/usr/share/AAVMF/AAVMF_CODE.fd > > > > An additional hint for using cloud images: > > Where most of the cloud images for amd64 work with cloudstack userdata > > out of the box, i noticed most of the arm64/aarch64 cloud images are > > missing the cloudstack datasource within the built-in cloud-init > > config. > > > > Modification of the cloud images by placing the file > > /etc/cloud/cloud.cfg.d/cloudstack.cfg with content: > > datasource_list: ['CloudStack'] > > datasource: > > CloudStack: > > max_wait: 120 > > timeout: 50 > > > > in the qcow2 or raw images solves the issue. > > > > I hope it's helping the cloudstack community. > > > > Best regards, > > Stephan > > > >
