Whonix for arm64 / Raspberry Pi (RPi)

Unfortunately, no… Contributions welcome.

What arch “types” are supported atm, only amd64 and i386?

For running on physical hardware… From your perspective… Yes, only i386 (same as Debian supports that) and amd64, while the latter is less tested.

edit by Patrick: old answer, invalid

Debian support armhf too, but urs Whonix do that not.
https://wiki.debian.org/FreedomBox/TargetedHardware

I try today or tomorrow to install raspbian and copy everything from whonix to it, maybe its work …

Well, Debian has a much bigger community, users and developers that are using armhf or other platforms. Then it’s much simpler to support.

For VM builds, you’d have to use --arch and maybe --kernel in the build script. But that doesn’t apply to physical isolation users. (Because then a base operating system is already installed.)

The build script might include 99% of what’s included. But the missing 1% I know might totally break it.

In https://github.com/Whonix/Whonix/blob/master/aptrepo_local/conf/distributions we’re using “i386 amd64”. Using “all” isn’t supported by reprepro.

Error: Distribution stable contains an architecture called 'all'.

But I guess it would be worth adding all the architectures that Debian supports and then see how it works for early adapters such as you.

Got any development / git knowledge?

I can program Ruby and Bash yes. Git knowledge is there too.
Problem is that I didn’t know, how to add something like that, my c++ knowledge is more then less.

For armhf platform support, for now bash and git is all that’s needed.

Fine, I found that: Whonix Forum
Maybe not so hard to do, I look forward to script this. Need some tests first, should I get a successfully build, I will add a --build-amhf step or something similar.

@deekay0 any luck?

Well no. We are underfunded and understaffed and are not concentrating on supporting physical workstations which need much more effort then we can afford. Thats to say nothing of how the state of ARM hardware support remains a clusterfuck thanks to non standard booting, non mainlined GPU drivers and every hardware vendor doing their thing. Its more like a bunch of silos or feudal prisons.

2 Likes

I would like to contribute! I have raspberry pi 3 b for testing and enthusiasm to make it possible. I have the following skills: shell, git, python. But I need a direction - where to start. Could anyone of maintainers please direct me… Like telling what would be great to be done first etc. I would love to help!

2 Likes

There might not be too much to do to make it work. Whonix’s doesn’t to platform specific stuff.

These skills are sufficient.

Confirm rasbberry pi 3 b works with Debian?

For now, just try to build a Whonix-Gateway version 14.

As an exercise, build Whonix 14 for VirtualBox first to learn the “normal” process and iron out any non-arm related build issues.

Then use a s slight variation of the build command to build a raw image.

  • --target raw

Adjust arch. Try.

  • --arch arm64

Also…

  • --kernel linux-image-arm64
  • --headers linux-headers-arm64

Is it arm64? Otherwise adjust as per a supported platform by Debian. arm64, armel or armhf?


sudo REPO_PROXY=http://127.0.0.1:3142 ~/Whonix/whonix_build --flavor whonix-gateway --target raw --build --arch arm64 --kernel linux-image-arm64 --headers linux-headers-arm64

See if that builds? Fix whatever needed. Flash the image, try to boot. Works?

More details can be discussed later.

Thank you very much for guidance.
Currently running minibian (minimal Raspbian, which is Debian for rpi).
The architecture is shown as armv7l:

$ uname -m
armv7l

$ cat /proc/cpuinfo
processor	: 0
model name	: ARMv7 Processor rev 4 (v7l)
BogoMIPS	: 38.40
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32
CPU implementer	: 0x41
CPU architecture: 7
CPU variant	: 0x0
CPU part	: 0xd03
CPU revision	: 4
...

Can I assume that everything in your comment with arm64 must be changed to armv7l?

Btw, FreeBSD (raspBSD) on the same Rpi3 shows architecture as arm64 and works fine.

drew:

Can I assume that everything in your comment with arm64 must be changed to armv7l?

I have no idea. Try.

Raspbian is not debian. Either you use raspbian as base to build or debian arm64. I’d recommend debian since Whonix is based on that and you will have a higher chance that the build will be successful. If you make the build based on raspbian it could also work and you could use the image on multiple rpi versions. In this case you also have to change the sources in the build script to the raspbian mirror. You probably want to cross build on a fast desktop machine instead of the rpi otherwise the build could easily take several hours.

3 Likes

a Project to look at and might help getting ideas from:

I wonder where they got that name from?

https://whonix.org/wiki/History

https://trac.torproject.org/projects/tor/wiki/doc/TorBOX?version=1

TorBox seems to be common name , there is as well TorBox as an email provider:

http://torbox3uiot6wchz.onion

I am thinking about working on arm64 support and testing the results on qemu-arm.

What files do I need to change or look at when doing this?

Is it as simple as adding the extra arch parameters in this file?

https://github.com/Whonix/Whonix/blob/master/buildconfig.d/30_target_arch.conf

You’ve added all architectures to the repo source lists so could it be simple as specifying one of them for debootsrap to download?

HulaHoop:

I am thinking about working on arm64 support and testing the results on qemu-arm.

Cool.

What files do I need to change or look at when doing this?

Is it as simple as adding the extra arch parameters in this file?

Don’t edit files in .d folders generally. Add your own. See Whonix
source code introduction. You can also use …/buildconfig.d to get away
from any conflicts.

But in this case you don’t even need that. --arch amd64 or similar is
enough.

You’ve added all architectures to the repo source lists so could it be simple as specifying one of them for debootsrap to download?

TBB isn’t available for anything but i386 and amd64 from TPO. Otherwise
maybe not much missing. Try.