Skip to content

Booting

gtxaspec edited this page Oct 21, 2024 · 3 revisions

Booting from an Alternative Kernel on SD Card

This guide provides step-by-step instructions on how to boot your device from an alternative kernel stored on an SD card, allowing for flexibility in testing, development, and normal use.

Preparing Your SD Card

  1. Locate the kernel, or uImage File: This is your alternative kernel file, which needs to be named specifically according to the SoC (System on Chip) version of your device.

  2. Naming Convention: Name your kernel file as follows, replacing "SOC" with your chip's version (e.g., t31 or t20):

    • thingino_<soc>_kernel

    Examples:

    • For T31 chip: thingino_t31_kernel
  3. Enabling Legacy Kernel Names: If you need to boot from legacy kernel names, you can enable the LEGACY_COMPAT option during build by compiling with the -DLEGACY_COMPAT flag. This will add additional kernel names that the bootloader will search for.

    To enable legacy kernel names:

    • Add -DLEGACY_COMPAT to your compiler flags in the build process:
      CFLAGS += -DLEGACY_COMPAT
    • Legacy kernel filenames that will be recognized when LEGACY_COMPAT is enabled:
      • thingino_<soc>_kernel
      • factory_<soc>_kernel
      • factory_<soc>_ZMC6tiIDQN
      • factory_ZMC6tiIDQN (used only for T20)

Booting Process

  • Insert the SD card into your device. The bootloader will search for the specially named kernel file on the SD card.
  • If found, the bootloader will prioritize this kernel over the one in the onboard flash memory, enabling your device to boot from the SD card.

Interrupting the Boot Process

  • During boot, you can interrupt the loading of the kernel image by pressing Ctrl-C in the serial shell. This action provides a safety mechanism to cancel the kernel loading process if necessary. It will then load the standard kernel from the onboard flash memory.

By following these instructions, you can successfully boot your device from an alternative kernel stored on an SD card, offering a versatile approach to device configuration, testing, and use.