ローファイ日記

出てくるコード片、ぼくが書いたものは断りがない場合 MIT License としています http://udzura.mit-license.org/

CRIU で Mount namespace を再現する

人としてやっていると、いろいろなことがあります。今日はタイトルのことをまとめます。

コンテナとMount namespace

LinuxのNamespace機能を用いて、コンテナの中で独立してマウントポイントの情報を持たせることができます。

具体的な例として、以下のようなマウントポイント構成でやっていくとします。これに近いマウントポイント戦略はよくあるかと思います。

  • rootfsが /var/lib/haconiwa/rails-sample にある
  • procfsを /var/lib/haconiwa/rails-sample/proc にマウントする
  • devtmpfsを /var/lib/haconiwa/rails-sample/dev にマウントする

こういう構成をまずはシェルのコマンドで再現してみます。

ファイルシステム作成とコンテナ立ち上げ

続きを読む

社内勉強会でpecoの紹介をした

シェル大活用講座が開かれたのでハングアウトでお話をした。

pecoがやっていること自体は、 @hsbt さんが紹介したfishなどを使うと別のプラグインで、よりシェルに統合された形でファジー検索を利用できたりもするのですが。

www.hsbt.org

peco 自体はUNIX的ツールとして使い方が興味深いので、触ってみるといいかもしれない。

資料はイカです:

社内勉強会「シェル大活用講座」 · GitHub

エンジニアフレンドリーシティ宣言に寄せて

私が住んでいる市の自治体がこのような取り組み - エンジニアフレンドリーシティ宣言(efc)をしています。

efc.isit.or.jp

その取り組みのキックオフイベントに行ってまいりました。普段お世話になっている id:edvakf さん、 id:matsumoto-r さんを始めとした方々のコミュニティへの思いをあらためて聴くのは新鮮ではありました。

efc.connpass.com

続きを読む

cloneのCLONE_PARENTフラグの挙動を観察する

fork(2) したら子プロセスができる、皆さんもそう思っていると思います。fork(2)でプロセスを作って親でwait(2)などをして面倒を見る、というのがUNIXのプロセスの作り方の基本です。

例えばparentというプログラムをforkし、child 1からさらにchild2をforkすると下のような感じになります。 ps axf などのコマンドを発行すると、こういう感じのいわゆるプロセスツリーを随所で観察できます。

parent #-> child 1 をwait
  +--- child 1 #-> child 2 をwait
    +--- child 2

ところがLinuxでは実は「きょうだい(siblings)プロセス」とでもいうべきプロセスを作ることもできると、最近知りました。というか、概念は知ってたんですけど実際に使われている場面を初めて知りました。ということで改めてこの辺りについて手を動かしたメモを残しておきます。

続きを読む

ざっくりした活動記録 - 2018年7月、8月半ば

下半期は1ヶ月ごとに雑でもちゃんと振り返るというのをやっていきたい といったはずが盆も過ぎてしまった。今までの分でも書いておこうと思う。次は9月頭だが、振り返る期間が短い...。

続きを読む