Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/hikalium/liumos
A toy operating system which supports NVDIMM natively.
https://github.com/hikalium/liumos
Last synced: 7 days ago
JSON representation
A toy operating system which supports NVDIMM natively.
- Host: GitHub
- URL: https://github.com/hikalium/liumos
- Owner: hikalium
- License: mit
- Created: 2018-07-25T19:31:42.000Z (over 6 years ago)
- Default Branch: main
- Last Pushed: 2022-06-06T21:23:40.000Z (over 2 years ago)
- Last Synced: 2024-08-02T17:32:50.188Z (3 months ago)
- Language: C
- Homepage:
- Size: 6.78 MB
- Stars: 270
- Watchers: 12
- Forks: 24
- Open Issues: 34
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# liumOS
[![CircleCI](https://circleci.com/gh/hikalium/liumos.svg?style=svg)](https://circleci.com/gh/hikalium/liumos)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)![Screenshot](docs/2021-04-30.png)
A toy operating system which supports NVDIMM natively.
## Requirements
### Common
[Install Rust toolchain](https://www.rust-lang.org/tools/install)
Check the installation (below is an example output):
```
$ cargo --version
cargo 1.46.0 (149022b1d 2020-07-17)
```Then, install nightly toolchain and cargo-xbuild for cross compiling.
```
rustup toolchain install nightly-x86_64-unknown-linux-gnu
rustup component add rust-src
```### macOS
```
brew install wget cmake qemu llvm dosfstools
```### Ubuntu 20.04
```
sudo apt install wget cmake qemu-system-x86 clang-8 lld-8 libc++-8-dev libc++abi-8-dev clang-format
```## Prepare tools and libraries
Move to the root of this source tree. Then:
```
make tools
make prebuilt
```## How to build
```
make
```## Run on QEMU
This repository contains [OVMF](https://github.com/tianocore/tianocore.github.io/wiki/OVMF) binary for UEFI emulation.
```
make run
```You can connect serial console using telnet
```
telnet localhost 1235
```### Run flags
Flags can be specified for `make run` command. Please check [qemu.mk](./qemu.mk) for more details.
Example:
```
make run GUI=n GDB=nosuspend
```- `GUI`
- `=y`: Enable GUI
- `=n`: Disable GUI (enable VNC server)
- `GDB`
- `=n`: Disable gdb server in QEMU
- `=suspend_on_boot`: Enable gdb server and wait for a connection on startup
- `=nosuspend`: Enable gdb server and startup the machine normally without waiting for a gdb connection## Setup tap interface (for linux)
`make run` boots liumOS on QEMU with a tap interface on Linux host.
To avoid running QEMU with sudo, you need to setup a tap interface in advance.```
sudo ip tuntap add dev tap0 mode tap user $USER
sudo ip link set dev tap0 master br0
sudo ip link set dev tap0 up
```example output with bridge `br0` connected to `eno1`
```
$ ip a | grep -e br0 -e tap0
2: eno1: mtu 1500 qdisc mq master br0 state UP group default qlen 1000
4: br0: mtu 1500 qdisc noqueue state UP group default qlen 1000
inet 10.10.10.93/24 brd 10.10.10.255 scope global dynamic br0
6: tap0: mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000
```### Setup bridge interface
#### global, persistent
```
network:
ethernets:
eno1:
dhcp4: false
dhcp6: false
bridges:
br0:
interfaces: [ eno1 ]
dhcp4: true
version: 2
```## How to contribute
Contributions are welcome! Please create a pull request to this repository.
Before submitting a PR, please check the test results with `make test`.
`make commit` does all the presubmit checks and creates a commit automatically (recommended!)
If you found any problems or questions, please let us know through [Issues on GitHub](https://github.com/hikalium/liumos/issues).
## References
- [newlib](https://sourceware.org/newlib/)
- [llvm](https://llvm.org/)
- [tianocore/edk2](https://github.com/tianocore/edk2)
- [cupnes/x86_64_jisaku_os_samples](https://github.com/cupnes/x86_64_jisaku_os_samples)
- [yoppeh/efi-clang](https://github.com/yoppeh/efi-clang)## Author
[hikalium](https://github.com/hikalium)