Compare commits

..

4 Commits

Author SHA1 Message Date
Philipp Oppermann
ffc6d54009 Improve formatting of extra content on main page 2022-12-18 20:14:19 +01:00
Philipp Oppermann
dfd0e6c5d8 Improve chapter description 2022-12-18 20:04:20 +01:00
Philipp Oppermann
6fe8365b93 Fix broken links caused by autoformatter 2022-12-18 20:02:19 +01:00
Philipp Oppermann
6d8075fe87 Rework minimal kernel post 2022-12-18 19:58:48 +01:00
7 changed files with 296 additions and 613 deletions

View File

@@ -3,4 +3,7 @@ title = "Bare Bones"
render = false render = false
+++ +++
In this first chapter, we explain how to create an operating system for the `x86_64` architecture step for step. Starting from scratch, we first create a minimal Rust executable that doesn't depend on the standard library. We then turn it into a bootable OS kernel by combining it with a bootloader. The resulting disk image can then be launched in the [QEMU](https://www.qemu.org/) emulator or booted on a real machine. In this first chapter, we explain how to create an operating system for the `x86_64` architecture step by step.
Starting from scratch, we first create a minimal Rust executable that doesn't depend on the standard library.
We then turn it into a bootable OS kernel by combining it with a bootloader.
The resulting disk image can then be launched in the [QEMU](https://www.qemu.org/) emulator or booted on a real machine.

File diff suppressed because it is too large Load Diff

View File

@@ -1156,3 +1156,18 @@ img {
opacity: 1; opacity: 1;
} }
} }
.post-extra-content {
margin-top: 1rem;
h4 {
display: inline;
margin-right: 1rem;
}
a {
font-weight: bold;
}
}

View File

@@ -51,7 +51,7 @@
<small> <small>
&copy; <time datetime="2022">2022</time>. All rights reserved. &copy; <time datetime="2022">2022</time>. All rights reserved.
<a class="spaced" href="https://github.com/phil-opp/blog_os#license">License</a> <a class="spaced" href="https://github.com/phil-opp/blog_os#license">License</a>
<a class="spaced" href="{{ get_url(path=" @/pages/contact.md") | safe }}">Contact</a> <a class="spaced" href="{{ get_url(path="@/pages/contact.md") | safe }}">Contact</a>
</small> </small>
</footer> </footer>
</div> </div>

View File

@@ -65,7 +65,7 @@
<p>{{ status_updates.description }}</p> <p>{{ status_updates.description }}</p>
<ul> <ul>
{% include "auto/status-updates-truncated.html" %} {% include "auto/status-updates-truncated.html" %}
<li><a href="{{ get_url(path=" @/status-update/_index.md") | safe }}"><em>view all »</em></a></li> <li><a href="{{ get_url(path="@/status-update/_index.md") | safe }}"><em>view all »</em></a></li>
</ul> </ul>
</div> </div>
@@ -75,7 +75,7 @@
editions, you can still find them here:</p> editions, you can still find them here:</p>
<ul> <ul>
<li> <li>
<p><strong><a href="{{ get_url(path=" @/edition-2/_index.md")}}">Second Edition:</a></strong> The second <p><strong><a href="{{ get_url(path="@/edition-2/_index.md")}}">Second Edition:</a></strong> The second
edition is based on older version of the <code>bootloader</code> crate, which uses the hardware-provided edition is based on older version of the <code>bootloader</code> crate, which uses the hardware-provided
VGA text buffer instead of a pixel-based framebuffer for screen output. Instead of the APIC, the legacy VGA text buffer instead of a pixel-based framebuffer for screen output. Instead of the APIC, the legacy
PIC is used for implementing hardware interrupts. The second edition only works on BIOS-based systems, PIC is used for implementing hardware interrupts. The second edition only works on BIOS-based systems,
@@ -83,7 +83,7 @@
}}"><em>read&nbsp;the&nbsp;second edition&nbsp;»</em></a></p> }}"><em>read&nbsp;the&nbsp;second edition&nbsp;»</em></a></p>
</li> </li>
<li> <li>
<p><strong><a href="{{ get_url(path=" @/edition-1/_index.md")}}">First Edition:</a></strong> The first <p><strong><a href="{{ get_url(path="@/edition-1/_index.md")}}">First Edition:</a></strong> The first
edition was already started in 2015. It is very different in many aspects, for example it builds upon edition was already started in 2015. It is very different in many aspects, for example it builds upon
the GRUB bootloader instead of using the `bootloader` crate. This means that it requires you to manually the GRUB bootloader instead of using the `bootloader` crate. This means that it requires you to manually
write some assembly code and do an elaborate remap of the kernel's virtual pages in order to improve write some assembly code and do an elaborate remap of the kernel's virtual pages in order to improve

View File

@@ -82,7 +82,7 @@
still in alpha state, so things might be still in progress, not work, or change without warning! still in alpha state, so things might be still in progress, not work, or change without warning!
</p> </p>
<p> <p>
For a more stable experience, check out the current <a href="{{ get_url(path = " @/edition-2/_index.md") | safe For a more stable experience, check out the current <a href="{{ get_url(path = "@/edition-2/_index.md") | safe
}}"><strong>Second Edition</strong></a>. }}"><strong>Second Edition</strong></a>.
</p> </p>
</div> </div>

View File

@@ -6,10 +6,10 @@
{% block title %}{{ page.title }} | {{ config.title }}{% endblock title %} {% block title %}{{ page.title }} | {{ config.title }}{% endblock title %}
{% block header %} {% block header %}
{% if lang != "en" -%} {% if lang != "en" -%}
<aside id="all-posts-link"><a href="{{ get_url(path=" @/edition-3/_index.md") }}/{{ lang }}" title="All Posts">{{ <aside id="all-posts-link"><a href="{{ get_url(path="@/edition-3/_index.md") }}/{{ lang }}" title="All Posts">{{
trans(key="all_posts", lang=lang) }}</a></aside> trans(key="all_posts", lang=lang) }}</a></aside>
{%- else -%} {%- else -%}
<aside id="all-posts-link"><a href="{{ get_url(path=" @/edition-3/_index.md") }}" title="All Posts">{{ <aside id="all-posts-link"><a href="{{ get_url(path="@/edition-3/_index.md") }}" title="All Posts">{{
trans(key="all_posts", lang=lang) }}</a></aside> trans(key="all_posts", lang=lang) }}</a></aside>
{%- endif %} {%- endif %}
{% endblock header %} {% endblock header %}