Whonix on Mac M1 (ARM) - User Support (still unsupported at time of writing)

Thanks for the reply and comments! I’ve made another commit which should address those.

Regarding the RPI file, I actually implemented my checks in such a way that that build should not be affected. I wasn’t aware that it wasn’t working anymore. I can remove it in my PR if you want?

Once you’re happy with PR, feel free to merge it. I may do some follow-up PRs which get the arm64 build into better shape (currently the .qcow2 files it produces doesn’t work, but at least .raw does).

Thanks for the doc links, I’ll get editing those soon also.
Really appreciate all your feedback, no problem with disagreeing! :slight_smile:

1 Like

Merged! :slight_smile:

Thank you, this might be great for arm64 support generally!
(I.e. unrelated to Mac hardware)

Btw now that you’ve found your way around Whonix’s build script to the level of porting to a newer platform, perhaps you’ll have suggestions on how it could have been better structured / documented to simplify contributions / easier to understand. (Ideally in a separate forum thread.)


https://github.com/Whonix/Whonix/commit/ebcd1dda74ad06c28a094bd28919d40bc8286fed

1 Like

Great, thanks Patrick!

Yes, I think in its current incarnation it should work for any future arm64 machines (provided QEMU arm64 works). I do expect we’ll see arm64 chips in Linux workstations soon seeing as Linus (and others) are pushing for this.

Regarding feedback on the build scripts, I actually found them quite approachable. They are well designed such that I was able to integrate without needing to understand every one, rather I just needed to know where to slot in. The RPI one definitely helped with that.

I’d be happy to actively contribute and improve M1 support, so as I go about doing that (via the repo itself and docs), I’ll be sure to provide any further feedback I have. Thanks for you help, and great project! :slight_smile:

1 Like

Alright, I’ve made some changes to the wiki pages:

I’m not too used to this Wiki markdown language, so please do feel free to clean up any of the formatting. I’m sure I’ll get better at it. While I’m not super happy with the state of the docs, I think it’s better to have something in there for now at least, especially while it’s fresh on my mind and I have some time. Will update them as I go along.

For some reason I don’t see an “Edit” option on this page: Build Configuration - Whonix - I’d like to especially arm64 it under “Platforms Choice”. Is this restricted?

Thanks again!

1 Like

Great!

Removed protection from Build Configuration - Whonix. Can now be edited.

Whonix ™ for macOS: Download and Installation could also be split into two different pages.

  • Intel based Mac
  • M1 based Mac

Not sure that would make sense? Might depend on:

Will it be possible / is it planned to make this work with either/and/or KVM / virt-manager / VirtualBox?

1 Like

Oracle hasn’t announced any such plans. That doesn’t seem likely at this time at all. That could be years, if ever.

https://forums.virtualbox.org/viewtopic.php?t=98742

https://www.virtualbox.org/ticket/20192


Potential build speed up coming to mind for developer builds:

…but probably miss out on platform specific packages:
Existing Ports of and Porting Whonix to other Architectures

1 Like

Thanks Patrick, I updated the Build Configuration page now with some small changes.

Regarding the macOS page, yes, I think it could do with a larger restructure. I’ll tackle this probably next weekend, but didn’t have much time this weekend so just got the Apple Silicon steps in quickly so they are not only on my machine / in my head. :wink:

If VirtualBox releases ARM compatibility at some point, I would definitely port it there. It would be much more user friendly than QEMU. I’m also considering https://getutm.app/ - it uses QEMU under the hood so would be easier to get it working there and more user friendly.

KVM is a linux hypervisor, so I don’t see it ever working on macOS. HVF is the macOS implementation and the QEMU commands I added into the Whonix wiki use HVF already.

1 Like

That’s a handy flag for the build script, will keep it in mind, thanks!

@Patrick would it be possible to add those arm64 images to https://download.whonix.org/ at some point? I think we could then already make an “easier” version of the Apple Silicon setup.

2 Likes

Is in -XX-<git commit hash>.raw the git commit hash part inconvenient? (For intermediate documentation writing?) The only reason I originally implemented that is preventing users to build from git master (or other arbitrary git commits) and then wondering why their build is different from git tag releases.

File names are configurable but I guess setting an environment variable for that is also inconvenient.

Instead to clarify to users “caution, not building from a tag”, the git commit hash could be replaced by “untagged”. That would also sufficiently indicate “caution, custom build”.

(Nothing fundamentally wrong with builds from non-tags as long as knowing that.)

(Going to answer other parts later.)

That’s an incredible development. Thanks for creating this. It would be a pleasure for me to handle aarch64 KVM Builds. Will you be reachable for any bug troubleshooting in case something breaks down the line?

2 Likes

Thanks for the kind words @HulaHoop, it’s been a lot of fun working on it. Yes, of course please feel free to reach out.

Do you guys have gitter or some other direct messaging platform for quick chats?

2 Likes

The qemu-system-aarch64 command lines for gateway and workstation are crucial to be correct. In theory if wrong could even produce a leak. How have these been generated / figured out?

Where these created / based on using virsh domxml-to-native qemu-argv? That would be great because then it would be similar to Whonix KVM xml files:

https://github.com/Whonix/whonix-libvirt/tree/master/usr/share/whonix-libvirt/xml

A lot thought on ideal configuration over the years was put into these by @HulaHoop.

No. Development is all in forums.


They have been modelled based on the XML files Whonix currently uses, however I could not map them 1-to-1, there are some differences with QEMU on macOS.

For example, neither bridge nor tap network backends work (at least easily, apparently there are some hacks for it to work), so I had to use user-space socket connections based on QEMU’s SLIRP.

I’m not too aware of what leaks this could create, maybe @HulaHoop knows more?

Okay, thanks!

2 Likes

Alright so some good news I was able to generate some Libvirt configs using the pre-built Debian Openstack images. The results should resemble x86 level of isolation that way. Since only SLIRP is available on Mac, some leaktesting is recommended just in case: Leak Tests


Are we currently getting raw files from the build script? I’m sure KVM can use them too and can even generate snapshots on top of it. However qcow2 would be ideal for compactness and functionality reasons if possible. Take your time. The plan is for one image to be able to support different OSs of the same arch.

2 Likes

Good news.

1 Like

Any chance to make this work with libvirt?

libvirt supports MacOS but it doesn’t say if that goes for Intel and/or M1 based.
libvirt: Supported host platforms

Reason:
Linux “amd64” (Intel + AMD) KVM libvirt xml files are very established, development goes back to 2012, could be re-used for Linux arm64 KVM libvirt. Ideally there would be no difference or better as little differences as possible for Mac M1 support versus Linux arm64 KVM libvirt. That would be more maintainable / shared code base / easier to read/review than a super long qemu command line which better would be only last resort / stopgap.

Yes, see:
Whonix for macOS: Download and Installation

Contains the whonix_build command lines which should be currently re-usable as is.

1 Like

I’ll do some leak testing, thanks for the link. Regarding qcow2, I had some trouble with it breaking the EFI partition required for grub on aarch64. I do want to investigate further, I’m sure it’s possible (I can load other qcow2 files fine on maOS with QEMU). It would also mean we get spice-vdagent on the resulting image which is something we need anyway.

Will add to the todo list, agreed that would be much cleaner than a lengthy QEMU command.

2 Likes

Testing to cross build on Debian buster amd64 does not work for me yet.

cross building Kicksecure arm64 on Kicksecure amd64

+ chroot /home/user/whonix_binary/15.0.1.7.4/Kicksecure-CLI-15.0.1.7.4.raw_mpoint_os update-grub
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.19.0-16-arm64
Found initrd image: /boot/initrd.img-4.19.0-16-arm64
Found linux image: /boot/vmlinuz-4.19.0-16-arm64
Found initrd image: /boot/initrd.img-4.19.0-16-arm64
  WARNING: Device /dev/loop7p1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop0 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sda not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/mapper/sda5_crypt not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop7p2 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sda1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/host-vg/root not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop2 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/host-vg/swap_1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop3 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/mapper/loop6p1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop4 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop5 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sda5 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop6 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop7 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sdb not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sdb1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sdb5 not initialized in udev database even after waiting 10000000 microseconds.
  Failed to set up async io, using sync io.
  WARNING: Device /dev/loop7p1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop0 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/mapper/sda5_crypt not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop7p2 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sda1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/host-vg/root not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop2 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/host-vg/swap_1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop3 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/mapper/loop6p1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop4 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop5 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sda5 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop6 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop7 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sdb1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sdb5 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop7p1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop0 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sda not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/mapper/sda5_crypt not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop7p2 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sda1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/host-vg/root not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop2 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/host-vg/swap_1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop3 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/mapper/loop6p1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop4 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop5 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sda5 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop6 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop7 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sdb not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sdb1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sdb5 not initialized in udev database even after waiting 10000000 microseconds.
  Failed to set up async io, using sync io.
  WARNING: Device /dev/loop7p1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop0 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/mapper/sda5_crypt not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop7p2 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sda1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/host-vg/root not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop2 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/host-vg/swap_1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop3 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/mapper/loop6p1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop4 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop5 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sda5 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop6 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop7 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sdb1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sdb5 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop7p1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop0 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sda not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/mapper/sda5_crypt not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop7p2 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sda1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/host-vg/root not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop2 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/host-vg/swap_1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop3 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/mapper/loop6p1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop4 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop5 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sda5 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop6 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop7 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sdb not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sdb1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sdb5 not initialized in udev database even after waiting 10000000 microseconds.
  Failed to set up async io, using sync io.
  WARNING: Device /dev/loop7p1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop0 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/mapper/sda5_crypt not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop7p2 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sda1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/host-vg/root not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop2 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/host-vg/swap_1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop3 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/mapper/loop6p1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop4 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop5 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sda5 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop6 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop7 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sdb1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sdb5 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop7p1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop0 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sda not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/mapper/sda5_crypt not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop7p2 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sda1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/host-vg/root not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop2 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/host-vg/swap_1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop3 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/mapper/loop6p1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop4 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop5 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sda5 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop6 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop7 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sdb not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sdb1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sdb5 not initialized in udev database even after waiting 10000000 microseconds.
  Failed to set up async io, using sync io.
  WARNING: Device /dev/loop7p1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop0 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/mapper/sda5_crypt not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop7p2 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sda1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/host-vg/root not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop2 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/host-vg/swap_1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop3 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/mapper/loop6p1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop4 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop5 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sda5 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop6 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop7 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sdb1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sdb5 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop7p1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop0 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sda not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/mapper/sda5_crypt not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop7p2 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sda1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/host-vg/root not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop2 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/host-vg/swap_1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop3 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/mapper/loop6p1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop4 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop5 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sda5 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop6 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop7 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sdb not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sdb1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sdb5 not initialized in udev database even after waiting 10000000 microseconds.
  Failed to set up async io, using sync io.
  WARNING: Device /dev/loop7p1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop0 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/mapper/sda5_crypt not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop7p2 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sda1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/host-vg/root not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop2 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/host-vg/swap_1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop3 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/mapper/loop6p1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop4 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop5 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sda5 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop6 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop7 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sdb1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sdb5 not initialized in udev database even after waiting 10000000 microseconds.
Found Debian GNU/Linux 10 (buster) on /dev/mapper/host--vg-root

Seems to hang.

update-grub seems to look at a lot unrelated host loop devices and getting confused. Perhaps that could be restricted?

Also running sudo chroot /path/to/chroot update-grub on a amd64 host might not work since the chroot image would be arm64? Wondering it goes that far at all? How could that be done? Qemu required or avoidable?

Actually not.

done

1 Like

Related build script enhancements:

Added:

  • raw image support
  • multiple architecture support

https://forums.whonix.org/t/long-wiki-edits-thread/3477/2009

https://github.com/Whonix/Whonix/commit/f5c0a78f30b68ee3c0bca29b72794f2152e7a520

Done?

Included in 15.0.1.7.6.


--flavor qcow2 / --flavor raw might be insufficient. --flavor qcow2 used to imply Linux libvirt (KVM).

  • I could rename --target to --format (image format).
  • Then --target would be virtualbox, libvirt, m1 (target platform).

Depending on what is required and what makes sense. Not sure that is already needed. Let me know what would be useful.

1 Like