Commit Graph

1209 Commits

Author SHA1 Message Date
Philipp Oppermann
c810448fc8 Merge pull request #395 from phil-opp/builtin-lld
LLD is now shipped with Rust!
2018-03-06 11:55:45 +01:00
Philipp Oppermann
db812fe7c8 Remove “Installing LLD” guide 2018-03-06 11:20:32 +01:00
Philipp Oppermann
d7e17b2f56 Set linker-flavor to ld.lld, leave linker at default 2018-03-06 11:20:32 +01:00
Philipp Oppermann
033144fd9c No need to install LLD on travis/appveyor anymore
Rust now ships a LLD binary.
2018-03-06 11:20:32 +01:00
Philipp Oppermann
4c909d5cfc Merge pull request #394 from phil-opp/vga-text-mode
Add post about VGA text mode
2018-03-05 21:06:24 +01:00
Philipp Oppermann
70889544d1 Add rlibc dependency in minimal rust kernel post 2018-03-04 23:32:57 +01:00
Philipp Oppermann
557b869aa4 Update the VGA buffer post for the second edition 2018-03-04 23:19:07 +01:00
Philipp Oppermann
2f30a0df56 Delete old heap allocator 2018-03-04 23:18:01 +01:00
Philipp Oppermann
fab439d6a3 Add the Printing to Screen post to the second edition 2018-03-04 23:18:01 +01:00
Philipp Oppermann
73663150f8 Make image alt texts grey and italic 2018-03-04 23:18:01 +01:00
Philipp Oppermann
21f409625b Add "read more" links on frontpage 2018-03-04 23:18:01 +01:00
Philipp Oppermann
fe472d3412 Adjust order number of first two posts 2018-02-26 19:02:31 +01:00
Philipp Oppermann
2671fac8c2 Rename first first-edition post to “Minimal Multiboot Kernel“ 2018-02-26 18:57:35 +01:00
Philipp Oppermann
c157c91075 Merge pull request #393 from phil-opp/improvements
Wording improvements; Explain the bootimage tool
2018-02-25 16:59:56 +01:00
Philipp Oppermann
9208ae18ce Explain shortly how the bootimage tool works 2018-02-25 16:00:14 +01:00
Philipp Oppermann
4281f0e261 Minor improvements 2018-02-25 15:59:43 +01:00
Philipp Oppermann
7d04bdea1b Reformulate the drawbacks of the multiboot standard 2018-02-25 15:05:09 +01:00
Philipp Oppermann
bd1cf20f05 Improve wording 2018-02-25 14:46:35 +01:00
Toothbrush
1cdc010446 Fix: Change "panic" to "panic-strategy" (#392) 2018-02-20 22:10:05 +01:00
Andre Richter
07553ed219 Nitpicks for second article (#390)
Some nitpick corrections.
2018-02-14 11:39:08 +01:00
Philipp Oppermann
3a8de6cdec Bors: Add netlify to required status set and delete merged branches 2018-02-12 12:59:57 +01:00
Philipp Oppermann
71778d7a42 Remove BootInfo parameter from second post code example
Fixes #388
2018-02-12 12:46:44 +01:00
Andre Richter
384f6c2420 Corrections from proof read (#389)
Some minor corrections while proof-reading.

Changed Max OS X to macOS, since it's the official Apple speak since 2016.
2018-02-12 12:37:26 +01:00
bors[bot]
65c63a77b2 Merge #387
387: Minor fixes for second edition r=phil-opp a=phil-opp
2018-02-10 18:22:17 +00:00
Philipp Oppermann
325f1f2756 Fix date of new post 2018-02-10 18:03:34 +01:00
Philipp Oppermann
8848f4c139 Git ignore bootimage.bin 2018-02-10 18:03:34 +01:00
bors[bot]
00b3adfe82 Merge #385
385: First bits of the second edition r=phil-opp a=phil-opp

This PR adds the first two posts for the second edition, “A Freestanding Rust Binary” and “A Minimal Rust Kernel”. The largest changes in comparison to the first edition are:

- Instead of GRUB, we use our own [bootloader](https://github.com/rust-osdev/bootloader) (written in Rust) and our [bootimage](https://github.com/rust-osdev/bootimage) tool. This removes the dependencies on GRUB and `nasm`. Note that both tools are still experimental and might contain bugs.
- Support for Windows and Mac: Without GRUB, there's nothing preventing us from building on Windows or Mac OS anymore! We added additional CI jobs at travis and appveyor to ensure that the project always builds on all three platforms. (At the moment, users still need to install LLD, but with the [LLVM 6 update of rustc](https://github.com/rust-lang/rust/pull/47828) we should have a builtin LLD soon.)
- No assembly in the main posts. Instead, we're creating a `no_std` _executable_ and relying on our custom bootloader to perform the initial page mapping and the switch to long mode.
- No linker script: Our bootloader loads the kernel in a clean address space, so we can just use the default executable layout and don't need a linker script. (This also means that users that want a higher half kernel just need to update the mapping in their linker script. However, I'm not sure if it's a good idea to add this to the blog. Maybe later, when we begin to run user programs.)

These changes only land in “beta mode” with this PR, which means that they're not linked from the front page yet. We will do that in a follow up PR.
2018-02-10 15:58:25 +00:00
Philipp Oppermann
b2285f762c Add a “first-edition” section
The first edition will live there after the second edition is published.
2018-02-10 16:52:29 +01:00
Philipp Oppermann
dc50747c78 Link to the github issue from the UEFI section 2018-02-10 16:49:09 +01:00
Philipp Oppermann
56be17ab80 Add paragraph about Multiboot 2018-02-10 16:49:09 +01:00
Philipp Oppermann
254d5476b1 Update Linux/Windows/Mac entry points 2018-02-10 16:48:48 +01:00
Philipp Oppermann
5e96335c23 Add instructions for running in QEMU, VirtualBox, and on real hardware 2018-02-10 16:48:30 +01:00
Philipp Oppermann
7be59b571d Use static and for loop for printing Hello World 2018-02-10 16:47:21 +01:00
Philipp Oppermann
cef44163bc Remove/resolve some todos 2018-02-10 16:47:21 +01:00
Philipp Oppermann
7d55dda917 Add extra posts about disabling red zone and SIMD and installing LLD 2018-02-10 16:47:02 +01:00
Philipp Oppermann
8a75c2828e More work on minimal kernel post 2018-02-10 16:46:54 +01:00
Philipp Oppermann
9bb456ed2f Add support for bors.ng 2018-02-10 16:45:53 +01:00
Philipp Oppermann
bff0c4401c Print “Hello” instead of “OK” 2018-02-10 16:43:17 +01:00
Philipp Oppermann
9fc0a07453 Fix offset typo 2018-02-10 16:43:17 +01:00
Philipp Oppermann
eb688962a1 Rewrite first post to work on Windows too 2018-02-10 16:43:17 +01:00
Philipp Oppermann
c266193a34 We do not need separate “Intoduction” and “Booting” posts 2018-02-10 16:43:17 +01:00
Philipp Oppermann
244dd16819 Add appveyor configuration
Don't cache ~/.cargo/git and ~/.cargo/registry, because appveyor has a hard cache limit of 1GB (per account!). So we want to cache as few as possible without giving up the speed gains.
2018-02-10 16:42:51 +01:00
Philipp Oppermann
7d7b94804b Rewrite .travis.yml for second edition 2018-02-10 16:42:51 +01:00
Philipp Oppermann
8f69dfa6a2 Use lld for linking 2018-02-10 16:42:51 +01:00
Philipp Oppermann
734310ff0d Allow executables for x86_64-blog_os target 2018-02-10 16:42:51 +01:00
Philipp Oppermann
5823bcb7ab Initial code for second edition 2018-02-10 16:42:51 +01:00
Philipp Oppermann
2629945c72 Delete code from first edition 2018-02-10 16:42:51 +01:00
Philipp Oppermann
f5797b7fd2 Begin post about creating a minimal Rust kernel 2018-02-10 16:42:51 +01:00
Philipp Oppermann
082c9f0f4f New favicon 2018-02-10 16:42:51 +01:00
Philipp Oppermann
7f3de8dcb4 Update to gutenberg 0.3.0 2018-02-10 16:42:51 +01:00