Useful links

How to cross bootstrap Baserock to another architecture

Scripts to create a VM

Foundations and preconditions

  • Before we start our work, we don't have any board with 64bit ARM big-endian system running on it.

  • HP Moonshot is the hardware we are going to use.

  • We got one node with the M.2 SSD formatted and partitioned.

  • We have got a functional 64bit ARM big-endian kernel.

  • We have set up a devel Baserock system following Create a Baserock VM already.

Checkout definitions from the master branch (on the devel VM)

  git clone git://git.baserock.org/baserock/baserock/definitions
  cd definitions

Create system definition for armv8b64 cross build

  • create file cross-bootstrap-system-armv8b64-generic.morph with the contents:

    name: cross-bootstrap-system-armv8b64-generic
    kind: system
    description: A system that produces the minimum needed to build a devel system
    arch: armv8b64
    strata:
    - name: build-essential
      morph: strata/build-essential.morph
    - name: core
      morph: strata/core.morph
    - name: morph-utils
      morph: strata/morph-utils.morph
    - name: cross-bootstrap
      morph: strata/cross-bootstrap.morph
    
  • commit the new file created.

Generate a bootstrap Baserock tarball

It will tell where the tarball is stored after building is completed.

  morph cross-bootstrap armv8b64 file:///src/definitions HEAD cross-bootstrap-system-armv8b64-generic.morph

Note: 8G RAM or more on the VM is recommended to run the cross-bootstrap, if the RAM is not big enough, the VM may be aborted during the process.

Netboot the crossbuild system

  • Copy the tarball to the M.2 SSD, and extract the tarball onto a top level of a partition with enough space,

    tar -xvf /path/to/store/tarball /path/to/extracted/tarball
    
  • Setup netboot to allow the node to boot from the crossbuild system. As how to set up netboot is outside the scope of this page, I am not going to the details of this step.

Native build bootstrap system.

  • boot into the node.

  • run native-bootstrap script:

    ./native-bootstrap
    

    Note: it will take quite long to run this script, and it won't keep the progress if it has been interrupted. So make sure you won't interrupt it during running. If it does happen, run:

    rm -r /*.dist
    

    to clear directory, and re-run the native-bootstrap scripte.

Prepare bootstrap system to build a devel-system of baserock.

WIP