[HOME] [DOWNLOAD] [DOCS] [NEWS] [SUPPORT] [TIPS] [ISSUES] [DONATE]

Whonix for arm64 / Raspberry Pi ( RPi )

I think I know where previous build issues are coming from. Some architecture specific packages. Trying to find a solution.


sent to debian-mentros mailing list:
‘Architecture: all’ with architecture specific dependencies - the Depends field contains an arch-specific dependency but the package is architecture all

1 Like

Guide for cross compiling and verifying that the binaries are really compatible for the other platform:

http://jensd.be/800/linux/cross-compiling-for-arm-with-ubuntu-16-04-lts

1 Like

We don’t have any packages supporting cross compilation. [1] These “special” packages are amd64 only (Intel and AMD) at the source code level. For example LKRG is linux, amd64 only. It’s non-trivial to port them to other architectures.

A guide on “how to cross compile” won’t cut it. A guide “how to cross compile” would work if these were simple packages similar to the hello package which does not have any architecture specific source code.

But this isn’t a compilation issue. This is only a packaging issue. The issue is described here:
https://lists.debian.org/debian-mentors/2019/11/msg00149.html

Got an answer here and it looks like there isn’t any solution without proverbially biting any bullet:
https://lists.debian.org/debian-mentors/2019/11/msg00156.html

This is currently breaking distro-morphing / Installation from Repository.


[1] At least none where that’s worth it. For packages that support cross compilation, that is already supported. kloak can be cross compiled on amd64 for “i386” (more “i686”). Not interesting/worth it though due to this. What would be interesting / worth it though would be to cross compile to arm64 which however has issues which probably only upstream can solve.

Cross compiling hardened malloc to arm64 would be interesting / worth it but upstream already said it’s not possible:

1 Like

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.

Need to test a new build.

1 Like
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.

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?

[Imprint] [Privacy Policy] [Cookie Policy] [Terms of Use] [E-Sign Consent] [DMCA] [Investors] [Priority Support] [Professional Support]