Whonix for arm64 / Raspberry Pi (RPi)

I was assuming they were not using assembly level optimization or arch specific features of the kernel

1 Like

Options:

  • A) We find a solution for above issue. Not sure possible.
  • B) We no longer depend on architecture specific packages, no longer install these by default (soon: lkrg, kloak, tirdad, …) Seems pretty bad.
  • C) Leave distro-morphing / Installation from Repository broken (or outdated) and require build from source code. [This is the case at time of writing.]
  • D) Split kicksecure-dependencies-cli into
    • kicksecure-dependencies-cli
    • kicksecure-dependencies-cli-amd64
    • kicksecure-dependencies-cli-generic
    • or so. kicksecure-dependencies-cli-generic might not be build as often and outdated.
    • Sounds also somewhat non-ideal.
  • E) Don’t add binary packages for all Debian supported platforms to Whonix repository.
  • F) Build for all architectures. Takes tons of my CPU/disk time, disk space, disk wear.

I think this is the best option. The benefit of having some form of Whonix for these architectures, even without many of these great features still outweighs the drawbacks. At least we can be sure distro-morphing is still functioning and it may be useful in case someone sponsors hardware for building all packages in the future.


However will this mean we can’t apt-get install these select packages? Perhaps you can put all distro morphing approved dependencies in their own package?

“Who’s we?” :wink:
Always a good question to ask.
Assuming we is “amd64”.
Either way. Both, apt-get install select packages and even distro-morphing will be possible for the amd64 (Intel and AMD) architecture.

Currently for example arm64 users cannot install affected meta packages since these depend on amd64-limited packages.
As a follow up issue, that is a/the reason for broken arm64 build process.
arm64 however currently can apt install most “non-meta” packages such as security-misc or sdwdate.

All packages are compatible with disto-morphing. Just not all packages are available for all architectures.
Meta packages are caught up “in between”. (No issue for amd64.)
It’s a dpkg / debhelper / debian policy limitation:
https://lists.debian.org/debian-mentors/2019/11/msg00156.html

Might have found an OK solution.

https://github.com/Whonix/anon-meta-packages/commit/14561c5daa34c4d95fb1ba49ef6b0c0c6d9c5dec

https://github.com/Whonix/anon-meta-packages/commit/8d4b55e0e835989e4f6ccf15edc638e9c1189145

https://github.com/Whonix/anon-meta-packages/commit/1d46ddaa83788b160bc92c8252578d02a0eefb8b

https://github.com/Whonix/anon-meta-packages/commit/4c440cbda3a8f54710811c70295566ed96d73815

Need to test a new build.

1 Like

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

1 Like

https://github.com/Whonix/Whonix/blob/master/build-steps.d/2375_build_rpi_fs issue. Interactive question.

+ local img=/home/user/whonix_binary/Whonix-Gateway-RPi-15.0.1.1.7.raw
+ losetup --all
+ sync
+ wait 9640
+ sleep 2
+ local kpartx_output a b device
++ kpartx -a -s -v /home/user/whonix_binary/Whonix-Gateway-RPi-15.0.1.1.7.raw
+ kpartx_output='add map loop0p1 (254:3): 0 209709056 linear 7:0 4096'
+ sync
+ '[' 'add map loop0p1 (254:3): 0 209709056 linear 7:0 4096' = '' ']'
+ losetup --all
/dev/loop0: [65025]:7610049 (/home/user/whonix_binary/Whonix-Gateway-RPi-15.0.1.1.7.raw)
+ sync
+ read a b device _
+ dev_mapper_device=/dev/mapper/loop0p1
+ '[' '' = true ']'
+ sudo --non-interactive -u user mkdir --parents /home/user/whonix_binary/Whonix-Gateway-RPi_image
+ sync
+ mount /dev/mapper/loop0p1 /home/user/whonix_binary/Whonix-Gateway-RPi_image
+ sync
+ sudo --non-interactive -u user truncate -s 2048M /home/user/whonix_binary/whonix_gw_rpi.img
+ sudo --non-interactive -u user mkdir --parents /home/user/whonix_binary/whonix_gw_rpi.img_mpoint
++ losetup -f
+ dev=/dev/loop1
+ losetup /dev/loop1 /home/user/whonix_binary/whonix_gw_rpi.img
+ parted -s /dev/loop1 mklabel msdos
+ parted -s /dev/loop1 unit s mkpart primary fat32 -- 1 524280
Warning: The resulting partition is not properly aligned for best performance.
+ parted -s /dev/loop1 set 1 boot on
+ parted -s /dev/loop1 unit s mkpart primary ext4 -- 524281 -1
Warning: The resulting partition is not properly aligned for best performance.
+ parted -s /dev/loop1 print
Model: Loopback device (loopback)
Disk /dev/loop1: 2147MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start  End     Size    Type     File system  Flags
 1      512B   268MB   268MB   primary               boot, lba
 2      268MB  2147MB  1879MB  primary  ext4

+ mkfs.fat /dev/loop1p1
mkfs.fat 4.1 (2017-01-24)
+ mkfs.ext4 /dev/loop1p2
mke2fs 1.44.5 (15-Dec-2018)
/dev/loop1p2 contains a ext4 file system
	last mounted on /home/user/whonix_binary/whonix_gw_rpi.img_mpoint on Sat Apr  4 19:55:14 2020
Proceed anyway? (y,N)

I can add force (-F) to mkfs but that might just silence the symptom. The question is why /dev/loop1p2 contains a ext4 file system and if that is expected.

https://github.com/Whonix/Whonix/commit/9fb23757aada0ce06882fcf691177a65766d9f2f

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

Good news. Due to recent development efforts, arm64 / Raspberry Pi (RPi) builds were fixed in Whonix git tag 15.0.1.2.0-developers-only.

sudo ./whonix_build --target raw --flavor whonix-gateway-rpi --build --arch arm64 --kernel linux-image-arm64 --headers linux-headers-arm64

There might still be minor build issues or unrelated issues due to the recent development efforts. Therefore this is likely to work better when the next stable release of Whonix gets released.

Will edit to add link to recent development efforts.

Note: only the build was fixed. I didn’t try to boot the image let alone try it on real hardware. You could help the development if you could create instructions how to boot that image using virtualization such as libvirt configuration files and/or qemu command line to boot the image from a amd64 host.


It would be good if we had a Debian based CI (continuous integration) server with full support to use mount etc. Then Whonix build script could continue to build RPi builds on that server to make sure that new changes don’t break again RPi builds.

1 Like

I tried to build it by:

git clone --jobs=4 --recursive https://github.com/Whonix/Whonix
cd Whonix
git checkout 15.0.1.2.0-developers-only
sudo ./whonix_build --target raw --flavor whonix-gateway-rpi --build --arch arm64 --kernel linux-image-arm64 --headers linux-headers-arm64

but got:

############################################################
ERROR in ././build-steps.d/1100_sanity-tests detected!
anon_dist_build_version: 15.0.1.2.0
(whonix_build_error_counter: 1)
(benchmark: 00:00:01)
trap_signal_type_previous: unset
trap_signal_type_last    : ERR
process_backtrace_result:
1: : init
2: : /usr/sbin/lightdm 
3: : lightdm --session-child 13 20 
4: : cinnamon-session --session cinnamon 
5: : /usr/bin/python3 /usr/bin/guake 
6: : /usr/bin/zsh 
7: : sudo ./whonix_build --target raw --flavor whonix-gateway-rpi --build --arch arm64 --kernel linux-image-arm64 --headers linux-headers-arm64 
8: : /bin/bash ./whonix_build --target raw --flavor whonix-gateway-rpi --build --arch arm64 --kernel linux-image-arm64 --headers linux-headers-arm64 
9: : /bin/bash ././build-steps.d/1100_sanity-tests 
function_trace_result:
main (line number: 122)
main (line number: 119)
git_sanity_test_main (line number: 145)
git_sanity_test_check_for_uncommitted_changes (line number: 136)
error (line number: 30)
errorhandlergeneral (line number: 357)
errorhandlerprocessshared (line number: 192)
last_failed_bash_command: error_ "See above! (There should be a bold, red message surrounded by blue hashtags (#).)"
last_failed_exit_code: 127
ERROR in ././build-steps.d/1100_sanity-tests detected!
############################################################

I’m not developing btw. Just trying to get an image I can run.

Trioxin via Whonix Forum:

last_failed_bash_command: error_ “See above! (There should be a bold, red message surrounded by blue hashtags (#).)”

This.

1 Like

sorry, here’s the above:

+ set -e
+ true 'INFO: Currently running script: ./whonix_build --target' raw --flavor whonix-gateway-rpi --build --arch arm64 --kernel linux-image-arm64 --headers linux-headers-arm64
+++ dirname ./whonix_build
++ cd .
++ pwd
+ MYDIR=/home/user/ISO/Whonix
+ cd /home/user/ISO/Whonix
+ source ./help-steps/pre
++ '[' '!' '' = true ']'
++ set +x
+ source ./help-steps/colors
++ '[' '!' '' = true ']'
++ colors
++ '[' xterm-256color = '' ']'
++ [[ -t 2 ]]
++ export whonix_build_already_defined_colors=true
++ whonix_build_already_defined_colors=true
+ trap error_handler_whonix_build_one ERR
+ export WHONIX_BUILD_ONE_SCRIPT_STARTED=1
+ WHONIX_BUILD_ONE_SCRIPT_STARTED=1
+ main --target raw --flavor whonix-gateway-rpi --build --arch arm64 --kernel linux-image-arm64 --headers linux-headers-arm64
+ root_check
++ id -u
+ '[' 0 '!=' 0 ']'
+ echo 'INFO: Script running as root.'
INFO: Script running as root.
+ args='--target raw --flavor whonix-gateway-rpi --build --arch arm64 --kernel linux-image-arm64 --headers linux-headers-arm64'
+ whonix_build_preparation --target raw --flavor whonix-gateway-rpi --build --arch arm64 --kernel linux-image-arm64 --headers linux-headers-arm64
+ cd help-steps
+ source parse-cmd
+ whonix_build_one_parse_cmd --target raw --flavor whonix-gateway-rpi --build --arch arm64 --kernel linux-image-arm64 --headers linux-headers-arm64
+ '[' '!' '' = 1 ']'
+ '[' '--target raw --flavor whonix-gateway-rpi --build --arch arm64 --kernel linux-image-arm64 --headers linux-headers-arm64' = '' ']'
+ local build_machines_counter=0
+ local build_target_counter=0
+ :
+ case $1 in
+ true 'INFO: --target raw chosen.'
+ '[' raw = virtualbox ']'
+ '[' raw = root ']'
+ '[' raw = qcow2 ']'
+ '[' raw = raw ']'
+ build_target_counter=1
+ export WHONIX_BUILD_RAW=true
+ WHONIX_BUILD_RAW=true
+ shift 2
+ :
+ case $1 in
+ true 'INFO: --flavor whonix-gateway-rpi chosen.'
+ WHONIX_BUILD_FLAVOR=whonix-gateway-rpi
+ export WHONIX_BUILD_FLAVOR
+ '[' whonix-gateway-rpi = whonix-gateway-kde ']'
+ '[' whonix-gateway-rpi = whonix-gateway-xfce ']'
+ '[' whonix-gateway-rpi = whonix-gateway-rpi ']'
+ build_machines_counter=1
+ shift 2
+ :
+ case $1 in
+ export WHONIX_BUILD_BUILD=1
+ WHONIX_BUILD_BUILD=1
+ shift
+ :
+ case $1 in
+ '[' arm64 = '' ']'
+ export BUILD_TARGET_ARCH=arm64
+ BUILD_TARGET_ARCH=arm64
+ true 'BUILD_TARGET_ARCH set to arm64.'
+ shift 2
+ :
+ case $1 in
+ '[' linux-image-arm64 = '' ']'
+ '[' linux-image-arm64 = none ']'
+ export 'BUILD_KERNEL_PKGS= linux-image-arm64'
+ BUILD_KERNEL_PKGS=' linux-image-arm64'
+ true 'BUILD_KERNEL_PKGS set to  linux-image-arm64.'
+ shift 2
+ :
+ case $1 in
+ '[' linux-headers-arm64 = '' ']'
+ '[' linux-headers-arm64 = none ']'
+ export 'BUILD_HEADER_PKGS= linux-headers-arm64'
+ BUILD_HEADER_PKGS=' linux-headers-arm64'
+ true 'BUILD_HEADER_PKGS set to  linux-headers-arm64.'
+ shift 2
+ :
+ case $1 in
+ '[' '' = '' ']'
+ true
+ break
+ '[' arm64 = i386 ']'
+ '[' -n arm64 ']'
+ '[' -n ' linux-image-arm64' ']'
+ '[' -n ' linux-headers-arm64' ']'
+ export BUILD_TARGET_ARCH
+ export BUILD_KERNEL_PKGS
+ export BUILD_HEADER_PKGS
+ echo 'INFO: BUILD_TARGET_ARCH    (--arch): arm64'
INFO: BUILD_TARGET_ARCH    (--arch): arm64
+ echo 'INFO: BUILD_KERNEL_PKGS  (--kernel):  linux-image-arm64'
INFO: BUILD_KERNEL_PKGS  (--kernel):  linux-image-arm64
+ echo 'INFO: BUILD_HEADER_PKGS (--headers):  linux-headers-arm64'
INFO: BUILD_HEADER_PKGS (--headers):  linux-headers-arm64
+ '[' '' = '' ']'
+ echo 'INFO: No --connection type '\''clearnet'\'' or '\''onion'\'' has been chosen. Defaulting whonix_build_sources_clearnet_or_onion to clearnet.
(Alternative value would be '\''onion'\''.)'
INFO: No --connection type 'clearnet' or 'onion' has been chosen. Defaulting whonix_build_sources_clearnet_or_onion to clearnet.
(Alternative value would be 'onion'.)
+ export whonix_build_sources_clearnet_or_onion=clearnet
+ whonix_build_sources_clearnet_or_onion=clearnet
+ '[' '!' '' = 1 ']'
+ '[' '!' 1 = 1 ']'
+ '[' 1 -gt 1 ']'
+ '[' 1 -le 0 ']'
+ '[' '' = 1 ']'
+ '[' '' = true ']'
+ '[' '' = true ']'
+ '[' true = true ']'
+ true
+ '[' '' = 1 ']'
+ export whonix_build_one_parsed=1
+ whonix_build_one_parsed=1
+ cd ..
+ trap error_handler_whonix_build_one ERR
+ trap - INT
+ trap - TERM
+ '[' '' = 1 ']'
+ '[' 1 = 1 ']'
+ whonix_build_machine
+ run-parts --verbose --test ./build-steps.d
./build-steps.d/1100_sanity-tests
./build-steps.d/1120_prepare-build-machine
./build-steps.d/1130_cowbuilder-setup
./build-steps.d/1150_export-libvirt-xml
./build-steps.d/1200_create-debian-packages
./build-steps.d/1300_create-raw-image
./build-steps.d/1700_install-packages
./build-steps.d/1800_copy_vms_into_raw
./build-steps.d/2300_run-chroot-scripts-post-d
./build-steps.d/2350_zerofree-raw
./build-steps.d/2375_build_rpi_fs
./build-steps.d/2400_convert-raw-to-qcow2
./build-steps.d/2500_convert-raw-to-vdi
./build-steps.d/2550_convert-raw-to-iso
./build-steps.d/2600_create-vbox-vm
./build-steps.d/2700_create-vm-text
./build-steps.d/2800_create-report
+ for whonix_build_one_build_step_current in ./build-steps.d/*
+ '[' -x ./build-steps.d/1100_sanity-tests ']'
+ '[' s = '~' ']'
+ echo ./build-steps.d/1100_sanity-tests
+ grep -q .dpkg-
+ true '############################################################'
+ true '############################################################'
+ true '############################################################'
+ true 'INFO: BEGIN: whonix_build_one_build_step_current: ./build-steps.d/1100_sanity-tests'
+ ././build-steps.d/1100_sanity-tests
+ set -e
+ true 'INFO: Currently running script: ././build-steps.d/1100_sanity-tests '
+++ dirname ././build-steps.d/1100_sanity-tests
++ cd ././build-steps.d
++ pwd
+ MYDIR=/home/user/ISO/Whonix/build-steps.d
+ cd /home/user/ISO/Whonix/build-steps.d
+ cd ..
+ cd help-steps
+ source pre
++ '[' '!' '' = true ']'
++ set +x
+ source colors
++ '[' '!' true = true ']'
+ source variables
++ '[' '!' '' = true ']'
++ set +x
INFO: Setting... export UWT_DEV_PASSTHROUGH="1"
INFO: Variable anon_dist_build_version was unset. Auto detected. Set to: 15.0.1.2.0
++ true 'INFO: Currently running script: ././build-steps.d/1100_sanity-tests '
++ true 'INFO: LD_PRELOAD: '
+ cd /home/user/ISO/Whonix/help-steps
+ cd ..
+ main
+ root_check
++ id -u
+ '[' 0 '!=' 0 ']'
+ echo 'INFO: Script running as root.'
INFO: Script running as root.
+ check-copy-vms-into-raw
+ '[' '' = 1 ']'
+ '[' gateway = kicksecure ']'
+ '[' '!' '' = true ']'
+ return 0
+ check-virtualbox-vm-exists
+ '[' '' = 1 ']'
+ local command_v_exit_code=0
+ command -v VBoxManage
+ '[' '!' 0 = 0 ']'
+ /home/user/ISO/Whonix/help-steps/vm-exists-test
+ set -e
+ true 'INFO: Currently running script: /home/user/ISO/Whonix/help-steps/vm-exists-test '
+++ dirname /home/user/ISO/Whonix/help-steps/vm-exists-test
++ cd /home/user/ISO/Whonix/help-steps
++ pwd
+ MYDIR=/home/user/ISO/Whonix/help-steps
+ cd /home/user/ISO/Whonix/help-steps
+ cd ..
+ cd help-steps
+ source pre
++ '[' '!' '' = true ']'
++ set +x
+ source colors
++ '[' '!' true = true ']'
+ source variables
++ '[' '!' '' = true ']'
++ set +x
INFO: Setting... export UWT_DEV_PASSTHROUGH="1"
INFO: Variable anon_dist_build_version was already set to: 15.0.1.2.0
++ true 'INFO: Currently running script: /home/user/ISO/Whonix/help-steps/vm-exists-test '
++ true 'INFO: LD_PRELOAD: '
+ main
+ '[' '' = 1 ']'
+ true 'INFO: Checking, if a VirtualBox VM named Whonix-Gateway-RPi already exists...'
+ local vboxmanage_exit_code
+ vboxmanage_exit_code=0
+ sudo --non-interactive -u user VBoxManage showvminfo Whonix-Gateway-RPi
+ vboxmanage_exit_code=1
+ true
+ '[' 1 = 0 ']'
+ true 'INFO: Done, no VirtualBox VM named Whonix-Gateway-RPi does exist, ok.'
+ true 'INFO: Checking, if an VirtualBox ova file /home/user/whonix_binary/Whonix-RPi-15.0.1.2.0.ova already exists...'
+ '[' -e /home/user/whonix_binary/Whonix-RPi-15.0.1.2.0.ova ']'
+ true 'INFO: Done, no VirtualBox ova file /home/user/whonix_binary/Whonix-RPi-15.0.1.2.0.ova exist, ok.'
+ exithandler
+ local exit_code=0
+ '[' '!' 0 = 0 ']'
++ benchmarktimeend 1587246965
+++ date +%s
++ benchmarktimeend=1587246965
++ benchmark_took_seconds=0
+++ convertsecs 0
+++ local h m s
+++ (( h=0/3600 ))
+++ true
+++ (( m=(0%3600)/60 ))
+++ true
+++ (( s=0%60 ))
+++ true
+++ printf '%02d:%02d:%02d\n' 0 0 0
++ echo 00:00:00
+ benchmark_took_time=00:00:00
+ output_cmd_set
+ '[' -o xtrace ']'
+ output_cmd=true
+ '[' 0 = 0 ']'
+ true 'INFO: End of: /home/user/ISO/Whonix/help-steps/vm-exists-test | exit_code: 0 | error(s) detected: 0 | benchmark: 00:00:00'
+ exit 0
+ true
+ check_required_packages_installed
+ local required_packages_list required_package_item
+ local 'required_packages_list=git time curl apt-cacher-ng lsb-release fakeroot'
+ for required_package_item in $required_packages_list
+ dpkg-query --show '--showformat=${Version}' git
1:2.17.1-1ubuntu0.6+ for required_package_item in $required_packages_list
+ dpkg-query --show '--showformat=${Version}' time
1.7-25.1build1+ for required_package_item in $required_packages_list
+ dpkg-query --show '--showformat=${Version}' curl
7.58.0-2ubuntu3.8+ for required_package_item in $required_packages_list
+ dpkg-query --show '--showformat=${Version}' apt-cacher-ng
3.1-1build1+ for required_package_item in $required_packages_list
+ dpkg-query --show '--showformat=${Version}' lsb-release
9.20170808ubuntu1+ for required_package_item in $required_packages_list
+ dpkg-query --show '--showformat=${Version}' fakeroot
1.22-2ubuntu1+ signing_key
+ true 'INFO: GPG_AGENT_INFO: '
+ '[' false = false ']'
+ true
+ source /home/user/ISO/Whonix/help-steps/git_sanity_test
++ [[ /home/user/ISO/Whonix/help-steps/git_sanity_test != \.\/\.\/\b\u\i\l\d\-\s\t\e\p\s\.\d\/\1\1\0\0\_\s\a\n\i\t\y\-\t\e\s\t\s ]]
++ script_was_sourced=true
++ '[' true = false ']'
++ '[' true = false ']'
+ git_sanity_test_main
+ git_sanity_test_parse_cmd
+ true 'INFO: git_sanity_test_parse_cmd | args: '
+ :
+ case $1 in
+ break
+ git_sanity_test_check_for_untagged_commits
++ git describe --always --abbrev=0
+ git_tag_nearest=15.0.1.2.0-developers-only
++ git describe --always --abbrev=1000000000
+ git_tag_current=15.0.1.2.0-developers-only
+ true '/home/user/ISO/Whonix/help-steps/git_sanity_test INFO: git_tag_nearest: 15.0.1.2.0-developers-only '
+ true '/home/user/ISO/Whonix/help-steps/git_sanity_test INFO: git_tag_current: 15.0.1.2.0-developers-only '
+ '[' 15.0.1.2.0-developers-only == 15.0.1.2.0-developers-only ']'
+ true '/home/user/ISO/Whonix/help-steps/git_sanity_test INFO: Git reports tagged commit. '
+ git_sanity_test_check_for_uncommitted_changes
++ git status --porcelain
+ '[' -n ' M packages/anon-apps-config
 M packages/anon-apt-sources-list
 M packages/anon-connection-wizard
 M packages/anon-gw-anonymizer-config
 M packages/anon-gw-base-files
 M packages/anon-icon-pack
 M packages/anon-meta-packages
 M packages/anon-shared-build-apt-sources-tpo
 M packages/anon-ws-base-files
 M packages/anon-ws-disable-stacked-tor
 M packages/apparmor-profile-everything
 M packages/apparmor-profile-torbrowser
 M packages/binaries-freedom
 M packages/bindp
 M packages/bootclockrandomization
 M packages/corridor
 M packages/damngpl
 M packages/debug-misc
 M packages/genmkfile
 M packages/gpg-bash-lib
 M packages/grub-live
 M packages/hardened-kernel
 M packages/hardened_malloc
 M packages/helper-scripts
 M packages/kicksecure-base-files
 M packages/kicksecure-network-conf
 M packages/kloak
 M packages/live-config-dist
 M packages/msgcollector
 M packages/onion-grater
 M packages/open-link-confirmation
 M packages/python-guimessages
 M packages/qubes-whonix
 M packages/rads
 M packages/ro-mode-init
 M packages/sandbox-app-launcher
 M packages/sdwdate
 M packages/sdwdate-gui
 M packages/security-misc
 M packages/serial-console-enable
 M packages/swap-file-creator
 M packages/tb-default-browser
 M packages/tb-starter
 M packages/tb-updater
 M packages/timesanitycheck
 M packages/tor-control-panel
 M packages/usability-misc
 M packages/uwt
 M packages/vm-config-dist
 M packages/whonix-base-files
 M packages/whonix-developer-meta-files
 M packages/whonix-firewall
 M packages/whonix-gw-network-conf
 M packages/whonix-initializer
 M packages/whonix-legacy
 M packages/whonix-libvirt
 M packages/whonix-repository
 M packages/whonix-setup-wizard
 M packages/whonix-welcome-page
 M packages/whonix-ws-network-conf
 M packages/whonix-xfce-desktop-config
 M packages/whonixcheck
 M packages/whonixsetup
?? packages/apparmor-profile-dist/
?? packages/apparmor-profile-hexchat/
?? packages/apparmor-profile-thunderbird/
?? packages/dist-base-files/' ']'
+ '[' '' = true ']'
+ true '---------------------------------------------------------------------'
+ true '/home/user/ISO/Whonix/help-steps/git_sanity_test ERROR: Git reports uncommitted changes! '
+ true '/home/user/ISO/Whonix/help-steps/git_sanity_test INFO: (And you are not using --allow-uncommitted true, which you also should not do for security reasons, unless you are a developer or advanced user and know what you are doing. Such as in case you added custom code.) '
+ git_sanity_test_hint
+ true '/home/user/ISO/Whonix/help-steps/git_sanity_test INFO: (As a developer or advanced user you might want to use:)
--allow-untagged true --allow-uncommitted true
'
+ true '/home/user/ISO/Whonix/help-steps/git_sanity_test INFO: Running "git status" for your convenience. '
+ git status
HEAD detached at 15.0.1.2.0-developers-only
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

	modified:   packages/anon-apps-config (new commits)
	modified:   packages/anon-apt-sources-list (new commits)
	modified:   packages/anon-connection-wizard (new commits)
	modified:   packages/anon-gw-anonymizer-config (new commits)
	modified:   packages/anon-gw-base-files (new commits)
	modified:   packages/anon-icon-pack (new commits)
	modified:   packages/anon-meta-packages (new commits)
	modified:   packages/anon-shared-build-apt-sources-tpo (new commits)
	modified:   packages/anon-ws-base-files (new commits)
	modified:   packages/anon-ws-disable-stacked-tor (new commits)
	modified:   packages/apparmor-profile-everything (new commits)
	modified:   packages/apparmor-profile-torbrowser (new commits)
	modified:   packages/binaries-freedom (new commits)
	modified:   packages/bindp (new commits)
	modified:   packages/bootclockrandomization (new commits)
	modified:   packages/corridor (new commits)
	modified:   packages/damngpl (new commits)
	modified:   packages/debug-misc (new commits)
	modified:   packages/genmkfile (new commits)
	modified:   packages/gpg-bash-lib (new commits)
	modified:   packages/grub-live (new commits)
	modified:   packages/hardened-kernel (new commits)
	modified:   packages/hardened_malloc (new commits)
	modified:   packages/helper-scripts (new commits)
	modified:   packages/kicksecure-base-files (new commits)
	modified:   packages/kicksecure-network-conf (new commits)
	modified:   packages/kloak (new commits)
	modified:   packages/live-config-dist (new commits)
	modified:   packages/msgcollector (new commits)
	modified:   packages/onion-grater (new commits)
	modified:   packages/open-link-confirmation (new commits)
	modified:   packages/python-guimessages (new commits)
	modified:   packages/qubes-whonix (new commits)
	modified:   packages/rads (new commits)
	modified:   packages/ro-mode-init (new commits)
	modified:   packages/sandbox-app-launcher (new commits)
	modified:   packages/sdwdate (new commits)
	modified:   packages/sdwdate-gui (new commits)
	modified:   packages/security-misc (new commits)
	modified:   packages/serial-console-enable (new commits)
	modified:   packages/swap-file-creator (new commits)
	modified:   packages/tb-default-browser (new commits)
	modified:   packages/tb-starter (new commits)
	modified:   packages/tb-updater (new commits)
	modified:   packages/timesanitycheck (new commits)
	modified:   packages/tor-control-panel (new commits)
	modified:   packages/usability-misc (new commits)
	modified:   packages/uwt (new commits)
	modified:   packages/vm-config-dist (new commits)
	modified:   packages/whonix-base-files (new commits)
	modified:   packages/whonix-developer-meta-files (new commits)
	modified:   packages/whonix-firewall (new commits)
	modified:   packages/whonix-gw-network-conf (new commits)
	modified:   packages/whonix-initializer (new commits)
	modified:   packages/whonix-legacy (new commits)
	modified:   packages/whonix-libvirt (new commits)
	modified:   packages/whonix-repository (new commits)
	modified:   packages/whonix-setup-wizard (new commits)
	modified:   packages/whonix-welcome-page (new commits)
	modified:   packages/whonix-ws-network-conf (new commits)
	modified:   packages/whonix-xfce-desktop-config (new commits)
	modified:   packages/whonixcheck (new commits)
	modified:   packages/whonixsetup (new commits)

Untracked files:
  (use "git add <file>..." to include in what will be committed)

	packages/apparmor-profile-dist/
	packages/apparmor-profile-hexchat/
	packages/apparmor-profile-thunderbird/
	packages/dist-base-files/

no changes added to commit (use "git add" and/or "git commit -a")
+ true '/home/user/ISO/Whonix/help-steps/git_sanity_test INFO: Running git "clean -d --force --force --dry-run" for your convenience. '
+ git clean -d --force --force --dry-run
Would remove packages/apparmor-profile-dist/
Would remove packages/apparmor-profile-hexchat/
Would remove packages/apparmor-profile-thunderbird/
Would remove packages/dist-base-files/
+ true '/home/user/ISO/Whonix/help-steps/git_sanity_test You most likely like to run:
    /home/user/ISO/Whonix/help-steps/cleanup-files
or if you know what you are doing:
    git clean -d --force --force
    git reset --hard
'
+ true '---------------------------------------------------------------------'
+ error 'Uncommitted changes! See above!'
+ echo '############################################################'
############################################################
+ echo 'ERROR: Uncommitted changes! See above!'
ERROR: Uncommitted changes! See above!
+ echo '############################################################'
############################################################

In case you didn’t make any source code modification… (Disclaimer so not everyone copy/pastes this.)

In Whonix source code folder:

git clean -d --force --force
git reset --hard
git submodule update

now I see:

############################################################
ERROR in ././build-steps.d/1120_prepare-build-machine detected!
anon_dist_build_version: 15.0.1.2.0
(whonix_build_error_counter: 1)
(benchmark: 00:00:02)
trap_signal_type_previous: unset
trap_signal_type_last    : ERR
process_backtrace_result:
1: : init
2: : /usr/sbin/lightdm 
3: : lightdm --session-child 13 20 
4: : cinnamon-session --session cinnamon 
5: : /usr/bin/python3 /usr/bin/guake 
6: : /usr/bin/zsh 
7: : sudo ./whonix_build --target raw --flavor whonix-gateway-rpi --build --arch arm64 --kernel linux-image-arm64 --headers linux-headers-arm64 
8: : /bin/bash ./whonix_build --target raw --flavor whonix-gateway-rpi --build --arch arm64 --kernel linux-image-arm64 --headers linux-headers-arm64 
9: : /bin/bash ././build-steps.d/1120_prepare-build-machine 
function_trace_result:
main (line number: 277)
main (line number: 273)
build_machine_setup (line number: 105)
errorhandlergeneral (line number: 357)
errorhandlerprocessshared (line number: 192)
last_failed_bash_command: $apt_get_update_wrapper_source_path_full ${APTGETOPT[@]} -o Dir::Etc::sourcelist="$whonix_build_sources_list_primary" -o Dir::Etc::sourceparts="-" update
last_failed_exit_code: 100
ERROR in ././build-steps.d/1120_prepare-build-machine detected!
############################################################
'
++ '[' ERR = INT ']'
++ '[' ERR = TERM ']'
++ '[' ERR = ERR ']'
++ true 'INFO: trap_signal_type_last: ERR, considering auto retry...'
++ '[' '!' 1 = 0 ']'
++ '[' '' = '' ']'
++ whonix_build_auto_retry_counter=1
++ '[' -n 1 ']'
++ '[' -n 5 ']'
++ local first
++ read -r first _
++ '[' '$apt_get_update_wrapper_source_path_full' = error_ ']'
++ '[' 1 -gt 1 ']'
++ true 'INFO: Auto retry attempt number: 1. Max retry attempts: 1 (--retry-max). Auto retry... '
++ whonix_build_auto_retry_counter=2
++ '[' '!' 5 = 0 ']'
++ true 'INFO: Waiting (--retry-wait) 5 seconds before auto retry... '
++ wait 31275
++ sleep 5
++ ignore_error=true
++ error_handler_do_retry=true
++ errorhandlerretry
++ '[' '!' '' = '' ']'
++ true 'INFO: Skipping whonix_build_dispatch_before_retry (--retry-before), because empty, ok.'
++ true 'INFO: Retrying last_failed_bash_command...: $apt_get_update_wrapper_source_path_full ${APTGETOPT[@]} -o Dir::Etc::sourcelist="$whonix_build_sources_list_primary" -o Dir::Etc::sourceparts="-" update '
++ retry_last_failed_bash_command_exit_code=0
++ eval '$apt_get_update_wrapper_source_path_full' -o 'Dir::Etc::sourcelist="$whonix_build_sources_list_primary"' -o 'Dir::Etc::sourceparts="-"' update
+++ /home/user/ISO/Whonix/packages/security-misc//usr/lib/security-misc/apt-get-wrapper -o Dir::Etc::sourcelist=/home/user/ISO/Whonix/build_sources/debian_stable_current_clearnet.list -o Dir::Etc::sourceparts=- update
/home/user/ISO/Whonix/packages/security-misc//usr/lib/security-misc/apt-get-wrapper: line 28: python3.7: command not found
Err:1 http://HTTPS///deb.debian.org/debian-security buster/updates InRelease
  Could not resolve 'HTTPS'
Err:2 http://HTTPS///deb.debian.org/debian buster InRelease
  Could not resolve 'HTTPS'
Reading package lists...
W: Failed to fetch http://HTTPS///deb.debian.org/debian-security/dists/buster/updates/InRelease  Could not resolve 'HTTPS'
W: Failed to fetch http://HTTPS///deb.debian.org/debian/dists/buster/InRelease  Could not resolve 'HTTPS'
W: Some index files failed to download. They have been ignored, or old ones used instead.
++ retry_last_failed_bash_command_exit_code=127
++ true
++ '[' 127 = 0 ']'
++ true 'INFO: Retry failed. exit code of last_failed_bash_command: 127 '
++ last_failed_exit_code=127
++ last_failed_bash_command='$apt_get_update_wrapper_source_path_full ${APTGETOPT[@]} -o Dir::Etc::sourcelist="$whonix_build_sources_list_primary" -o Dir::Etc::sourceparts="-" update'
++ '[' '!' '' = '' ']'
++ true 'INFO: Skipping whonix_build_dispatch_after_retry (--retry-after), because empty, ok.'
++ '[' 127 = 0 ']'
++ errorhandlerprocessshared 'NONE_(called_by_errorhandlerretry)'
++ last_script=././build-steps.d/1120_prepare-build-machine
++ trap_signal_type_previous=ERR
++ '[' ERR = '' ']'
++ trap_signal_type_last='NONE_(called_by_errorhandlerretry)'
++ whonix_build_error_counter=2
+++ benchmarktimeend 1587256277
++++ date +%s
+++ benchmarktimeend=1587256284
+++ benchmark_took_seconds=7
++++ convertsecs 7
++++ local h m s
++++ (( h=7/3600 ))
++++ true
++++ (( m=(7%3600)/60 ))
++++ true
++++ (( s=7%60 ))
++++ printf '%02d:%02d:%02d\n' 0 0 7
+++ echo 00:00:07
++ benchmark_took_time=00:00:07
++ processbacktracefunction
++ true 'INFO: BEGIN: processbacktracefunction'
++ '[' -o xtrace ']'
++ set +x
++ true 'INFO: END  : processbacktracefunction'
++ functiontracefunction
++ true 'INFO: BEGIN: functiontracefunction'
++ '[' -o xtrace ']'
++ set +x
++ true 'INFO: END  : functiontracefunction'
++ output_cmd_set
++ '[' -o xtrace ']'
++ output_cmd=true
++ true '
############################################################
ERROR in ././build-steps.d/1120_prepare-build-machine detected!
anon_dist_build_version: 15.0.1.2.0
(whonix_build_error_counter: 2)
(benchmark: 00:00:07)
trap_signal_type_previous: ERR
trap_signal_type_last    : NONE_(called_by_errorhandlerretry)
process_backtrace_result:
1: : init
2: : /usr/sbin/lightdm 
3: : lightdm --session-child 13 20 
4: : cinnamon-session --session cinnamon 
5: : /usr/bin/python3 /usr/bin/guake 
6: : /usr/bin/zsh 
7: : sudo ./whonix_build --target raw --flavor whonix-gateway-rpi --build --arch arm64 --kernel linux-image-arm64 --headers linux-headers-arm64 
8: : /bin/bash ./whonix_build --target raw --flavor whonix-gateway-rpi --build --arch arm64 --kernel linux-image-arm64 --headers linux-headers-arm64 
9: : /bin/bash ././build-steps.d/1120_prepare-build-machine 
function_trace_result:
main (line number: 277)
main (line number: 273)
build_machine_setup (line number: 105)
errorhandlergeneral (line number: 357)
errorhandlerprocessshared (line number: 243)
errorhandlerretry (line number: 177)
errorhandlerprocessshared (line number: 192)
errorhandlerprocessshared (line number: 192)
errorhandlergeneral (line number: 357)
build_machine_setup (line number: 105)
main (line number: 273)
main (line number: 277)
last_failed_bash_command: $apt_get_update_wrapper_source_path_full ${APTGETOPT[@]} -o Dir::Etc::sourcelist="$whonix_build_sources_list_primary" -o Dir::Etc::sourceparts="-" update
last_failed_exit_code: 127
ERROR in ././build-steps.d/1120_prepare-build-machine detected!
############################################################

Try a newer tag. That bug is fixed in newer tags. Untested.

can anyone confirm or deny this currently working on a 3B+? I got rainbow-screened on boot, and apparently that can happen with a 3B boot that isn’t 3B+ compatible.

anyone know what it would take to get it to work, whether its me doing something wrong, or the actual codebase itself that would need updating?

I was able to build Whonix successfully for my RPI3b. I have problems booting it. The first problem is that the home directory cannot be created. It then continues with more write errors. I think there is not enough space. What can I do? I used a 32GB SD Card which should be fine?

1 Like

Let us know if it solved the problem.

Experiencing the same with a test build I created. I am surprised. Has nobody had real success on SBC?