All Projects → Unturned3 → Microdot

Unturned3 / Microdot

Licence: MIT License
The Microdot Project guides you to create a fully functional but compact Linux system from scratch

Projects that are alternatives of or similar to Microdot

natick
natickOS - A minimal, lightweight, research Linux Distribution
Stars: ✭ 33 (-19.51%)
Mutual labels:  linux-kernel, busybox, musl
CAMEL99-V2
Indirect threaded code version of CAMEL99 Forth for TI-99 computer
Stars: ✭ 16 (-60.98%)
Mutual labels:  kernel, cross-compiler
Kvm Kernel Example
Examples for: Learning KVM - implement your own kernel
Stars: ✭ 221 (+439.02%)
Mutual labels:  kernel, linux-kernel
w1-gpio-cl
Command line configured kernel mode 1-wire bus master driver. w1-gpio standard Linux module enhancement/substitution.
Stars: ✭ 17 (-58.54%)
Mutual labels:  kernel, linux-kernel
Linux Samus
Linux 4.16 on Chromebook Pixel 2015
Stars: ✭ 179 (+336.59%)
Mutual labels:  kernel, linux-kernel
Linux Uek
Oracle Linux UEK: Unbreakable Enterprise Kernel
Stars: ✭ 185 (+351.22%)
Mutual labels:  kernel, linux-kernel
kernel-memtest
Hybrid memtest running in kernel mode, and userspace.
Stars: ✭ 17 (-58.54%)
Mutual labels:  kernel, linux-kernel
Sphinx-Dipper
Sphinx Custom Kernel for Mi 8 (Dipper)
Stars: ✭ 17 (-58.54%)
Mutual labels:  kernel, linux-kernel
OpenHarmony
华为鸿蒙分布式操作系统(Huawei OpenHarmony)开发技术交流,鸿蒙技术资料,手册,指南,共建国产操作系统万物互联新生态。
Stars: ✭ 373 (+809.76%)
Mutual labels:  kernel, linux-kernel
crosware
Tools, things, stuff, miscellaneous, etc., for Chrome OS / Chromium OS
Stars: ✭ 36 (-12.2%)
Mutual labels:  busybox, musl
sabotage
a radical and experimental distribution based on musl libc and busybox
Stars: ✭ 502 (+1124.39%)
Mutual labels:  busybox, musl
execmon
Advanced process execution monitoring utility for linux (procmon like)
Stars: ✭ 77 (+87.8%)
Mutual labels:  kernel, linux-kernel
Linux Kernel Utilities
👷 Utilities to compile and / or update linux kernels for Debian and derivatives (e.g. Ubuntu, LinuxMint, etc.)
Stars: ✭ 166 (+304.88%)
Mutual labels:  kernel, linux-kernel
Prototype Kernel
Prototyping kernel development work outside mainline
Stars: ✭ 214 (+421.95%)
Mutual labels:  kernel, linux-kernel
Proton Clang
Proton Clang toolchains builds in the form of a continuously updating Git repository. Clone with --depth=1.
Stars: ✭ 126 (+207.32%)
Mutual labels:  kernel, cross-compiler
Raspberry Pi Os
Learning operating system development using Linux kernel and Raspberry Pi
Stars: ✭ 11,000 (+26729.27%)
Mutual labels:  kernel, linux-kernel
Linux 0.11
A heavily commented linux kernel source code in Chinese.
Stars: ✭ 81 (+97.56%)
Mutual labels:  kernel, linux-kernel
U Root
A fully Go userland with Linux bootloaders! u-root can create a one-binary root file system (initramfs) containing a busybox-like set of tools written in Go.
Stars: ✭ 1,816 (+4329.27%)
Mutual labels:  kernel, busybox
Linux-Kernel-Exploitation
Linux kernel development & exploitation lab.
Stars: ✭ 130 (+217.07%)
Mutual labels:  kernel, linux-kernel
homebrew-i386-elf-toolchain
Homebrew formulas for buildling a valid GCC toolchain for the i386-elf target.
Stars: ✭ 62 (+51.22%)
Mutual labels:  kernel, cross-compiler

Coming soon: deploying Microdot on Allwinner F1C100s-based systems!

Microdot Linux

asciicast

The Microdot Linux project will guide you through the process of creating a miniature but fully functional Linux system from the ground up, with special emphasis on toolchain creation and kernel configuration. The minimal kernel occupies 672KB of space, while the root file system (busybox, with a proper init system) occupies 432KB. Under the Quick Emulator (QEMU) with a single CPU core, the system boots in 0.6 seconds, with only 32MB of RAM. You can tune the kernel & the userspace to support more hardware and extend the functionality of the base system.

You can download the demo shown above here.

Overview

  • Section 1: prerequisites, background information, and build environment setup
  • Section 2: constructs a musl-based cross compilation toolchain
  • Section 3: builds a minimum Linux system composed of a tiny kernel and an initramfs archive.
  • Section 4: tutorials for more specific topics, such as kernel fine tuning, porting Microdot to other architectures, installing other programs, etc. This section will probably contain a lot of work contributed by other users. For more details, see the readme.md file inside wiki/4_beyond.

Note: some of the sections can be skipped. If such conditions apply, it will be made clear in the documentation. For example, you can choose to skip the section about manually building a cross toolchain and use a prebuilt one instead.

Getting Started

The Microdot wiki is where all the tutorials and documentation are stored. Check out the Wiki to start building your own Microdot Linux! You can also visit the FAQ section to learn more about the Microdot project.

FAQ

Why did you build the Microdot project?

I started building Microdot purely out of curiosity (and building a Linux system from scratch does seem like a popular pastime for people). However, along the way, I encountered many problems, such as:

  • How can I replace glibc with the much smaller musl-libc?
  • How do I properly make a cross compilation toolchain using musl-libc?
  • How do I configure the Linux kernel and make it tiny?
  • What components are needed in a minimal root file system?

There is suprisingly little documentation or tutorials on the internet about these topics. For any information that I did manage to find, they hardly agreed with each other and were either incorrect or inconsistent. And some of them just expect you to blindly follow insturctions and type commands without explaining why.

"cross toolchain building" and "kernel configuration" were the nastiest out of all the problems I faced. There are literally thousands of options that you can use to configure the packages, and misusing one could cause the toolchain to fail or render the kernel unbootable. I partially used trail-and-error to figure things out (believe me, applying trail-and-error that on a process that takes hours to finish every time is not a fun task to do), but luckily I got some help from other people, which spared me from wasting more time.

I learned a lot in the end, and I thought it would be good for me to share my experience, so other people wouldn't have to go through the same process and waste an awful lot of time.

What's the difference between the Microdot and other projects?

Here are some projects that has some similar aspects to Microdot:

  • Tiny Core Linux

    Does an exellent job making a complete & tiny Linux distro, but isn't primarily focused on teaching people how to make one.

  • Linux From Scratch

    Teaches people how to manually assemble a working Linux system, but uses a lot of packages, employs a complicated process, and makes a big system (200+ MB). Doesn't offer much details on how to configure a kernel.

  • Minimal Linux Live

    Has a concise and fully automated build process, explains a lot about the boot process and system internals, and the resulting system is quite small (around 8MB). However, it doesn't use a customized toolchain (makes the end system unnecessarily big), and it doesn't explain how to configure a kernel.

What does "Microdot" mean?

Microdots are a steganographic technique that involves photographically shrinking a large chunk of text to the size of a typographical dot, such as a period. This term is used here to figuratively show the fact that Microdot Linux compresses a lot of functionality into a tiny amount of space.

Who is the intended audience of the Microdot Project?

The Microdot Project is primarily intended for people who is interested in constructing a custom Linux system (it seems like that this is quite a popular activity for Linux users). However, besides that, the Microdot Project also provides useful information on topics such as cross compilation, kernel configuration, userspace building, etc. which could be useful outside the scope of Microdot.

What can Microdot Linux be used for?

Microdot Linux is made to be extendable and you can tailor it to your needs. Because it comes with no bloat and has a small size, it can be used as an embedded Linux system, where resources are constrained. For example, you can replace Rasbian with Microdot on a Raspberry Pi in order to save more memory and processing power for your applications. Tutorials on deploying Microdot onto actual hardware will be added soon.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].