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
Hi @jayjayare,
According to this issue: https://github.com/linux-3ds/linux/issues/97, you first need to rename the
rootfs.cpio.gz
to**initramfs**.cpio.gz
and then copy it into thelinux
directory of your SD card. I think the linux-3ds kernel mantainer is working on this. I had your same problem, and it's kind of strange that the mantainer didn't write that on the wiki...Oh, and FYI, the user is
root
and the password istoor
.Let me know if it works for you! (and sorry for my bad English)
Bye!