Linux

mountコマンド周りの整理

はじめに 今まで何となく使っていたmountコマンドについて、理解している部分やよくわかっていない部分を整理したいなと思い書きました。作業環境はMac上のVirtualBoxで動かしているCentOS8です。 ファイルシステム Unixシステムでは全てのファイルは/をルー…

mkfifoでプロセス間通信を試す (Rust)

はじめに mkfifoという名前付きパイプを作成するシステムコール(を実行する関数)を試しました。名前付きパイプはプロセス間通信の手段の1つです。 例えばcat file | grep hogeで使うのは名前無しパイプの方です。名前付きパイプではファイルを作成してそれ…

chroot ~Alpine LinuxのDockerイメージでglibcで動くプログラム(bash)を動かしてみる~

はじめに 小ネタです。chrootの動作を見るのに手を動かしてみた内容を書いたのが今回の記事です。 chrootはプロセスのルートディレクトリを変更するコマンド、関数、システムコールです。動かしてみてchrootの雰囲気がわかることが目標です。 Alpine Linuxの…

OCI Runtime Specificationを読んだので概要を書く

はじめに OCI Runtime Specificationを読んだので概要を書きました。読んだのは仕様を理解して、簡単なところだけ実装しようと思ったからです。 Dockerとの関連を簡単に説明します*1。Docker Clientはdockerコマンドを提供するCLIです。Docker ClientはDocke…

nixでプロセスをforkしてみる (Rust)

はじめに Rustでシステムプログラミングに入門中です。 プロセスのforkには、Rustからlibcを呼べるlibcというunsafeなライブラリと、それsafeにしたnixというものが使えるようです。unsafeは扱いにくいのでnixを使いました。 Cargo.toml [dependencies] nix …