uchan note

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

osdev-jpとしてOSCに出展しました!

OSC(オープンソースカンファレンス)2018 Tokyo/Fallというイベントに、OS開発コミュニティ"osdev-jp"として出展しました。osdev-jpとしては初の出展でしたので、記念として記事を書いています。

【技術書典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 を書こう!」の概要 フルスクラッチと言いつつキャンプ…

「30 日でできる!OS 自作入門」のような段階的に進展するプログラムについての解説書の執筆を Git で支援する

プログラムについての解説書を Git を用いて執筆する方法の提案です. まえがき プログラミングに関する解説書には大きく分けて 2 つの系統があります. 1 つはテーマごとにサンプルプログラムを提示して解説するもの,もう 1 つは特定のプログラムの各部分…

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 アキバ・ス…

seccamp2018

このページはセキュリティキャンプ全国大会 2018 の集中開発コース「OS 開発ゼミ」の紹介ページです. OS 開発ゼミ 基本情報 OS 開発ゼミの基本的な情報は以下の通りです。 イベント:セキュリティキャンプ全国大会 2018 コース:集中開発コース トラック:…

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

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

How to reset NVRAM of MinnowBoard Turbot

This article expresses how to reset a NVRAM of a MinnowBoard Turbot. MinnowBoard Turbot is a x86_64 board for embedded use. Why this article is useful Enabling fast boot in BIOS setup utility will block you to enter to the utility again. Y…

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

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

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

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

mdadm の write-intent bitmap と bad block log を競合させてみる

本記事は Linux Advent Calendar 2017 の 4 日目の記事です. 概要 Linux のソフトウェア RAID の機能を管理するための mdadm コマンドにまつわるバグの再現実験を行います. そのバグとは,次の記事で紹介されている「バグ 1」のことです. blog.cybozu.io

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

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

はてなブログで画像タグが展開されないバグの検証テスト記事

画像タグを張りつける条件によってはタグが展開されないことを確認するテスト.以下の画像をサンプルとして使う スペースによるコードブロック の後だとなぜか展開されない. [f:id:uchan_nos:20171126114150p:plain:w100] 2枚貼っても展開されない. [f:id:…

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してしまうと何もビルドが走らない。 たとえホスト環境と同じ環境で…

UEFI Memory Map メモ

UEFI で得られる Memory Map の実例。 機種:qemu-system-x86_64 Index Type PhysicalStart VirtualStart NumberOfPages Attribute 0 3 EfiBootServicesCode 00000000 00000000 1 F 1 7 EfiConventionalMemory 00001000 00000000 9F F 2 7 EfiConventionalMe…

x86 OS自作ゼミの進め方

セキュリティ・キャンプ2017のx86 OS自作ゼミの進め方、最大限の成果を出す方法について思うところを書きます。 3日間は短い! x86 OS自作ゼミは3日間しかありません(それでもセキュリティ・キャンプの中では最長なのですが)。OS自作という壮大なテーマに…

seccamp2017

x86 OS自作ゼミ 基本情報 x86 OS自作ゼミの基本的な情報は以下の通りです。 タイトル:x86 OS自作ゼミ トラック:言語やOSを自作しよう 時間帯:3日間連続 必要機材:PCのみ 事前学習:あり(詳しくは後述) x86 OS自作ゼミ 概要 講師がサポートしつつ、世界…

【技術書典2】Linuxカーネルモジュール自作入門を出します(ダウンロード販売有)

皆さんは 技術書典2 というイベントをご存知でしょうか。2017年4月9日に秋葉原で開催される、技術書オンリーの同人誌即売会です。 この記事では、技術書典2のために書いた 「Linuxカーネルモジュール自作入門」 の目次をご紹介します。最後にダウンロード販…

自作OS Advent Calendar 2016 目次

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

はりぼてOSでELFなアプリを起動する

これは 自作 OS Advent Calendar 2016 の 18 日目の記事です。 概要 『30 日でできる!OS 自作入門』 の「はりぼて OS」が対応している実行可能形式は HRB 形式です。 HRB という名の通り「はりぼて OS」独自の形式で、.text、.data、.bss セクションに相当…

Windows で GCC 6.2.0 をビルドするメモ

これは 自作 OS Advent Calendar 2016 の 8 日目の記事です。 概要 現時点で最新バージョンの GCC 6.2.0 を Windows 上でビルドするメモです。 このメモでは、i386-elf をターゲットにした GCC を作ります。 コンパイラ本体のみが対象で、標準ライブラリ等は…

レベル変換の仕組み(オームの法則からMOS-FETを使ったレベル変換回路まで)

レベル変換 レベル変換とは、電圧の異なる信号線をつなぐ際に電圧を変換することです。 例えば Raspberry Pi という小さな Linux ボードコンピュータの電源電圧は 3.3V です。 そのため GPIO の入出力電圧も 3.3V となっており、電子工作でよくある 5V 駆動…

osdev-jp という自作 OS のコミュニティを作りました

これは 自作 OS Advent Calendar 2016 の初日の記事です。 自作 OS Advent Calendar といいつつ、初日は技術的なことは書かずにコミュニティの紹介をします。期待してくださった方にはすみません(^^;) 自作 OS コミュニティの昔と今 私が自作 OS というもの…

nfcpy で複数の System Code を持つ NFC タグを扱う方法

Linux (Ubuntu 16.04) で nfcpy を使ってみました。落とし穴が多い気がしたので、ここにまとめます。 特に、複数の system code を持つような NFC タグの扱いが複雑ですので、詳しく説明します。 概要 Linux で NFC タグを読み書きするには nfcpy という Pyt…