linux

mikutterのFedora向け.rpmの配布を開始した

エイプリルフールの日だったのでつい勢い余って書いてしまった。 公式リポジトリに含まれているわけではないが、Copr上に置いてあるので簡単な手順でリポジトリを手元のFedora環境で有効化できる。 以下がインストール方法になる: # dnf -y install dnf-plu…

USBメモリのフォーマット無しに、たった一つのファイルをコピーするだけでブート出来るLinux

singlefilelinuxとか名前を付けてみたが、新しいディストリを作ったり新しいツールを作ったりしたのではなく、単にGentooのLiveCDを単一のカーネルイメージに埋め込んでブート可能にしただけである。使い方は以下の通り: bootx64.efiをダウンロードする USB…

Linux上のmikutterでリンクをクリックしたら別のLinux上のブラウザで表示する方法

Linux上のmikutterでリンクをクリックしたらMac上のブラウザで表示する方法 - かーねる・う゛いえむにっきの続きですが、「いや、おれMacとか使ってねぇし?不自由なOSユーザー氏ね!」みたいな声が聞こえてくる気がする*1ので、Linuxでも出来るかどうか考え…

Linux上のmikutterでリンクをクリックしたらMac上のブラウザで表示する方法

VM上のLinuxでmikutterを動かしてたり、synergyで2台のPCを並べて使ってたりする場合に、TwitterだけLinuxのmikutterで眺めてWebはMacで見たい場合ってありませんか。僕はあります。 そんな時、SSHを使えば割と簡単に実現出来ます。 MacのSSHサーバを有効化 …

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コマンドの出力文字列を…

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モジュールの引数か…

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

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

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

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

アドレスからソースコードの位置を探すコマンド

カーネル飛んだ時とか、RIP(EIP)からobjdump -d vmlinuxを見ながら位置を探したりしてたんだけれども、binutilsに含まれてるaddr2line使えばソースコードの行数簡単に見れたのね。まぁ、これがあるからといってobjdumpでディスアセンブルさせて眺めたいケ…

Ubuntu 12.10のGRUB2でデフォルトカーネルを変更するにはどうしたらいいの?

GRUB1なら良く知ってるんだけど、GRUB2って勉強不足で未だによく分からないのよね。 で、デフォルトカーネルを変えようとした訳だが、最近のUbuntuの/boot/grub/grub.cfgってサブメニューがあって、そこにカーネルの候補が入ってる形になってる。 grub.cfgか…

kexecの実装

ユーザランドのkexecコマンドへ再起動後のカーネルを渡します。ELFパーサとかbzImageカーネルイメージパーサとか種類あるみたいだけど、それらがカーネルのレイアウト読み取って解釈を行なって、最終的にイメージとメモリレイアウトをシステムコール経由でカ…

Linux loader for BHyVe

なんかBIOS emulationなかなか動かないし、取り敢えずLinux loader欲しいよね。という気持ちが高まりつつある今日この頃、皆様如何お過ごしでしょうか。で、作ってみるならなるべく既存のプログラムを流用して楽にやりたいわけだが、bhyveloadに一番似てるLi…

Linuxでnetperfとかで負荷かけてる時に/proc/statとかを記録してグラフ化するツールあったらいいなと思ったので作った、という話

netperfで負荷かけている時にカーネルのstatistics情報取って色々とグラフ作るツールがあったらいいなぁ、と思ったので作った。今のところperf statで取れるようなCPUのキャッシュの情報とかが取れてないが…とりあえず netperfとかやってる間にログに数値を…

Arch Linuxで/usr/src/linux;make installで自動的にinitramfs作ってgrub設定する

あおたくんの記事と同じような話だが、Arch Linuxには/sbin/installkernelが無いので作ってみる。 で、ググるとこのあたりにそれっぽいものがあるんだが、これinitramfs作ってくれなかったので、作ってくれるようにちょっと改良した。このあたりから取れます…

Linux Kernelでイベントトレースしてみる

sched:sched_migrate_taskイベントにフィルタルール「comm==bash」を適用、トレースを有効化してtrace_pipeから標準出力にトレース結果を出力 cd /sys/kernel/debug/tracing/events/sched/sched_migrate_task echo "comm==bash" > filter echo 1 > enable cat…

LinuxConでLinuxカーネルへのBCubeの実装を行う話をしてきた

Implementing a layer 2 framework on linux network View more presentations from Takuya Asada

Arch Linuxで任意のバージョンのカーネルをビルド&インストール

なんかArchのドキュメント見てもパッケージシステム使おうとしてるっぽくてよーわからんかったけど、そんな事せんでも普通にinitramfsが用意されてればブート出来るわけで。 tar xvjf linux-3.2.16.tar.bz2 cd linux-3.2.16 zcat /proc/config.gz > .config …

Arch LinuxをTimeCapsuleにする

昨日作ったiSCSIのやつは使い勝手がいまいちだったので、やっぱりnetatalkを入れて普通に自作TimeCapsuleを作ることにした。 まぁこのへん読めって話なんだが。 事前作業 yaourt -Sy netatalk dbus avahi /etc/fstab UUID=017e0151-f13c-4c1e-8eb7-21965d825…

Arch LinuxにiSCSIターゲットを、OS XにiSCSIイニシエータをセットアップし、Time Machineに使う

Arch Linux 基本的にやらなきゃいかんことは全部ここに書いてある: ISCSI Target - ArchWikiなので、ちょっとしたメモだけ。なんかpython2-setuptoolsが無いと途中でビルドが詰んだので先に入れる yaourt -Sy python2-setuptools yaourt -Sy targetcli-fb /…

シリアルコンソール上でのkdbの有効化

ドキュメントがあんまりしっかりしてないのでここに書いておく。 ちなみにkdbというのは*BSDでいうddbである(説明になっていない。まず、カーネルの.configでこのあたりを有効にしてみる: CONFIG_KGDB_KDB=y CONFIG_KDB_KEYBOARD=y CONFIG_HAVE_ARCH_KGDB=…

Arch linuxでX forwardingしようとしてはまる

なんかいつも通りに/etc/ssh/sshd_configに X11Forwarding yesとか設定すればいいかなって思ってたら X11 forwarding request failed on channel 0とか変なエラーでて使えないわけですよ。 なんだろ、って思ってググったらこんなの出てきた。 A note on X11-…