I am using a clean debian 10 but every debian based distro should work. Non debian based distros might require some work (e.g. Different package names)
- Debian:
sudo apt install git build-essential flex bison gcc-arm-linux-gnueabi libssl-dev bc gcc-arm-none-eabi python3-pip
pip3 install -U git+https://github.com/TuxSH/firmtool.git
- Debian:
export PATH=$PATH:/home/yourUserName/.local/bin
I will build everything in a folder inside my home called 3dslinux. you can create one with mkdir ~/3dslinux
cd ~/3dslinux
git clone https://github.com/linux-3ds/arm9linuxfw.git
cd ~/3dslinux/arm9linuxfw
make
cd ~/3dslinux
git clone https://github.com/linux-3ds/linux.git --depth=1
cd ~/3dslinux/linux
wget https://github.com/linux-3ds/buildroot/releases/download/latest/rootfs.cpio.gz
- Lots of RAM and CPU Power.
- I used a VM with 4 cores, 8GB ram and 20 GB swap and it took about 20 minutes
- Debian
sudo apt install rsync
cd ~/3dsliux
git clone https://github.com/linux-3ds/buildroot.git
cd ~/3dslinux/buildroot
make nintendo3ds_defconfig
make all #this will take a long time depending on your hardware
cp ~/3dslinux/buildroot/output/images/rootfs.cpio.gz ~/3dslinux/linux
cd ~/3dslinux/linux
ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- make -j$(nproc) nintendo3ds_defconfig all
cd ~/3dslinux
git clone https://github.com/linux-3ds/firm_linux_loader.git
cd ~/3dslinux/firm_linux_loader
CC=arm-none-eabi-gcc make
I am assuming you are using Luma CFW. If you are on a different CFW you might have to put the payload somewhere else.
# Create required folders
mkdir -p /path/to/SD/luma/payloads # might be different if you are not on Luma
mkdir -p /path/to/SD/linux
# Copy Linux
cp ~/3dslinux/linux/arch/arm/boot/zImage /path/to/SD/linux
cp ~/3dslinux/linux/arch/arm/boot/dts/nintendo3ds_ctr.dtb /path/to/SD/linux
cp ~/3dslinux/linux/arch/arm/boot/dts/nintendo3ds_ktr.dtb /path/to/SD/linux
# Copy arm9linuxfw
cp ~/3dslinux/arm9linuxfw/arm9linuxfw.bin /path/to/SD/linux
# Copy Linux loader
# NOTE: This might be different, depending on your CFW
cp ~/3dslinux/firm_linux_loader/firm_linux_loader.firm /path/to/SD/luma/payloads
NOTE: this is for Luma CFW, if you have a different CFW, the steps might be different.
- Power off your 3ds
- hold
start
and power on your 3ds - you should now see the Luma3DS chainloader and a list of payloads
- use the D-Pad to select firm-linux-loader and press
A
to boot. - Your screen will look glitched for a few seconds, don't worry, this is normal
- After a few seconds the top screen will show the bootlog and after a couple more seconds the bottom screen will show a keyboard.
- log in with username
root
and passwordtoor
- plug your SD Card into your computer
- rename luma/payloads/firm_linux_loader.firm to luma/payloads/down_firm_linux_loader.firm
- now you can boot linux by holding
down
on your D-Pad while powering on
I wrote a build script that will do everything for you automatically https://gist.github.com/marius137/4205310639616c026b7c248854d4a6a1