uchan note

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

自作OS

OS自作入門の出版を振り返る

この記事は 自作OS Advent Calendar 2021 の 4 日目の記事として書かれました。 人生の一大事 今年は私にとって大きな出来事がありました。それは出版と結婚です。この記事では前者について述べます。 2021 年 3 月に ゼロからの OS 自作入門 を出版しました…

OS自作ゼミの紹介 - セキュリティ・キャンプ全国大会 Yトラック

このページはセキュリティ・キャンプ全国大会 2021 の集中コース「OS 自作ゼミ」の紹介ページです。 参加費無料で講義を受けることができますので、22 歳以下の方は是非応募してください。 (本記事は随時更新するかもしれません。特に 4 月中は更新頻度が高…

『ゼロからのOS自作入門』に込めた思い

2021 年 3 月 22 日に『ゼロからの OS 自作入門』を出版する予定です。 本書は OS を手作りする本で、現代のパソコンでちゃんと起動する点が特長です。 15 年前の 2006 年に出版された『30 日でできる!OS 自作入門』を読んで育った私(uchan)が その後継と…

セキュリティ・キャンプ 2020 の OS 開発ゼミまとめ

この記事は 自作OS Advent Calendar 2020 の 6 日目の記事です。 セキュリティ・キャンプ とは毎年夏に開催される,合宿形式の勉強会です。 情報セキュリティ分野で活躍する講師が受講生にみっちりと講義や演習を実施します。 2020 年は新型コロナウイルスの…

東工大での自作OSの講義を担当します

この記事は 自作OS Advent Calendar 2020 の2日目の記事です。 概要 uchan は東京工業大学で特任助教をしておりますが,なんと自作 OS の授業をさせていただけることになりました。 残念ながら今年度限りの開講ですが,なるべく楽しい授業を提供したいと思い…

MOVZX r64, r/m8は何のために存在するのか分からない

MOVZX は,レジスタやメモリの値を,それよりビット数の大きいレジスタに 0 拡張しつつコピーする x86-64 の命令です。 その中の MOVZX r64, r/m8 の存在意義が分からなかったので,どなたかご存知の方は教えてください。

技術書典応援祭 自作OS関連の頒布物一覧

技術書典 応援祭 が 3 月 7 日に開始しましたね。 サークル単位の頒布物一覧を探しにくいようなので,サークル「bitnos」の頒布物をまとめておきます。 この記事を読む方は自作 OS に興味があると思うので,他サークルの自作 OS 関連物も後半にまとめていま…

人々が OS を自作するきっかけは何だろう

OS 自作はとてもニッチな趣味ですが,ときどきやっている人を見かけます。 「OS を自作してみよう」と思うまでには,まずコンピュータに触れる経験が必要で,加えて OS の存在に気付く必要があるはずです。 業務命令で OS を自作するようなケースを除けば,O…

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

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

MikanOSの歴史

この記事は 自作 OS アドベントカレンダー 2019 の 2 日目の記事です。 MikanOS 筆者(uchan_nos)はここ数年,教育用 OS である MikanOS(ミカノス)を作っています。 MikanOS は「未完」と「蜜柑」を掛けた名前です。 MikanOS は教育用 OS と言っている通…

「asm volatile」におけるvolatileの効果

インラインアセンブラは低レイヤプログラミングをする人にとっては有名な機能ですが,私はなぜ「volatile」を付ける必要があるのかイマイチ分かりませんでした。いままで「volatile」を付けずとも意図通り動いていたからです。しかし今回,「volatile」を付…

FIFOバッファ

この記事はプログラミング,とりわけ自作OSに興味を持った計算機科学初心者の方に向け,FIFOバッファの紹介,および具体的な実装例を紹介するものです. FIFOバッファとは何か,自作OSでの応用例,ナイーブな実装例と性能を多少考慮した改良例を紹介します.

uchanの自作OS的な自分史

筆者(uchan)は現在,自作OSの分野で精力的に活動しています.そんな筆者も最初から知識が有ったわけではありません.当然ですが最初は初心者でした.このエッセイは,筆者の自作OS人生を振り返り,何のきっかけで自作OSに足を踏み入れ,どうやって成長した…

ClangdでC++ソースコードを補完する際にコンパイルオプションを指定する方法

この記事では Clangd を使って C++ のソースコードを補完する際に独自のコンパイルオプションを指定する方法を説明します.

QEMUのトレース機能でOSのデバッグを支援する

この記事では QEMU が持つ「トレース」および DPRINTF マクロの機能を有効化して OS 開発のデバッグに役立てる方法を説明します. 自作 OS アドベントカレンダー 2018 の 1 日目の記事です. OS,特にハードウェアを制御するドライバの開発はなかなか苦労す…

【技術書典5】「C++でできる!OS自作入門」を出します(ダウンロード頒布有)

大人気の技術書オンリーの同人誌即売会「技術書典 5」が、2018/10/08(月・祝)に池袋サンシャインシティで開かれます。 秋葉原 UDX ではないのでご注意を! 今回は「C++でできる!OS自作入門」を出しますので、そのお知らせです。 頒布情報 日時 2018 年 10…

Rust より C++ が優れている 12 のポイント

若干釣りタイトルですが,私が「Rust にはない C++ の良さ」を募ったところ,12 個ほどの優れている点が報告されたので,まとめてみます. 背景 私は 2018/10/08 開催予定の技術書典5で,『C++でできる!OS自作入門』と題して,Clang+LLD で C++ を使って OS…

セキュリティキャンプ 2018「フルスクラッチ OS を書こう!」テーマまとめ

セキュリティキャンプ 2018 全国大会の集中開発コースの講師をやったので報告です. 「フルスクラッチ OS を書こう!」というテーマで,自作 OS を一から作るお手伝いをしました. 「フルスクラッチ OS を書こう!」の概要 フルスクラッチと言いつつキャンプ…

SSD 周りの用語まとめ(M.2,PCIe,SATA,AHCI,NVMe)

SSD 関連の用語で違いがよく分からなかったりしませんか? 特に,M.2,PCIe(PCI Express),SATA(Serial ATA),AHCI,NVMe(NVM Express)などの用語が飛び交っていて,筆者も少しあいまいだったので,今回調査してまとめてみました. 概要 M.2 は「フォ…

OS自作入門の入門

この記事では OS 自作の最初の一歩の部分を紹介します.OS 開発を始める前に雰囲気をつかみたい,という方に向けて書いています. 「セキュリティキャンプ 2018」の「OS 開発ゼミ・フルスクラッチ OS を書こう!」の補足資料でもあります.

OS を作る!? 夏の集中開発ゼミ開催!

2018 年の夏季 3 日間で集中して OS を開発するイベントのご紹介です。なんと参加費、交通費、宿泊費など無料なので、学生さんは奮ってご参加ください! 概要 オペレーティングシステム(OS)は IT システムを構成する重要な要素です。しかし OS の中身を知…

【技術書典4】USB 3.0 ホストドライバ自作入門を出します(ダウンロード頒布有)

大人気の技術書オンリーの同人誌即売会「技術書典 4」が、2018/04/22(日)に秋葉原 UDX で開かれます。 今回は「USB 3.0 ホストドライバ自作入門」を出しますので、そのお知らせです。 頒布情報 日時 2018 年 4 月 22 日(日) 場所 秋葉原 UDX アキバ・ス…

x86-64 モードのプログラミングではスタックのアライメントに気を付けよう

x86-64 モードというのは x86 系 CPU の動作モードの一つです.64 ビットモードとかロングモードと呼ばれることもあります. x86-64 モードではページングが必須だったり,セグメント CS や DS に設定するベースアドレスやリミットが無視されるなど,CPU 自…

OS 自作に便利な C++ の機能 10 選(後編)

自作 OS Advent Calendar 2017 11 日目の記事です(盛大に遅刻しました). 1 日目の記事 に引き続き,OS を書く際に便利な C++ の機能を紹介していきます.

レガシー BIOS が 2020 年で消えたあとの世界

11 月に入って,Intel が 2020 年までにレガシー BIOS サポートを完全に消そうとしているというニュースが飛び込んできました. www.itmedia.co.jp OS を自作する場合はいまだに BIOS に頼った起動コードを書くことが多いと思います. このニュースが意味す…

OS 自作に便利な C++ の機能 10 選(前編)

自作 OS Advent Calendar 2017 1 日目の記事です. 筆者が大好きな C++ の機能の中で,OS を書く際に便利なもの 10 個を紹介する予定です.

UEFI + iPXE で自作 OS をネットワーク起動する

概要 開発マシン上に置いた自作 OS のカーネルを,ネットワーク経由でターゲットマシンに読み込ませ,起動させるやり方についての記事です. ディスクイメージをネットワークブートする - Raphine Project の記事を大いに参考にしました.Raphine Project の…

【技術書典3】システムプログラミングハンドブックを出します(ダウンロード頒布有)

大人気の技術書オンリーの同人誌即売会「技術書典3」が、10/22(日)に秋葉原 UDX で開かれます。 前回の技術書典2ではLinuxカーネルモジュール自作入門を出しました。 今回は「システムプログラミングハンドブック」を出しますので、そのお知らせです。 頒…

Newlibビルドメモ

Newlibをclangを使って自作OS向けにビルドしたメモ 環境:Ubuntu 16.04、clang 3.8 Newlibバージョン:d6cac3e1da1a117f8a93b91371f3f0a5c071219f Newlibはなぜか、host=targetでconfigureしてしまうと何もビルドが走らない。 たとえホスト環境と同じ環境で…

自作OS Advent Calendar 2016 目次

これは 自作 OS Advent Calendar 2016 の 25 日目の記事です。 1 日目から 24 日目までの記事をまとめた目次になっています。 それぞれの記事のURLの後に書いてある一言紹介は、uchanによるものです。 記事の著者さんに確認を取っておらず、もしかしたら誤っ…