2013-01-01から1年間の記事一覧

任意のアセンブリコードを仮想マシンで実行しちゃうRuby gemを作ってみた

このブログエントリはカーネル/VM Advent Calendar 2013 25日目の記事です。前回、カーネル/VM探検隊で「バインディングさえあればスクリプト言語でもゲストOSローダを実装出来る」という話をちらっとしました(資料)。今回の記事では、ゲストOSロ…

μOSvバイナリ配布

自前のスクリプトを内部に持ち込む術がないのでバイナリ版を配布しても無意味だと思って今までソースコード配布しかしてなかったんですが、一応作ってみました。 取り敢えずeshellでlsすることぐらいはできます。それ以上は自前ビルド版でどうぞ。 wget http…

mruby-eshellのご紹介

この記事はmruby Advent Calendar 2013の記事です。本当はμOSvでTwitterクライアントをテストしたかったんですが、大幅に予定の日をオーバーしてしまっていたので取り敢えずmruby-eshellのことを書きます。一言で言うと、mrubyで書かれたシェルです。コード…

ゲストOSのブートローダをホストOS上で動作するプログラムに翻訳する

このブログエントリはカーネル/VM Advent Calendar 2013 8日目の記事、および第九回カーネル/VM探検隊の発表の補足記事です。 発表資料と動画 このエントリだけでも理解できるように書いたつもりですが、はじめにこちらをみて頂いた方が分かりやすいかもし…

mruby専用クラウドOS「μOSv」を作りました

追記:μOSvはOSv本家にマージされました。 こちらのWikiの「OSvをビルドしてより多くのアプリを試す」以下を参照して下さい。 μOSvというものをgithubで公開したので、ここに簡単な説明を書いておきます。実行イメージ動画: これは何?(OSvを知らない人向…

OSv mruby moduleでソケットとかHTTPパーサとかSSLとかが一通り動くようになった

何が使えるかの詳細はこちらへ:osv-mruby/build_config.rb at master · syuu1228/osv-mruby · GitHubmruby-uvではなくiijのsocketなのでuv依存なコードが一切動かないんだが、ともあれHTTPとかHTTPSとか出来るようになった。 ただ、mirbがなんか壊れてるっ…

OSvで複数のNICを初期化する

OS

Support multiple NIC ソースコードを読んでみたらeth0をdhcpで初期化するとハードコーディングされていたので、何とかしてみた。 で、Cで書いたらC++でやろうよかっこわるいから、って言われてC++で書き直すことに…。こんな感じでNIC名をイテレートできるよ…

OSvにシンプルなHTTPDがあってもいいんじゃないかなと思ってthttpdを移植してみた

OS

Java application serverやらJRubyなapplication serverじゃなくて、スタティックなWebサイトをホスト出来るシンプルなHTTPDが動いたらよさそうだなーって思ったのでちょっとやってみた。OSvもmrbgemsみたいな感じに簡単にextensionを追加できるといいよね→…

OSvもmrbgemsみたいな感じに簡単にextensionを追加できるといいよね→やってみた

mrubyってRubyのgemsみたいな感じに拡張をmrbgemsっていう方式で追加できるんですが、mrubyの用途から言ってどこかのディレクトリにダイナミックリンクライブラリ+Rubyファイルで配置とかやってほしくなくてmruby本体に直接リンクしといて欲しいという感じ…

OSvへmruby-cfuncを移植してみたらとてもあっさりと動いた話

OSvへmrubyを移植してみたらとてもあっさりと動いた話 - かーねる・う゛いえむにっきの続きです。さて、OSvでmrubyが動くようになったのですがmrbgemsを追加していないのでこのままではAPIがむっちゃ少なくてなにも書けません。 でもmrbgemsの移植ってそれぞ…

OSvへmrubyを移植してみたらとてもあっさりと動いた話

注:この記事はカーネル/VM+K*BUG勉強会@関西 ごかいめのダイジェスト版です。 詳しくは、以下の動画とスライドをご覧下さい。 OSvは、OpenJDKを仮想環境で高速に動かす事を目指していて、ユーザは基本的にJavaアプリケーションしか実行しないという前提にな…

実際のところ別に/bin/[要らないよねという話

前にTLで話題になってたけど記憶からほぼ飛んでいたのでブログに書いとく。/bin/shがbashになってたりすると困るからFreeBSDで試したけど別にLinuxでもOSXでもそんなに変わらないはず。 標準シェルがbashの状態で/bin/[(別のOSでは/usr/bin/[かもしれない)…

クラウド向けOS「OSv」とは何か - ソースコードから調べてみる -

なにこれ KVM開発エンジニアらが立ち上げたベンチャーCloudius、クラウド向けOS「OSv」を発表 | OSDN Magazineで紹介されていたので興味を持って弄ってみた。 KVM/Xen専用のOSで、アプリケーションとしてJavaアプリケーションが動くという事のようだ。 基本…

マイクタイソンのアルコール依存症の治療について

こんなメールが届いたんだが…(困惑) Subject: マイクタイソンのアルコール依存症の治療についてはじめまして。 私は、現在中央アジアで活動をしているフランスのジャーナリストです。セシルと申します。現在、中央アジアで起こっている出来事のなかで興味…

Dream Cheeky Dream Cheeky Webmail Notifier届いた

USBからLEDのコントロールできるおもちゃ。 取り敢えずlsusb取ってみた: Bus 003 Device 005: ID 1d34:0004 Dream Cheeky Dream Cheeky Webmail Notifier Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 1.10 bDeviceClass 0 (Defined at Interfa…

そんなわけでオレオレ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