Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/qookei/doomux
Linux "distro" that runs Doom from the initramfs
https://github.com/qookei/doomux
Last synced: 12 days ago
JSON representation
Linux "distro" that runs Doom from the initramfs
- Host: GitHub
- URL: https://github.com/qookei/doomux
- Owner: qookei
- License: gpl-3.0
- Created: 2022-06-11T17:29:04.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2022-06-11T17:49:07.000Z (over 2 years ago)
- Last Synced: 2024-11-13T16:27:21.812Z (2 months ago)
- Language: Makefile
- Size: 42 KB
- Stars: 5
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# doomux
Linux "distro" that runs Doom from the initramfs.
## Details
This project is a minimal "distro", consisting of static builds of [musl](https://musl.libc.org) (used at compile-time only),
[fbDOOM](https://github.com/maximevince/fbDOOM/), a small custom `init` executable, and the [Linux](https://kernel.org/) kernel.It then packs these into an initramfs archive, and builds a hybrid ISO (EFI + old BIOS) image using [Limine](https://github.com/limine-bootloader/limine).
Versions used:
- Linux 5.18.3,
- musl 1.2.3,
- fbDOOM master (my personal fork for the time being, until a fix PR is merged).The kernel configuration is the default config with networking disabled and framebuffer and GPU support enabled.
The custom `init` binary does the following steps:
- Mount `/dev` as `devtmpfs`,
- Set up a virtual terminal (`/dev/tty1`) and switch to it,
- Fork and exec `fbdoom`,
- Wait for it to exit,
- Trigger a system reboot.## Building
In order to compile this project, you will need the following tools:
- git,
- wget,
- tar, gzip, xz,
- coreutils,
- sed,
- gcc, binutils,
- bc,
- cpio,
- GNU Make (others untested),
- xorriso.To compile this project, put your `doom.wad` into this directory, then run:
```
$ make
```If you want to specify the amount of cores to use when building packages, specify `PARALLELISM=n`.
By default this is set to the value given by `nproc`.Note that you currently need to build it on an x86\_64 machine due to lack of cross-compiling support when compiling the kernel.