<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Nanobyte</title>
    <link>https://nanobyte.dev/</link>
    <description>Recent content on Nanobyte</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <atom:link href="https://nanobyte.dev/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Part 1-1: What is an operating system?</title>
      <link>https://nanobyte.dev/building-an-os/1-1-what-is-an-operating-system/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://nanobyte.dev/building-an-os/1-1-what-is-an-operating-system/</guid>
      <description>&lt;p&gt;If you&amp;rsquo;ve been around technology long enough, you are probably familiar with these pieces of software called operating systems: &lt;em&gt;Windows, Linux&lt;/em&gt;, &lt;em&gt;MacOS&lt;/em&gt;, &lt;em&gt;Android, iOS&lt;/em&gt;. They are everywhere, present on almost any computer and any piece of technology that has the word &lt;em&gt;smart&lt;/em&gt; attached to it… smartphones, smart watches, smart appliances etc.&lt;/p&gt;&#xA;&lt;h2 id=&#34;prerequisites&#34;&gt;Prerequisites&lt;/h2&gt;&#xA;&lt;p&gt;This tutorial is designed for folks with &lt;strong&gt;intermediate programming experience&lt;/strong&gt;. If you&amp;rsquo;re comfortable writing code in at least one programming language and can work through logical problems on your own, you&amp;rsquo;re in good shape!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Part 1-2: Design decisions</title>
      <link>https://nanobyte.dev/building-an-os/1-2-design-decisions/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://nanobyte.dev/building-an-os/1-2-design-decisions/</guid>
      <description>&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;&#xA;&lt;p&gt;Building an operating system requires making many design decisions. Some of these are easy to change later, while others become deeply embedded in the architecture. You need to understand the trade-offs.&lt;/p&gt;&#xA;&lt;p&gt;The choices we make in this tutorial are &lt;strong&gt;our choices for this specific project&lt;/strong&gt;. They&amp;rsquo;re not universal truths. Different projects have different goals and constraints. What makes sense here might not make sense for you.&lt;/p&gt;&#xA;&lt;p&gt;The most important lesson: &lt;strong&gt;choose your battles&lt;/strong&gt;. An operating system is incredibly complex. You can&amp;rsquo;t do everything perfectly or support every possible feature. Pick your scope and stick to it. Decide which parts you&amp;rsquo;ll implement yourself, and where you&amp;rsquo;ll use existing software or skip features. Hardware is messy and you can&amp;rsquo;t support it all. Trying to do so will leave you with an unfinished project.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Part 1-3: Project Setup</title>
      <link>https://nanobyte.dev/building-an-os/1-3-project-setup/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://nanobyte.dev/building-an-os/1-3-project-setup/</guid>
      <description>&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;&#xA;&lt;p&gt;Before we can write any actual OS code, we need to set up the project structure, build system, and configuration files. This might seem tedious, but having a good structure from the start will save a lot of headaches later.&lt;/p&gt;&#xA;&lt;p&gt;In this part, we&amp;rsquo;ll set up:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Project directory structure&lt;/li&gt;&#xA;&lt;li&gt;Build system for multiple bootloaders and platforms&lt;/li&gt;&#xA;&lt;li&gt;Linker scripts for different boot targets&lt;/li&gt;&#xA;&lt;li&gt;Basic bootloader scaffolding&lt;/li&gt;&#xA;&lt;li&gt;A minimal &amp;ldquo;hello world&amp;rdquo; that displays text on screen&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Our goal is to get something working on all our target platforms: x86-64 (both BIOS/CSM and UEFI) and RISC-V (UEFI).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Part 2-1: Boot Protocol &amp; Bootloader Architecture</title>
      <link>https://nanobyte.dev/building-an-os/2-1-boot-protocol/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://nanobyte.dev/building-an-os/2-1-boot-protocol/</guid>
      <description>&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;&#xA;&lt;p&gt;In the previous part, we set up the basic project structure and got a simple &amp;ldquo;Hello World&amp;rdquo; working. Now we need to think about how the bootloader and kernel will communicate.&lt;/p&gt;&#xA;&lt;p&gt;The bootloader&amp;rsquo;s job is to prepare the system and load the kernel. The kernel needs information about the system to run properly. The &lt;strong&gt;boot protocol&lt;/strong&gt; is the contract between bootloader and kernel: a standardized way to pass information.&lt;/p&gt;</description>
    </item>
    <item>
      <title>All Articles</title>
      <link>https://nanobyte.dev/sitemap/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://nanobyte.dev/sitemap/</guid>
      <description></description>
    </item>
    <item>
      <title>Building an OS - 1 - Hello world</title>
      <link>https://nanobyte.dev/transcripts/building-an-os-1-hello-world/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://nanobyte.dev/transcripts/building-an-os-1-hello-world/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;Note: This is an almost verbatim transcript of the &lt;a href=&#34;https://youtu.be/9t-SPC7Tczc&#34; class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Building an OS - 1 - Hello world&lt;/a&gt; video (some minor changes have been made where it would make things more clear). If you want to follow the new and improved text tutorial, &lt;a href=&#34;https://nanobyte.dev/building-an-os/&#34;&gt;check here&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;&#xA;&lt;p&gt;Hello and welcome! In this tutorial, I will show you what it takes to build an operating system from scratch, so let&amp;rsquo;s jump straight into it!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Building an OS - 2 - The disk</title>
      <link>https://nanobyte.dev/transcripts/building-an-os-2-the-disk/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://nanobyte.dev/transcripts/building-an-os-2-the-disk/</guid>
      <description>&lt;p&gt;Watch the video: &lt;a href=&#34;https://www.youtube.com/watch?v=srbnMNk7K7k&#34; class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Building an OS - 2 - The disk&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;&#xA;&lt;p&gt;Hello and welcome! This is part two of the Building an Operating System series. Today we&amp;rsquo;ll learn how to load data from a floppy disk.&lt;/p&gt;&#xA;&lt;h3 id=&#34;corrections-from-part-1&#34;&gt;Corrections from Part 1&lt;/h3&gt;&#xA;&lt;p&gt;Before talking about today&amp;rsquo;s topic, I would like to correct some mistakes I made in the first episode:&lt;/p&gt;&#xA;&lt;p&gt;First of all, I said that the MOV instruction moves from the left to the right, which is incorrect. MOV moves from right to left. You can think of it as an assignment in C: the destination is on the left side and the source is on the right side.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Contributing</title>
      <link>https://nanobyte.dev/contributing/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://nanobyte.dev/contributing/</guid>
      <description>&lt;p&gt;Thank you for your interest in Nanobyte! There are several ways you can contribute to our community and help us grow.&lt;/p&gt;&#xA;&lt;h2 id=&#34;contributing-to-the-website&#34;&gt;Contributing to the Website&lt;/h2&gt;&#xA;&lt;p&gt;The Nanobyte website is open source and welcomes contributions! Whether you want to fix a typo, improve documentation, or add new content, we&amp;rsquo;d love your help.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href=&#34;https://github.com/nanobyte-dev/nanobyte-website&#34; class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;github.com/nanobyte-dev/nanobyte-website&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;how-to-contribute&#34;&gt;How to Contribute&lt;/h3&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;Fork the repository&lt;/strong&gt; on GitHub&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Clone your fork&lt;/strong&gt; to your local machine&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Create a new branch&lt;/strong&gt; for your changes&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Make your changes&lt;/strong&gt; - Fix bugs, improve content, add features&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Test your changes&lt;/strong&gt; - Run both modern and legacy builds&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Submit a pull request&lt;/strong&gt; with a clear description of your changes&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h3 id=&#34;what-were-looking-for&#34;&gt;What We&amp;rsquo;re Looking For&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Content improvements&lt;/strong&gt; - Fix typos, clarify explanations, add examples&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;New tutorials&lt;/strong&gt; - Share your knowledge about OS development&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Bug fixes&lt;/strong&gt; - Fix issues with the site or theme&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Feature additions&lt;/strong&gt; - Improve the user experience&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Documentation&lt;/strong&gt; - Help others understand how things work&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;See the &lt;a href=&#34;https://github.com/nanobyte-dev/nanobyte-website#readme&#34; class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;README&lt;/a&gt; for development setup instructions.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Privacy Policy</title>
      <link>https://nanobyte.dev/privacy/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://nanobyte.dev/privacy/</guid>
      <description>&lt;p&gt;This page explains how and when your personal data is collected, processed and used when accessing nanobyte.dev or any of its subdomains. Basis of all processing are the terms of the &lt;a href=&#34;https://ec.europa.eu/commission/priorities/justice-and-fundamental-rights/data-protection/2018-reform-eu-data-protection-rules_en&#34; class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;General Data Protection Regulation&lt;/a&gt; (GDPR).&lt;/p&gt;&#xA;&lt;p&gt;In the following text we use&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&amp;ldquo;we&amp;rdquo; for the people managing the website or in GDPR speak: the controller&lt;/li&gt;&#xA;&lt;li&gt;&amp;ldquo;you&amp;rdquo; for the users accessing the website or in GDPR speak: the data subject&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;This text was written to be short and easy to understand by someone who is not a lawyer. If you feel something is not as clear as it should be, please help to improve it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Setting up an OS development environment</title>
      <link>https://nanobyte.dev/osdev/environment/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://nanobyte.dev/osdev/environment/</guid>
      <description>&lt;p&gt;You want to start working on your own operating system, but don&amp;rsquo;t know where to start? This article describes the tools and settings you need to configure to prepare your system for operating system development.&lt;/p&gt;&#xA;&lt;p&gt;A long time ago, writing an operating system was done by writing assembly code &lt;em&gt;on paper&lt;/em&gt;, going through the CPU manual and translating every assembly instruction into binary by hand, and then punching tape using a special typewriter (citation needed). Luckily for us, things have gotten a lot better and we have much better tools available. We have smart editors to help us write code easier, advanced compilers and assemblers, and really good debugging tools.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
