NBD で遊ぶ

Linux の Network block device を使ってユーザーランドブロックデバイスを作って遊んでみた。 github.com バックエンドは単純なメモリを使っているので、前回と同様に fio を使って計測してみた。 rw: (g=0): rw=randrw, bs=(R) 4096B-4096B, (W) 4096B-409…

loopback block device で遊ぶ

linux にはいろんな仮想ブロックデバイスが存在して、ものによっては機能がかぶっていたりする。 今回は、ファイルをブロックデバイスとして見せる、loopback block device で遊んでみた。 まずは伝統的な loop モジュールによるもの。 arch で使うには modp…

EdgeRouter PoE の復旧

EdgeRouter の SNMP が取れなくなっていたので、ログを見たら IO エラーが出ていたので USB フラッシュが死んだらしい。 ネットワークは生きていたので、再起動とかはしないで、代替の USB フラッシュドライブとシリアルケーブルを購入しておいた。 購入した…

bindgen を使って rust binding を生成する

Rust は C API をゼロオーバーヘッドで呼び出せたりして便利なんだけど、当然バインディングは行わないといけない。 crates.io を探せばおおよそのものは見つかるけど、見つからなかったり、見つかっても古かったりして更新したいときがある。 そんなときは…

VAIO Pro 11 に gentoo をインストールした

一度 Gentoo というものを使ってみたかったのでチャンレンジしてみた。 インストール元は、Arch Linux が入っていたので、そこから LVM を Gentoo 用に切り出して、stage3 を使ってインストールした。 Kernel config は Sony Vaio Pro SVP-1x21 のページを参…

UML で hostfs と overlayfs を使う

User mode linux で hostfs でホストのファイルシステムを参照しつつ、書き込みは別の場所にしたかったので overlayfs を使ってみました。 User mode linux (UML) は linux kernel をいろいろ頑張って普通のプロセスとして実行するものです。 ptrace とかで…

VyOS で unbound を利用する

VyOS というより EdgeOS なのだけれど。 自宅の環境はプロバイダのルータと自前ルータ(EdgeRouter)の二段構えなのだが、EdgeRouter の DNS のフォワード先はプロバイダのルータにしていた。 しかしプロバイダのルータの DNS がたまに応答しなくなったり不…

systemd-networkd では netdev だけではデバイスは UP しないらしい

LXC 用の Bridge インターフェースを systemd-networkd で管理しようとして、.netdev ファイルを以下のように作った。 [NetDev] Name=br0 Kind=bridge この bridge に対して physical デバイスで以下のように接続しておいた。 [Match] Name=en* [Network] ..…

SSD が壊れた。

サーバ機の OS 領域として使っていた SSD が壊れてしまった。 モノは、シリコンパワー製の 32GB MLC のドライブ。型番は SP032GBSSDE20S25 らしい。 購入したのは、2012年3月なので、3年と8ヶ月で壊れたことになる。 壊れたのに気づいたのは、ホストが勝手に…

VyOS でプライベート DNS コンテンツサーバを参照する

VyOS は DNS フォワーダを持っているが、標準的な設定ではフォワード先は(当然ながら)フルリゾルバを指定する。 しかし、内部用の DNS コンテンツサーバを参照するだけでフルリゾルバを立てるのが面倒くさい。 特定のドメイン、及びサブドメインだけをフォ…

rust の lifetime

まずは 1.0 alpha リリースおめでとうございます。 リリースしてドキュメント関係が差し替わって Book (旧 guide) に lifetime について乗るようになったぽい。 C++ はリファレンスによって NULL ポインタのデリファレンスを防げるようになったが、ダングリ…

複数の Trait による Restriction

Generics の restriction に複数の trait を指定したい場合、+ を使えばいいらしい。 struct Circle { x: f64, y: f64, radius: f64, } trait HasArea { fn area(&self) -> f64; } trait HasPoint { fn point(&self) -> (f64, f64); } impl HasArea for Circ…

Rust のポインタ

rust が提供するポインタは、以下の3つがあるらしい。 reference Box Rc/Arc また、基本的なルールとして、リーダブル(immutable)なポインタは同時に複数作れて、ライタブル(mutable)なポインタは一度に一つしか作れない。 これをownershipとかいうらしい。 …

rust 始めます

新年になったし、そろそろ1.0が近いらしいので、Rust 始めます。 まずは環境設定から。 手元の環境は、arch linuxなのでpacmanでさくっと入る。 $ sudo pacman -S rust エディタはemacsなのでpackage.elでこれまたさくっと入る。 rust-mode flycheck quickru…