The Funtoo Linux project has transitioned to "Hobby Mode" and this wiki is now read-only.
Package:Fchroot
"fchroot" is the Funtoo franken-chroot tool, which uses the power of QEMU to allow you to "fchroot" into a non-x86 system on an x86 system and use it as if it were a native chroot. It currently allows chrooting into arm-32bit, arm-64bit and riscv-64bit systems on a regular 64-bit PC.
The pypi package index for fchroot can be found here: https://pypi.org/project/fchroot/
Installation
To emerge fchroot, perform the following steps:
root # cat >> /etc/portage/package.use << "EOF" app-emulation/qemu static-user qemu_user_targets_aarch64 qemu_user_targets_riscv64 qemu_user_targets_arm dev-libs/glib static-libs dev-libs/libpcre static-libs sys-apps/attr static-libs EOF root # emerge -av fchroot
Use
You can now extract your non-x86 stage3 tarball to your preferred location, such as /var/tmp/riscv-stage3
, and then fchroot into it:
root # cd /var/tmp/riscv-stage3 root # tar --numeric-owner --xattrs --xattrs-include='*' -xpf stage3-sifive-fu740-next-2021-10-21.tar.xz root # fchroot . /bin/bash >>> Setting up /proc... >>> Setting up /sys... >>> Setting up /dev... >>> riscv-64bit frankenchroot B]... fchroot #
Fchroot does the steps necessary to enable the QEMU emulation, and also takes care of performing bind-mounts for /dev
, /proc
and /sys
, and copying /etc/resolv.conf
into the chroot environment to ensure that name resolution works.
You are now fchrooted into a riscv environment, running riscv via QEMU, and this will be reflected in the uname -a
output:
fchroot # uname -a Linux ryzen 5.10.46_p4-debian-sources #1 SMP Wed Aug 4 23:05:15 MDT 2021 riscv64 GNU/Linux
You can do anything you would do in a regular chroot, including ego sync
and emerging things, as long as you disable pid-sandbox
for Portage:
/etc/make.conf
- add sandboxFEATURES="-pid-sandbox"
See a live demo here: