レガシーガジェット研究所

気になったことのあれこれ。

C

Unix xv6 ~ 起動 ~

概要 xv6のコードリーティングを通してUnixの動作を追う。今回はCPUの起動からカーネルの起動直前までを見ていく。 xv6 xv6は、ANSI Cによる、6th Edition Unixのマルチプロセッサx86システムへの再実装である。 xv6はMITにおけるオペレーティングシステムエ…

Unix xv6 ~ 起動イメージ ~

概要 xv6のコードリーティングを通してUnixの動作を追う。今回は起動イメージを見ていく。 リポジトリは以下。 https://github.com/mit-pdos/xv6-public xv6 xv6は、ANSI Cによる、Sixth Edition Unixのマルチプロセッサx86システムへの再実装である。 xv6は…

Linux Kernel ~ メモリ管理 ~

概要 「詳解Linux Kernel」を参考にVersion 2.6.11のコードリーディングをしていく。CPUのアーキテクチャは書籍に沿ってIntelのx86とする。 今回はメモリ管理について見ていく。 メモリ管理 x86ではセグメンテーションとページングによって物理メモリが管理…

Linux Kernel~ プロセススケジューリングにおけるロードバラシング ~

概要 「詳解Linux Kernel」を参考にVersion 2.6.11のコードリーディングをしていく。CPUのアーキテクチャは書籍に沿ってIntelのx86とする。 今回はプロセススケジューリングにおけるロードバラシングについて見ていく。 マルチプロセッサ環境でのランキュー…

Linux Kernel ~ プロセススケジューリング ~

概要 「詳解Linux Kernel」を参考にVersion 2.6.11のコードリーディングをしていく。CPUのアーキテクチャは書籍に沿ってIntelのx86とする。 今回はプロセススケジューリングについて見ていく。 概要 Linuxでは複数のプロセス間を非常に短いインターバルで切…

Linux Kernel ~ ソフトウェアタイマと遅延処理 ~

概要 「詳解Linux Kernel」を参考にVersion 2.6.11のコードリーディングをしていく。CPUのアーキテクチャは書籍に沿ってIntelのx86とする。 今回はソフトウェアタイマと遅延処理について見ていく。

Linux Kernel ~ 時間管理とタイマ割り込み ~

概要 「詳解Linux Kernel」を参考にVersion 2.6.11のコードリーディングをしていく。CPUのアーキテクチャは書籍に沿ってIntelのx86とする。 今回は時間管理及びタイマ割り込みについて見ていく。

Linux Kernel ~ 同期機構 ~

概要 「詳解Linux Kernel」を参考にVersion 2.6.11のコードリーディングをしていく。CPUのアーキテクチャは書籍に沿ってIntelのx86とする。 今回は同期処理について見ていく。

Linux Kernel ~ ソフト割り込み ~

概要 「詳解Linux Kernel」を参考にVersion 2.6.11のコードリーディングをしていく。CPUのアーキテクチャは書籍に沿ってIntelのx86とする。 今回はソフト割り込みについて見ていく。(*nは参考文献のn番目に対応する)

CVE-2019-5736のPoC検証

概要 当該脆弱性のPoCを検証する。脆弱性自体の概要は以下。 k-onishi.hatenablog.jp 環境 $ uname -a Linux CVE-2019-5736-CentOS 3.10.0-862.14.4.el7.x86_64 #1 SMP Wed Sep 26 15:12:11 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux $ cat /etc/redhat-rele…

Linux Kernel ~ 割り込み処理 ~

概要 「詳解Linux Kernel」を参考にVersion 2.6.11のコードリーディングをしていく。CPUのアーキテクチャは書籍に沿ってIntelのx86とする。 今回は割り込み処理について見ていく。(*nは参考文献のn番目に対応する)

Linux Kernel ~ 例外処理 ~

概要 「詳解Linux Kernel」を参考にVersion 2.6.11のコードリーディングをしていく。CPUのアーキテクチャは書籍に沿ってIntelのx86とする。 今回は例外処理について見ていく。

Linux Kernel ~ 割り込みと例外 例外の種類と割り込みディスクリプタ ~

概要 「詳解Linux Kernel」を参考にVersion 2.6.11のコードリーディングをしていく。CPUのアーキテクチャは書籍に沿ってIntelのx86とする。 今回は例外の種類及び割り込みディスクリプタの構造などについて見ていく。

Linux Kernel ~ 割り込みと例外 ハードウェア編 ~

概要 「詳解Linux Kernel」を参考にVersion 2.6.11のコードリーディングをしていく。CPUのアーキテクチャは書籍に沿ってIntelのx86とする。 今回は割り込みと例外の概要と定義及び、それに関連するハードウェアについて見ていく。

キャラクタデバイスドライバを作ってみた。

概要 ラズパイのGPIOを対象としたデバイスドライバを作成した。基本的に行うことは以前書いた以下の記事と同じであるためレジスタなどの説明はここでは割愛する。 https://k-onishi.hatenablog.jp/entry/2018/11/24/112806

Linux Kernel ~ カーネルスレッドとプロセスの破棄及び削除 x86編 ~

概要 「詳解Linux Kernel」を参考にVersion 2.6.11のコードリーディングをしていく。CPUのアーキテクチャは書籍に沿ってIntelのx86とする。 今回はカーネルスレッドとプロセスの破棄及び削除について見ていく。

Raspberry Pi 3でGPIOライブラリを作ってみた。

概要 Raspberry PiのGPIOを対象としたライブラリを作成する。既存のライブラリなどは数多く存在するが実際に自分で作成することでその内部を理解できると思う。 環境 Paspberry Pi 3 Model B $ sudo cat /etc/os-release PRETTY_NAME="Raspbian GNU/Linux 9 …

ネズミ本のpwn編をやってみた。

概要 かの有名なCTFの書籍であるネズミ本のPwn編をやってみただけのエントリーである。

Linux Kernel ~ 物理メモリレイアウトとプロセスのアドレス変換 x86編 ~

概要 「詳解Linux Kernel」を参考にVersion 2.6.11のコードリーディングをしていく。CPUのアーキテクチャは書籍に沿ってIntelのx86とする。 今回は物理メモリレイアウトとプロセスのアドレス変換について見ていく。

Linux Kernel ~ プロセス生成 x86編 ~

概要 「詳解Linux Kernel」を参考にVersion 2.6.11のコードリーディングをしていく。CPUのアーキテクチャは書籍に沿ってIntelのx86とする。 今回はプロセスの生成について見ていく。

Linux Kernel ~ コンテキストスイッチ x86編 ~

概要 「詳解Linux Kernel」を参考にVersion 2.6.11のコードリーディングをしていく。CPUのアーキテクチャは書籍に沿ってIntelのx86とする。 ここではコンテキストスイッチを見ていく。

インライン・アセンブリに関して

概要 Linux Kernelのソースを読むのに必要だったため簡単にまとめた。参考資料にはサンプルなどが豊富に用意されている。

Linux Kernel ~ プロセス x86編 ~

概要 「詳解Linux Kernel」を参考にVersion 2.6.11のソースコードリーディングをしていく。CPUのアーキテクチャは書籍に沿ってIntelのx86とする。 今回はプロセスディスクリプタやカレントプロセスの取得方法、プロセスの実行及びスリープなどを見ていく。

Linux Kernel ~ ページング(物理機構) x86編 ~

概要 「詳解Linux Kernel」を参考にVersion 2.6.11のソースコードリーディングをしていく。CPUのアーキテクチャは書籍に沿ってIntelのx86とする。 (今回に関してはハードウェアに関連する事項が多いので説明だけとなる) 今回の内容は前回の「ページング」の…

Linux Kernel ~ ページング x86編 ~

概要 「詳解Linux Kernel」を参考にVersion 2.6.11のソースコードリーディングをしていく。CPUのアーキテクチャは書籍に沿ってIntelのx86とする。 今回の内容は前回の「セグメンテーション」の続きとなっており、アドレス変換機構のページングについて見てい…

Linux Kernel ~ セグメンテーション x86編 ~

概要 「詳解Linux Kernel」を参考にVersion 2.6.11のソースコードリーディングをしていく。CPUのアーキテクチャは書籍に沿ってIntelのx86とする。 今回はアドレス変換機構であるセグメンテーションについて見ていく。