2016-04-01から1ヶ月間の記事一覧

systemptapでプロセスが所属する各pid名前空間におけるpid番号を取得

systemptapでプロセスが所属する各pid名前空間におけるpid番号を取得する方法のめも。 プロセスのPIDは普通に見れますが、そこで見えているPIDというのは自身が所属しているPID名前空間においてのものです。なので、あるプロセスがunshareなりでpid名前空間…

Linux: pid numberからtask_structの取得

pid numberからtask_structの取得のめも pid番号から直接task_structは取得できないので、pid構造体の取得 -> task_struct構造体の取得という流れになる。 pid名前空間を気しなくて良い場合は、find_get_pid()でpid構造体を取得し、pid_task()でtask_struct…

Ansibleのget_urlでログインが必要なwebページからファイルをダウンロードする

Ansibleのplaybookを書いていて、ファイルをダウンロードする前にログインが必要な場合にどうすればよいのかを調べたのでめも。 使用してるAnsibleのバージョンは2系です。 curlで例えると、--userでIDとパスワードを↓のように渡すのをansibleでどうやるかっ…

Linux netns: グローバルなNet Namespace

グローバルなnsproxyに設定するNet Namespaceの変数のinit_nsめも これはコンパイル時にはリストしか初期化していないので、その他のデータはカーネルの起動時に初期化してます。 35 struct net init_net = { 36 .dev_base_head = LIST_HEAD_INIT(init_net.d…

Linux net namespace: pernet_deviceめも

Linuxのnet namespaceにpernet_listというpernet_operation構造体のリストがあって、これがどのように設定されてるのかのめもです。 読んでるカーネルのバージョンは4.1です。 pernet_listを使ってるところは以前書いたこちらの記事にあります。 kernhack.ha…

exit(2)とpid namespaceめも

プロセスが終了するときにもpid namespaceが関係するので、その辺りのめもです。 流れとしてはこんな感じです。 do_exit()@kernel/exit.c -> exit_notify@kernel/exit.c -> forget_original_parent()@kernel/exit.c -> find_child_reaper()@kernel/exit.c ->…

Net Namespace: copy_net_ns()めも

Net Namespaceのcopy_net_ns()の処理を読みます。カーネルのバージョンはv4.5。 まずはデータ構造で、Net Namespaceを表現するデータ構造はstruct net。定義はinlude/net/net_namespace.hにあります。この構造体にuser_namespace構造体とかns_common構造体み…

lscpuコマンド

util-linuxパッケージにlscpu(1)なんてコマンドがあることを今さら知りました(;・∀・) gitのログから察するに2008年にリリースされたっぽいですね。 で、実際に実行するとこんな感じです。/proc/cpuinfoを見やすくした感じで良いですね。 masami@saga:~$ ls…