{"id":14982513,"url":"https://github.com/moisam/laylaos","last_synced_at":"2025-10-29T15:31:01.234Z","repository":{"id":244630578,"uuid":"815797893","full_name":"moisam/laylaos","owner":"moisam","description":"A hobby OS with a custom kernel and userspace, with many ported software including musl libc, SDL2 and even Qt5!","archived":false,"fork":false,"pushed_at":"2024-09-08T22:39:54.000Z","size":31179,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-02T02:11:45.487Z","etag":null,"topics":["c","c-library","cdrom","grub2","kernel","laylaos","musl","musl-libc","operating-system","operating-systems","os","osdev","qt","qt5","sdl2","sdl2-image","window-manager","x86-64"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/moisam.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-06-16T07:27:11.000Z","updated_at":"2024-09-08T22:39:58.000Z","dependencies_parsed_at":"2024-06-22T06:45:08.916Z","dependency_job_id":"f2125f0a-32a2-4ff3-86be-8941c6032431","html_url":"https://github.com/moisam/laylaos","commit_stats":{"total_commits":139,"total_committers":1,"mean_commits":139.0,"dds":0.0,"last_synced_commit":"90b4ef184ae18f5a88ef8671406bde24fda81e0f"},"previous_names":["moisam/laylaos"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moisam%2Flaylaos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moisam%2Flaylaos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moisam%2Flaylaos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moisam%2Flaylaos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/moisam","download_url":"https://codeload.github.com/moisam/laylaos/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238840755,"owners_count":19539608,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c","c-library","cdrom","grub2","kernel","laylaos","musl","musl-libc","operating-system","operating-systems","os","osdev","qt","qt5","sdl2","sdl2-image","window-manager","x86-64"],"created_at":"2024-09-24T14:05:33.700Z","updated_at":"2025-10-29T15:31:01.228Z","avatar_url":"https://github.com/moisam.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# About\n\nLaylaOS is a hobby operating system with a kernel that is written in C. The project started around 2015 and took almost 9 years to reach a stable point where I felt it could be shared with the world.\nIt is meant as a learning tool to better understand the internal workings of an Operating System's kernel, how system calls work and how to implement a Graphical User Interface (GUI) environment.\n\nIt is **definitely** not a system meant for everyday use (not yet, at least).\n\n# Screenshots\n\n![LaylaOS screenshot](screenshots/screenshot3.png)\n[More screenshots](screenshots)\n\n# Features\n\nThe project's features include:\n* 64 bit monolithic multitasking pre-emptive kernel written in C (the 32 bit code is included here but is not fully functional)\n* Symmetric Multiprocessing (SMP), supports up to 32 cores\n* Network stack (TCP, UDP, raw and Unix sockets, IPv4)\n* ATA/ATAPI and AHCI support\n* Basic Intel HDA sound support\n* PS2 keyboard and mouse\n* Virtual consoles\n* Virtual Dynamic Shared Object ([vdso](https://man7.org/linux/man-pages/man7/vdso.7.html))\n* Interprocess Communication (IPC) facilities in the form of shared memory, semaphores and message queues\n* Page cache for demand loading of pages\n* Loopback devices ([loopback](https://man7.org/linux/man-pages/man4/loop.4.html))\n* Builtin filesystem support for Ext2, FAT12/16 and VFAT\n* ACPI support via [ACPICA](https://www.intel.com/content/www/us/en/developer/topic-technology/open/acpica/download.html)\n* C library (currently using [musl](https://wiki.musl-libc.org/))\n* Ports of 3rd party software (GNU coreutiles, inetutils, bash, several image and audio/video decoding libraries, etc.)\n* Graphical desktop with many (mostly demonstrative) applications\n* [SDL2](https://www.libsdl.org/)\n* [Qt5.12](https://www.qt.io/qt-5-12)\n* [OpenTTD](https://www.openttd.org/)\n* A fork of [SDL2 DOOM](https://github.com/moisam/laylaos-sdl2-doom/tree/master)\n\n# TODO list\n\nThis is mostly to keep track of where we are at and what needs to be done next:\n* Add IPv6 support to the network stack\n* More syscalls including POSIX message queues syscalls\n* More GUI functionality (text editor, screenshot facility, paint program, desktop themes, archiver, web browser, etc.)\n* Ext3, Ext4, NFS filesystem support (maybe NTFS at some point)\n* Kernel logging and perhaps a syslogd server\n* Swap support\n* USB support\n\n# Prebuilt packages\n\nYou can download a prebuilt bootable disk image that includes everything (including the ported software) from the [releases page](https://github.com/moisam/laylaos/releases).\nBe mindful, however, that the unzipped disk image is likely to be big (6+ GiB in size). You can use this image to run LaylaOS under [Bochs](https://bochs.sourceforge.io/) or [QEmu](https://www.qemu.org/).\n\nIf you want to try LaylaOS under [Oracle VM VirtualBox](https://www.virtualbox.org/), you will need to convert the bootable disk image into a VDI image. This can be done by running:\n`VBoxManage convertfromraw bootable_disk.img bootable_disk.vdi`\n\nYou can then create a new virtual machine under VirtualBox using the disk image. You will probably face a problem as the image contains two files (`/boot/grub/grub.cfg` and `/etc/fstab`) with a hardcoded boot device name (something like `/dev/hda4`). To be able to use this disk as a SATA (or AHCI) disk under VirtualBox you need to either:\n* Edit these two files in the disk image you downloaded and change the device name to `/dev/sda4` (assuming you connect the disk at SATA port 0; the image contains 4 partitions)\n* Build LaylaOS from source and create the bootable disk image using: `./create_bootable_disk.sh rootdev sda4`\n\nSee below if you decided to build LaylaOS from source.\n\n# How to build\n\nTo build LaylaOS from source:\n1. Download this repository and unzip the zip file\n2. Change directory to the unzipped source directory, e.g. `cd ~/downloads/laylaos-master`\n3. Change directory to the `build-scripts` subdirectory in the source tree: `cd build-scripts`\n4. To run the build (this **has to be done from the `build-scripts` directory**): `./buildos.sh`\n5. Go grab a coffee or better yet, have some lunch. It takes a little **over 3 hours** to build the whole project!\n6. Oh, and you need **internet connection** to download the sources of ported software!\n7. When the build is done, create a bootable harddisk image by running: `./create_bootable_disk.sh`\n8. The bootable disk image is named `bootable_disk.img` and is created by default in the current working directory (you can run `./create_bootable_disk.sh help` to see the list of options)\n9. A `bochsrc` file is automatically created alongside `bootable_disk.img` (you might want to fix the name of the wireless device you use in the file). You can now run Bochs: `bochs -q`\n10. Another script called `qemu.sh` is also created to let you test the OS under QEmu. However, you need a TUN/TAP network device to run LaylaOS under QEmu using the provided script. You need to first run `sudo ./netprep.sh` to create the network device, then you can proceed with running `qemu.sh`\n\n# Licenses\n\n- LaylaOS is released under GPL v3.\n- ACPICA is released under a dual Intel and Unix-compatible licenses.\n- Timidity files (needed for sound in DOOM) are in the public domain (see their `copyright.txt` file).\n- The monospace font used in the system console and the GUI terminal is [Dina font](https://www.dcmembers.com/jibsen/download/61/), which is released under a free license.\n- libaelf32.a and libaelf64.a are part of asmlib, the [software optimisation library](https://www.agner.org/optimize/#asmlib) by Agner Fog, which is released under GPL.\n- All other ported software come with their respective licenses.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoisam%2Flaylaos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmoisam%2Flaylaos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoisam%2Flaylaos/lists"}