mirror of
https://github.com/hermitcore/libhermit.git
synced 2025-03-09 00:00:03 +01:00
add first draft of a guideline
This commit is contained in:
parent
a2a0827478
commit
475a1da65b
1 changed files with 25 additions and 1 deletions
26
README.md
26
README.md
|
@ -5,7 +5,31 @@ The project has just initiated. Further information will be published shortly.
|
|||
## Requirements
|
||||
|
||||
* Netwide Assembler (NASM)
|
||||
* make, binutils
|
||||
* GNU Make, GNU Binutils
|
||||
* Tools and libraries to build *linux*, *binutils* and *gcc* (e.g. flex, bison, MPFR library, GMP library, MPC library)
|
||||
* genisoimage
|
||||
* texinfo
|
||||
* Qemu
|
||||
|
||||
## Building and testing HermitCore within a virtual machine
|
||||
|
||||
0. The build process does only work on a x86-based Linux system.
|
||||
1. To configure the system, run the *configure* script in the dirctory, which contains this *README*. Fine tuning of the installation directories e.g. with the flag `--prefix` is currently not supported. HermitCore, the cross-compiler and the demo applications will be installed in subdirectories of this repository.
|
||||
2. Build the Linux kernel, the HermitCore kernel, the corss-compiler and the demo applications with `make`.
|
||||
3. Create a virtual machine and boot a small Linux version with `make qemu`. Per default, the virtual machine has 20 cores, 4 NUMA nodes and 8 GByte RAM. To increase or to decrease the machine size, the label `qemu` in the Makefile has to be modified.
|
||||
4. Afterwards, a small Linux system should run, which already includes the patches for HermitCore. For each NUMA node (= HermitCore isle) is in `/sys/hermit` a directory `isleX`, where `X` represents the number of the NUMA node. In this environment, Linux uses only one core. Consequently, 20-1 cores could be mapped to HermitCore isles. For instance, `echo 1-4 > /sys/hermit/isle0/cpus` boots a HermitCore kernel on core 1-4. The required memory will be allocated from NUMA node 0 (= `isle0`).
|
||||
5. HermitCore's kernel messages of `isle0` are available via `cat /sys/hermit/isle0/log`.
|
||||
6. It exists an virtual IP devices between HermitCore isles and the Linux system (see output of `ifconfig`). Per default, the Linux system has the IP address `192.168.28.1`. The HermitCore isles starts with the IP address `192.168.28.2` for isle 0 and is increased by one for every isle. Please test the connection to isle 0 with `ping -c 5 192.168.28.2`.
|
||||
7. All demo applications are mapped into the directory `/hermit` of the Linux system. All applications are Linux applications with integrated HermitCore binaries. By starting of an application, a Linux process will be created, which sends the HermitCore binary via TCP/IP per default to isle 0. With the environment variable HERMIT_ISLE, the default behavior could be overloaded. The HermitCore isle receives the binary, starts the applications and forward all output messages to the Linux system. For instance, `HERMIT_ISLE=0 /hermit/hello_proxy` starts the classical *HelloWorld* demo on isle 0 and the output messages are printed on the Linux system.
|
||||
|
||||
## Building and testing HermitCore on a real machine
|
||||
|
||||
0. In principle you have to follow the tutorial above. After the configuration (step 2) go to the subdirectory `linux`, which contains the source code of the Linux kernel. Configure the kernel with `make menuconfig` for your system. Be sure, that the option `CONFIG_HERMIT_CORE` in `Processor type and features` is enabled.
|
||||
1. Go back to the root directory of this repository and build with `make` the Linux kernel, the HermitCore kernel, the cross-compiler and the demo applications.
|
||||
2. Install the Linux kernel and its initial ramdisk on your system (see descriptions of your Linux distribution).
|
||||
3. Create the directory `hermit` in the root directory of your Linux system (`mkdir /hermit`).
|
||||
4. Copy the HermitCore kernel and the demo applications to the new directory.
|
||||
cp hermit/hermit.bin /hermit
|
||||
cp hermit/tools/iso/* /hermit
|
||||
5. Boot your system.
|
||||
6. Follow the above tutorial from point 5.
|
||||
|
|
Loading…
Add table
Reference in a new issue