Score
0
Watch 24 Star 49 Fork 8

JinXue / lyosCGPL-3.0

Create your Gitee Account
Explore and code with more than 5 million developers,Free private repositories !:)
Sign up
Clone or download
Cancel
Notice: Creating folder will generate an empty file .keep, because not support in Git
Loading...
README.org

Lyos

screenshot

Lyos is an open source microkernel multitasking operating system, it runs on 32-bit x86-based PCs. It is distributed under the GNU General Public License.

Trying out Lyos

To try out Lyos without building the whole system, you can download a xz-compressed nightly image, uncompress the image and run it with QEMU:

qemu-system-x86_64 -smp 2 -drive id=hda,file=lyos-i686.img,format=raw,if=none -device virtio-blk-pci,drive=hda -m 2048 -serial stdio -vga virtio -sdl -cpu host,pmu=true --enable-kvm

Features

Lyos has many standard features:

  • Microkernel
    • Kernel only handles message passing, interrupts and task scheduling, other things like reading/writing files, memory managing and device operations are handled by servers.
    • Servers are single executables(not modules) that are loaded by kernel at boot time, running in user privilege level and their own address space.
  • Multitasking
    • BFS scheduler
  • Symmetric multiprocessing
  • ELF loading
  • Interprocess Communication
    • Servers and user programs communicate using fixed length message(40 bytes)
    • Interrupts are converted into messages and sent to userspace servers
    • Unix signals
  • Virtual file system
    • Ext2 filesystem support
    • procfs, sysfs, …
  • Userspace
    • Newlib
    • GCC, binutils, bash, …
    • Weston Wayland’s reference compositor

Building Lyos

Preparation

First we will clone the repository into the lyos directory:

git clone https://github.com/Jimx-/lyos.git
cd lyos

Since Lyos requires various build-time dependencies, it is recommended to set up a Docker instance as the build environment to make sure the correct versions of these dependencies are installed:

docker build -t lyos_build .

After building the Docker image, start a container:

docker run -v $PWD:/workspace/lyos -it lyos_build

If everything is set up properly, you should see the bash prompt and a lyos directory under /workspace containing the source files in the repository:

root@2519c5bdfad9:/# ls /workspace
lyos

Now you can switch to the /workspace/lyos directory and proceed to the Building section.

cd /workspace/lyos

Alternatively, you can install the dependencies manually if you prefer to build Lyos on the host system directly. The complete list of required dependencies is in Dockerfile. You can install the dependencies with a standard package manager (e.g. apt on Ubuntu).

Building

Make sure that you are in the root directory of this repository (/workspace/lyos if you are using a Docker container). First we need to create the build configuration file and install some userspace headers to the cross-compile system root:

make SUBARCH=i686 defconfig objdirs install-headers

The SUBARCH environment variable specifies which architecture to build Lyos for. Currently only i686 and riscv64 are supported.

Set up the toolchain and userspace packages for building Lyos:

cd toolchain
./download.sh
BUILD_EVERYTHING=true ./setup.sh -m i686
cd ..

Similar to SUBARCH, the -m option of setup.sh specifies the architecture to build the toolchain and packages for.

Now build the kernel and servers:

make SUBARCH=i686

(Optionally) setup.sh only builds some core userspace packages like bash and coreutils. You still need to build some extra packages if you want to use graphical interface:

cd toolchain
BUILD_EVERYTHING=true ./setup-extra.sh -m i686
BUILD_EVERYTHING=true ./setup-x11.sh -m i686
cd ..

Creating Disk Image

Now you can create the disk image for Lyos:

sudo ./scripts/setup-disk.sh

This will create a disk image lyos-disk.img under the current directory which can be launched with QEMU.

Comments ( 3 )

Sign in for post a comment

About

微内核类Unix操作系统内核 spread retract
GPL-3.0
Cancel

Releases

No release

Gitee Metrics

Contributors

All

Activities

load more
can not load any more