1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
hilbert os is a 64-bit hobby operating system, which is not very mature yet. to
build and test it, you will need some software installed. on debian, i believe
running command [1] below as root (e.g. with sudo) is sufficient. the default
makefile target builds a disk image at build/disk.iso that can be booted on a
64-bit bios system. you can use command [2] to build that. finally, use
command [3] to run the disk in qemu with gdb attached.
[1] apt install bison flex g++ gdb git libgmp-dev libmpfr-dev libmpc-dev make nasm qemu-system-x86 texinfo xorriso
[2] make -j$(nproc)
[3] make run
acknowledgements (any under "dependencies" are downloaded during build):
- dependencies/binutils (gnu binutils v2.42)
copyright 2024 free software foundation, inc.
license: dependencies/binutils/COPYING (gnu gpl v2)
homepage: https://www.gnu.org/software/binutils/
- dependencies/gcc (gnu compiler collection v14.1.0)
copyright 2024 free software foundation, inc.
license:
dependencies/gcc/COPYING3 (gnu gpl v3)
dependencies/gcc/COPYING.RUNTIME (gcc runtime library exception v3.1)
homepage: https://gcc.gnu.org/
i patch the output <memory> header file from libstdc++ with
patches/gcc-memory.patch to include my std::allocator implementation.
- dependencies/limine (limine bootloader v7.5.1)
copyright 2019 - 2024 mintsuki and contributors
license: dependencies/limine/COPYING (bsd two-clause)
homepage: https://limine-bootloader.org/
- dependencies/minstuki-headers
copyright 2022 - 2024 mintsuki and contributors
license: dependencies/mintsuki-headers/LICENSE (bsd zero-clause)
homepage: https://github.com/osdev0/freestanding-headers/
i patch the <stddef.h> header file with patches/minstuki-stddef.patch
to add a max_align_t type to make libstdc++ happy. i use the commit
dd3abd2d7147efc4170dff478d3b7730bed14147 so i don't have to worry
about that file changing in a future commit.
- skeleton/assets/burden.ppm
("selective focus photography snowflakes" by aaron burden)
license: https://unsplash.com/license
source: https://unsplash.com/photos/selective-focus-photography-snowflakes-9yhy1FXlKwI
- skeleton/assets/terminus-bold-18x10.psf (terminus font, bold, 18x10)
copyright 2020 dimitar toshkov zhekov
license: skeleton/assets/terminus-ofl.txt (sil open font license v1.1)
homepage: https://terminus-font.sourceforge.net/
the following directories and files are copyright 2024 benji dial, under the
license in isc.txt (isc license):
- applications
- euler
- kernel
- libraries
- makefile
the following directories and files are released under the text in cc0.txt
(creative commons cc0 1.0 universal public domain dedication):
- documentation
- skeleton/assets/pointer.ppm
project structure:
- applications/goldman:
the default compositor, in a very early stage
- applications/init:
the initial program loaded by the kernel. currently it just
(attempts to) start /bin/compositor and then /bin/hello.
- documentation:
documentation. currently this directory is a bit disorganized, and has
some descriptions of things that have not been created yet.
- euler:
(a minimal start to) a c++20 standard library, plus some hilbert
specific functions. this uses the freestanding part of libstdc++.
- kernel:
the kernel.
- libraries/daguerre:
an image loading / rendering library.
- libraries/goldman:
a library for interfacing with the goldman compositor
- patches:
a couple patches that are applied to dependencies
- skeleton:
files that are copied directly to the initfs.
|