blog_os
Writing an OS in Rust
File Explorer
Download Latest Version (.zip)- blog.yml
- check-links.yml
- scheduled-builds.yml
- FUNDING.yml
- index.md
- normal-vs-interrupt-function-return.svg
- qemu-divide-error-println.png
- exception-stack-frame.svg
- index.md
- qemu-divide-by-zero-stack-frame.png
- qemu-page-fault-error-code.png
- qemu-page-fault-handler.png
- qemu-print-stack-frame-try.png
- exception-stack-frame.svg
- function-stack-frame.svg
- index.md
- qemu-breakpoint-handler.png
- qemu-breakpoint-return-page-fault.png
- qemu-breakpoint-return.png
- qemu-page-fault-return.png
- red-zone-overwrite.svg
- red-zone.svg
- vector-addition.png
- xmm-overwrite.svg
- _index.md
- gdb-tui-screenshot.png
- index.md
- _index.md
- cross-compile-binutils.md
- cross-compile-libcore.md
- talks.md
- index.md
- qemu-ok.png
- index.md
- X86_Paging_64bit.svg
- index.md
- red-zone-overwrite.svg
- red-zone.svg
- fixed-println-deadlock.png
- index.md
- vga-H-lower-left.png
- vga-hello-world.png
- index.md
- qemu-memory-areas-and-kernel-sections.png
- index.md
- recursive_mapping_access_p1.svg
- recursive_mapping_access_p3.svg
- recursive_mapping_access_p4.svg
- x86_address_structure.svg
- X86_Paging_64bit.svg
- cyclic_mapping_inactive_tables.svg
- index.md
- recursive_mapping_access_p1_invalid_chaining.svg
- recursive_mapping_access_p3.svg
- recursive_mapping_access_p3_inactive_table.svg
- recursive_mapping_inactive_table_scheme.svg
- allocate.svg
- deallocate.svg
- index.md
- initialization.svg
- merge-holes-and-allocate.svg
- overview.svg
- split-hole.svg
- exception-stack-frame.svg
- function-stack-frame.svg
- index.md
- qemu-breakpoint-exception.png
- boot-loop.gif
- index.md
- qemu-catch-double-fault.png
- qemu-double-fault-on-stack-overflow.png
- _index.md
- _index.md
- building-on-android.png
- index.md
- _index.md
- index.ar.md
- index.es.md
- index.fa.md
- index.fr.md
- index.ja.md
- index.ko.md
- index.md
- index.pt-BR.md
- index.ru.md
- index.tr.md
- index.zh-CN.md
- index.zh-TW.md
- index.ko.md
- index.md
- index.pt-BR.md
- index.ru.md
- index.tr.md
- index.zh-CN.md
- red-zone-overwrite.svg
- red-zone.svg
- index.ko.md
- index.md
- index.pt-BR.md
- index.ru.md
- index.tr.md
- index.zh-CN.md
- _index.md
- index.ar.md
- index.es.md
- index.fa.md
- index.fr.md
- index.ja.md
- index.ko.md
- index.md
- index.pt-BR.md
- index.ru.md
- index.tr.md
- index.zh-CN.md
- qemu.png
- index.ar.md
- index.es.md
- index.fa.md
- index.fr.md
- index.ja.md
- index.ko.md
- index.md
- index.pt-BR.md
- index.tr.md
- index.zh-CN.md
- vga-hello-world.png
- vga-hello.png
- vga-panic.png
- index.ar.md
- index.es.md
- index.fa.md
- index.fr.md
- index.ja.md
- index.ko.md
- index.md
- index.pt-BR.md
- index.tr.md
- index.zh-CN.md
- qemu-failed-test.png
- qemu-test-runner-output.png
- exception-stack-frame.svg
- function-stack-frame.svg
- index.ar.md
- index.es.md
- index.fa.md
- index.ja.md
- index.ko.md
- index.md
- index.pt-BR.md
- index.tr.md
- index.zh-CN.md
- qemu-breakpoint-exception.png
- index.ar.md
- index.es.md
- index.fa.md
- index.ja.md
- index.ko.md
- index.md
- index.pt-BR.md
- index.tr.md
- index.zh-CN.md
- qemu-catch-double-fault.png
- qemu-double-fault-on-stack-overflow.png
- index.ar.md
- index.es.md
- index.fa.md
- index.ja.md
- index.ko.md
- index.md
- index.pt-BR.md
- index.tr.md
- index.zh-CN.md
- qemu-deadlock.png
- qemu-hardware-timer-dots.gif
- qemu-hardware-timer-double-fault.png
- qemu-printing-numbers.gif
- qemu-printing-scancodes.gif
- qemu-single-dot-printed.png
- qemu-typing.gif
- index.ar.md
- index.es.md
- index.fa.md
- index.ja.md
- index.md
- index.pt-BR.md
- index.ru.md
- index.tr.md
- index.zh-CN.md
- multilevel-page-table.svg
- paging-fragmentation.svg
- paging-page-tables.svg
- qemu-page-fault-protection.png
- qemu-page-fault.png
- segmentation-fragmentation-compacted.svg
- segmentation-fragmentation.svg
- segmentation-same-program-twice.svg
- single-level-page-table.svg
- x86_64-page-table-translation-addresses.png
- x86_64-page-table-translation-steps.svg
- x86_64-page-table-translation.svg
- x86_64-table-indices-from-address.svg
- identity-mapped-page-tables.svg
- index.ar.md
- index.es.md
- index.ja.md
- index.md
- index.pt-BR.md
- index.ru.md
- index.tr.md
- index.zh-CN.md
- map-complete-physical-memory.svg
- page-tables-mapped-at-offset.svg
- qemu-mapper-translate-addr.png
- qemu-new-mapping.png
- qemu-print-level-4-table.png
- qemu-translate-addr.png
- recursive-page-table-access-level-1.png
- recursive-page-table-access-level-2.png
- recursive-page-table-access-level-3.png
- recursive-page-table.png
- required-page-frames-example.svg
- table-indices-from-address-recursive-level-1.svg
- table-indices-from-address-recursive-level-2.svg
- table-indices-from-address-recursive-level-3.svg
- table-indices-from-address-recursive-level-4.svg
- temporarily-mapped-page-tables.svg
- call-stack-heap-freed.svg
- call-stack-heap.svg
- call-stack-return.svg
- call-stack-static.svg
- call-stack.svg
- index.ar.md
- index.es.md
- index.ja.md
- index.md
- index.pt-BR.md
- index.ru.md
- index.tr.md
- index.zh-CN.md
- qemu-alloc-showcase.png
- qemu-dummy-output.png
- allocation-fragmentation.svg
- bump-allocation.svg
- fixed-size-block-example.svg
- index.ar.md
- index.es.md
- index.ja.md
- index.md
- index.pt-BR.md
- index.ru.md
- index.tr.md
- index.zh-CN.md
- linked-list-allocation.svg
- linked-list-allocator-fragmentation-on-dealloc.svg
- linked-list-allocator-merge-on-dealloc.svg
- linked-list-allocator-push.svg
- linked-list-allocator-remove-region.svg
- async-example.svg
- async-state-machine-basic.svg
- async-state-machine-states.svg
- index.ar.md
- index.es.md
- index.ja.md
- index.md
- index.pt-BR.md
- index.ru.md
- index.tr.md
- index.zh-CN.md
- index.zh-TW.md
- qemu-keyboard-output-again.gif
- qemu-keyboard-output.gif
- qemu-simple-executor.png
- regain-control-on-interrupt.svg
- scancode-queue.drawio
- scancode-queue.svg
- self-referential-struct-moved.svg
- self-referential-struct.svg
- index.md
- index.md
- identity-mapped-page-tables.svg
- index.md
- qemu-new-mapping.png
- qemu-translate-addr.png
- recursive-page-table-access-level-1.png
- recursive-page-table-access-level-2.png
- recursive-page-table-access-level-3.png
- recursive-page-table.png
- table-indices-from-address-recursive-level-1.svg
- table-indices-from-address-recursive-level-2.svg
- table-indices-from-address-recursive-level-3.svg
- table-indices-from-address-recursive-level-4.svg
- temporarily-mapped-page-tables.png
- _index.md
- _index.ar.md
- _index.es.md
- _index.fa.md
- _index.fr.md
- _index.ja.md
- _index.ko.md
- _index.md
- _index.pt-BR.md
- _index.ru.md
- _index.tr.md
- _index.zh-CN.md
- _index.zh-TW.md
- _index.md
- 2018-03-09-pure-rust.md
- _index.md
- _index.md
- contact.md
- index.md
- qemu-vga-crate.png
- 2019-05-01.md
- 2019-06-03.md
- 2019-07-06.md
- 2019-08-02.md
- 2019-09-09.md
- 2019-10-06.md
- 2019-12-02.md
- 2020-01-07.md
- 2020-02-01.md
- 2020-03-02.md
- _index.md
- _index.ar.md
- _index.es.md
- _index.fa.md
- _index.fr.md
- _index.ja.md
- _index.ko.md
- _index.md
- _index.pt-BR.md
- _index.ru.md
- _index.tr.md
- _index.zh-CN.md
- _index.zh-TW.md
- LICENSE-CC-BY-NC
- README.md
- red-zone-overwrite.dia
- red-zone.dia
- x86_64-page-table-translation-addresses.svg
- xmm-overwrite.dia
- main.scss
- index.html
- isso.css
- main.css
- poole.css
- iosevka-regular.woff
- iosevka-regular.woff2
- apple-touch-icon-precomposed.png
- feed-icon.png
- main.js
- main.js
- CNAME
- favicon.ico
- handling-exceptions-with-naked-fns.html
- forks.html
- recent-updates.html
- stars.html
- status-updates-truncated.html
- status-updates.html
- allocating-frames.html
- better-exception-messages.html
- catching-exceptions.html
- double-faults.html
- entering-longmode.html
- handling-exceptions.html
- kernel-heap.html
- multiboot-kernel.html
- page-tables.html
- printing-to-screen.html
- remap-the-kernel.html
- returning-from-exceptions.html
- set-up-rust.html
- base.html
- comments.html
- handling-exceptions-with-naked-fns.html
- index.html
- macros.html
- page.html
- section.html
- base.html
- extra.html
- index.html
- macros.html
- page.html
- section.html
- 404.html
- base.html
- index.html
- news-page.html
- news-section.html
- plain.html
- redirect-to-frontpage.html
- rss.xml
- section.html
- snippets.html
- status-update-page.html
- status-update-section.html
- .gitignore
- before_build.py
- config.toml
- requirements.txt
- typos.toml
- .bash_aliases
- Dockerfile
- entrypoint.sh
- README.md
- merge.fish
- push.fish
- .gitignore
- giscus.json
- LICENSE-APACHE
- LICENSE-MIT
- README.md
# Installation Guide
1. Get the code
git clone https://github.com/phil-opp/blog_os
Downloads the entire project code from GitHub to your computer.
cd blog_os
Moves into the project folder you just downloaded.
2. Docker
Easy RecommendedPrerequisites
- Git Needed to download the project code from GitHub.
- Docker Desktop Needed to build and run containers. Install it and keep it running in the background.
docker build -f docker/Dockerfile -t blog-os .
Builds a runnable image based on the Dockerfile.
docker run -p 8080:80 blog-os
Runs the built image as an actual container.
Run docker compose ps to check the containers are Up. If the README mentions a port, open http://localhost:PORT in your browser.
3. Python
EasyPrerequisites
pip install -r blog/requirements.txt
Installs the Python libraries listed in requirements.txt (or similar).
python <μ€νν νμΌλͺ
>.py # READMEμμ μ νν μ€ν νμΌλͺ
μ νμΈνμΈμ
Runs the Python script (or module).
If it runs without errors and prints output in the terminal, it worked.
// repository documentation
Was this content helpful?
(0 ratings)
