読者です 読者をやめる 読者になる 読者になる

uchan note

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

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

皆さんは 技術書典2 というイベントをご存知でしょうか。2017年4月9日に秋葉原で開催される、技術書オンリーの同人誌即売会です。

この記事では、技術書典2のために書いた Linuxカーネルモジュール自作入門」 の目次をご紹介します。最後にダウンロード販売のお知らせもあります。

追記:おかげさまで、技術書典2自体も私たちのブースも非常に盛況でした。ご来場いただいた方々、運営の方々、他サークルの方々、大変ありがとうございました。ダウンロード販売のお知らせを更新しましたので、興味のある方はご確認をお願いします。

販売情報

  • 日時 2017年4月9日(日)
  • 場所 アキバ・スクエア
  • ブース き-09「tech@サイボウズ式」編集部
  • 書名 Linuxカーネルモジュール自作入門
  • ページ数 36(表紙含む)

目次

第1章「はじめに」より:

 本書を手にとって頂いてありがとうございます。この本はLinuxカーネルモジュールのビルド手順を説明する本です。Hello Worldを画面に表示するだけのモジュールを紹介します。さらに、カーネルブレークポイントを仕掛けるkprobesやカーネル内の変数を公開できるsysfsというLinuxの機能を自作モジュールから使ってみます。

 読者は基本的なLinuxの操作ができ、C言語の読み書きができることを前提としています。Linuxカーネルソースコードは読んだことがなくても大丈夫です。

  • 第1章 はじめに
    • 1.1 Linux カーネルモジュールとは
    • 1.2 動作確認環境
    • 1.3 著者について
    • 1.4 本書の取り扱い方法
  • 第2章 Hello World モジュール
  • 第3章 モジュール解剖
    • 3.1 カーネルヘッダ
    • 3.2 module 構造体
    • 3.3 モジュールファイル
    • 3.4 モジュール情報セクション
    • 3.5 シンボルバージョンセクション
  • 第4章 kprobes
    • 4.1 プローブの種類
    • 4.2 jprobe の登録
    • 4.3 コールバック関数の定義
    • 4.4 jprobe の実験
    • 4.5 全体ソースコード
  • 第5章 sysfs
    • 5.1 sysfs を覗いてみる
    • 5.2 sysfs に値を公開する
    • 5.3 コールバック
    • コラム scnprintf
    • 5.4 sysfs への登録
    • 5.5 ビルドと実行
    • コラム echo とdd
  • 参考文献

ダウンロード販売

同人誌即売会の雰囲気を大事にしたいので、当日ブースまで来ていただけると嬉しいです。しかし、何らかの理由により来られない場合、ダウンロード販売もしますのでご利用ください。

ダウンロード販売は、Amazonギフト券500円分を @uchan_nos までDMしていただければダウンロードURLをお教えします。

自作OS Advent Calendar 2016 目次

これは 自作 OS Advent Calendar 2016 の 25 日目の記事です。 1 日目から 24 日目までの記事をまとめた目次になっています。

それぞれの記事のURLの後に書いてある一言紹介は、uchanによるものです。 記事の著者さんに確認を取っておらず、もしかしたら誤った内容の可能性があります。

OSの機能拡張

OS自作用の処理系いろいろ

BIOS/UEFI

  • 12/4 neriring2

    • はりぼてOSをUEFIで起動する/総集編 - 借り初めのひみつきち
    • http://neriring.hatenablog.jp/entry/2016/12/04/180254
    • タイトルの話もさることながら、近年はレガシーデバイスがサポートされなくなってOS開発が厳しいね、という話が興味深い(と同時にちょっと悲しい)です。
  • 12/7 hikalium

  • 12/14 liva_jy

    • ディスクイメージをネットワークブートする – Raphine Project<サイト製作中>
    • https://raphine.wordpress.com/2016/12/14/netboot/
    • 開発マシンに立てた簡易HTTPサーバでOSイメージを配布し、ターゲットマシンでOSを起動させちゃうお話です。やってみたくなること間違い無し。
  • 12/17 ナカタニ

その他技術話

エッセイ

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

これは 自作 OS Advent Calendar 2016 の 18 日目の記事です。

概要

『30 日でできる!OS 自作入門』 の「はりぼて OS」が対応している実行可能形式は HRB 形式です。 HRB という名の通り「はりぼて OS」独自の形式で、.text、.data、.bss セクションに相当するデータを含むことができます。

構造がシンプルなので、入門者にとっては実行可能形式を学ぶのに都合がいい形式であると思います。 しかし、独自形式ゆえ周辺のツールが整いづらく、実際に扱いやすい形式というわけでもありません。

本記事では、Linux 環境でスタンダードとなっている ELF 形式を「はりぼて OS」でも動かそうじゃないか、ということでやり方をご紹介します。 ELF 形式のアプリをロードして実行する方法(OS 側)、ELF 形式でアプリをコンパイルする方法(アプリ側)の 2 つの側面から解説します。

f:id:uchan_nos:20161218173129p:plain

画像はいらすとやから頂いたエルフです。

続きを読む

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

f:id:uchan_nos:20161208235327j:plainこれは 自作 OS Advent Calendar 2016 の 8 日目の記事です。

概要

現時点で最新バージョンの GCC 6.2.0 を Windows 上でビルドするメモです。 このメモでは、i386-elf をターゲットにした GCC を作ります。 コンパイラ本体のみが対象で、標準ライブラリ等はビルドしません。 (将来、標準ライブラリも自作 OS 向けにビルドできるようになったら、また記事を書こうかと思います。っていつだよ!)

続きを読む

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

レベル変換

レベル変換とは、電圧の異なる信号線をつなぐ際に電圧を変換することです。

例えば Raspberry Pi という小さな Linux ボードコンピュータの電源電圧は 3.3V です。 そのため GPIO の入出力電圧も 3.3V となっており、電子工作でよくある 5V 駆動の装置を直接つなぐことができません。 著者は最近、秋月電子通商で売っている中で最安のキャラクタ液晶表示器 SC1602Raspberry Pi から制御しようと思ってレベル変換回路を作りました。

また、いわゆる「L チカ」といって LED を点滅させるだけの回路でも、LED によっては 3.5V 程度の電圧がないと十分に光らない品種があり (赤色 LED に比べ、青色 LED は高い電圧を求める傾向があります)、3.3V の出力では十分でないケースがあります。

レベル変換は低電圧側の回路から高電圧側の回路を制御するだけでなく、逆に高電圧側から低電圧側の回路を制御するのに用いる場合もあります。

ハードウェアエンジニアにとっては良く知られた回路ですが、ソフトウェア専門の人がちょっと電子工作しようとするとハマることが多いと思います。 この記事では、オームの法則を復習しつつ、レベル変換回路の基礎を見てみます。

続きを読む

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

これは 自作 OS Advent Calendar 2016 の初日の記事です。

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

自作 OS コミュニティの昔と今

私が自作 OS というものを知ったのは 2003 年ごろのことです。 そのころ、ウェブには活発な自作 OS コミュニティがいくつかありました。 私は主に OSASK コミュニティで活動していましたが、周りには dev-j、OS-Wiki などの OS 系の情報サイトや Mona OS、MEG-OS もありました。

時は流れて 2016 年。 私はしばらく自作 OS から離れていましたが、あるきっかけでまた自作 OS 関連の活動を再開させようと思いました。

久しぶりの OS 熱に侵されながら、おぼろげな過去の記憶をもとに dev-j や OS-Wiki などを再訪してみました。 しかし、そこは荒れた荒野のような状態でした。 dev-j にいたっては、トップページさえ 403 エラーでアクセスできない状態になっています。

osdev-jp の紹介

そこで私は、自作 OS に再びかかわろうと思うきっかけを与えてくれた 2 人の若者 ―― @liva_jy さんと @hikalium さん ―― とともに osdev-jp というコミュニティを作ることにしました。

発足したのは 2016 年 3 月です。 発足当初、このコミュニティは(OS-Wiki のように)OS 関連の情報を集めるサイトの名前でした。 今は情報収集はあまり捗っていませんが、「自作 OS もくもく会」というオフ会を定期的に開催し、自作 OS 好きの人同士のつながりを作り出しています。

osdev-jp の主要なリソースは以下の通りです。

「自作 OS もくもく会」は今のところ 2 カ月に 1 回のペースで開催しています。 開催予告は GitHub Wikiイベントカレンダー に載せていくつもりです。