Linuxカーネルフック関数によるブロックデバイスI/Oイベントの監視実装

概要 Linuxカーネルのフック機構を活用することで、カーネルイベントを捕捉し追加処理を実行することが可能である。kprobesとjprobeの2種類の方法が代表的であり、jprobeはkprobeの上位ラッパーとして実装されており、より簡潔な記述できる。submit_bio関数はブロックデバイスへのI/Oリクエスト処理の根本的な関数であり、この関数をフックすることでブロックデバイスI/Oイ ...

8月10日 11:00 投稿

Linux カーネルにおける kill_orphaned_pgrp 関数の解説

Linux 3.2 の kill_orphaned_pgrp 関数について詳しく見ていきます。 1. 使用例を考える Shell を使ったことがある方であれば、次のシナリオが理解できるでしょう: sudo-su-bash@Sudo-su-BashdeMacBook-Air ~ % sleep 100 ^Z zsh: suspended sleep 100 sudo-su-bash@Sudo-su-BashdeMacBook-Air ~ % nc -l 8080 ^Z zsh: suspended nc -l 8080 sudo-su-bash@Sudo-su-B ...

7月15日 22:12 投稿

Linux シグナルハンドリングの仕組みと sigaction による制御

シグナル捕捉の仕組みとカーネル遷移 Linux プロセスにおける実行コンテキストは、大きく分けて「ユーザーモード」と「カーネルモード」の 2 状態存在します。ユーザーモードではアプリケーションコードが実行され、カーネルモードでは OS カーネルのコードが実行されます。シグナルが発生し、プロセスに配送される際、CPU はユーザーモードからカーネルモードへ遷移します ...

7月12日 16:06 投稿

skb_in.cとskb_out.cの詳細解析

skb_in.cとskb_out.cの詳細解析 NetFilter_Skb_modプロジェクトは、Netfilterが提供するフック関数メカニズムを利用して、カーネルレベルでのパケットキャプチャと再送信を実現します。主にC言語でNF_IP_LOCAL_INおよびNF_IP_LOCAL_OUTの2つの段階におけるSKBネットワークパケット処理を実装しており、パケット内容の印刷、長さ測定、チェックサムの再計算を含みます。Netf ...

6月20日 19:56 投稿

regulator-fixedとregulator-gpioの活用

1、regulator-fixed 概要:固定電圧のレギュレータを作成します。通常はGPIOで制御される電源ラインであり、有効(enable)と無効(disabled)の2つの状態のみサポートします。 device-treeノードの例 io_vdd_en: regulator-JW5217DFND { compatible = "regulator-fixed"; pinctrl-names = "default"; pinctrl-0 = ; gpios = ; regulator-name = "j ...

6月6日 17:36 投稿

CubieBoard2 向けの Linux カーネル クロスコンパイル環境構築

開発環境の設定とツールチェーン導入 CubieBoard2 の ARM コア向けに Linux カーネルをビルドするには、適切なクロスコンパイラが必要です。まずは開発ホスト上でコンパイライメージを準備します。 # パッケージマネージャ経由でのインストールを試みます sudo apt update sudo apt install gcc-arm-linux-gnueabihf # インストールされたか確認(バージョン出力が期待さ ...

6月5日 22:12 投稿

Linux プロセス管理とシステムコールの実装詳細

プロセス識別子と階層構造 Linux 環境において、プロセスは固有の識別子(PID)によって管理されます。カーネルは各プロセスに一意な PID を割り当てますが、これはシステム起動からの通し番号であり、長時間稼働すると再利用される可能性があります。デフォルトの最大値は 32768 程度に設定されていることが多いです。 プロセス間には親子関係が存在します。新しいプロセ ...

5月28日 04:09 投稿

Linux USBドライバー開発(後編)デバイス挿入時のKernel処理フローの詳細解説

USBバスドライバー(ホストドライバー)の役割 USBバスドライバーは、LinuxカーネルにおけるUSBサブシステムの核心的なコンポーネントです。その主要な機能は次の3点に集約されます。 1.1 USBデバイスの識別 デバイス識別プロセスは、複数のステップから構成されています。まず、カーネルは新デバイスに一意のアドレスを割り当てます。次に、割り当てられたアドレスをデ ...

5月14日 09:09 投稿