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-pippip3 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.gitcd ~/3dslinux/arm9linuxfw
makecd ~/3dslinux
git clone https://github.com/linux-3ds/linux.git --depth=1cd ~/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.gitcd ~/3dslinux/buildroot
make nintendo3ds_defconfig
make all #this will take a long time depending on your hardwarecp ~/3dslinux/buildroot/output/images/rootfs.cpio.gz ~/3dslinux/linuxcd ~/3dslinux/linux
ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- make -j$(nproc) nintendo3ds_defconfig allcd ~/3dslinux
git clone https://github.com/linux-3ds/firm_linux_loader.gitcd ~/3dslinux/firm_linux_loader
CC=arm-none-eabi-gcc makeI 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/payloadsNOTE: this is for Luma CFW, if you have a different CFW, the steps might be different.
- Power off your 3ds
- hold
startand 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
Ato 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
rootand 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
downon 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.gzto**initramfs**.cpio.gzand then copy it into thelinuxdirectory 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
rootand the password istoor.Let me know if it works for you! (and sorry for my bad English)
Bye!