大神 祐真 (Ohgami Yuma) (サークル名:へにゃぺんて)

目次

1 名刺代わりなページ

1.1 宣伝

私の個人サークル「へにゃぺんて」の活動(2022年10月時点まで)をまとめた記事をさくらのナレッジで執筆させていただきました!

1.2 主な活動場所

1.2.1 DONE 最近は使用していない場所

1.3 同人誌/同人作品

紙版はとらのあな様と一部はBEEP様メロンブックス様にて販売中!

PDF版・HTML版は無料で公開中! EPUB版はBOOK☆WALKER様にて販売中!

1.3.1 Daisyworld DEMO - DaisyOS GB v0.3

dog030_cover.pngプラウザ上でプレイ(itch.io)(上記画像リンク先と同じ)

開発版(itch.io)

  • 最初の公開日: 2024/01/10
  • バイナリ生物学に基づくシステム上でデイジーワールドを動作させるデモをGBソフトとして作ってみたものです
  • 白と黒の2種類のデイジーにより地表温度が生育適温(20℃)付近へ自ずと調節されていく様子を見ることができます
  • ユーザー操作としては、環境に存在するデイジーを間引いたり(消去)、地表温度を強制的に上げたり下げたり、といった外乱を与えることができます
  • 詳しくは上記リンク先のページをご覧ください

1.3.2 よりシンプルなバイナリ生物学の本

sbbb-cover.pngPDF版(PDFファイル直リンク(表紙画像リンク先と同じ),技術書典オンラインマーケット)

  • 初版発行日: 2023/11/11 (技術書典15)
  • 「バイナリ生物学」の理論を1960年代のコンピュータであるPDP-7でも動くくらいシンプルにした設計を解説し、PDP-7のシミュレータ上で動作するPoC実装で行った実験とその結果を紹介する本です!
  • 実験としては「デイジーワールド」と呼ばれるモデル環境を再現する実験を行いました。「バイナリ生物学の実装の上で生物による自己制御のようなものが働くのかどうか」といった所を実験を用いて紹介します!
  • PoC実装は↓で公開しています(GitHub)

1.3.3 SimHでPDP-7ベアメタルプログラミング

pbps-cover.pngPDF版(PDFファイル直リンク(表紙画像リンク先と同じ),技術書典オンラインマーケット)     紙版(BEEP)

  • 初版発行日: 2023/05/20 (技術書典14)
  • 「SimH」というシミュレータを用いて、「PDP-7」という1960年代のコンピュータをアセンブリ言語で直接制御するベアメタルプログラミングを行う本です!
  • 基本的な計算の行い方から始め、テレタイプによる入出力で「HELLO WORLD!」や「エコーバック」のプログラムを作ったり、シミュレータ上で動作するベクタースキャンディスプレイを制御したりします!
  • サンプルコードは↓で公開しています(GitHub)
  • 追加・訂正情報
    • Scrapboxに追加の情報などをまとめています
    • 「セキュリティ・ネクストキャンプ2023」にて同タイトルの講義を行います!
    • 1.1節でPDP-7のリリース年を「1965年」と書いておりましたが正しくは「1964年」であるようです
      • 「1965年」というのはWikipediaの記事を見てそのように認識していました
      • ただ、同記事には「DIGITAL Computing Timeline では1964年登場とされている」とも書かれています
      • 「DIGITAL Computing Timeline」はかつてDECが公開していたウェブサイトであるようで、こちらの方が信憑性が高そうです
      • 対して「1965年」には根拠を見つけられませんでした
    • 3.6節でLAW命令について「指定された値をACレジスタの下位12ビットへ設定する」と書いていましたが、これは間違いで正しくは「指定された値をACレジスタの下位13ビットへ設定する」でした
      • LAW命令について詳しくはこちらをご覧ください
    • 4.2節の「表4.3: Type 340命令フォーマット紹介 : パラメータモード」の「(ただし現状のOpen-SimHでは特に意味はない)」の脚注で「ty340_lp_int関数は中身が空あるいはprintf()するだけ」と書いていた件について

1.3.4 DaisyOS(仮) v0.1.0

dog010_cover.pngROM版(BOOTH)(上記画像リンク先と同じ)

  • 初版発行日: 2022/12/31 (コミックマーケット101)
  • バイナリ生物学の理論をGB向けに実装してみたものです
  • バイナリ生物学に基づいた独自のデータ構造と状態遷移により、実行バイナリを生物(単細胞生物)として扱います
  • それにより、実行バイナリが持つ機械語の命令列を、細胞分裂時の突然変異による進化で目的の形へ作り変える事ができます
    • このGB実装では突然変異は一部分のみ
  • 詳しくはこちらの紹介ポスター(PDF)をご覧ください

1.3.5 へにゃぺんて活動報告2022年秋号

har22a_cover.pngROM版(BOOTH)(上記画像リンク先と同じ)

  • 初版発行日: 2022/11/06 (レトロクリエイターズ)
  • これ自体がゲームボーイ用自作OS「AMADO」のデモとしてちょっとした画像と実行ファイルが入っています。
  • 今回は小ネタとして乱数を聴くことができる「らんすうかなでーる」を同梱しました。
    • (エセ)乱数を生成しそれをサウンドの入力値として使う、といった事を行うアプリです。ランダムな8ビットピコピコサウンドを聴くことができます。
    • 乱数生成の入力値としてマウスカーソルの座標値を使っていて、十字キーをグリグリすることで乱数に変化を与えることができます。

1.3.6 セガサターン自作シンセサイザー読本

uss4_cover.jpgPDF版(PDFファイル直リンク(表紙画像リンク先と同じ),技術書典オンラインマーケット)     紙版(BEEP)

  • 初版発行日: 2022/08/13 (コミックマーケット100)
  • セガサターン自作シンセサイザーについての技術解説本です
  • セガサターンの音源ICがシンセサイザーだって作れるほどの機能を持っていることをエミュレータのコードで解説しています
  • 追加・訂正情報
    • 本書の中で"MC68EC00"と書いている箇所は全て誤記で、正しくは"MC68EC000"でした

1.3.7 セガサターンとMIDIで通信する本

cssm_cover.jpgPDF版(技術書典オンラインマーケット)(上記画像リンク先と同じ)     紙版(BEEP,とらのあな,メロンブックス)

  • 初版発行日: 2022/01/22 (技術書典12)
  • 実はセガサターンには、当時あったデバイスを使うことで、電子楽器を接続するインタフェースであるMIDIの接続が行えます
  • この本では、それを使ってMIDIキーボードやPCとの通信を試します
  • そして、PCとの通信の応用例として、PCから受信した実行バイナリをメモリへロードして実行するローダを作ってみます
  • 追加情報

1.3.8 セガサターンCDシステムのうすい本

uss2_cover.pngPDF版(技術書典オンラインマーケット)(上記画像リンク先と同じ)     紙版(BEEP,とらのあな,メロンブックス)

  • 初版発行日: 2021/12/31 (コミックマーケット99)
  • セガサターンのCDドライブ周りは実は内部的に独立したシステムになっています
  • この本では、セガサターンのCDシステムを公式で公開している図やエミュレータのソースコードで解説し、実際のCDシステムの制御の様子をエミュレータのログで見ていきます
  • 追加情報

1.3.9 エミュレータのコードを読んでわかるセガサターン

uss_cover.pngPDF版(技術書典オンラインマーケット)(上記画像リンク先と同じ)     紙版(BEEP,とらのあな,メロンブックス)

1.3.10 ゲームボーイOS「AMADO」v0.03

amado_v0.03_version.pngROM版(BOOTH)(上記画像リンク先と同じ)     カートリッジ版(BEEP,とらのあな,メロンブックス)

  • 初版発行日: 2020/12/30 (エアコミケ2)
  • ゲームボーイ上で動作するOS「AMADO」の2度目のバージョンアップです
  • v0.03で、ハード(カートリッジ)の助けもあり、RAM側に読み書き可能なファイルシステムを搭載しました
  • バイナリエディタを追加したので、RAMのファイルシステム上のファイルを編集できます
    • 実行バイナリをバイナリエディタで編集することで、マシン語プログラミング可能!
  • ソースコード
  • 追加情報

1.3.11 ゲームボーイOS「AMADO」で8ビットマシン語入門

i8bmla_cover.pngPDF版(技術書典オンラインマーケット)(上記画像リンク先と同じ)     紙版(BEEP,とらのあな,メロンブックス)

1.3.12 へにゃぺんて活動報告2020年夏号(PDF版)

har2sp_cover.pngPDF版(PDFファイル直リンク(表紙画像リンク先と同じ),技術書典オンラインマーケット)

  • 初版発行日: 2020/09/12 (技術書典9)
  • オンラインとら祭り2020夏で頒布したGBソフト「へにゃぺんて活動報告2020年夏号」のPDF移植版!
  • PDFのフォーマットの勉強として、テキストエディタを使って手書きで作ったPDFです
  • アノテーションをフル活用し、PDFでOSを表現してみました
  • ファイル一覧の画面に表示されるアイコンをクリックすると、それぞれのコンテンツのページへジャンプします
    • そして、右上のXボタンをクリックするとファイル一覧画面へ戻ります
  • 「技術書」であるので、PDFのフォーマットの学習コンテンツとして、ちょっとしたダンジョン攻略ゲームをつけています
    • ヒントを参考にPDFの仕組みを学びながら、このPDF自体を改造して真の出口見つけてください!
  • ソースコード(といっても単に差分管理されたPDF):

1.3.13 へにゃぺんて活動報告2020年夏号

har2s_cover.pngROM版(BOOTH)(上記画像リンク先と同じ)     カートリッジ版(とらのあな)

  • 初版発行日: 2020/08/14 (オンラインとら祭り2020夏)
  • 自作OS等を行っている低レイヤー技術サークル「へにゃぺんて」の最近の活動を紹介するゲームボーイ形式の技術同人誌です!(5画面分のテキストと画像2枚、BGM無し)
  • これ自体がゲームボーイ用自作OS「AMADO」のデモになっています!おまけでライフゲームも同梱!

1.3.14 ゲームボーイOS「AMADO(仮)」v0.01

amado_v0.01_version.pngROM版(BOOTH)(上記画像リンク先と同じ)

  • 初版発行日: 2020/05/10 (コミックマーケット98[中止])
  • ゲームボーイ上で動くOSです
  • 読み取り専用ですが、ファイルシステムを備えていて、同梱のテキストと画像を閲覧できます
  • AMADOへ任意のテキストや画像を組み込むツールも同梱しています
  • ソースコード

1.3.15 シェルスクリプトでゲームボーイプログラミング入門

gbps_cover.pngPDF版(表紙画像リンク先と同じ)     HTML版     紙版(BEEP,とらのあな,メロンブックス)

  • 初版発行日: 2020/05/10 (コミックマーケット98[中止])
  • シェルスクリプトだけでゲームボーイのROMファイルを作る本です。
  • 筆者が開発し使用しているシェルスクリプト製のアセンブラなどを使用して、ステップバイステップで、タイルによる背景描画、キー入力、画面スクロールまでを行います。
  • サンプルコードは↓で公開しています(GitHub)
  • 追加情報

1.3.16 バイナリ生成環境「daisy-tools」実験報告

dtlr_cover.pngPDF版(表紙画像リンク先と同じ)     HTML版     紙版(とらのあな,メロンブックス)

1.3.17 バイナリ生物学入門

ilb_cover.pngPDF版(表紙画像リンク先と同じ)     HTML版     紙版(とらのあな,メロンブックス)

1.3.18 作って分かる!x86_64機械語入門

ix86ml_cover.pngPDF版(表紙画像リンク先と同じ)     HTML版     紙版(とらのあな,メロンブックス)

  • 初版発行日: 2019/09/22 (技術書典7)
  • 一つずつ構文を理解していくことで機械語を書いてみる本です
  • QEMU上でOSレスで動く実行バイナリを書き、CPUを直接制御します
  • サンプルコードは↓で公開しています(GitHub)
  • 追加・訂正情報
    • 「4.3 画面へ1ピクセル描画してみる」(P60)
      • 誤「即値をレジスタ間接で書き込むの場合」→正「即値をレジスタ間接で書き込む場合」
    • 「4.5 ランダム色で塗りつぶしてみる」
      • この節のサンプルプログラムを実行しても真っ暗な画面しか表示されない場合
        • Ctrl-Alt-3でシリアルコンソール画面を確認してみて下さい
        • 「!!!! X64 Exception Type - 06(#UD - Invalid Opcode) CPU Apic ID - 00000000 !!!!」というエラーメッセージが出ていて、RIPが0x110014である場合、rdrand命令を解釈できないことでエラーに陥っています
        • そのような場合は、まずQEMUを実行するホスト側のCPUがrdrand命令に対応しているか確認して下さい。/proc/cpuinfoの「flags:」に「rdrand」があれば対応しています。
        • 対応している場合は、qemu-system-x86_64コマンドに「-cpu host」のオプションを追加するか、「-cpu IvyBridge」のようにrdrand命令に対応したCPUモデル名を明示的に与えると、この問題を回避できる事があります。
        • rdrand命令に対応したCPUはWikipediaの記事が参考になります
        • 「-cpu」オプションで指定可能なモデル名は「qemu-system-x86_64 -cpu help」というコマンドで確認できます
        • (以上、読者の方からの情報でした。ありがとうございます!)

1.3.19 フルスクラッチで作る!x86_64自作OS パート5 てっとりばやくマルチコア

x86jo5_cover.jpgPDF版(表紙画像リンク先と同じ)     HTML版     紙版(とらのあな)

  • 初版発行日: 2019/08/12 (コミックマーケット96)
  • UEFIのサービスを利用してマルチコア処理を手軽に実装する方法を紹介します
  • UEFIを抜けてカーネルへジャンプする以降の内容は一部のUEFIファームウェアでしか実施できないものも含むため参考情報としてご利用ください
  • サンプルコードは↓で公開しています(GitHub)
  • 追加・訂正情報
    • 本文ではUEFIのEFI_MP_SERVICES_PROTOCOLのWhoAmI()が返す値とLocal APIC IDが、同一のプロセッサコアに対しては同じ値であることを想定していますが、ベンダーの実装によっては異なることもあるそうです。(特にハイパースレッディングを無効にして使用している場合)
    • 「1.4 AP もカーネルへジャンプさせる」は非推奨な方法であることが分かりました
      • StartupAllAPsで各APにカーネルへジャンプさせているのですが、その後ExitBootServicesを実行すると、(おそらく大抵のファームウェアでは)APの処理がUEFI内のhltの無限ループへ強制ジャンプさせられてしまうようです
      • UEFIのプラットフォーム初期化部分の仕様には、「ノンブロッキングで実施したAP上の処理は、ExitBootServicesまでに終えていること」と書かれている(*1)ので、(本書の場合、ブロッキングでタイムアウトさせる場合ではありますが)、StartupAllAPs等で実行した処理がExitBootServices後も継続できる事は期待しないほうが良さそうです
      • (*1) 「UEFI Platform Initialization Specification」の「13.4 MP Services Protocol」

1.3.20 フルスクラッチで作る!x86_64自作OS パート4 ぼくらのイーサネットフレーム!

x86jo4_cover.pngPDF版(表紙画像リンク先と同じ)     HTML版     紙版(とらのあな)

  • 初版発行日: 2019/04/14 (技術書典6)
  • ついにNICドライバを実装!
  • PCIからのデバイス情報取得から始め、NICドライバをフルスクラッチ
  • そして、受信はNICが受信したバイナリ列の取得、送信は用意した任意のバイナリ列(オレオレイーサネットフレーム)のNICからの送出、を行います!
  • サンプルコードは↓で公開しています(GitHub)

1.3.21 フルスクラッチで作る!x86_64自作OS パート3 システムコールの薄い本

x86jo3_cover.jpgPDF版(表紙画像リンク先と同じ)     HTML版     紙版(とらのあな)

  • 初版発行日: 2018/12/30 (コミックマーケット95)
  • 「フルスクラッチで作る!」シリーズ5冊目!システムコール!
  • システムコールの仕組みを説明し、実装する本です
  • システムコールを実装することで、カーネル・アプリをバイナリレベルで分離します
  • また、アプリからアプリを呼び出す仕組みとして「バックグラウンド」・「フォアグラウンド」それぞれの仕組みも実装します
  • サンプルコードは↓で公開しています(GitHub)

1.3.22 自作OS自動化のPoCとしての遺伝的MBR

gembr_cover.jpgPDF版(表紙画像リンク先と同じ)     HTML版     紙版(とらのあな)

1.3.23 フルスクラッチで作る!x86_64自作OS パート2 ACPIでHPET取得してスケジューラを作る本

x86jo2_cover.jpgPDF版(表紙画像リンク先と同じ)     HTML版     紙版(とらのあな)

  • 初版発行日: 2018/08/10 (コミックマーケット94)
  • 「フルスクラッチで作る!」シリーズ4冊目!ACPI!HPET!スケジューラ!
  • 2005年頃からPCのチップセットに組み込まれるようになった比較的新しいタイマーであるHPETの使い方を紹介します
  • HPETのハードウェア情報を取得するためにACPIの使い方から紹介します
  • HPETで割り込み駆動の周期タイマーの設定方法まで紹介し、それを使ってスケジューラを実装します!
  • サンプルコードは↓で公開しています(GitHub)

1.3.24 フルスクラッチで作る!x86_64自作OS

x86jo_cover.jpgPDF版(表紙画像リンク先と同じ)    HTML版    EPUB版(BOOK☆WALKER)    紙版(とらのあな)

  • 初版発行日: 2018/04/22 (技術書典4)
  • 「フルスクラッチで作る!」シリーズ3冊目!前著までの内容で作ったブートローダーを使い、その上で動くカーネルとアプリを作る!
  • カーネルとしては、以下を抽象化してアプリへ提供するのみのものです
    • フレームバッファ(画面表示)
    • キーボードコントローラ(キーボード入力)
    • 割り込みコントローラ(割り込み)
    • ファイルシステム(簡易RAM FS)
    • そして、それらを使うアプリとして「画像ビューア」を作ります
  • ブートローダーは前著までの内容で作ったものを使うため、この本から読みはじめてもOK
    • 一部ブートローダーを作る上では説明が不足していた箇所は付録に書いています
  • サンプルコードは↓で公開しています(GitHub)

1.3.25 フルスクラッチで作る!UEFIベアメタルプログラミング パート2

ubmp2_cover.jpgPDF版(表紙画像リンク先と同じ)    HTML版    EPUB版(BOOK☆WALKER)    紙版(とらのあな)

1.3.26 フルスクラッチで作る!UEFIベアメタルプログラミング

cover.jpgPDF版(表紙画像リンク先と同じ)    HTML版    EPUB版(BOOK☆WALKER)    紙版(とらのあな)

1.3.27 Ohgami's Commentary on OS5

cover_x240.pngPDF版(表紙画像リンク先と同じ)    HTML版    EPUB版(BOOK☆WALKER)    紙版(とらのあな)

1.4 出展情報

1.4.1 DONE 2019/11/01: 技術同人誌再販Night★#5

  • 11/1(金) 18:00〜21:00で開催された技術同人誌再販Night★#5でブース出展しました!
  • 技術書典7の新刊や、それ以前の既刊の再販です

1.4.2 DONE 2019/09/22: 技術書典7

  • 9/22(日)の技術書典7に「配置:く50D」でブース出展します! gijutsushoten7_circlecut.png
  • 新刊は機械語を手書きする本「作って分かる!x86_64機械語入門」です
  • 詳しくはブログ記事をご覧下さい

1.4.3 DONE 2019/08/12: コミックマーケット96

  • コミックマーケット96の4日目(8/12(月))に"南リ18b"で出展します! c96_circlecut.png
  • 新刊は、自作OS向けにてっとりばやくマルチコアを実現する本です x86jo5_cover.jpg
    • UEFIの機能を活用することでアセンブラを書くこと無く2つ目以降のコアを立ち上げ、カーネルへジャンプ
    • カーネルでは、今度はUEFI無しでマルチコアを制御
    • システムコールにより指定したコアで任意のアプリを実行できるようにします
    • 目次など詳しくはブログ記事をご覧ください!
  • なお、これまでの既刊もすべて持っていきます!
  • 既刊同様、PDF/HTML版は頒布日以降、このページで公開します

1.4.4 DONE 2019/06/01: オープンソースカンファレンス2019 Hokkaido

1.4.5 DONE 2019/05/13: 技術同人誌再販Night★#4

  • 5/13(月) 18:00〜21:00で開催された技術同人誌再販Night★#4でブース出展しました!
  • 技術書典6の新刊や、それ以前の既刊の再販です

1.4.6 DONE 2019/05/03: 埼玉実業実学書典(銭けっと)

1.4.7 DONE 2019/04/14: 技術書典6

  • 4/14(日)の技術書典6に「配置:う37」でブース出展します! gijutsushoten6_circlecut.png
  • 新刊は自作NICドライバ本「ぼくらのイーサネットフレーム!」です
  • 詳しくはブログ記事をご覧下さい

1.4.8 DONE 2019/02/24: 第11回 秋コレ

  • 2/24(日)に秋葉原UDXで開催された第11回 秋コレに「配置:し05」でブース出展しました!
  • 前日に出展していたOSC2019Tokyo/Springと同様の出展内容で同人誌頒布と自作OSデモを行っていました

1.4.9 DONE 2019/02/23: オープンソースカンファレンス2019 Tokyo/Spring

1.4.10 DONE 昨年以前

  1. DONE 2018/12/30: コミックマーケット95
    • コミックマーケット95の2日目(12/30(日))に"東テ55a"で出展します! c95_circlecut.png
    • 新刊は「システムコールの薄い本」で、サークルカットでは「x86_64自作OS パート4」と書いていますが、前回の技術書典でこのシリーズとは別の本を出したので、今回でパート3です x86jo3_cover.jpg
      • システムコールの仕組みを紹介し、実装してみる本です
      • システムコールにより、カーネルとアプリをバイナリレベルで分離できるようになります
        • これでいよいよ「OS」と呼んでも良い感じになってきました
      • アプリからアプリを呼ぶ仕組みも、「フォアグラウンド」・「バックグラウンド」のそれぞれで実装します
      • 目次等、詳しくはブログ記事をご覧ください!
    • なお、これまでの既刊もすべて持っていきます!
    • 既刊同様、PDF/HTML版は頒布日以降、このページで公開します
  2. DONE 2018/12/04: 技術同人誌再販Night★#3
    • 12/4(火) 18:00〜21:00で開催された技術同人誌再販Night★#3でブース出展しました!
    • 技術書典5の新刊や、それ以前の既刊の再販です
  3. DONE 2018/10/27-28: オープンソースカンファレンス2018 Tokyo/Fall
  4. DONE 2018/10/08: 技術書典5

    10/8(月・祝)の技術書典5に"お07"でブース出展しました!

    gijutsushoten5_circlecut.png

    ↓「自作OS自動化のPoCとしての遺伝的MBR」という本を出しました!

    gembr_cover.jpg

    内容や目次、表紙等、詳しくはブログ記事をご覧ください!

    既刊も持っていきます!

  5. DONE 2018/09/09: 第10回 秋コレ
    • 9/9(日)に秋葉原UDXで開催された第10回 秋コレに「配置:れ16」でブース出展しました!
    • コミックマーケット94の新刊や、それ以前の既刊の再販です
  6. DONE 2018/09/03: 技術同人誌再販Night★#2
    • 9/3(月) 18:00〜21:00で開催された技術同人誌再販Night★#2でブース出展とLTしました!
    • コミックマーケット94の新刊や、それ以前の既刊の再販です
    • LTは「フルスクラッチ自作OSのススメ」というタイトルで当サークルでの「フルスクラッチ」の定義と、ネタとして「日本語シェル」の紹介を行いました
  7. DONE 2018/08/10: コミックマーケット94
    • コミックマーケット94の1日目(8/10(金))に"西め42b"で出展します! c94_circlecut.png
    • 新刊は「フルスクラッチで作る!x86_64自作OS パート2 ACPIでHPET取得してスケジューラを作る本」(過去最長タイトル)です! x86jo2_cover.jpg
      • 2005年頃からPCのチップセットに組み込まれるようになった比較的新しいタイマーであるHPETの使い方を紹介します
      • HPETのハードウェア情報を取得するためにACPIの使い方から紹介します
      • HPETで割り込み駆動の周期タイマーの設定方法まで紹介し、それを使ってスケジューラを実装します!
      • 目次等、詳しくはブログ記事をご覧ください!
    • なお、これまでの既刊もすべて持っていきます!
    • 既刊同様、PDF/HTML版は頒布日以降、このページで公開します
  8. DONE 2018/07/07: オープンソースカンファレンス2018 Hokkaido
  9. DONE 2018/07/02: 技術同人誌再販Night★
    • 7/2(月)の技術同人誌再販Night★でブース出展します!
    • 技術書典4の新刊の再販や、過去のすべての同人誌も持っていきます!
  10. DONE 2018/04/22: 技術書典4

    4/22(日)の技術書典4に"け52"でブース出展します!

    gijutsushoten4_circlecut.png

    ↓「フルスクラッチで作る!x86_64自作OS」という本を出します!

    x86jo_cover.jpg

    • 「フルスクラッチで作る!」シリーズ3冊目!前著までの内容で作ったブートローダーを使い、その上で動くカーネルとアプリを作る!
    • カーネルとしては、以下を抽象化してアプリへ提供するのみのものです
      • フレームバッファ(画面表示)
      • キーボードコントローラ(キーボード入力)
      • 割り込みコントローラ(割り込み)
      • ファイルシステム(簡易RAM FS)
      • そして、それらを使うアプリとして「画像ビューア」を作ります
    • ブートローダーは前著までの内容で作ったものを使うため、この本から読みはじめてもOK
      • 一部ブートローダーを作る上では説明が不足していた箇所は付録に書いています

    目次などはブログ記事をご覧ください!

    既刊も持っていきます!

  11. DONE 2017/12/29: コミックマーケット93

    1日目(12/29(金))のLinuxSearchers(LSS)様の「Linux USER Manizx 2017冬号」へ、「UEFIで始める Linux From Scratch」を寄稿しました!

    当日は売り子のお手伝いもしてました!

  12. DONE 2017/10/22: 技術書典3

    10/22(日)の技術書典3に"か13"でブース出展します!

    gijutsushoten3_circlecut.png

    表紙・裏表紙画像や目次などはブログ記事をご覧ください!

    ubmp2_cover.jpg

  13. DONE 2017/09/09-10: オープンソースカンファレンス2017 Tokyo/Fall
  14. DONE 2017/08/11: コミックマーケット92
    • 1日目(8/11(金))に"東た27b"で出展します!

      c92_circlecut.png

    • 新刊: フルスクラッチで作る!UEFIベアメタルプログラミング
    • 既刊の"Ohgami's Commentary on OS5"も頒布します
    • 既刊同様、PDF版は頒布日以降にこのページで公開します
    • 目次や表紙についてはブログ記事を見てみてください
  15. DONE 2017/07/15: オープンソースカンファレンス2017 Hokkaido
  16. DONE 2017/04/29: 超技術書典
  17. DONE 2017/04/09: 技術書典2

1.5 発表情報

1.5.1 DONE 2024/03/10: オープンソースカンファレンス2024 Tokyo/Spring

1.5.2 DONE 2024/01/19: レトロゲーム勉強会#09

1.5.3 DONE 2023/12/03: レトロクリエイターズ2023

1.5.4 DONE 2023/10/21: オープンソースカンファレンス2023 Tokyo/Fall

1.5.5 DONE 2023/09/30: オープンソースカンファレンス2023 Online/Fall

1.5.6 DONE 2023/09/02: セキュリティ・キャンプアフターイベント

  • 9/2(土)のセキュリティ・キャンプアフターイベントでLT発表しました
  • LTタイトル:去年「バイナリ生物学」で今年「PDP-7」だったのはなぜなのか?

1.5.7 DONE 2023/07/21: レトロゲーム勉強会#08

1.5.8 DONE 2023/06/17: オープンソースカンファレンス2023 Online/Hokkaido

1.5.9 DONE 2023/03/11: オープンソースカンファレンス2023 Online/Spring

1.5.10 DONE 2023/01/13: レトロゲーム勉強会#07

1.5.11 DONE 2022/11/26: オープンソースカンファレンス2022 Online/Fukuoka

1.5.12 DONE 2022/11/19: 小江戸らぐ 11月のオフな集まり(第244回)

1.5.13 DONE 2022/08/09-10: セキュリティ・ネクストキャンプ2022 オンライン

1.5.14 DONE 2022/06/25: オープンソースカンファレンス2022 Online/Hokkaido

1.5.15 DONE 2022/06/23: レトロゲーム勉強会#06

1.5.16 DONE 2022/03/12: オープンソースカンファレンス2022 Online/Spring

1.5.17 DONE 2022/01/29: オープンソースカンファレンス2022 Online/Osaka

1.5.18 DONE 2021/10/23: オープンソースカンファレンス2021 Online/Fall

1.5.19 DONE 2021/08/29: オープンソースカンファレンス2021 Online/Aizu

1.5.20 DONE 2021/08/28: オープンデベロッパーズカンファレンス2021 Online

1.5.21 DONE 2021/08/11: レトロゲーム勉強会#05

1.5.22 DONE 2021/06/26: オープンソースカンファレンス2021 Online/Hokkaido

1.5.23 DONE 2021/04/18: 第25回 自作OSもくもく会オンライン

1.5.24 DONE 2021/04/17: Open Source unConference 2021 Online/Spring

1.5.25 DONE 2020/12/30: 第23回 自作OSもくもく会オンライン

1.5.26 DONE 2020/10/25: オープンソースカンファレンス2020 Online/Aizu

1.5.27 DONE 2019/11/24: オープンソースカンファレンス2019 Tokyo/Fall

1.5.28 DONE 2019/09/21: 小江戸らぐ 9月のオフな集まり(第206回)

  • 9/21(土)の小江戸らぐ 9月のオフな集まり(第206回)で発表しました
  • 内容は技術書典7新刊である「x86_64機械語本」の紹介です
  • 冒頭の無限ループプログラムからその機械語表現を理解するところまでを紹介しました

1.5.29 DONE 昨年以前

  1. DONE 2018/12/08: 小江戸らぐ 12月のオフな集まり(第197回)
  2. DONE 2018/10/28: オープンソースカンファレンス2018 Tokyo/Fall
  3. DONE 2018/04/14: Open Source UN-Conference 2018 Kawagoe
  4. DONE 2018/02/24: オープンソースカンファレンス2018 Tokyo/Spring
  5. DONE 2017/12/02: Cybozu Tech Conference 2017
  6. DONE 2017/10/29: 小江戸らぐ 10月のオフな集まり(第183回)
  7. DONE 2017/09/18: 第8回 自作OSもくもく会
  8. DONE 2017/07/22: 第13回 カーネル/VM探検隊&懇親会@東京
  9. DONE 2017/06/18: Debian9 "Stretch" リリースパーティ in Tokyo
  10. DONE 2017/05/09: Tech Pub vol.3―技術書典ふりかえりLT大会!
  11. DONE 2017/04/15: Open Source UN-Conference 2017 Kawagoe
  12. DONE 2017/04/13: 独自OS委員会第一回公聴会
  13. DONE 2017/03/04: わんくま同盟 札幌勉強会 #1
  14. DONE 2016/12/17: CLR/H #103 ~ クリスマス オブ ザ デッド ~
  15. DONE 2016/12/10: Mini Debian Conference Japan 2016
    • 12/10(土)のMini Debian Conference Japan 2016でLTしました!
    • "フルスクラッチ自作OS(OS5)の紹介"というタイトルで、OS5の紹介です
    • 発表スライドはこちら
  16. DONE 2016/10/22: ゆるくLTをしよう勉強会@旭川
    • 10/22(土)のゆるくLTをしよう勉強会@旭川でLTしました!
    • OS5追加機能紹介の予定でしたが、高校生の方ばかりだったので、「どうすれば自作OSができるのか」という話へ切り替えました
      • 「"自作OS"といっても魔法でも何でも無く、より下のレイヤーに居るICというハードウェアに対して適切にお願いをするプログラムを書くだけ」という話をしました
      • そして時間を超過しました。。
  17. DONE 2016/07/02: CLR/H #clrh101 ~日本の夏、MR の夏~
  18. DONE 2016/06/18: オープンソースカンファレンス2016 Hokkaido
  19. DONE 2016/04/23: CLR/H #clrh99 ~サクラサク~
  20. DONE 2016/04/08: 大人の放課後シリーズ#12:『【2000行弱!】x86用自作カーネルの紹介』

1.7 連絡先

E-Mail
yuma#ohgami.jp (#を@へ変更してください)
GPG Key

0xF12327D6 (public key)

pub   4096R/F12327D6 2016-06-18
      Key fingerprint = AC8A A096 31F1 C1F7 3502  C9CA B2F2 C10C F123 27D6
uid                  Yuma Ohgami <yuma@ohgami.jp>
sub   4096R/1D5816B0 2016-06-18

1.8 その他

  • 旧姓: 荒川

2 自作OS

2.1 OS5

  • 完全フルスクラッチで独自に作成した初めてのOS
  • ブートローダー・カーネル・アプリ全て含めて3000行程度のコンパクトなOS
  • 主にカーネルの勉強として作っていて、カーネルが持つべき機能一つ一つを最低限の機能でシンプルに実装している
  • アプリはカーネルのテスト用程度のもので、簡単なCUIのみ
対応システム QEMU
対応CPU x86(32ビット)
対応System BIOS レガシーBIOS
ソフトウェア構成 Ohgamis-Commentary-on-OS5/aboutos5.html#os5_struct
  ※ ブート後、カーネル・アプリ動作中の状態
最初のコミット 2015-02-08
ソースコード リアルモードで動作する最低限のプログラム:
  https://github.com/cupnes/minimum_real_mode
  ↑から分岐:
  https://github.com/cupnes/os5/
まとめページ http://funlinux.org/os5/
このOSに関する同人誌 Ohgami's Commentary on OS5
動作デモ ラズパイ上のQEMU(i386)で動作させているデモ:
  https://youtu.be/J5AMeTsV_Fc

2.2 poiOS(旧:OS6)

  • UEFIファームウェア側の機能を直接呼び出すだけでOSっぽいものが作れるのでは?という発想で作ったOS
対応システム QEMU, PC
対応CPU x86(64ビット)
対応System BIOS UEFI
ソフトウェア構成 UEFI-Bare-Metal-Programming/intro.html#poios_arch
最初のコミット 2017-01-01
ソースコード UEFIベアメタルプログラミングを色々試す:
  https://github.com/cupnes/bare_metal_uefi
  OS6としてリポジトリ化:
  https://github.com/cupnes/os6
  同人誌のサンプルとして作成:
  https://github.com/cupnes/c92_uefi_bare_metal_programming_samples
  後に単体でリポジトリ化:
  https://github.com/cupnes/poios
このOSに関する同人誌 フルスクラッチで作る!UEFIベアメタルプログラミング」,
  フルスクラッチで作る!UEFIベアメタルプログラミング パート2
動作デモ その① シェル上でファイルアクセス:
  https://youtu.be/_Y3BebQdb5Y
  その② 簡易GUIでファイルアクセス:
  https://youtu.be/ho--4bYXQ8E
  その③ Linuxブート:
  https://youtu.be/q0Mw9KVbIqY

2.3 ゆあOS

  • 自分の64ビットPCを直接制御したいという想いで作っているOS
  • カーネルの抽象的な機能の作り込みより、色々なデバイスを動かしてみる事を優先している
    • HTTP/0.9までのプロトコルスタックを実装してみたり、マルチコアを実験したりしている
  • 主にカーネル・アプリが新規作成部分で、ブートローダーはpoiOSをベースに作成したpoibootを使用
  • UIとして、ゲーム風UIを搭載
対応システム QEMU, PC
対応CPU x86(64ビット)
対応System BIOS UEFI
ソフトウェア構成 x86_64-Jisaku-OS-4/intro.html#x86jo4_arch
  ※ ブート後、カーネル・アプリ動作中の状態
最初のコミット 2018-03-20
現在の開発リポジトリ OS:
  https://github.com/cupnes/yuaos
  ※ ブートローダー・カーネル・ユーザーランドをまとめてディスクイメージを作成
  ブートローダー:
  https://github.com/cupnes/poiboot
  カーネル:
  https://github.com/cupnes/yuakernel
  ユーザーランド:
  https://github.com/cupnes/yuaapps
過去の経緯 同人誌のサンプルとして作成:
  https://github.com/cupnes/x86_64_poios_samples
  yuaosという単体のリポジトリ化
  (ブートローダー・カーネル・ユーザーランド全部セット)
  yuaos,poiboot,yuakernel,yuaappsというリポジトリへ分解
  (旧yuaosリポジトリはyuakernelへリネーム)
このOSに関する同人誌 フルスクラッチで作る!x86_64自作OS」,
  フルスクラッチで作る!x86_64自作OS パート2 ACPIでHPET取得してスケジューラを作る本」,
  フルスクラッチで作る!x86_64自作OS パート3 システムコールの薄い本」,
  フルスクラッチで作る!x86_64自作OS パート4 ぼくらのイーサネットフレーム!」,
  フルスクラッチで作る!x86_64自作OS パート5 てっとりばやくマルチコア
動作デモ その① ゲーム風UI、画像ビューア:
  https://youtu.be/LHDmrfDM7xc
  その② HTTP/0.9 GETデモ:
  https://youtu.be/BCTyEREMF6E

2.4 AMADO

  • ゲームボーイ向けOS
  • 一つの窓を使いまわすシングルタスクOS
  • バックアップRAMを使うことで、我が家のOSとしては初めて読み書き可能なファイルシステムを備えたOSになった
  • また、バイナリエディタを搭載しマシン語開発可能になったことで、初めてのセルフ開発可能OSにもなった
対応システム ゲームボーイ
対応CPU LR35902
最初のコミット 2020-03-27
ソースコード https://github.com/cupnes/sh_gbos
このOSに関する同人誌 シェルスクリプトでゲームボーイプログラミング入門」,
  ゲームボーイOS「AMADO」で8ビットマシン語入門
このOSに関する同人作品 ゲームボーイOS「AMADO(仮)」v0.01」,
  へにゃぺんて活動報告2020年夏号(v0.02)」,
  ゲームボーイOS「AMADO」v0.03
開発中のデモ カートリッジRAM保存デモ:
  https://twitter.com/yohgami/status/1322867723106332672
  バイナリエディタデモ:
  https://twitter.com/yohgami/status/1329456768779423744
  カートリッジRAMリストアデモ:
  https://twitter.com/yohgami/status/1332704263617662979

2.5 DaisyOS

  • バイナリ生物学に基づくOS
  • バイナリが生き物のように振る舞えるシステムをOSとして提供する

2.5.1 GB版

3 ベアメタルプログラミング

3.1 UEFIベアメタルプログラミング

  • UEFI+x86_64でのOS自作をフルスクラッチでやれるよう、まずはUEFIの勉強としてベアメタルプログラミングをしています
  • 勉強した結果 => OS6 => 同人誌向けに作り直し => poiOS

3.1.1 ソースコードリポジトリ

3.2 ARM64ビット(AArch64)ベアメタルプログラミング

  • AArch64を試したくRaspberry Pi 3を買ったら、Raspbianは32ビットだったのでベアメタルプログラミングしました

3.2.1 ソースコードリポジトリ

3.4 AGC(Apollo Guidance Computer)ベアメタルプログラミング

3.4.2 その他

  • Code 2016 in 定山渓温泉にて、Virtual AGCのDSKYでGit buttonをつくりました
  • その場でシェル芸との組み合わせででっち上げただけなので、残っておらず。。
    • というより、単体のプログラムというものでもない

3.5 6502(ファミコン)ベアメタルプログラミング

  • アセンブル/逆アセンブルの確認まで

3.6 メガドライブベアメタルプログラミング

4 Linux

4.1 kernel

4.1.6 file system

5 Emacs

5.2 org-html-themes

6 電子工作

著者: 大神 祐真 (Ohgami Yuma)

Created: 2024-03-22 金 00:46

Validate