Package Details: canonical-multipass 1.15.0-1

Git Clone URL: https://aur.archlinux.org/canonical-multipass.git (read-only, click to copy)
Package Base: canonical-multipass
Description: Multipass is a lightweight VM manager for Linux, Windows and macOS.
Upstream URL: https://multipass.run
Licenses: GPL-3.0-only
Submitter: gdamjan
Maintainer: gdamjan
Last Packager: gdamjan
Votes: 4
Popularity: 0.000495
First Submitted: 2020-02-25 15:17 (UTC)
Last Updated: 2024-12-11 12:57 (UTC)

Latest Comments

1 2 3 Next › Last »

gdamjan commented on 2024-12-11 12:58 (UTC)

1.15 builds now, without the GUI part for now.

there are still some weird artifacts in the package - might clean them up later

gdamjan commented on 2024-09-26 12:22 (UTC)

1.14 fails to compile for me, so that's the reason, I haven't updated the package:

/usr/bin/ld: /tmp/ccC9ylhP.ltrans9.ltrans.o: relocation R_X86_64_TPOFF32 against `ssh_log_userdata' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: failed to set dynamic section sizes: bad value
collect2: error: ld returned 1 exit status
make[2]: *** [src/client/gui/CMakeFiles/dart_ffi.dir/build.make:218: lib/libdart_ffi.so] Error 1
make[1]: *** [CMakeFiles/Makefile2:1616: src/client/gui/CMakeFiles/dart_ffi.dir/all] Error 2
make: *** [Makefile:146: all] Error 2
==> ERROR: A failure occurred in build().

nhermosilla14 commented on 2024-05-20 22:37 (UTC)

I found the actual reason for that qemu: could not load PC BIOS 'OVMF.fd' error. Qemu doesn't look everywhere for the bios file. The fix I propose is to make it look everywhere, which should get done by adding a couple lines to the qemu_vm_process_spec.cpp file.

I did it already, here's the patch:

--- src/platform/backends/qemu/qemu_vm_process_spec.cpp.orig    2024-05-20 18:04:46.308380873 -0400
+++ src/platform/backends/qemu/qemu_vm_process_spec.cpp 2024-05-20 18:05:36.668903896 -0400
@@ -87,6 +87,47 @@
              << "chardev:char0"
              // TODO Add a debugging mode with access to console
              << "-nographic";
+
+        // Firmware directories
+        try
+        {
+            mu::snap_dir();
+        }
+        catch (const mp::SnapEnvironmentException&)
+        {
+            // Add a list of directories to check
+            QStringList dirs = QStringList();
+            dirs << "/usr/share/seabios/"
+                 << "/usr/share/seabios/x64/"
+                 << "/usr/share/ovmf/"
+                 << "/usr/share/ovmf/x64/"
+                 << "/usr/share/qemu/"
+                 << "/usr/share/qemu/x64/"
+                 << "/usr/share/qemu-efi/"
+                 << "/usr/share/qemu-efi/x64/"
+                 << "/usr/local/share/seabios/"
+                 << "/usr/local/share/seabios/x64/"
+                 << "/usr/local/share/ovmf/"
+                 << "/usr/local/share/ovmf/x64/"
+                 << "/usr/local/share/qemu/"
+                 << "/usr/local/share/qemu/x64/"
+                 << "/usr/local/share/qemu-efi/"
+                 << "/usr/local/share/qemu-efi/x64/";
+
+            // Now check every directory in the options, to make sure they exist
+            // If they do, add them to the args
+            for (const auto& value : dirs)
+            {
+                if (QDir(value).exists())
+                {
+                    mpl::log(mpl::Level::debug, desc.vm_name, fmt::format("Adding firmware directory: {}", value));
+                    args << "-L" << value;
+                }
+            }
+
+        }
+
+
         // Cloud-init disk
         args << "-cdrom" << desc.cloud_init_iso;
     }
@@ -203,7 +244,7 @@
     catch (const mp::SnapEnvironmentException&)
     {
         signal_peer = "unconfined";
-        firmware = "/usr{,/local}/share/{seabios,ovmf,qemu,qemu-efi}/*";
+        firmware = "/usr{,/local}/share/{seabios,ovmf,qemu,qemu-efi}{,/x64,/ia32}/*";
     }

     return profile_template.arg(apparmor_profile_name(), signal_peer, firmware, root_dir, program(),

Having done that, it works just fine.

nikelborm commented on 2024-03-19 02:28 (UTC)

If anyone faces qemu: could not load PC BIOS 'OVMF.fd' error when launching VMs, i found a hotfix and documented it here: https://github.com/canonical/multipass/issues/3441

gdamjan commented on 2023-08-16 22:17 (UTC)

@timblaktu yeah, it's pretty bad, with multiple layers of git sub-modules and trying to install libraries over arch system libraries.

any help is wellcome

timblaktu commented on 2023-08-14 03:37 (UTC) (edited on 2023-08-14 03:38 (UTC) by timblaktu)

This, and the -git version both encountering compilation errors in a third party sub-project. Building with paru.

/home/tim/.cache/paru/clone/canonical-multipass/src/multipass/3rd-party/grpc/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h:34:33: error: found ‘:’ in nested-name-specifier, expected ‘::’ 34 | class FormatConversionChar : uint8_t; | ^ | ::

Rapti commented on 2023-03-15 17:48 (UTC)

You might want to add dnsmasq as a dependency. multipassd.service failed to launch until I installed it.

gdamjan commented on 2022-08-22 17:41 (UTC)

aaand now I reproduced the same issue 🤷 on 1.10.1

gdamjan commented on 2022-08-22 17:16 (UTC)

I was using extra-x86_64-build to compile it, and it worked fine (on my compile machine with 32GB RAM).

Alas, there's some unsolved gcc issue that seems relevant https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88059

And lastly, I just now see there's a 1.10.1 release of multipass, and they have added even more 3rd party git submodules … this becomes less and less manageable :(