現在は、既存のブログ記事から Computer Systems に関係する記事(組み込みエンジニア時代に書いた記事)を分類してリンクしています。


コンテンツ一覧

Assembly / ARM

No.項目カテゴリ
1Cortex-A8 (ARMv7-A, e.x. BeagleBone Black)のレジスタ情報/アセンブラ命令/インラインアセンブラの書き方ARM / アセンブラ
2Cortex-A8 (ARMv7-A, e.x. BeagleBone Black)におけるコンテキストスイッチ/割り込み操作/HaltARM / OS

Linux Kernel

No.項目カテゴリ
1Raspberry Pi3(Linux Kernel)のBoot Sequence Step1:アーキテクチャ依存部Boot Sequence
2環境構築: Linux Kernelモジュールの作成準備開発環境
3Linux Kernel: prink(print kernel)によるメッセージ出力ログ出力
4Linux Kernel: エラー番号の一覧エラー処理
5Linux Kernel: NULLポインタエラーハンドリング(ERR_PTR, IS_ERR, PTR_ERR)エラー処理
6Linux Kernel: 構造体メンバポインタから構造体の先頭ポインタを得るcontainer_ofマクロマクロ
7Linux Kernel: List構造を操作するためのAPI(Listの使い方)データ構造
8Linux Kernel: __initマクロ、__exitマクロの役割(メモリの有効利用)メモリ
9Linux Kernelの簡単なCharacter Deviceを作成する方法(Linked List APIの使用方法サンプル)Device Driver
10Linux Kernel: mutex APIによるロック(排他)方法排他制御
11Linux Kernel Tree内で自作Kernelモジュールをビルドする方法(MakefileとKconfigの書き方)ビルド

Linux / Userland

No.項目カテゴリ
1Linux Command Optionの慣習(一般的なOption一覧)CLI
2mmdebstrapによるarmhf向けrootfsの作成方法(公式最小サイズ27MB)rootfs
3Linuxコマンドのソースコードを取得する方法(Debian環境):オリジナルコマンド作成前の勉強向けソースコード取得
4起動済みプロセス(例:デーモンプロセス)の標準出力を確認する方法プロセス
5Debian(64bit)で32bitバイナリを実行もしくは作成する方法(C言語)バイナリ
6manコマンドによる「ASCII ⇔ 8進数、10進数、16進数の変換表」文字コード
7/etc/passwdに記載された/usr/sbin/nologin, /bin/falseとは何か【ログイン禁止】ユーザ管理
8【visudo / vigr / vipw】システムファイルをsudo viで編集は駄目【sudoers / group / passwd】システムファイル
9【roff形式を手書きは無理ゲー】manページをMarkdown + Pandocで作成【with manページお作法】man page
10環境構築:Debianソースコードパッケージをビルドする方法(debソースパッケージ構築ツールのインストール)パッケージ
11Debian: 任意のtesting/unstableパッケージのみをinstallする方法(システム全体はstableを維持)パッケージ
12【LPICで見た】/etc/motdの内容を出力しているのは誰?【答え:sshd】ログイン
13Ubuntu (20.04)へsshログインした際に表示されるWelcomeメッセージの仕組みと表示しない方法ログイン
14【Bash / Ruby / Python3】オプション解析する方法の比較CLI
15【Bash / Ruby / Python3】root権限を確認する方法の比較権限
16【Bash / Ruby / Python3】ユーザ名 / UID / グループ名 / GIDを取得する方法の比較ユーザ管理

Toolchain / Debugging

No.項目カテゴリ
1ccache(compiler cache)によるビルド高速化ビルド
2【Vim8.1.xから標準機能】VimからGDBを起動する方法(マウスでGDBを操作可能)デバッグ

External Articles

No.項目カテゴリ
1XINU をソースコードから学習するOS / Code Reading
2Raspberry Pi3 with Yocto Project:環境構築Yocto / 組み込みLinux
3Raspberry Pi2 Linuxカーネルのクロスコンパイル方法(仮想環境Ubuntu14.04による)Linux Kernel / Cross Compile
4ビルド作業と向き合う:Makefile、ccache、Autotools、Yocto ProjectについてBuild System

C / System Programming

No.項目カテゴリ
1C言語で非推奨なC標準関数(例:strcpy)をコンパイルエラーにする方法C / Toolchain
2【苦行】C言語で正規表現を用いる方法【標準Cライブラリ(glibc)使用】glibc
3【C言語】static(private)関数をユニットテストする3つの方法C
4【C言語】_Generic(C11)、GCC4.6以降または__attribute__((overloadable))によるオーバーロードC / GCC
5【コーディングルール】C言語ライブラリのAPIを実装する際に注意すべき事柄API設計

Storage / Filesystem

No.項目カテゴリ
1autofsを用いてHDD/SSD/USBメモリを起動時に自動マウントする方法(Debian)mount
2gdisk/mkfsコマンドで2TB以上の大容量HDDをフォーマットする方法filesystem
3Raspberry Pi4のimage(データ)をバックアップし、より大容量のSDカードへ移行する方法backup
4Raspberry Pi3をsambaファイルサーバ化し、Linux/Mac/Winでファイル共有(外付けSSDを使用)file server

Code Reading

No.項目カテゴリ
1コードリーディング(C言語):chroot / ischrootLinux Userland
2環境構築:Redox向けcoreutils(Rust)のCode Reading準備およびReading対象コマンド一覧coreutils
3【静的解析】ソースコード解析補助ツールSourcetrailの導入方法【例:systemd(C言語)】systemd

Hardware / Boot

No.項目カテゴリ
1Raspberry Pi3: 公式ツールおよびHW仕様Raspberry Pi
2Debian10をRyzen 3800X環境で動かそうとしてハマった内容(グラボ必須、BIOS設定、Kernel設定)Kernel設定
3【WatchDogTimer】Raspberry Pi4サーバがフリーズ(停止)した場合に自動再起動する方法【HeartBeat】Watchdog

参考文献(手元にある書籍)