Skip to content

Commit

Permalink
Specify bootloader version as v0.9 (without patch version) in all posts
Browse files Browse the repository at this point in the history
Cargo automatically chooses the latest patch version, but beginners might not know that. So this hopefully avoids some confusion.
  • Loading branch information
phil-opp committed Feb 16, 2024
1 parent 3556211 commit 1f6402f
Show file tree
Hide file tree
Showing 9 changed files with 9 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -414,7 +414,7 @@ pub extern "C" fn _start() -> ! {
# in Cargo.toml

[dependencies]
bootloader = "0.9.23"
bootloader = "0.9"
```

افزودن بوت‌لودر به عنوان وابستگی برای ایجاد یک دیسک ایمیج قابل بوت کافی نیست. مشکل این است که ما باید هسته خود را با بوت لودر پیوند دهیم، اما کارگو از [اسکریپت های بعد از بیلد] پشتیبانی نمی‌کند.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -411,7 +411,7 @@ pub extern "C" fn _start() -> ! {
# in Cargo.toml

[dependencies]
bootloader = "0.9.23"
bootloader = "0.9"
```

bootloaderを依存として加えることだけでブータブルディスクイメージが実際に作れるわけではなく、私達のカーネルをコンパイル後にブートローダーにリンクする必要があります。問題は、cargoが[<ruby>ビルド後<rp> (</rp><rt>post-build</rt><rp>) </rp></ruby>にスクリプトを走らせる機能][post-build scripts]を持っていないことです。
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -418,7 +418,7 @@ pub extern "C" fn _start() -> ! {
# Cargo.toml 에 들어갈 내용

[dependencies]
bootloader = "0.9.23"
bootloader = "0.9"
```

부트로더를 의존 크레이트로 추가하는 것만으로는 부팅 가능한 디스크 이미지를 만들 수 없습니다. 커널 컴파일이 끝난 후 커널을 부트로더와 함께 링크할 수 있어야 하는데, cargo는 현재 [빌드 직후 스크립트 실행][post-build scripts] 기능을 지원하지 않습니다.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -403,7 +403,7 @@ Instead of writing our own bootloader, which is a project on its own, we use the
# in Cargo.toml

[dependencies]
bootloader = "0.9.23"
bootloader = "0.9"
```

Adding the bootloader as a dependency is not enough to actually create a bootable disk image. The problem is that we need to link our kernel with the bootloader after compilation, but cargo has no support for [post-build scripts].
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -411,7 +411,7 @@ pub extern "C" fn _start() -> ! {
# in Cargo.toml

[dependencies]
bootloader = "0.9.23"
bootloader = "0.9"
```

Добавление загрузчика в качестве зависимости недостаточно для создания загрузочного образа диска. Проблема в том, что нам нужно связать наше ядро с загрузчиком после компиляции, но в cargo нет поддержки [скриптов после сборки][post-build scripts].
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -365,7 +365,7 @@ pub extern "C" fn _start() -> ! {
# in Cargo.toml

[dependencies]
bootloader = "0.9.23"
bootloader = "0.9"
```

只添加引导程序为依赖项,并不足以创建一个可引导的磁盘映像;我们还需要内核编译完成之后,将内核和引导程序组合在一起。然而,截至目前,原生的 cargo 并不支持在编译完成后添加其它步骤(详见[这个 issue](https://github.com/rust-lang/cargo/issues/545))。
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -281,7 +281,7 @@ frame.map(|frame| frame.start_address() + u64::from(addr.page_offset()))

```toml
[dependencies]
bootloader = { version = "0.9.23", features = ["map_physical_memory"]}
bootloader = { version = "0.9", features = ["map_physical_memory"]}
```

この機能を有効化すると、ブートローダは物理メモリの全体を、ある未使用の仮想アドレス空間にマッピングします。この仮想アドレスの範囲をカーネルに伝えるために、ブートローダは**boot information**構造体を渡します。
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -278,7 +278,7 @@ We choose the first approach for our kernel since it is simple, platform-indepen

```toml
[dependencies]
bootloader = { version = "0.9.23", features = ["map_physical_memory"]}
bootloader = { version = "0.9", features = ["map_physical_memory"]}
```

With this feature enabled, the bootloader maps the complete physical memory to some unused virtual address range. To communicate the virtual address range to our kernel, the bootloader passes a _boot information_ structure.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -288,7 +288,7 @@ frame.map(|frame| frame.start_address() + u64::from(addr.page_offset()))

```toml
[dependencies]
bootloader = { version = "0.9.23", features = ["map_physical_memory"]}
bootloader = { version = "0.9", features = ["map_physical_memory"]}
```

启用这个功能后,bootloader 将整个物理内存映射到一些未使用的虚拟地址范围。为了将虚拟地址范围传达给我们的内核,bootloader 传递了一个 _启动信息_ 结构。
Expand Down

0 comments on commit 1f6402f

Please sign in to comment.