paul@397 | 1 | Introduction
|
paul@397 | 2 | ============
|
paul@394 | 3 |
|
paul@153 | 4 | This is a collection of L4Re packages for providing and using filesystems and
|
paul@153 | 5 | related components.
|
paul@153 | 6 |
|
paul@394 | 7 | This directory (departure) should be installed within the pkg directory in the
|
paul@153 | 8 | L4Re distribution.
|
paul@153 | 9 |
|
paul@397 | 10 | Prerequisites
|
paul@397 | 11 | =============
|
paul@397 | 12 |
|
paul@397 | 13 | This software requires some other software to be useful:
|
paul@397 | 14 |
|
paul@397 | 15 | * The Fiasco.OC microkernel and L4Re distribution
|
paul@397 | 16 | * The idl4re distribution
|
paul@397 | 17 |
|
paul@397 | 18 | Obtaining and Building idl4re
|
paul@397 | 19 | =============================
|
paul@397 | 20 |
|
paul@397 | 21 | The idl4re distribution provides a tool called idl that generates source files
|
paul@397 | 22 | from interface descriptions. It can be obtained as follows:
|
paul@397 | 23 |
|
paul@397 | 24 | hg clone https://hg.boddie.org.uk/L4Re/idl4re
|
paul@394 | 25 |
|
paul@397 | 26 | The software can be built as follows:
|
paul@397 | 27 |
|
paul@397 | 28 | cd idl4re
|
paul@397 | 29 | make
|
paul@397 | 30 |
|
paul@397 | 31 | When building the Departure software within the L4Re build system, the idl4re
|
paul@397 | 32 | directory will need to be present in the appropriate location, this being
|
paul@467 | 33 | inside the l4 directory. The easiest way of satisfying this requirement is to
|
paul@467 | 34 | copy the idl4re directory into the l4 directory and making sure that the
|
paul@467 | 35 | software is built before trying to build L4Re itself.
|
paul@397 | 36 |
|
paul@397 | 37 | Obtaining and Building Fiasco.OC and L4Re
|
paul@397 | 38 | =========================================
|
paul@397 | 39 |
|
paul@397 | 40 | Although the build processes for Fiasco.OC and L4Re are generally documented,
|
paul@397 | 41 | the concise instructions for building the software have not been preserved in
|
paul@397 | 42 | the L4Re distribution, requiring the perusal of online resources. For example:
|
paul@394 | 43 |
|
paul@394 | 44 | https://github.com/kernkonzept/manifest/wiki/BUILDING
|
paul@394 | 45 |
|
paul@394 | 46 | Some reminders are provided below to save the reader the bother of looking up
|
paul@394 | 47 | or searching for this information, particularly if it does not continue to
|
paul@394 | 48 | reside in the above location.
|
paul@394 | 49 |
|
paul@401 | 50 | Obtaining and Building the ham Tool
|
paul@401 | 51 | -----------------------------------
|
paul@401 | 52 |
|
paul@394 | 53 | First of all, the ham tool has to be obtained. This can be done as follows:
|
paul@394 | 54 |
|
paul@394 | 55 | git clone https://github.com/kernkonzept/ham.git
|
paul@394 | 56 |
|
paul@394 | 57 | It can be built as follows:
|
paul@394 | 58 |
|
paul@394 | 59 | cd ham
|
paul@394 | 60 | make
|
paul@394 | 61 |
|
paul@397 | 62 | Returning to the parent directory, the Fiasco.OC and L4Re distributions can be
|
paul@394 | 63 | obtained as follows:
|
paul@394 | 64 |
|
paul@394 | 65 | ham/ham init -u https://github.com/kernkonzept/manifest.git
|
paul@394 | 66 | ham/ham sync
|
paul@394 | 67 |
|
paul@394 | 68 | (Referencing ham within its repository avoids any need to put the program on
|
paul@394 | 69 | the PATH, which is largely unnecessary since we will only be using it in this
|
paul@394 | 70 | particular location and for the specific purpose of downloading the remaining
|
paul@394 | 71 | software of interest.)
|
paul@394 | 72 |
|
paul@401 | 73 | Building Fiasco.OC
|
paul@401 | 74 | ------------------
|
paul@401 | 75 |
|
paul@397 | 76 | Here is a quick summary of the build process for Fiasco.OC starting at the
|
paul@397 | 77 | parent directory of the Fiasco.OC and L4Re distributions:
|
paul@394 | 78 |
|
paul@394 | 79 | cd fiasco
|
paul@394 | 80 | make BUILDDIR=mybuild
|
paul@394 | 81 | cd mybuild
|
paul@394 | 82 | make config
|
paul@394 | 83 | make
|
paul@394 | 84 |
|
paul@394 | 85 | The final make command can employ flags such as "-j8" or even "-j" without any
|
paul@394 | 86 | parameter to parallelise the build.
|
paul@394 | 87 |
|
paul@394 | 88 | At this point, this directory (departure) can be copied into the L4Re
|
paul@397 | 89 | distribution within the pkg directory. Also, the idl4re distribution should be
|
paul@397 | 90 | made available within the l4 directory itself.
|
paul@394 | 91 |
|
paul@401 | 92 | Building L4Re
|
paul@401 | 93 | -------------
|
paul@401 | 94 |
|
paul@467 | 95 | To build this distribution successfully along with the rest of the L4Re
|
paul@467 | 96 | sources, the idl4re distribution must reside within the l4 directory and the
|
paul@467 | 97 | software built, as described above.
|
paul@467 | 98 |
|
paul@394 | 99 | Here is a quick summary of the build process for L4Re, also starting at the
|
paul@397 | 100 | parent directory of the Fiasco.OC and L4Re distributions:
|
paul@394 | 101 |
|
paul@394 | 102 | cd l4
|
paul@394 | 103 | make B=mybuild
|
paul@394 | 104 | make O=mybuild config
|
paul@394 | 105 | make O=mybuild
|
paul@394 | 106 |
|
paul@394 | 107 | Again, the final make command can employ parallelisation flags. For example:
|
paul@394 | 108 |
|
paul@394 | 109 | make -j8 O=mybuild
|
paul@394 | 110 |
|
paul@394 | 111 | Along with the usual L4Re software, this will also build the software provided
|
paul@427 | 112 | by this distribution if this distribution has been placed at the pkg/departure
|
paul@427 | 113 | location within the l4 directory.
|
paul@427 | 114 |
|
paul@397 | 115 | Defining the L4Re Configuration
|
paul@397 | 116 | ===============================
|
paul@394 | 117 |
|
paul@397 | 118 | An example configuration file is provided as conf/Makeconf.boot within this
|
paul@397 | 119 | distribution. Where no such existing file has been deployed, this example file
|
paul@397 | 120 | can be copied into a suitable location from within the l4 directory as
|
paul@397 | 121 | follows:
|
paul@397 | 122 |
|
paul@397 | 123 | cp pkg/departure/conf/Makeconf.boot conf/Makeconf.boot
|
paul@397 | 124 |
|
paul@397 | 125 | Otherwise, with an existing conf/Makeconf.boot file, to make the test programs
|
paul@397 | 126 | available to L4Re, add the following line to such a file:
|
paul@153 | 127 |
|
paul@394 | 128 | MODULE_SEARCH_PATH += $(L4DIR_ABS)/pkg/departure/conf
|
paul@153 | 129 |
|
paul@153 | 130 | It may also be necessary to add the following line as well:
|
paul@153 | 131 |
|
paul@394 | 132 | BOOTSTRAP_SEARCH_PATH += $(L4DIR_ABS)/pkg/departure/conf
|
paul@153 | 133 |
|
paul@153 | 134 | This removes any need to copy program configuration files and associated
|
paul@153 | 135 | resources to the L4Re distribution itself.
|
paul@153 | 136 |
|
paul@397 | 137 | Defining the Module Lists
|
paul@397 | 138 | =========================
|
paul@397 | 139 |
|
paul@153 | 140 | The program module lists in the conf subdirectory can either be appended to
|
paul@427 | 141 | the L4Re conf/modules.list file, or specific .list files can be copied to the
|
paul@394 | 142 | conf/modules.list location (potentially after taking a backup copy of the
|
paul@397 | 143 | original file). For example, from within the l4 directory:
|
paul@397 | 144 |
|
paul@397 | 145 | cp conf/modules.list conf/modules.list.orig
|
paul@427 | 146 | cat pkg/departure/conf/*.list > conf/modules.list
|
paul@397 | 147 |
|
paul@397 | 148 | Running Programs from this Distribution
|
paul@397 | 149 | =======================================
|
paul@397 | 150 |
|
paul@397 | 151 | With configuration measures in place, a program can be run in QEMU as follows:
|
paul@397 | 152 |
|
paul@427 | 153 | make O=mybuild qemu E=dstest_test_client
|
paul@397 | 154 |
|
paul@397 | 155 | The particular program used above is a short concurrency test.
|