こちら。こんな感じに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}" …
自分の書いているプログラムからNICの設定を直接弄りたくなった事はないだろうか? プログラム内からifconfigコマンドに引数をつけて実行すれば簡単に実現できるが、それはあんまり格好良くないし、情報を取り出そうとするとifconfigコマンドの出力文字列を…
以前もまとめたが、だいぶ古くなったので再度まとめてみる。 割り込みは直接ネットワークに関係しないのだが、ネットワークIOを語る際に外せない話題なので敢えてネットワーク関連記事に分類した。 Linux kernel features for high-speed networking bashで…
ふと気になったので適当に調べてみる。調査方法は、各OSのソースコードをダウンロードしてきて、 find . -name "*.[chsS]" -exec cat {} \;|wc -l を実行した(※xnuの場合だけこれに.cppも加えてみた)。 見ての通りいい加減な調べ方なので、あんまり真に受…
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レベルの機能ではないが、シェルレベルの…
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…
前回の記事の続き。 FreeBSD-CURRENTのISOはシリアルコンソール用になっていないため、余計な作業が増えて面倒くさい。 よく読まずに作業を飛ばすとログイン手段をすべて失う事になるので注意されたい。また、このOSは--location引数でのセットアップには対…
おもしろいことに、Ubuntuゲストインストール時のvirt-installの引数のうち、locationのみCentOSのものに変更するとCentOSのインストーラがきちんと起動した(os-variantすら指定していない。URLからディストリを検出している?)。 Ubuntuは仮想シリアルコ…
$ 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と言えばlist_for_eachみたいな謎のマクロでよくわからないがforeachできる事はよく知られているが、他にも色々あるのだなぁと知ったのでメモ。 #define for_each_possible_cpu(cpu) for_each_cpu((cpu), cpu_possible_mask) #define for_each_o…
Linuxで3万プロセス起動するとMCE(Machine Check Excepution)を食らうというよく分からない噂を聞いたので、興味を持ち試してみている。 但し、元実験は恐らくDebian stableでカーネルが2.6.32と古めだが、再現実験環境は最近入れたUbuntu Serverなので3.5…
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は、dmesgの出力をUDPでリモートホストへ送る機能。 この機能のポイントは、カーネルがpanicした後でも送信してくれる(無理かもしれないけど努力はする)という事。 panic時のbacktraceとかも取れる。 送信側の設定 netconsoleモジュールの引数か…
あのコード、きっとCygwinで32bitに収まらないディスクイメージにIOしたくて入れたんだよね?別に無くても普通に動くよね?という疑問を感じ、削ってみてLinuxでは普通に動くことを確認したので取り敢えず消しました。 これで、どこかへ持っていった時にifde…
ちょっとあのifdef汚いよねーっていう気もしてきたけど。 32bit環境でも問題なく動きました。 GitHub - syuu1228/uARM
uARMをUEFIへ移植したが、ファイルのシークでも壊れてるのか、おかしな命令食ったよーってエラーで死にました。ソースコード公開しときます。 よくよく考えたら、Makefileでは指定されてるCFLAGSの-Dとかがこっちでは指定されてないので、オカシイのはそのせ…
ちょっとした修正でFreeBSDでも動きました。 GitHub - syuu1228/uARM
case sensitiveなFSでビルド確認されてなくてヘッダが見つからずコンパイル失敗するという信じられないバグがあったが、そこだけ直したらLinuxでも起動しました。 osxブランチの内容はLinuxでもそのまま使えて、特にOSX専用なコードとかも入ってないのでmast…
@monamour555 さんのdiffを取り込んでビルドしてUbuntuのディスクイメージを食わせたところ、無事起動してきました。 osxブランチにマージしてあります。 気が向いたら他のOSでも試してみてね。
AVR上で動くARMエミュレータを実装してLinuxを起動するという頭のオカシイ記事を読んで感動したのだが、よくよく読むとそのARMエミュレータそのものも中々面白そうである。 (和訳はこちら:本の虫: GNU/Linuxを動かせる最低スペックはATmega) エミュレート…
ということで、今年もいよいよ始まりますねGoogle Summer of Code。 Google Summer of Codeってなに Google Summer of Code (GSoC) は2005年の5月から8月に初めて開催され、その後毎年行われているイベントで、Googleが指定したフリーソフトウェアやオープン…
ネットワークスタックの、割り込みコンテキストからプロセスをたたき起こすまでの処理はしっかり読んだつもりなのだが、プロセスコンテキストで寝ている側を深く把握していなかったのでちょっと眺めてみる。 システムコールからプロセスがスリープするまで(…
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…
頑張れば回避可能なんだけどめんどくせぇからchrootedなdebian環境作ってそこで遊ぼうかなとも思ってたんだが、それも不便だと思い至ったので取り敢えずプリインストールパッケージをpinningする事にした。 dpkg -l|while read line do PKG=`echo $line|awk …
EDK2向けに記事を書くけど、他のSDKを使う場合でも同じ問題が生じると思うので、gnu-efiな人達も読んでおいて下さい。 なお、この問題はIA32では確認できないのですが、どうしてそうなるのか僕はx86のABIにあまり詳しくないので良く分かりません。IA32だと吐…
ペーパーはこちら スライドはこちら 実装できてないものについて話すという非常にアレな発表でしたが、生暖かく受け入れて頂けました。 まぁ、あの場にハイパーバイザー実装のプロみたいな人がたっぷりいたらもっといたぶられてた
この記事に対して、さとうせんせいから”intr_event_bind() の本質的な部分は ie->ie_assign_cpu() を呼んでいるとこで、IRQ-CPU の binding は、そのハンドラ経由で呼ばれる PIC を操作する MD なコードでやっているはずですよ。(CPU単位の統計をとる機能が…
ぼくは10GbEの割り込み周り(MSI-Xによりコア毎に独立したIRQを持つ)とかに興味を持っていたので、以前からこれがかなり気になってたんだが、まずはこれを見て欲しい。 Linux IRQ毎に各CPUの割り込み回数が取れるよね。 $ cat /proc/interrupts CPU0 CPU1 C…
生きていればつらいことがある。 しかし、つらいからと言って簡単に投げ出す事は出来ないということも多い。みなさんもつらまってる時、よくGlendaを見ると思う。 当然のごとく僕もそうである。最近つらい事がよくある。 そんな時のために、Glendaを素早く表…
.vmxファイルにこんなの追記したら、telnetで覗けるようになった。 serial0.present = "TRUE" serial0.fileType = "network" serial0.fileName = "telnet://127.0.0.1:10000"VMware Fusionでしか試してないけど、多分他のVMwareでもいけるんじゃないかな。