Package Details: canonical-multipass 1.13.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: GPL3
Submitter: gdamjan
Maintainer: gdamjan
Last Packager: gdamjan
Votes: 4
Popularity: 0.036295
First Submitted: 2020-02-25 15:17 (UTC)
Last Updated: 2024-02-06 16:43 (UTC)

Dependencies (9)

Required by (0)

Sources (3)

Latest Comments

1 2 3 Next › Last »

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 :(

Dooblay commented on 2022-08-22 16:45 (UTC)

The error is actually farther up.

[ 17%] Building CXX object 3rd-party/poco/Foundation/CMakeFiles/Foundation.dir/src/DataURIStream.cpp.o
In file included from /usr/include/c++/12.2.0/algorithm:60,
                 from /usr/include/qt/QtCore/qglobal.h:142,
                 from /usr/include/qt/QtCore/qchar.h:43,
                 from /usr/include/qt/QtCore/qstring.h:49,
                 from /usr/include/qt/QtCore/QString:1,
                 from /home/zach/.cache/yay/canonical-multipass/src/multipass/include/multipass/path.h:23,
                 from /home/zach/.cache/yay/canonical-multipass/src/multipass/src/platform/backends/shared/qemu_img_utils/qemu_img_utils.h:21,
                 from /home/zach/.cache/yay/canonical-multipass/src/multipass/src/platform/backends/shared/qemu_img_utils/qemu_img_utils.cpp:18:
In static member function ‘static _Tp* std::__copy_move<_IsMove, true, std::random_access_iterator_tag>::__copy_m(const _Tp*, const _Tp*, _Tp*) [with _Tp = char; bool _IsMove = false]’,
    inlined from ‘_OI std::__copy_move_a2(_II, _II, _OI) [with bool _IsMove = false; _II = const char*; _OI = char*]’ at /usr/include/c++/12.2.0/bits/stl_algobase.h:495:30,
    inlined from ‘_OI std::__copy_move_a1(_II, _II, _OI) [with bool _IsMove = false; _II = const char*; _OI = char*]’ at /usr/include/c++/12.2.0/bits/stl_algobase.h:522:42,
    inlined from ‘_OI std::__copy_move_a(_II, _II, _OI) [with bool _IsMove = false; _II = const char*; _OI = char*]’ at /usr/include/c++/12.2.0/bits/stl_algobase.h:529:31,
    inlined from ‘_OI std::copy(_II, _II, _OI) [with _II = const char*; _OI = char*]’ at /usr/include/c++/12.2.0/bits/stl_algobase.h:620:7,
    inlined from ‘OutputIt fmt::v7::detail::copy_str(InputIt, InputIt, OutputIt) [with OutChar = char; InputIt = const char*; OutputIt = char*; typename std::enable_if<(! std::integral_constant<bool, (std::is_same<typename std::iterator_traits<_II>::value_type, char>::value && std::is_same<OutChar, char8_type>::value)>::value), int>::type <anonymous> = 0]’ at /home/zach/.cache/yay/canonical-multipass/src/multipass/3rd-party/fmt/include/fmt/format.h:548:19,
    inlined from ‘It fmt::v7::detail::float_writer<Char>::prettify(It) const [with It = char*; Char = char]’ at /home/zach/.cache/yay/canonical-multipass/src/multipass/3rd-party/fmt/include/fmt/format.h:1123:26,
    inlined from ‘It fmt::v7::detail::float_writer<Char>::operator()(It) const [with It = char*; Char = char]’ at /home/zach/.cache/yay/canonical-multipass/src/multipass/3rd-party/fmt/include/fmt/format.h:1208:20,
    inlined from ‘OutputIt fmt::v7::detail::write(OutputIt, T) [with Char = char; OutputIt = std::back_insert_iterator<buffer<char> >; T = double; typename std::enable_if<std::is_floating_point<T>::value, int>::type <anonymous> = 0]’ at /home/zach/.cache/yay/canonical-multipass/src/multipass/3rd-party/fmt/include/fmt/format.h:1693:23:
/usr/include/c++/12.2.0/bits/stl_algobase.h:431:30: error: ‘void* __builtin_memmove(void*, const void*, long unsigned int)’ specified bound between 18446744071562067967 and 18446744073709551615 exceeds maximum object size 9223372036854775807 [-Werror=stringop-overflow=]
  431 |             __builtin_memmove(__result, __first, sizeof(_Tp) * _Num);
      |             ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

gdamjan commented on 2022-07-23 12:07 (UTC)

I can't see what the actual error is, try enabling more verbose output.