uchan note

プログラミングや電子工作の話題を書きます

【技術書典 応援祭】OS 自作技術 ステップアップ問題集を出します

技術書オンリーの同人誌即売会技術書典 応援祭」が,2020/03/07(土)からオンライン開催されます。 『OS 自作技術 ステップアップ問題集』と『マイクロカーネルの設計と実装』を頒布しますのでお知らせします。

頒布情報

技術書典 8 は開催中止です。 その代わり「技術書典 応援祭」に出展します!以下,応援祭の情報です。

  • 日時 2020 年 3 月 7 日(土) - 4 月 5 日(日)
  • 場所 特設サイト
  • ブース 「bitnos」 OS自作技術ステップアップ問題集
  • 新刊1『OS自作技術 ステップアップ問題集』(@uchan_nos 著)
  • 新刊2『マイクロカーネルの設計と実装』(怒田晟也著)
  • bitnos ブースではその他の既刊も展示・頒布します。

f:id:uchan_nos:20200217102209j:plainf:id:uchan_nos:20200217102227p:plain
新刊の表紙画像

概要

『OS自作技術 ステップアップ問題集』はOSを自作している方にOSのデバッグ技術を紹介する目的で書かれました。OSを作っていく過程で遭遇しがちな問題を取りあげ,筆者が実践しているデバッグ技術を説明します。バイナリファイルの調べ方,QEMUGDBの連携のさせ方,OSが再起動してしまうときのバグの調べ方などが主な話題となります。

主な対象読者は「30日でできる!OS自作入門」や類書を参考にして,x86x86-64向けのOSを作っている方です。シンボルアドレスの調べ方を知りたい,GDBを使ったデバッグ方法を知りたい,EIPの値を手がかりにして調査してみたいなどの要望に答えます。各種のデバッグツールを使いこなしている方であれば既知の話題ばかりかもしれませんが,ご自身と筆者のデバッグ手法の違いを眺めて楽しむことはできるかもしれません。そして,より良い方法がありましたら筆者に教えていただけませんでしょうか?

目次

『OS自作技術 ステップアップ問題集』の目次です。

  • 第 1 章 はじめに
    • 対象読者
    • 動作環境
    • 筆者について
    • サンプルコード
    • 学生向け情報
    • 社会人向け情報
  • 第 2 章 テクニック一問一答
    • ELF 形式のファイルを逆アセンブルせよ
    • 独自形式のバイナリファイルを逆アセンブルせよ
    • ELF ファイルからシンボルのアドレスとサイズを探せ
    • HRB 形式のファイルでシンボルのアドレスを探せ
    • 論理アドレスをリニアアドレスへ変換せよ
    • リニアアドレスを物理アドレスへ変換せよ
    • ページングのモードを判定せよ
    • QEMU で現在のレジスタ値を確認せよ
    • USB メモリからディスクイメージを作れ
    • FAT フォーマットされたディスクイメージを作れ
    • FAT のパラメータを確認せよ
    • FAT ファイルシステムのビット数を計算せよ
    • オペコード 0xCB に対応するニーモニックを答えよ
    • NASM で 64 ビット版の far return を出力せよ
    • CPUID を実行するインラインアセンブラを書け
    • QEMUGDB を接続せよ
    • GDB を使って特定の時点のメモリ内容を見よ
    • 「はりぼて OS」が動く QEMUGDB を接続せよ
    • haribote.img の 0xda7 に対応する関数は何か
    • 「はりぼて OS」の mem コマンドでブレークせよ
    • バイナリファイルをプログラムに埋め込め
    • objcopy が何をするか確認せよ
    • UEFI で Print が失敗する理由を探れ
    • 引数がレジスタに積まれる順序を答えよ
    • スタック領域が勝手に使われる理由を述べよ
  • 第 3 章 シナリオ問題
    • OS がいきなり再起動する
    • OS 全体がフリーズした! どこから調べる?
    • QEMU のデバイスコードの動作を確認したい
    • どこから手を付けていいか分からない難問
  • 第 4 章 デバッグに役立つ知識

チラ見

『OS自作技術 ステップアップ問題集』の中身を数ページだけ公開します。 ブースに立ち寄るかどうかの参考になれば幸いです。

f:id:uchan_nos:20200217103205p:plain:w150 f:id:uchan_nos:20200217103312p:plain:w150 f:id:uchan_nos:20200217103433p:plain:w150 f:id:uchan_nos:20200217103503p:plain:w150

特別ゲスト:怒田晟也さん

怒田晟也さんは未踏のスーパークリエータであり,以前からずっと OS の開発を行っています。 2019 年には C と Rust で一から作るマイクロカーネル OS という記事を公開し,界隈で話題になりました。 自作のマイクロカーネルな OS がさくらクラウドで動作し,その上で動く HTTP サーバから Web ページが返ってくるというデモは,自作 OS 屋として衝撃を受けました。 NIC ドライバや TCP/IP プロトコルスタックまで自作しているということですから,これは凄すぎることです。

そんな怒田さんが今回『マイクロカーネルの設計と実装』を著し,bitnos ブースで頒布してくださることになりました。 シンプルなマイクロカーネル OS である Resea を例題に,実装を解説する本です。 是非お手に取ってご覧ください!

お隣ブース情報

「Day1う31」周辺は低レイヤ系ブースが集まっています。そちらにも是非お立ち寄りください! f:id:uchan_nos:20200217103542p:plain

ダウンロード頒布

同人誌即売会の雰囲気を大事にしたいので、当日ブースまで来ていただけると嬉しいです。しかし、何らかの理由により来られない方のために,ダウンロードによる頒布を行う予定です。 技術書典開催後,適当なタイミングで情報を更新します。お待ちください。