「作って学ぶ OSのしくみ(I)」サポートページ

このページは、hikalium 著 「作って学ぶ OSのしくみ(I)」(技術評論社, 2025)の内容を補完する情報を掲載しています。

本ページや上記書籍についてのフィードバックは、本サポートサイトの GitHub Issues経由で著者までお知らせください。

ハッシュタグは #OSのしくみ です。

関連リンク

正誤情報

『[作って学ぶ]OSのしくみ』正誤表

補足情報

rust-analyzerの設定について

Rustのコードを書く際にはrust-analyzerというLSPサーバーが非常に便利です。筆者もいつも大変お世話になっています。 しかし、本書のリポジトリでrust-analyzerがうまく動作しない場合があるようですので、その解決策をご紹介します。

本書のリポジトリでは再現性を確保するため、Rustツールチェインのバージョンをrust-toolchain.tomlに記載のとおり固定しています。そのため、より新しいバージョンのRustツールチェインに同梱されているrust-analyzerを使用すると、エラーが発生する可能性があります。多くのエディタにおいてrust-analyzer拡張機能は、rust-toolchain.tomlの内容にかかわらず、最新の(もしくは拡張機能に同梱されているバージョンの)rust-analyzerをデフォルトで使用するようになっているため、以下のようなエラーメッセージが表示されることがあります。

[coc.nvim] Workspace `/home/hikalium/repo/wasabi/Cargo.toml` is using an outdated toolchain version `1.77.0-nightly` but rust-analyzer only supports `1.78.0` and higher.
Consider using the rust-analyzer rustup component for your toolchain or upgrade your toolchain to a supported version.

これを回避するためには、本書のリポジトリで使用されているツールチェインに適合したバージョンのrust-analyzerをLSPサーバーとして使用するよう、エディタに指示してあげる必要があります。

まず、以下のコマンドをwasabiリポジトリの内部で実行して、rust-analyzerの実行ファイルパスを確認します。

$ rustup component add rust-analyzer && rustup which rust-analyzer
info: component 'rust-analyzer' for target 'x86_64-unknown-linux-gnu' is up to date
/home/hikalium/.rustup/toolchains/nightly-2024-01-01-x86_64-unknown-linux-gnu/bin/rust-analyzer

その後、このファイルパスをエディタの設定に追記します。

開き、次のアイテムを追加します:

{
  "rust-analyzer.server.path": "/home/hikalium/.rustup/toolchains/nightly-2024-01-01-x86_64-unknown-linux-gnu/bin/rust-analyzer"
}

設定を保存したのちエディタを再起動すれば、wasabiに対してもrust-analyzerが問題なく動作するようになるはずです。

See also: https://github.com/lowlayergirls/wasabi-help/issues/9

本書を読む前に、Rust言語に関して理解しておいた方がいい内容はありますか?

本書はRust初心者の方でも、それ以外のプログラミング言語の経験がある方であれば問題なく読めることを目指して書かれているため、事前学習は必ずしも必要ではありません。どうしても事前に予習したい場合や、読んでいる途中で参考書が欲しくなってきたら、以下の資料を参考にするとよいでしょう。

また、本書とあわせて、もしくは本書の次に読むと理解が深まると思われる資料はこちらです。

さらに発展的なOS自作に関わる情報を手に入れたい方は、筆者だけでなくたくさんの自作OS開発者が集うコミュニティosdev-jpのSlackへの参加を検討してもよいでしょう。参加方法はこちらに記載されています。また、定期的に「自作OSもくもく会」や「作業会」というイベントが開催されておりますので、そちらに参加して本を読み進めるというのもありかもしれません。これらのイベント等の動画アーカイブはYouTubeのプレイリストにありますので、こちらもあわせて参考にしてみてください。

rustfmtでuseの内容を自動でバラしてほしい

初版第1刷p.139で、useを行ごとにバラすようにしているよう説明しています。 これを自動でやってくれる方法があると読者より教えていただいたので共有します。 (Thanks @lapla-cogito!)

rustfmt.tomlimports_granularity = "Item"と設定すれば、自動でバラしてくれるようです。