From bc2b3891d6f18857a9b08750690462956b03a83d Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Sat, 26 Jan 2019 12:39:59 +0100 Subject: [PATCH] Rename code release tags for first edition --- README.md | 20 +++++++++---------- .../posts/01-multiboot-kernel/index.md | 2 +- .../posts/02-entering-longmode/index.md | 2 +- .../posts/03-set-up-rust/index.md | 2 +- .../posts/04-printing-to-screen/index.md | 2 +- .../posts/05-allocating-frames/index.md | 2 +- .../posts/06-page-tables/index.md | 2 +- .../posts/07-remap-the-kernel/index.md | 2 +- .../posts/08-kernel-heap/index.md | 2 +- .../posts/09-handling-exceptions/index.md | 2 +- .../posts/10-double-faults/index.md | 2 +- 11 files changed, 20 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 733aa7fc..eb838c2c 100644 --- a/README.md +++ b/README.md @@ -49,29 +49,29 @@ The current version of the blog is already the second edition. The first edition ### Bare Bones - [A Minimal x86 Kernel](https://os.phil-opp.com/multiboot-kernel.html) - ([source code](https://github.com/phil-opp/blog_os/tree/post_1)) + ([source code](https://github.com/phil-opp/blog_os/tree/first_edition_post_1)) - [Entering Long Mode](https://os.phil-opp.com/entering-longmode.html) - ([source code](https://github.com/phil-opp/blog_os/tree/post_2)) + ([source code](https://github.com/phil-opp/blog_os/tree/first_edition_post_2)) - [Set Up Rust](https://os.phil-opp.com/set-up-rust.html) - ([source code](https://github.com/phil-opp/blog_os/tree/post_3)) + ([source code](https://github.com/phil-opp/blog_os/tree/first_edition_post_3)) - [Printing to Screen](https://os.phil-opp.com/printing-to-screen.html) - ([source code](https://github.com/phil-opp/blog_os/tree/post_4)) + ([source code](https://github.com/phil-opp/blog_os/tree/first_edition_post_4)) ### Memory Management - [Allocating Frames](https://os.phil-opp.com/allocating-frames.html) - ([source code](https://github.com/phil-opp/blog_os/tree/post_5)) + ([source code](https://github.com/phil-opp/blog_os/tree/first_edition_post_5)) - [Page Tables](https://os.phil-opp.com/modifying-page-tables.html) - ([source code](https://github.com/phil-opp/blog_os/tree/post_6)) + ([source code](https://github.com/phil-opp/blog_os/tree/first_edition_post_6)) - [Remap the Kernel](https://os.phil-opp.com/remap-the-kernel.html) - ([source code](https://github.com/phil-opp/blog_os/tree/post_7)) + ([source code](https://github.com/phil-opp/blog_os/tree/first_edition_post_7)) - [Kernel Heap](https://os.phil-opp.com/kernel-heap.html) - ([source code](https://github.com/phil-opp/blog_os/tree/post_8)) + ([source code](https://github.com/phil-opp/blog_os/tree/first_edition_post_8)) ### Exceptions - [Handling Exceptions](https://os.phil-opp.com/handling-exceptions.html) - ([source code](https://github.com/phil-opp/blog_os/tree/post_9)) + ([source code](https://github.com/phil-opp/blog_os/tree/first_edition_post_9)) - [Double Faults](https://os.phil-opp.com/double-faults.html) - ([source code](https://github.com/phil-opp/blog_os/tree/post_10)) + ([source code](https://github.com/phil-opp/blog_os/tree/first_edition_post_10)) ### Additional Resources - [Cross Compile Binutils](https://os.phil-opp.com/cross-compile-binutils.html) diff --git a/blog/content/first-edition/posts/01-multiboot-kernel/index.md b/blog/content/first-edition/posts/01-multiboot-kernel/index.md index 2db3ba1c..acffb81a 100644 --- a/blog/content/first-edition/posts/01-multiboot-kernel/index.md +++ b/blog/content/first-edition/posts/01-multiboot-kernel/index.md @@ -15,7 +15,7 @@ This post explains how to create a minimal x86 operating system kernel using the I tried to explain everything in detail and to keep the code as simple as possible. If you have any questions, suggestions or other issues, please leave a comment or [create an issue] on Github. The source code is available in a [repository][source code], too. [create an issue]: https://github.com/phil-opp/blog_os/issues -[source code]: https://github.com/phil-opp/blog_os/tree/post_1/src/arch/x86_64 +[source code]: https://github.com/phil-opp/blog_os/tree/first_edition_post_1/src/arch/x86_64 Note that this tutorial is written mainly for Linux. For some known problems on OS X see the comment section and [this issue][mac os issue]. If you want to use a virtual Linux machine, you can find instructions and a Vagrantfile in Ashley Willams's [x86-kernel repository]. diff --git a/blog/content/first-edition/posts/02-entering-longmode/index.md b/blog/content/first-edition/posts/02-entering-longmode/index.md index 13aa54c8..3ba27e66 100644 --- a/blog/content/first-edition/posts/02-entering-longmode/index.md +++ b/blog/content/first-edition/posts/02-entering-longmode/index.md @@ -20,7 +20,7 @@ In the [previous post] we created a minimal multiboot kernel. It just prints `OK I tried to explain everything in detail and to keep the code as simple as possible. If you have any questions, suggestions, or issues, please leave a comment or [create an issue] on Github. The source code is available in a [repository][source code], too. [create an issue]: https://github.com/phil-opp/blog_os/issues -[source code]: https://github.com/phil-opp/blog_os/tree/post_2/src/arch/x86_64 +[source code]: https://github.com/phil-opp/blog_os/tree/first_edition_post_2/src/arch/x86_64 ## Some Tests To avoid bugs and strange errors on old CPUs we should check if the processor supports every needed feature. If not, the kernel should abort and display an error message. To handle errors easily, we create an error procedure in `boot.asm`. It prints a rudimentary `ERR: X` message, where X is an error code letter, and hangs: diff --git a/blog/content/first-edition/posts/03-set-up-rust/index.md b/blog/content/first-edition/posts/03-set-up-rust/index.md index 5fb7c061..3caec2de 100644 --- a/blog/content/first-edition/posts/03-set-up-rust/index.md +++ b/blog/content/first-edition/posts/03-set-up-rust/index.md @@ -19,7 +19,7 @@ In the previous posts we created a [minimal Multiboot kernel][multiboot post] an This blog post tries to set up Rust step-by-step and point out the different problems. If you have any questions, problems, or suggestions please [file an issue] or create a comment at the bottom. The code from this post is in a [Github repository], too. [file an issue]: https://github.com/phil-opp/blog_os/issues -[Github repository]: https://github.com/phil-opp/blog_os/tree/post_3 +[Github repository]: https://github.com/phil-opp/blog_os/tree/first_edition_post_3 ## Installing Rust We need a nightly compiler, as we will use many unstable features. To manage Rust installations I highly recommend [rustup]. It allows you to install nightly, beta, and stable compilers side-by-side and makes it easy to update them. To use a nightly compiler for the current directory, you can run `rustup override add nightly`. Alternatively, you can add a file called `rust-toolchain` to the project's root directory: diff --git a/blog/content/first-edition/posts/04-printing-to-screen/index.md b/blog/content/first-edition/posts/04-printing-to-screen/index.md index 5952d1b5..24a60b18 100644 --- a/blog/content/first-edition/posts/04-printing-to-screen/index.md +++ b/blog/content/first-edition/posts/04-printing-to-screen/index.md @@ -20,7 +20,7 @@ In the [previous post] we switched from assembly to [Rust], a systems programmin This post uses recent unstable features, so you need an up-to-date nighly compiler. If you have any questions, problems, or suggestions please [file an issue] or create a comment at the bottom. The code from this post is also available on [Github][code repository]. [file an issue]: https://github.com/phil-opp/blog_os/issues -[code repository]: https://github.com/phil-opp/blog_os/tree/post_4 +[code repository]: https://github.com/phil-opp/blog_os/tree/first_edition_post_4 ## The VGA Text Buffer The text buffer starts at physical address `0xb8000` and contains the characters displayed on screen. It has 25 rows and 80 columns. Each screen character has the following format: diff --git a/blog/content/first-edition/posts/05-allocating-frames/index.md b/blog/content/first-edition/posts/05-allocating-frames/index.md index 8739b417..d01dc598 100644 --- a/blog/content/first-edition/posts/05-allocating-frames/index.md +++ b/blog/content/first-edition/posts/05-allocating-frames/index.md @@ -12,7 +12,7 @@ In this post we create an allocator that provides free physical frames for a fut The full source code is available on [Github][source repo]. Feel free to open issues there if you have any problems or improvements. You can also leave a comment at the bottom. -[source repo]: https://github.com/phil-opp/blog_os/tree/post_5 +[source repo]: https://github.com/phil-opp/blog_os/tree/first_edition_post_5 ## Preparation We still have a really tiny stack of 64 bytes, which won't suffice for this post. So we increase it to 16kB (four pages) in `boot.asm`: diff --git a/blog/content/first-edition/posts/06-page-tables/index.md b/blog/content/first-edition/posts/06-page-tables/index.md index 7a27ee78..d6f49b06 100644 --- a/blog/content/first-edition/posts/06-page-tables/index.md +++ b/blog/content/first-edition/posts/06-page-tables/index.md @@ -12,7 +12,7 @@ In this post we will create a paging module, which allows us to access and modif You can find the source code and this post itself on [Github][source repository]. Please file an issue there if you have any problems or improvement suggestions. There is also a comment section at the end of this page. Note that this post requires a current Rust nightly. -[source repository]: https://github.com/phil-opp/blog_os/tree/post_6 +[source repository]: https://github.com/phil-opp/blog_os/tree/first_edition_post_6 ## Paging _Paging_ is a memory management scheme that separates virtual and physical memory. The address space is split into equal sized _pages_ and _page tables_ specify which virtual page points to which physical frame. For an extensive paging introduction take a look at the paging chapter ([PDF][paging chapter]) of the [Three Easy Pieces] OS book. diff --git a/blog/content/first-edition/posts/07-remap-the-kernel/index.md b/blog/content/first-edition/posts/07-remap-the-kernel/index.md index d1889b3e..4859371e 100644 --- a/blog/content/first-edition/posts/07-remap-the-kernel/index.md +++ b/blog/content/first-edition/posts/07-remap-the-kernel/index.md @@ -14,7 +14,7 @@ In this post we will create a new page table to map the kernel sections correctl As always, you can find the source code on [Github]. Don't hesitate to file issues there if you have any problems or improvement suggestions. There is also a comment section at the end of this page. Note that this post requires a current Rust nightly. -[Github]: https://github.com/phil-opp/blog_os/tree/post_7 +[Github]: https://github.com/phil-opp/blog_os/tree/first_edition_post_7 ## Motivation diff --git a/blog/content/first-edition/posts/08-kernel-heap/index.md b/blog/content/first-edition/posts/08-kernel-heap/index.md index b0d069bc..fc0f4bcb 100644 --- a/blog/content/first-edition/posts/08-kernel-heap/index.md +++ b/blog/content/first-edition/posts/08-kernel-heap/index.md @@ -17,7 +17,7 @@ In the previous posts we created a [frame allocator] and a [page table module]. As always, you can find the complete source code on [Github]. Please file [issues] for any problems, questions, or improvement suggestions. There is also a comment section at the end of this page. -[Github]: https://github.com/phil-opp/blog_os/tree/post_8 +[Github]: https://github.com/phil-opp/blog_os/tree/first_edition_post_8 [issues]: https://github.com/phil-opp/blog_os/issues ## Introduction diff --git a/blog/content/first-edition/posts/09-handling-exceptions/index.md b/blog/content/first-edition/posts/09-handling-exceptions/index.md index 351f8d5d..c42a7b04 100644 --- a/blog/content/first-edition/posts/09-handling-exceptions/index.md +++ b/blog/content/first-edition/posts/09-handling-exceptions/index.md @@ -14,7 +14,7 @@ In this post, we start exploring CPU exceptions. Exceptions occur in various err As always, the complete source code is available on [Github]. Please file [issues] for any problems, questions, or improvement suggestions. There is also a comment section at the end of this page. -[Github]: https://github.com/phil-opp/blog_os/tree/post_9 +[Github]: https://github.com/phil-opp/blog_os/tree/first_edition_post_9 [issues]: https://github.com/phil-opp/blog_os/issues ## Exceptions diff --git a/blog/content/first-edition/posts/10-double-faults/index.md b/blog/content/first-edition/posts/10-double-faults/index.md index 2fcf4ed3..5cc0bcdc 100644 --- a/blog/content/first-edition/posts/10-double-faults/index.md +++ b/blog/content/first-edition/posts/10-double-faults/index.md @@ -12,7 +12,7 @@ In this post we explore double faults in detail. We also set up an _Interrupt St As always, the complete source code is available on [Github]. Please file [issues] for any problems, questions, or improvement suggestions. There is also a [gitter chat] and a comment section at the end of this page. -[Github]: https://github.com/phil-opp/blog_os/tree/post_10 +[Github]: https://github.com/phil-opp/blog_os/tree/first_edition_post_10 [issues]: https://github.com/phil-opp/blog_os/issues [gitter chat]: https://gitter.im/phil-opp/blog_os