タグ

ブックマーク / udzura.hatenablog.jp (17)

  • Kernel/VM/探検隊 online でRbBCCのLTをしました - ローファイ日記

    connpass.com Kernel/VM/探検隊 は憧れの勉強会だったので、とても緊張したのですが、オンライン化に伴い福岡からもLTチャレンジができるとのことでおしゃべりをしました。 speakerdeck.com Rubyアソシエーション助成対象でもあったRbBCCの簡単な紹介と現状の話をしました。 ブログでも書いてるやつです。Part 3書かないとね... udzura.hatenablog.jp udzura.hatenablog.jp 参加のふりかえり LTとはいえ参加者のレベルの高さもあるので、あまり間違ったことを言わないようベストを尽くしたつもりです... 結果的にはおおむねポジティブな反応をオンラインでいただけて良かったです。 ご指摘があった点として、ツールの比較の中でSystemTapやftraceもあるよという箇所がありました。 ftraceは以前少しだけ触ったのです

    Kernel/VM/探検隊 online でRbBCCのLTをしました - ローファイ日記
  • 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 にマウントする こういう構成をまずはシェルのコマンドで再現してみます。 ファイルシステム作成とコンテナ立ち上げ まずunshare(1)でMount

    CRIU で Mount namespace を再現する - ローファイ日記
  • PrometheusのExporter周りをまとめる - ローファイ日記

    Mackerelの3周年(おめでとうございます!)、OSSではPrometheusの隆盛もあり、監視やモニタリング周りが話題になっているのを観測している。皆さんは、監視されていますか? 個人的にも最近はロリポップ!マネージドクラウド周りの開発などでPrometheusを触っているので、今日はPrometheusの肝とも言えるExporterに関してまとめる。 Prometheusその他監視周りについて、以前、スライドも作りはしたが、割と自分向けのメモ書きに毛が生えたような感じではあったので、もう少し詳細なメモ書きを残すなど。 Exporterの選択肢について 既存Exporter 基的に、Prometheusのコミュニティは強く、たいていの監視には既存のExporterが存在する。なのでまずはWikiのリストをチェックするのが良さそう。 prometheus.io その中でもGitHub

    PrometheusのExporter周りをまとめる - ローファイ日記
  • straceがどうやってシステムコールの情報を取得しているか - ローファイ日記

    興味があって調べていたら、少しだけ分かったのでまとめておきます。当然間違った箇所もある、あと考慮が漏れている箇所もあるかと思いますのでツッコミをお願いします… ptrace(2) システムコール strace の核となるシステムコールは ptrace(2) である。ptrace(2)を用いることで、あるプロセスを別のプロセスから監視し、シグナルごとに停止してレジスタやメモリの状態を観察したり変更したりできる。gdbのようなデバッガのブレークポイント、あるいはまさにstraceのような目的で利用される。 大まかな利用方法としては、親プロセスの ptrace(PTRACE_ATTACH, pid, ...) (または子プロセスの ptrace(PTRACE_TRACEME, 0...))によりトレースが開始し、wait()などで停止を待ってから様々な設定を親から送り、 ptrace(PTRAC

    straceがどうやってシステムコールの情報を取得しているか - ローファイ日記
  • Linuxプログラミングインターフェースを読んだ(一周目) - ローファイ日記

    読みきった。一周目の所感を書く。 Linuxプログラミングインタフェース 作者: Michael Kerrisk,千住治郎出版社/メーカー: オライリージャパン発売日: 2012/12/01メディア: 大型 クリック: 14回この商品を含むブログ (7件) を見る モチベーション ぼくは、小さい会社でWebサービスの開発もしつつLinuxのサバ管も少ししつつ、という人間だったので、Linuxに開眼して真髄を会得したい、という欲求が長らくあった。例えば青木さんのであったり、なるほどUnixであったり。 ふつうのLinuxプログラミング Linuxの仕組みから学べるgccプログラミングの王道 作者: 青木峰郎出版社/メーカー: ソフトバンククリエイティブ発売日: 2005/07/27メディア: 単行購入: 35人 クリック: 450回この商品を含むブログ (150件) を見る tatsu

    Linuxプログラミングインターフェースを読んだ(一周目) - ローファイ日記
  • Cレベルのライブラリコールを“Hijack”してみる その1。 - ローファイ日記

    Rubyの、 Time.now は最終的には clock_gettime(3) を呼び出しているそうな。 masterの当該箇所 Time.now は Time.new を無引数で呼び出しているに過ぎない ここで、 Time#initialize の実態は time_init time_init は引数がない場合 time_init_0 を呼ぶ time_init_0 は timespec 構造体のポインタを引数に rb_timespec_now を呼ぶ rb_timespec_now で clock_gettime(3) が使えるシステムであればそれを呼ぶ。そうでない場合 gettimeofday(2) らしい… ここで、以下のような小さなCのコードを書く。 /* man になかったけどこの宣言がないと RTLD_NEXT が定義されなかった */ #define _GNU_SOURCE

    Cレベルのライブラリコールを“Hijack”してみる その1。 - ローファイ日記
  • AppArmorとDockerとその他コンテナ的プロセスについて調べた - ローファイ日記

    ここ数日のAppArmorに関する調査をまとめておく。アドベントカレンダーの季節だけど、特に該当しそうなカレンダーがなかったのでただの記事を書きます... 突っ込みどころはあると思うので、修正指摘等お気軽に。 AppArmor とは AppArmorはMAC(Mandatory Access Control - 強制アクセス制御)を実現するためのミドルウェアの一つ。同じようにMACを実現するものにはSELinuxなどがあるが、AppArmorはシステム全体というよりはプログラム単位で、ファイル別またはプロセスごとにセキュリティプロファイルを紐づけることができる。 そのプロファイルでは: どのファイルにどのようにアクセスできるか/できないか(読み書き実行など) ネットワークやRaw Socketなどへのアクセスができるか 以上についてUNIXのファイル権限やKernel Capability

    AppArmorとDockerとその他コンテナ的プロセスについて調べた - ローファイ日記
  • mruby gemを作るスクリーンキャストです - ローファイ日記

    mruby advent calendar 2016 5日目の記事なのですが、公開が遅れ失礼します。 前日の様子です。 qiita.com 先日の Fukuoka.rb で、mrbgemをライブコーディングで作る、という一芸をやったのですが、とはいえ特に映像などを記録するでもなくという感じでした。 せっかくですのでもう少し違う実装で再現してスクリーンキャストを撮ってみました。公開します。 www.youtube.com struct passwd をバックデータに getpwnam(3) をmrubyでラップしたgemを作っています。 ただ、このスクリーンキャストのままのコードだと、 getpwnam(3) の返り値を free しかねないということに気づいてしまったので、デモはデモとして、より適切であろう最終形を gist に残しておきます。 mruby advent cal 2016

    mruby gemを作るスクリーンキャストです - ローファイ日記
  • fusuma/mruby-fuseでFUSEを簡単に試す - ローファイ日記

    mruby Advent Calendar 2016 の 2日目の記事です。 昨日は おごもりさんのRuby Miniature Book の記事でした。 今日は、最近こそこそ作っているfusumaとmruby-fuseが、なんとなく面白いおもちゃにはなってきたので、せっかくということで紹介したいと思います。 fusuma (FUSe Upon Mruby-script Assistance) github.com mrubyとFUSEを用いて、ファイルシステムを作れるコマンドベースのミドルウェアです。 インストールはx86_64なLinuxバイナリは用意してありますのでひとまずそちらを解凍し、パスの通るところに配置すればOKです。各ディストロで fuse/ilbfuse 相当と libcurl 相当を別途インストールす必要があるでしょう。 ダウンロードはこちら とりあえず、libfuse

    fusuma/mruby-fuseでFUSEを簡単に試す - ローファイ日記
  • seccompをmrubyで試す - ローファイ日記

    seccomp とは、Linuxでプロセスのシステムコールの発行を制限する機能のこと。今回試すものはseccomp mode 2と呼ばれる、Linux3.5から搭載されたもので、システムコール単位での制限、特定の条件を満たす引数のみの許可/制限を実現できる。 バックエンドではlibpcapなどでも利用しているBPF(Berkeley Packet Filter)を利用していて、JITなどで高速に動作するらしい。 以下のサイトなども参照のこと。 mmi.hatenablog.com yuzuhara.hatenablog.jp 今回、seccompを利用するためのCライブラリlibseccompを用いて、mruby-seccompを作成した。これを利用してシステムコールの発行制限を試す。 github.com 基的な使い方 基的には、Seccompのコンテクストを作って、ルールを記述し、

    seccompをmrubyで試す - ローファイ日記
  • Emacsでmrubyをそこそこ快適に書く - ローファイ日記

    こんにちは、これはEmacs記事です。みなさんはEmacs記事...ではないですよね...。 Haconiwaのおかげですっかりmruby人間になって久しい id:udzura です。 https://t.co/1iLQyn2rV0 バージョン 0.2 系を出しました。rlimit系のリソース制限と、コンテナ内PID=1のuid/gidを変更できます #haconiwarb— Uchio KONDO (@udzura) 2016年7月20日 で、宣伝はこんなくらいにしておきまして、なんとなく流れでセットアップしたEmacsによるmruby環境をこの辺で整理しとこうと思ったので、書きます。というか、ほとんどC言語を書くための環境...。平成が終わるとか終わらないとか言っている2016年にEmacsでC言語を書く環境の記事を書きます。 なお僕は C言語をまともに書いて2ヶ月ぐらいだったり、あと

    Emacsでmrubyをそこそこ快適に書く - ローファイ日記
  • HaconiwaでDockerのsshdコンテナを利用してみる - ローファイ日記

    こんにちは。これは技術記事です。みなさんは、技術記事ですか? まず、 Haconiwa の近況報告なんですが、この度 mruby で書き直し、ひとまず MRI 版と同じ程度の機能までは実装できました。 github.com これに伴い、Linux用のバイナリを配布する形にインストール方法を変更しました。また、今後MRI版の開発(haconiwa-mri とプロジェクトをリネーム済みです)は積極的には行わない予定です。何か機能追加したい際は mruby 版の方へPRを! (一応、MRI版のリリース記事は以下です) udzura.hatenablog.jp ということで、今日はこのmruby版のHaconiwaを用いて、Dockerのsshdコンテナを再利用してsshdを立ち上げてみる手順を紹介します。 環境について Ubuntu Xenial に Docker をインストールしたマシンをご用

    HaconiwaでDockerのsshdコンテナを利用してみる - ローファイ日記
  • IPC Namespaceをまたいだプロセス間で、pipeでやりとりする。mrubyで。 - ローファイ日記

    Introduction to Linux namespaces - Part 2: IPC | Yet another enthusiast blog! こういうブログ記事があって、元記事はC言語なんだけど、これと同じことをmrubyでもやってみたサンプル。なお元記事は clone(2) だけど今回はforkしてから unshare(2) している。clone未実装なんで。。 reader, writer = IO.pipe puts " - Hello ?" p = Process.fork do Namespace.unshare(Namespace::CLONE_NEWUTS | Namespace::CLONE_NEWIPC) writer.close reader.read # blocking system "hostname 'In-Namespace'" puts " -

    IPC Namespaceをまたいだプロセス間で、pipeでやりとりする。mrubyで。 - ローファイ日記
  • Linux Capability - ケーパビリティについての整理 - ローファイ日記

    Man page of CAPABILITIES を読んで自分なりに整理する。メモ気分で書いているので言葉足らず/用語が曖昧 のところがあればご指摘ください。 3つのケーパビリティセット Inheritable execve(2) (以下、単にexecveと呼ぶこともある) の前後で引き継がれるケーパビリティ Permitted 実効ケーパビリティセットに追加することができるセット。ここから落ちたケーパビリティはどう頑張っても実効状態にできない Effectve 実効ケーパビリティセット。実際にそのスレッドで利用できるケーパビリティの集合 Permittedのセットの中から、実際に有効になっているEffectveのセットをピックアップするイメージ。 また、Inheritableはexecveしなければ関係することはない。 スレッドケーパビリティセット それぞれのスレッドは上述の三つのケーパ

    Linux Capability - ケーパビリティについての整理 - ローファイ日記
  • RubyWorldConference 2015 でOpenStack Ruby Wrapperの話などをした - ローファイ日記

    RubyWorld Conference 2015 話しました。 Ruby way-openstack.keynote from Uchio Kondo www.slideshare.net 111枚、なんとか収まりましたと言いつつ後半は早口... 書いてある通り、OpenStack Ruby Wrapper "YAO" と、その周りのツールたちとで、まずはペパボ周りの人たちのためのOpenStackエコシステムをOSSで作ってるみたいな話です。 github.com バージョンも地道に 0.2.1 となり、対応APIも増えてきました。ロゴも、5人いるカレー四天王の一人 id:Horaotoko によるものを採用し、何だか勢いが出てきた感じします。 horaotoko.hatenablog.jp この分野でセカンドシーズンをやり始めている経緯はスライドに書いてある通りです。ぜひご利用くださ

    RubyWorldConference 2015 でOpenStack Ruby Wrapperの話などをした - ローファイ日記
  • 「やわらかConsul」というワークショップをした - ローファイ日記

    社で、徐々にConsulへの依存度が上がってきたので、Consulパーソンをより増やすべくワークショップを開催した。 gistを公開します。 やわらか Consul · GitHub サンプルプロジェクトは以下。Vagrantのプロビジョナでポンポンとステップを進められます。 github.com Consul、機能が多いけど、クールなこともできるので、知っていることはどんどんドキュメントにしていこうと思いました。

    「やわらかConsul」というワークショップをした - ローファイ日記
  • carrierモジュールで雑にHubotからコマンドを打つ - ローファイ日記

    これは Hubot Advent Calendar 2014 - Adventar の 8 日目の記事です!!!111前日は id:bouzuya さんの 簡単な Hubot スクリプトをもっとつくろう (おみくじ系) - Qiita でした。 早速題だが、チャットオップスで最初に思いつくのがコマンドをラップする!とかだろうけど、これが意外と考えることが多くて、 実行時間が長いといつまでも帰ってこなくて不安では? ログの扱いをどうする? みたいな当たり悩ましい。 ここで、npmにcarrierと言うモジュールがある。 pgte/carrier · GitHub これは標準出力、標準エラー出力のストリームをつなげば、一行ずつイベントを発火してくれると言う代物。この一行ずつと言うのが大変便利で、使い方としてはこれだけで良い。 # Description: # 例えば、 aws-cli のコマ

    carrierモジュールで雑にHubotからコマンドを打つ - ローファイ日記
  • 1