Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
3DS Linux build instructions

Step 1: Compiling or Downloading the toolchain

  • Step 1.a: Downloading the toolchain if you have Linux x86-64
  • Step 1.b: Compiling the ARM toolchain (if you have installed the precompiled toolchain you can skip this step)
    • git clone https://github.com/crosstool-ng/crosstool-ng.git
    • Run: autoconf && ./configure --enable-local && make install
    • Run ./ct-ng ct-ng menuconfig
    • Go to Target options
    • Target Architecture -> Select arm
    • Floating point -> Select hardware (FPU)
    • Emit assembly for CPU -> Write mpcore
    • Exit -> Exit -> Save? Yes
    • Run ./ct-ng build

Step 2: Build buildroot

Step 3: Build Linux

  • git clone https://github.com/xerpi/linux_3ds.git
  • Copy buildroot/output/images/rootfs.cpio.gz to the linux_3ds folder
  • Run sh make_3ds.sh
  • (you can edit the script and change -j3 to the value you want to speedup the compilation)
  • Copy linux/arch/arm/boot/zImage to the linux folder of your SD card
  • Copy linux/arch/arm/boot/dts/nintendo3ds_ctr.dtb to the linux folder of your SD card

Step 4: Build arm9linuxfw (optional, but needed for SD card support)

Step 5: Copy Linux to the SD

  • Copy linux/arch/arm/boot/zImage to the linux folder of your SD card
  • Copy linux/arch/arm/boot/dts/nintendo3ds_ctr.dtb to the linux folder of your SD card

Step 6: Build FIRM Linux Loader

@ParzivalWolfram

This comment has been minimized.

Copy link

commented Nov 13, 2018

You need to drop the Linux kernel version to 4.9.x and set the path and prefix to be "arm-buildroot-linux-gnueabihf" in the config and use this precompiled toolchain hardlink: https://toolchains.bootlin.com/downloads/releases/toolchains/armv6-eabihf/tarballs/armv6-eabihf--glibc--bleeding-edge-2018.02-1.tar.bz2

It's closest to what you had set in the config, but there was no toolchain that matched perfectly.

@ParzivalWolfram

This comment has been minimized.

Copy link

commented Nov 27, 2018

Turns out, with crosstool-ng, the problems I had compiling my OWN toolchain, it was because you're supposed to run the "bootstrap" executable included with it instead of autoconf.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.