そんなわけでオレオレifconfigをRubyで書く為のC拡張「ruby-netif」を書いてみました。

こちら。こんな感じにRubyスクリプトでNICを設定できるぜいえーい eth = Netif.new("eth0") eth.up eth.mtu = 1000 eth.set_addr("172.0.0.1", "255.255.255.0") puts "addr:#{eth.addr}" puts "netmask:#{eth.netmask}" puts "broadaddr:#{eth.broadaddr}" …

Linux上でオレオレifconfigを作るには

自分の書いているプログラムからNICの設定を直接弄りたくなった事はないだろうか? プログラム内からifconfigコマンドに引数をつけて実行すれば簡単に実現できるが、それはあんまり格好良くないし、情報を取り出そうとするとifconfigコマンドの出力文字列を…

ネットワーク関係記事まとめ 2013/06

以前もまとめたが、だいぶ古くなったので再度まとめてみる。 割り込みは直接ネットワークに関係しないのだが、ネットワークIOを語る際に外せない話題なので敢えてネットワーク関連記事に分類した。 Linux kernel features for high-speed networking bashで…

各OSのカーネルの行数

OS

ふと気になったので適当に調べてみる。調査方法は、各OSのソースコードをダウンロードしてきて、 find . -name "*.[chsS]" -exec cat {} \;|wc -l を実行した(※xnuの場合だけこれに.cppも加えてみた)。 見ての通りいい加減な調べ方なので、あんまり真に受…

bashでソケットプログラミング

exec 5<>/dev/tcp/news.google.co.jp/80 echo -e "GET / HTTP/1.1\nHost: news.google.co.jp\n">&5 cat <&5よくよく考えたらman bashで以前に見かけていたような気もしないでもないが、きちんと把握してなかった。 OSレベルの機能ではないが、シェルレベルの…

NetBSD]Ubuntu 13.04上のvirt-installでNetBSD-6.0.1なVMを作る

wget http://ftp.netbsd.org/pub/NetBSD/NetBSD-6.0.1/amd64/installation/cdrom/boot-com.iso sudo qemu-img create -f qcow2 /var/lib/libvirt/images/netbsd.img 15G sudo virt-install --connect=qemu:///system -n netbsd --vcpus=4 -r 8192 --serial p…

Ubuntu 13.04上のvirt-installでFreeBSD-CURRENTなVMを作る

前回の記事の続き。 FreeBSD-CURRENTのISOはシリアルコンソール用になっていないため、余計な作業が増えて面倒くさい。 よく読まずに作業を飛ばすとログイン手段をすべて失う事になるので注意されたい。また、このOSは--location引数でのセットアップには対…

Ubuntu 13.04上のvirt-installでCentOS6.4なVMを作る

おもしろいことに、Ubuntuゲストインストール時のvirt-installの引数のうち、locationのみCentOSのものに変更するとCentOSのインストーラがきちんと起動した(os-variantすら指定していない。URLからディストリを検出している?)。 Ubuntuは仮想シリアルコ…

Ubuntu 13.04上のvirt-installでUbuntu 13.04なVMを作る

$ sudo apt-get install libvirt-bin virtinst qemu-kvm $ sudo invoke-rc.d libvirt-bin start とりあえず必要なモノを入れてlibvirtdを立ち上げる。 $ sudo qemu-img create -f qcow2 /var/lib/libvirt/images/vm0.img 16G 16GBなVMイメージファイルを作成…

Linux kernel名物よくわからないけど便利なforeachマクロ(CPU番号編)

Linux kernelと言えばlist_for_eachみたいな謎のマクロでよくわからないがforeachできる事はよく知られているが、他にも色々あるのだなぁと知ったのでメモ。 #define for_each_possible_cpu(cpu) for_each_cpu((cpu), cpu_possible_mask) #define for_each_o…

「Linuxで3万(10万)プロセスを同時に起動させてみた」の再現実験

Linuxで3万プロセス起動するとMCE(Machine Check Excepution)を食らうというよく分からない噂を聞いたので、興味を持ち試してみている。 但し、元実験は恐らくDebian stableでカーネルが2.6.32と古めだが、再現実験環境は最近入れたUbuntu Serverなので3.5…

netconsoleでpanicだけをログしてみる

3.8あたりからかな?最近のカーネルのnetconsoleにはoops_onlyってオプションがある。 $ sudo modprobe netconsole netconsole=6665@192.168.100.12/eth0,6666@192.168.100.11/04:0c:ce:xx:xx:xx oops_only=Y こんな感じに指定しとくと、panicした時のdmesg…

netconsoleを使ってみる

netconsoleは、dmesgの出力をUDPでリモートホストへ送る機能。 この機能のポイントは、カーネルがpanicした後でも送信してくれる(無理かもしれないけど努力はする)という事。 panic時のbacktraceとかも取れる。 送信側の設定 netconsoleモジュールの引数か…

uARMのOS依存コードを除去

あのコード、きっとCygwinで32bitに収まらないディスクイメージにIOしたくて入れたんだよね?別に無くても普通に動くよね?という疑問を感じ、削ってみてLinuxでは普通に動くことを確認したので取り敢えず消しました。 これで、どこかへ持っていった時にifde…

uARMのNetBSD/OpenBSD対応コードをマージ、FreeBSD/i386でも動作確認

ちょっとあのifdef汚いよねーっていう気もしてきたけど。 32bit環境でも問題なく動きました。 GitHub - syuu1228/uARM

uARMをUEFIへ移植してみたが動かない

uARMをUEFIへ移植したが、ファイルのシークでも壊れてるのか、おかしな命令食ったよーってエラーで死にました。ソースコード公開しときます。 よくよく考えたら、Makefileでは指定されてるCFLAGSの-Dとかがこっちでは指定されてないので、オカシイのはそのせ…

uARMがFreeBSDで起動した

ちょっとした修正でFreeBSDでも動きました。 GitHub - syuu1228/uARM

uARMがLinuxで起動した

case sensitiveなFSでビルド確認されてなくてヘッダが見つからずコンパイル失敗するという信じられないバグがあったが、そこだけ直したらLinuxでも起動しました。 osxブランチの内容はLinuxでもそのまま使えて、特にOSX専用なコードとかも入ってないのでmast…

uARMがOSXで起動した

@monamour555 さんのdiffを取り込んでビルドしてUbuntuのディスクイメージを食わせたところ、無事起動してきました。 osxブランチにマージしてあります。 気が向いたら他のOSでも試してみてね。

簡潔なARMエミュレータ実装として面白そうな「uARM」

AVR上で動くARMエミュレータを実装してLinuxを起動するという頭のオカシイ記事を読んで感動したのだが、よくよく読むとそのARMエミュレータそのものも中々面白そうである。 (和訳はこちら:本の虫: GNU/Linuxを動かせる最低スペックはATmega) エミュレート…

学生諸君、Google Summer of Code 2013に参加して50万円貰ってオープンソースソフトウェアのコミッターになろう

ということで、今年もいよいよ始まりますねGoogle Summer of Code。 Google Summer of Codeってなに Google Summer of Code (GSoC) は2005年の5月から8月に初めて開催され、その後毎年行われているイベントで、Googleが指定したフリーソフトウェアやオープン…

パケット受信処理の待ち合わせ部分

ネットワークスタックの、割り込みコンテキストからプロセスをたたき起こすまでの処理はしっかり読んだつもりなのだが、プロセスコンテキストで寝ている側を深く把握していなかったのでちょっと眺めてみる。 システムコールからプロセスがスリープするまで(…

EdgeRouter LiteでOpenBSD/OCTEONカーネルロードしてみる

Looking for valid bootloader image.... Jumping to start of image at address 0xbfc80000 U-Boot 1.1.1 (UBNT Build ID: 4493936-g009d77b) (Build time: Sep 20 2012 - 15:48) BIST check passed. UBNT_E100 r1:2, r2:12, serial #: DC9FDB2920A7 Core c…

ReadyNAS Duo v2でapt-get upgradeすると即死する件

頑張れば回避可能なんだけどめんどくせぇからchrootedなdebian環境作ってそこで遊ぼうかなとも思ってたんだが、それも不便だと思い至ったので取り敢えずプリインストールパッケージをpinningする事にした。 dpkg -l|while read line do PKG=`echo $line|awk …

これからX64向けのUEFIバイナリをビルドしようとしている人々へ

EDK2向けに記事を書くけど、他のSDKを使う場合でも同じ問題が生じると思うので、gnu-efiな人達も読んでおいて下さい。 なお、この問題はIA32では確認できないのですが、どうしてそうなるのか僕はx86のABIにあまり詳しくないので良く分かりません。IA32だと吐…

AsiaBSDCon 2013でImplements BIOS emulation support for BHyVe: A BSD Hypervisorというタイトルで発表してきました

ペーパーはこちら スライドはこちら 実装できてないものについて話すという非常にアレな発表でしたが、生暖かく受け入れて頂けました。 まぁ、あの場にハイパーバイザー実装のプロみたいな人がたっぷりいたらもっといたぶられてた

続・FreeBSDの割り込み周りに足りないと思う機能

この記事に対して、さとうせんせいから”intr_event_bind() の本質的な部分は ie->ie_assign_cpu() を呼んでいるとこで、IRQ-CPU の binding は、そのハンドラ経由で呼ばれる PIC を操作する MD なコードでやっているはずですよ。(CPU単位の統計をとる機能が…

FreeBSDの割り込み周りに足りないと思う機能

ぼくは10GbEの割り込み周り(MSI-Xによりコア毎に独立したIRQを持つ)とかに興味を持っていたので、以前からこれがかなり気になってたんだが、まずはこれを見て欲しい。 Linux IRQ毎に各CPUの割り込み回数が取れるよね。 $ cat /proc/interrupts CPU0 CPU1 C…

すぐにGlendaを見れるGoogle Chromeの拡張作った。

生きていればつらいことがある。 しかし、つらいからと言って簡単に投げ出す事は出来ないということも多い。みなさんもつらまってる時、よくGlendaを見ると思う。 当然のごとく僕もそうである。最近つらい事がよくある。 そんな時のために、Glendaを素早く表…

VMwareでシリアルポート

VM

.vmxファイルにこんなの追記したら、telnetで覗けるようになった。 serial0.present = "TRUE" serial0.fileType = "network" serial0.fileName = "telnet://127.0.0.1:10000"VMware Fusionでしか試してないけど、多分他のVMwareでもいけるんじゃないかな。