A quick port of lwIP running on top of BareMetal.
C C++
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
httpd_raw
newlib
reip Small cleanup Nov 4, 2014
src
.gitignore
LICENSE
Makefile
README.md
app.ld

README.md

lwIP on BareMetal

A lightweight TCP/IP stack running on an ultra-lightweight kernel

This is a quick and simple proof of concept web server running on top of the lightweight TCP/IP stack lwIP, which in turn is running on top of BareMetal. The BareMetal binary is a mere 16,384 bytes and the web server application is appoximately 170,000 bytes.

BareMetal is a new Exokernel for 64-bit x86-based systems. The kernel, as well as its various device drivers, are written entirely in Assembly for optimal speed, simplicity, and manageability of the code. BareMetal provides raw access to the underlying hardware in order to allow for maximum performance. Applications can be specifically tailored to focus on where performance is needed the most.

More information about BareMetal can be found on the BareMetal homepage at Return Infinity. The source code is available for viewing on GitHub.

lwIP is an open source implementation of the TCP/IP protocol suite that was originally written by Adam Dunkels of the Swedish Institute of Computer Science but now is being actively improved upon by a team of developers throughout the world.

More information about lwIP can be found at the lwIP homepage.

Building the web server

git clone https://github.com/ReturnInfinity/BareMetal-lwIP.git
cd BareMetal-lwIP
make

The resulting httpd.app binary can be added to the BareMetal OS disk iamge.

Running the web server

httpd.app takes 3 arguments - IP address, subnet, and gateway.

> httpd.app 10.0.0.100 255.255.255.0 10.0.0.1

Without arguments the app will use the following:

  • IP: 192.168.242.2
  • SN: 255.255.255.0
  • GW: 192.168.242.1

Changing the web content

The web page content is in httpd_raw/fs/ so make all changes there.

cd httpd_raw
perl makefsdata/makefsdata -s
cd ..
make