Skip to content
ThinStation edited this page Dec 23, 2019 · 27 revisions

Fastboot - What does it do? How does it help?

Simply put, fastboot attempts to defer as much of the file-system as it can during the initial kernel and initrd loading.

This is a multi-step process.

  1. During build. The final desired file-system is divided in two. The first part is all the essential bins, libs and configuration information that is needed to bring the system up to a point where it can load the remainder of the file-system from the original source medium, such as the network, CD or HD. The second part is a mangled(truly) pile of remainder called lib.squash. It contains all the high level user bins and libs for applications, gui's, Xorg and assets galore.
  2. During booting, The remainder of the file-system is transferred from a network location, or loaded into memory from local storage. It is then mounted at /lib.

The main benefit of this approach, is that coming out of the BIOS bootloader, or EFI startup, can be a very slow process. Every byte takes a lot of time to download, or load from disk. Conversely, once the kernel starts, we have a lot of options, and DMA to enable very fast loading from both local and network mediums.

It's a little ugly under the covers, but were dealing with embedded here. Having a file-system that is coherent to a human would be a penalty. If we let go of that requirement, we get to play with some fun new ideas.

Caveats: The base file-system must have enough modules, firmware and configuration to get to the remainder.

If your having difficulties getting a stable system, or init fails to complete in the way you expect, try setting
param fastboot disabled
in build.conf

The system needs to know how it was booted, so that it can make the right choices in the most direct way to find the remainder of the file-system to load. This is done with the parameter "LM=[2-4]" on the kernel command line.

  1. Try and continue from a hard drive or thumbdrive. The drive should have an entry in thinstation.conf.buildtime listed as MOUNT_[0-9], that will be mounted at /boot. For example
    MOUNT_0="LABEL=boot /boot auto x-mount.mkdir,defaults 0 0"
  2. Try and continue from the network. You will likely need to use the autonet package instead of network manager. If your kernel and initrd were loaded from http, then lib.squash will also load from http, alternatively, you can set
    FASTBOOT_URL="http://[dir containing lib.squash]"
    If your kernel and initrd were loaded by tftp, you may need to set
    SERVER_IP="[IP of Server]"
  3. Try and continue from a CD. The CD needs to have a label equal to $CDVOLNAME. CDVOLNAME is "ThinStation" by default.

While it is possible to mix starting and continuation methods, that would be silly. Also, trying to move files from one type of medium to another, like making a thumbdrive out of an ISO is problematic, but not impossible.