2014年5月22日 (木曜日)

12:23:45 # Life crypto API. AF_ALGというアドレスファミリーでソケットを開いたらwriteしたデータをreadしたら暗号化されたデータがもらえる。おもしろいAPIだなぁ。

14:32:18 # Life memfd, kbusのsealing について。 ゼロコピーでも別のプロセスのTLBいじるコストがあるので、 512k以下だとメモリコピーのほうがましだった、というのがおもしろい。 Androidのashmemと同じ、らしい。 binder/ashmem とどうやってマージするのかなぁ。

17:22:31 # Life x86-64 EFI で brainfuck. MacBook Air を新しく買ってきたのでまたインストーラーでもいじろうかなと思ってたので EFIの開発環境を整備してみた。 gnu-efi で配布されているリンカスクリプトでELFの.soを作成してそこからPE32+ 実行ファイルをobjcopyで作成するという手順がだいぶ変態的でそのためのMakefileが複雑すぎ。 EDK2ではリンカが用意されているという噂だけどどこに実体があるのか発見できず。 Tianocore プロジェクトにEFIファームウェアがあって、qemuのBIOSとして利用できるので手元で使ってみた。 qemu の fat:コマンドラインを使うとディレクトリを読み込み専用の仮想FATファイルシステムとして見せてくれるのでEFIから見える。ファイルシステムイメージを毎回作成する必要がないのですごい便利。シリアルコンソールでも画面サイズが80x24だと仮定していて、 そこはどうしたらよいのかな。

$ file brainfuckefi.efi 
brainfuckefi.efi: PE32+ executable (EFI application) x86-64 (stripped to external PDB), for MS Windows
$ qemu-system-x86_64 -L . -hda fat:. -nographic
Shell> fs0:
fs0:\> brainfuckefi.efi
InstallProtocolInterface: 5B1B31A1-9562-11D2-8E3F-00A0C969723B 5C4BE40
Loading driver at 0x00005C21000 EntryPoint=0x00005C24000 
InstallProtocolInterface: BC62157E-3E33-4FEC-9920-2D3B36D750DF 5C64418
InstallProtocolInterface: 47C7B223-C42A-11D2-8E57-00A0C969723B 7A798E0
Hello World!
	
Junichi Uekawa

$Id: dancer-diary.el,v 1.94 2009/10/21 14:02:48 dancer Exp $