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

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でもいけるんじゃないかな。

udis86を使ってディスクイメージのMBRをディスアセンブル

多分objdumpとか他のツール使っても出来ると思うけど、udis86に付属のudcliでもこんな感じに簡単にディスアセンブル出来る。 $ udcli -16 -att -v intel -o 7c00 -c 512 freebsd.img 0000000000007c00 eb3c jmp 0x7c3e 0000000000007c02 0000 add %al, (%bx,…

UEFIのSDK事情

なんか幾つか選択肢があって混乱したので、今理解していることをメモっとく。 EDK II このへん。 オープンソースで開発されてるUEFIのSDKで、UEFIのSDKまわりをググってると一番よく出てくるやつ。 つかいかたはこのへんとか。…なんだが、ソースの取得方法に…

UEFIアプリケーションの開発を始めるのに役立ちそうな記事リンク集

Mac上のVMware FusionやVirtualBoxでUEFI 2.0を試す - かーねる・う゛いえむにっき BIOSとUEFIの歴史 - かーねる・う゛いえむにっき GPTとMBRはどのように違うのか? - かーねる・う゛いえむにっき UEFIのSDK事情 - かーねる・う゛いえむにっき Linuxホスト…

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

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

シンボリックリンクをrm -rf symlink/すると不幸になる

OS

Twitterでちょっと話題にしたのでメモしとく。 sh-3.2$ mkdir -p hoge/huga sh-3.2$ touch hoge/huga/piyo sh-3.2$ ln -sf hoge tmp sh-3.2$ rm -rfv tmp tmp sh-3.2$ ls -l hoge/huga/piyo -rw-r--r-- 1 syuu staff 0 1 22 14:25 hoge/huga/piyo シンボリッ…

UEFIハマりポイント

UEFI環境でFreeBSDとLinux・Windowsなどのデュアルブート環境を構築するとMBRを使うことになるが、ここで誤って(というかMBR的には正しいが)MBR上のパーティーション(タイプがGPTのやつ)にブートフラグを立てると途端にUEFIでGPTパーティーションが認識…

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

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

USB 3.0 HDD benchmark on FreeBSD-CURRENT

なんかASUS U24Eを買ったらUSB 3.0ポートが付いてきて、FreeBSD-CURRENTで認識出来たのでUSB 3.0対応ケースを買って2.5 inch SATA HDDを突っ込んで軽く試してみた。 USB 2.0のポート root@u24e:~ # usbconfig list ugen0.1: <EHCI root HUB Intel> at usbus0, cfg=0 md=HOST spd=H</ehci>…

kexecの実装

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

Linux loader for BHyVe

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

BHyVe treeのgit mirroringはじめました。

取り敢えず、BHyVe treeが-CURRENTへマージされるまでは残しときますね。 https://github.com/syuu1228/bhyve

GPTとMBRはどのように違うのか?

UEFI環境下では、BIOSでサポートされているMBRに代わりGPTと呼ばれる新しいパーティーションテーブルを用います。 2TB以上の大容量なHDDをサポート出来る、と説明される事が多いのですが、具体的にどのような違いがあるのか比較してみます。 MBR MBRはLBA 0…

BIOSとUEFIの歴史

BIOSの歴史 BIOSはIBM PC(1981年)と共に登場し、「IBM PC互換機」が普及した事によりパソコンの標準ファームウェアとなりました。 以降、ハードウェアもBIOS自身も当時とは全く異なる姿になるまで大きく拡張・変更され続けていますが、アプリケーション互…

Mac上のVMware FusionやVirtualBoxでUEFI 2.0を試す

Macばっかり使ってるとUEFI 2.0で遊ぶ機会が無く、いつまでも使い方が分からないままな訳ですが、最近のVMwareやVirtualBoxならUEFI 2.0をサポートしているので仮想マシン上で取り敢えず試してみる事が可能です。 VMware Fusionの場合 なんか適当にUbuntu Se…