> For the complete documentation index, see [llms.txt](https://open-rt.gitbook.io/open-surfacert/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://open-rt.gitbook.io/open-surfacert/surface-rt/linux/booting/apx-boot/boot-linux.md).

# Boot Linux

Boot Linux on Surface RT. Setup is a bit tedious but once the setup is complete it is very easy to use.

To boot Linux on Surface RT we use the Fusée Gelée cold boot exploit.\
See [Fusée Gelée](/open-surfacert/common/boot-sequence/tegra-soc-boot-process/fusee-gelee.md) for further information.

{% hint style="danger" %}
Read all pages of the Linux topic carefully before you try to boot Linux
{% endhint %}

## Boot Linux via Fusée Gelée

### Prerequisite

* [Extract BCT](/open-surfacert/surface-rt/linux/booting/apx-boot/fusee-gelee/bct-table.md) from your device

#### Diy

* [Build U-Boot](/open-surfacert/surface-rt/linux/booting/apx-boot/uboot.md) with correct devicetree
* Create a [U-Boot boot script](/open-surfacert/surface-rt/linux/booting/apx-boot/uboot.md#boot-script)
* [Build Linux](/open-surfacert/surface-rt/linux/kernel/configure-and-build.md) with correct devicetree
* [Build Root Filesystem](/open-surfacert/surface-rt/linux/root-filesystem/simple-rootfs.md) for ARM32
* Create/Get [BootToolChain](/open-surfacert/surface-rt/linux/booting/apx-boot/fusee-gelee.md)

#### Prebuild binary

* [Uboot](/open-surfacert/surface-rt/linux/booting/apx-boot/boot-linux/binarys.md#u-boot)
* [Linux kernel](/open-surfacert/surface-rt/linux/kernel/prebuilt-binaries.md)
* [bootscript.scr](/open-surfacert/surface-rt/linux/booting/apx-boot/boot-linux/binarys.md#boot-script)
* [Get Root Filesystem](/open-surfacert/surface-rt/linux/root-filesystem/distros.md)

### Boot it first time

1. [Prepare SD Card](/open-surfacert/surface-rt/linux/booting/apx-boot/boot-linux/prepare-sd-card.md)
2. Place [zImage](broken://pages/-MK7-tnmw_MIFwMTXdwi), devicetree and [boot.scr](/open-surfacert/surface-rt/linux/booting/apx-boot/uboot.md#boot-script) on first partition
3. extract [rootfs.tar](/open-surfacert/surface-rt/linux/root-filesystem/simple-rootfs.md) on second partition
4. Insert SD Card into the SurfaceRT
5. Go to to your [BootToolChain](/open-surfacert/surface-rt/linux/booting/apx-boot/fusee-gelee.md) directory
6. [Extract BCT](/open-surfacert/surface-rt/linux/booting/apx-boot/fusee-gelee/bct-table.md)
7. place your U-Boot '[u-boot-dtb-tegra.bin](/open-surfacert/surface-rt/linux/booting/apx-boot/uboot.md#build-u-boot)' in ./u-boot
8. [Boot Surface RT into RCM mode](/open-surfacert/common/boot-sequence/tegra-soc-boot-process/fusee-gelee/apx-mode-usb-debugging.md#entering-apx-mode)
9. Send UBoot to Surface RT use [Script](/open-surfacert/surface-rt/linux/booting/apx-boot/fusee-gelee.md#premade-package) or [commands](/open-surfacert/surface-rt/linux/booting/apx-boot/fusee-gelee/untitled.md)
10. If you have [UART access](/open-surfacert/surface-rt/hardware/uart.md) you should see U-Boot boot process
11. Linux should be booted and be accessible via UART and/or show HDMI/Screen Console
12. Enjoy and fix issues.

### Boot it again

1. [Boot Surface RT into RCM](/open-surfacert/common/boot-sequence/tegra-soc-boot-process/fusee-gelee/apx-mode-usb-debugging.md#entering-apx-mode)
2. Send UBoot to Surface RT using [Script](/open-surfacert/surface-rt/linux/booting/apx-boot/fusee-gelee.md#premade-package) or [commands](/open-surfacert/surface-rt/linux/booting/apx-boot/fusee-gelee/untitled.md)
3. If you have [UART access](/open-surfacert/surface-rt/hardware/uart.md) you should see U-Boot boot process
4. Linux should be booted and be accessible via UART and/or show HDMI Console
5. Enjoy and fix issues.
