Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/eerimoq/monolinux
Create embedded Linux systems with a single statically linked executable.
https://github.com/eerimoq/monolinux
embedded linux
Last synced: 3 days ago
JSON representation
Create embedded Linux systems with a single statically linked executable.
- Host: GitHub
- URL: https://github.com/eerimoq/monolinux
- Owner: eerimoq
- License: mit
- Created: 2019-05-15T18:49:35.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2020-07-08T09:02:25.000Z (over 4 years ago)
- Last Synced: 2024-11-01T10:35:20.831Z (10 days ago)
- Topics: embedded, linux
- Language: Makefile
- Homepage:
- Size: 451 KB
- Stars: 324
- Watchers: 22
- Forks: 17
- Open Issues: 0
-
Metadata Files:
- Readme: README.rst
- License: LICENSE
Awesome Lists containing this project
README
Monolinux
=========Create embedded Linux systems with a single statically linked
executable, because smaller is better!Monolinux is primarily targeting the `C` programming language.
Features:
- Everything the `Linux kernel`_ provides.
- File systems.
- Networking.
- Device drivers.
- ...
- Libraries to statically link with your application.
- `async`_ (asynchronous framework)
- `bitstream`_ (bit packing and unpacking)
- `bunga`_ (OAM over TCP/IP)
- `curl`_ (HTTP, FTP, ...)
- `dbg-macro`_ (printf debugging)
- `detools`_ (delta encoding)
- `heatshrink`_ (a compression algorithm)
- `humanfriendly`_ (various utilities)
- `mbedTLS`_ (TLS, SSL, crypto, ...)
- `messi`_ (message passing in distributed systems)
- `monolinux-c-library`_ (the Monolinux C library)
- `pbtools`_ (Google Protocol Buffers)
- `xz`_ (LZMA)
- `zlib`_
Creating a project
==================A minimal Monolinux project's file tree looks like below. Add needed
software packages to the `3pp` folder... code-block:: text
my-project/
├── 3pp/
│ ├── arm-linux-musleabi-cross.tgz - a toolchain (if needed)
│ ├── linux/ - the linux kernel
│ └── monolinux/ - this repository as a submodule
├── app/ - your application
│ ├── main.c
│ └── Makefile
├── LICENSE
├── Makefile
└── setup.sh - development environment setup scriptHere are more example projects:
- `An Monolinux example project`_
- `Monolinux Raspberry Pi 3`_
- `Monolinux Jiffy`_
Tips and tricks
===============See ``man procfs`` for details of the following commands.
.. code-block:: shell
$ cat /proc/devices
$ cat /proc/meminfo
$ cat /proc/modules
$ cat /proc/net/arp
$ cat /proc/net/dev
$ cat /proc/net/protocols
$ cat /proc/net/route
$ cat /proc/uptime
$ cat /proc/version
$ cat /proc/mountsDisk commands.
.. code-block:: shell
$ ls /sys/block
$ mount /dev/sda1 /mnt/disk ext4
$ ls /mnt/disk
$ cat /mnt/disk/READMEConfiguration.
.. code-block:: shell
# DNS.
$ cat /etc/resolv.confDevice tree.
.. code-block:: shell
$ cat /sys/firmware/devicetree/base/...
.. _Linux kernel: https://www.kernel.org/
.. _async: https://github.com/eerimoq/async
.. _bitstream: https://github.com/eerimoq/bitstream
.. _bunga: https://github.com/eerimoq/bunga
.. _curl: https://curl.haxx.se/
.. _dbg-macro: https://github.com/eerimoq/dbg-macro
.. _detools: https://github.com/eerimoq/detools
.. _heatshrink: https://github.com/atomicobject/heatshrink
.. _humanfriendly: https://github.com/eerimoq/humanfriendly
.. _mbedTLS: https://tls.mbed.org/
.. _messi: https://github.com/eerimoq/messi
.. _monolinux-c-library: https://github.com/eerimoq/monolinux-c-library
.. _pbtools: https://github.com/eerimoq/pbtools
.. _xz: https://tukaani.org/xz/
.. _zlib: https://zlib.net/
.. _An Monolinux example project: https://github.com/eerimoq/monolinux-example-project
.. _Monolinux Raspberry Pi 3: https://github.com/eerimoq/monolinux-raspberry-pi-3
.. _Monolinux Jiffy: https://github.com/eerimoq/monolinux-jiffy