should be faster than full VM for compiling, but might not work for testing /proc/self pointing at wrong image? also ALSA still not work if called under qemu-user, last I checked)<div><br></div><div><a href="https://wiki.debian.org/QemuUserEmulation">https://wiki.debian.org/QemuUserEmulation</a></div><div><br></div><div>Installing packages</div><div>The binfmt-support package contains a helper script to easily register/unregister binary formats with the kernel using the binfmt_misc module.</div><div><br></div><div>Install qemu, binfmt-support, and qemu-user-static:</div><div><br></div><div># apt install qemu binfmt-support qemu-user-static</div><div>Check whether the binfmt entries were successfully registered:</div><div><br></div><div># update-binfmts --display</div><div>This command should print entries for each supported target user emulator, except for the host system.</div><div><br></div><div>===</div><div><br></div><div><br></div><div>see appendix if you already have chroot folder with arm system</div><div><br></div><div>or try to use Raspbian's one from</div><div><br></div><div><br></div><div><a href="https://wiki.debian.org/RaspberryPi/qemu-user-static">https://wiki.debian.org/RaspberryPi/qemu-user-static</a></div><div><br></div><div>a bit involved when it comes to image resizing... </div><div><br></div><div>===</div><div><br></div><div>Note: If the host system is Debian Buster and the chroot will be Debian Bullseye, it is good to make sure the host has the version 5.2 of qemu-user-static, available from buster-backports. Otherwise some binaries may cause qemu-user-static to Seg Fault, see 987497. For example setting locale(s) in chroot fails without the upgrade of qemu-user-static.</div><div><br></div><div>{..} </div><div>sudo losetup -f -P --show 2020-08-20-raspios-buster-arm64.img</div><div><br></div><div><br></div><div>Mounting the image</div><div>Mount the image with root permissions:</div><div><br></div><div>sudo mount /dev/loop0p2 -o rw /mnt</div><div>Optional: If you want to mount the RaspiOS /boot</div><div><br></div><div>sudo mount /dev/loop0p1 -o rw /mnt/boot</div><div>Also mount necessary host directories.</div><div><br></div><div>cd /mnt</div><div>sudo mount --bind /dev dev/</div><div>sudo mount --bind /sys sys/</div><div>sudo mount --bind /proc proc/</div><div>sudo mount --bind /dev/pts dev/pts</div><div>(not necessary/advised if you use systemd-nspawn)</div><div><br></div><div>To get everything work (e.g., network) you need to comment out everything in /mnt/etc/ld.so.preload before you chroot in. Take care of that now!</div><div><br></div><div>(not sure if copying qemu binary into chroot still needed on latest Debian?) </div><div>cp /usr/bin/qemu-aarch64-static /mnt/usr/bin</div><div><br></div><div>or qemu-arm-static for armhf</div><div><br></div><div>Now chroot in!</div><div><br></div><div>cd /mnt</div><div>(not needed if we already in mnt?) </div><div>sudo chroot . bin/bash</div><div><br></div><div>now you can try to get git sources and install usual deps for Cin-gg compilation from inside arm/aarch64 chroot and see how far it comes! </div><div><br></div><div>===</div>