Giter Club home page Giter Club logo

corekms's Introduction

CoreKMS

A minimal Linux system image that runs DHCP, SLAAC and vlmcsd.

Features:

  • Less than five megabytes in disk space (If you are using VHD or other formats, the size may be slighly larger. The whole system, however, consumes less than five megabytes.)

  • Less than 64 megabytes in memory usage (If you want to support NIC hotplug, that would require up to 128 megabytes of memory.)

  • UEFI and BIOS support.

Tech Specs:

  • Linux Kernel 5.13

  • Buildroot

  • musl

  • BusyBox Init

  • dhcpcd as network manager

Cons:

  • Currently there is no way to configure networking manually. All settings are retrieved using DHCP and SLAAC.

  • No logging facility. This means that any errors or warnings will be ignored.

  • No physical hardware support. This project is mainly used in my own environment, which is basically virtualized, so I only enabled drivers for VirtIO, VirtualBox and Hyper-V in the kernel configuration. If you are planning to install it physically, even though not recommended, you need to enable your drivers, which will eventually lead to a larger kernel.

  • Only x86-64 at this time.

How to build

For legal reasons, I am not providing pre-built binaries at this time.

You need a Linux system to build it. BSD and Cygwin are not tested.

  1. Clone the repository including submodules.

  2. Enter the buildroot/ directory.

  3. make -jN BR2_EXTERNAL=../corekms_tree/ corekms_defconfig

  4. make -jN

  5. Wait for ten minutes (the time required to compile the whole project on my i5-4570 using j9. Yours may take longer or shorter, depending on you environment.)

  6. Profit! The EFISTUB Unified Kernel is output/images/bzImage, feel free to rename it to BOOTX64.EFI and put it in a disk image if you want. The BIOS ISO is output/images/rootfs.iso9660 using SysLinux. You may directly boot it with no installation required.

How to use

The system boots really fast (on my Hyper-V Server it takes less than one second). After booting, it will show the system state screen, indicating the uptime, whether VLMCSD is running, memory information and most importantly, IP addresses (in the ip-address(8) format). The system will automatically acquire addresses using DHCP and SLAAC. As long as a new NIC is plugged in, it will setup that adapter as well, with no user interaction.

Press Enter at any time to refresh the status.

Shutdown: Just pull the plug. No data will be corrupted.

How to develop

The project is splitted into:

  1. BuildRoot: In the buildroot/ directory, type make nconfig and edit the configuration. Use make savedefconfig to save your changes to corekms_tree for submission.

  2. Kernel: In the buildroot/ directory, type make linux-nconfig and edit the configuration. Use make linux-update-config to save your changes to the corekms_tree for submission.

  3. BusyBox: In the buildroot/ directory, type make busybox-menuconfig and edit the configuration. Use make busybox-update-config to save your changes to the corekms_tree for submission.

  4. The vlmcsd package: In the corekms_tree/package/vlmcsd directory, edit the Config.in and vlmcsd.mk file.

The buildroot/ directory must be kept clean. All changes need to be reflected in the corekms_tree directory.

Note on QEMU: Make sure to choose a CPU model. For example, -cpu Skylake-Client-v1.

Licenses

WTFPL.

I am not responsible for your usage of this project and vlmcsd. I am not responsible for their legal consequences. I am not the author of vlmcsd.

corekms's People

Contributors

trumeet avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.