95 lines
4.1 KiB
Text
95 lines
4.1 KiB
Text
___ _ _ _
|
|
/ __|__ _| |__(_) |_ ___
|
|
| (__/ _` | / _| | _/ -_)
|
|
\___\__,_|_\__|_|\__\___|
|
|
|
|
Calcite is a hobby operating system. I am maintaining a weblog with occasional
|
|
status updates at <https://www.benjidial.net/weblog/calcite>.
|
|
|
|
Calcite is very much alpha software. Do not expect it to do anything useful.
|
|
|
|
=== Building ===
|
|
|
|
Calcite requires some software to be installed before it can be built:
|
|
* a C compiler supporting C99 (e.g. GCC)
|
|
* a C++ compiler supporting C++17 (e.g. GCC)
|
|
* curl
|
|
* GNU ld
|
|
* GNU tar
|
|
* GNU xorriso
|
|
* NASM
|
|
* Ninja build system
|
|
|
|
On Debian, it is sufficient to run this command:
|
|
apt install binutils curl g++ gcc nasm ninja-build tar xorriso
|
|
|
|
The Calcite disk includes some software that is not in this repository.
|
|
To download that software into the repository tree, use the get-dependencies.sh
|
|
script. To remove those files, use the clean-dependencies.sh script.
|
|
|
|
Next, use the make-build.sh script to make the ninja.build file. Running this
|
|
script with no arguments will display information about the arguments that this
|
|
script accepts.
|
|
|
|
Finally, just run ninja to build the disk. A disk image will be placed at
|
|
build/disk.iso. This disk must be booted with UEFI. All build files, including
|
|
ninja.build, but not including the files downloaded by get-dependencies.sh,
|
|
can be removed with the clean-build.sh script.
|
|
|
|
=== Debugging ===
|
|
|
|
More software must be installed to debug Calcite:
|
|
* GNU's GDB
|
|
* QEMU, including the x86_64 system
|
|
|
|
On Debian, it is sufficient to run this command:
|
|
apt install gdb qemu-system-x86
|
|
|
|
Run "gdb -x qemu.gdb" to boot Calcite in QEMU and attach GDB to it.
|
|
The debugging experience will be nicer if debugging symbols were
|
|
enabled during the make-build.sh step.
|
|
|
|
=== License ===
|
|
|
|
Calcite is Copyright 2026 Benji Dial.
|
|
|
|
Calcite is free software: you can redistribute it and/or modify it under the
|
|
terms of the GNU General Public License as published by the Free Software
|
|
Foundation (version 3 only).
|
|
|
|
Calcite is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
|
PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License along with
|
|
Calcite (in license.txt). If not, see <https://www.gnu.org/licenses/>.
|
|
|
|
The Calcite disk image includes the Limine bootloader, version 12.5.0. Limine is
|
|
Copyright 2019-2026 Mintsuki and contributors, and is used under the terms of
|
|
the BSD 2-Clause License, reproduced below:
|
|
|
|
Copyright (C) 2019-2026 Mintsuki and contributors.
|
|
|
|
Redistribution and use in source and binary forms, with or without
|
|
modification, are permitted provided that the following conditions are met:
|
|
|
|
1. Redistributions of source code must n the above copyright notice, this
|
|
list of conditions and the following disclaimer.
|
|
|
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
this list of conditions and the following disclaimer in the documentation
|
|
and/or other materials provided with the distribution.
|
|
|
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
Limine has some transitive dependencies. Information about these can be found at
|
|
<https://github.com/Limine-Bootloader/Limine/blob/v12.5.0/3RDPARTY.md>.
|