Existing Ports of and Porting Whonix to other Architectures

From Whonix
< Dev
Jump to navigation Jump to search

Architecture specific packages in Whonix. "Special packages". Software maintained by third parties. Compiled software. Kernel modules. Shared objects. Tips on porting Whonix to other platforms. "amd64" means Intel and AMD. Porting Simplicity.

Existing Ports of Whonix[edit]

Incomplete Ports of Whonix[edit]

Existing Ports of Kicksecure[edit]

  • ppc64el Kicksecure functional, created using distro-morphing on a test server for Whonix developer Patrick.
  • Distro-morphing should generate viable images for KVM on arm64.

Notes[edit]

Note on Terminology[edit]

info amd64 might imply AMD only. This is wrong.

amd64 means Intel and AMD.

For technical reasons, in Debian (and in many other Linux / Freedom Software related places) both, Intel and AMD, is called amd64. This is common knowledge without controversy among technical people, in doubt see Wikipedia X86-64archive.org.

Virtualization versus Emulation versus Architecture[edit]

  • prerequisite knowledge: Note on Terminology
  • Examples of architectures: amd64, arm64, riscv64, POWER9
  • Examples of virtualizers: VirtualBox and KVM.
  • Examples of emulators: QEMU and Bochs.
  • Virtualizers: The guest operating system architecture must be compatible with the host operating system architecture. For instance, an amd64 host can only virtualize an amd64 guest. It is impossible to run arm64, riscv64, POWER9, etc. inside a virtualizer.
  • Emulators: The guest operating system architecture does not need to be compatible with the host operating system architecture. For example, an amd64 host can emulate an amd64, riscv64, POWER9, etc. guest.
  • Speed comparison: Virtualizers are faster than emulators, which are too slow for everyday desktop operating system production use cases.
  • Conclusion: Debian, Qubes, Kicksecure, Whonix builds for amd64 cannot be run on host architectures such as arm64, riscv64, POWER9, etc. using a virtualizer such as VirtualBox or KVM.
  • Porting: To run an operating system on a different architecture, a port is required. The base operaging system (in case of Whonix, that is Debian) needs to be available for that architecture. Furthermore, the derivative (Kickssecure, Whonix) architecture specific packages need to be able to be build for that architecture. This is most likely possible. These packages are documented below. Furthermore, a bootable image (VM or ISO) needs to be created. Depending on the architecture, this can be a difficult process, which is elaborated on Kicksecure logo Development of System Image Creation and Bootstrapping Tools Onion Version .

Packages[edit]

Porting Simplicity[edit]

To simplify ports to other architectures, all of the following packages are optional dependencies. These packages have very useful functionality however to simplify bootstrapping a port of Whonix for a quick motivational milestone to reach of Whonix building and booting, all architecture specific packages are optional dependencies by design in Whonix.

Therefore porters do not need to worry about any of the following packages during original porting work.

Most of Whonix packages and all essential packages are architecture independent.

To simplify ports, Whonix repository at time of writing supports the following architectures. [1]

amd64 arm64 armel armhf hurd-i386 hurd-amd64 i386 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc ppc64 ppc64el s390x sparc source

This might be useful for distro-morphing.

Distro-morphing might be the easiest way to create a proof of concept port of Whonix. Following the spirit of Self Support First Policy, first experimenting with Debian (which Whonix is based on) first might be helpful.

A production quality, redistributable port of Whonix however should be created using Whonix build script instead of distro-morphing.

Related: porting Whonix to other virtualizers

bindp[edit]

kloak[edit]

corridor[edit]

tb-updater[edit]

tirdad[edit]

binaries-freedom[edit]

  • Currently not in use.

tor[edit]

Check Tor SocksPort Reachability[edit]

On Whonix-Workstation. Test.

{{Curl_Plain}} 10.152.152.10:9100 ; echo $?

Should show.

<html>
<head>
<title>Tor is not an HTTP Proxy</title>
</head>
<body>
<h1>Tor is not an HTTP Proxy</h1>
<p>
It appears you have configured your web browser to use Tor as an HTTP proxy.
This is not correct: Tor is a SOCKS proxy, not an HTTP proxy.
Please configure your client accordingly.
</p>
<p>
See <a href="https://www.torproject.org/documentation.html">https://www.torproject.org/documentation.html</a> for more information.
<!-- Plus this comment, to make the body response more than 512 bytes, so      IE will be willing to display it. Comment comment comment comment      comment comment comment comment comment comment comment comment.-→
</p>
</body>
</html>
0

Otherwise, it would be a grave error (Tor SocksPort not reachable).

Check CPFP Reachability[edit]

On Whonix-Workstation. Test.

{{Curl_Plain}} 10.152.152.10:9052

Should show.

510 Prohibited command "GET / HTTP/1.1"
510 Prohibited command "User-Agent: curl/7.26.0"
510 Prohibited command "Host: 10.152.152.10:9052"
510 Prohibited command "Accept: */*"
510 Unrecognized command ""

Otherwise, it would be a grave error (CPFP not reachable).

Forum Discussion[edit]

https://forums.whonix.org/t/architecture-specific-compiled-third-party-special-packages-porting-whonix/8562archive.org

RPM[edit]

These are some random notes about porting Whonix update debs to rpm.

What would have to be done:

  • create rpm package
  • Find a replacement for config-package-dev, a package which allows third party packages (Whonix) to own files which are owned by other packages. Such as /etc/tor/torrc is owned by tor, but anon-gw-anonymizer-config includes its own config file.
  • add init scripts (currently done by debhelper)
  • add man pages (currently done by debhelper and ronn, see debian/rules)
  • minor: replacement for dh_apparmor

Footnotes[edit]

We believe security software like Whonix needs to remain open source and independent. Would you help sustain and grow the project? Learn more about our 12 year success story and maybe DONATE!