UEFI版 bitvisorのビルドの方法

Arch linux では UEFI ブートローダをビルドするのに必要な amd64-mingwなんちゃらかんちゃらmsvc-gcc を手に入れるのが地味に面倒くさくて雑な気持ちになったので、debian の docker を引っ張ってきてこんな感じにする。

apt-get update && apt-get install build-essential gcc-mingw-w64 gcc-mingw-w64 mercurial whiptail

それから bitvisor をビルドする。

それから、bitvisor/boot/uefi-loader で make してローダを爆誕させる。

これで沸いた bitvisor.elf と bitvisor/boot/uefi-loader/loadvmm.{efi}{dll} を /boot (など、EFIパーティションの場所)に放り込む。

EFI shellからloadvmm.efiを叩く。

イエー

しかし、UEFI版はMACでなければ動かないんじゃねーかという風の噂を耳にしたし、実際どうやってもloadvmm.efi中にコケるので動かないっす

UPDATE

わからんけどよく見たら機嫌が良くなって動くようになった。

ので、もうちょい詳しく書く。

loadvmm.efiの後、bitvisor.elfがロードされてうまく動くと、vmenterしたまま帰ってくるので、こうなる。

Shell> fs0:
fs0:\> loadvmm.efi
Loading...(snip)
Starting Bitvisor (snip)
(snip)
(snip)
(snip)
:
:
Starting a virtual machine.
fs0:\> ←←←←←ゲストモードになってからEFIシェルに帰ってくる!!!!!1111
fs0:\> startup.nsh ←←←←フツーに起動するとゲストモードに入ってる、ばんざい!

ということで、普段からbitvisor環境で立ち上がってくるようにしたい場合は、startup.nshの先頭にloadvmm.efiって書いておけば良いぞい。

SSHのpubkeyについて

ssh-keygenで作られた公開鍵のフォーマットどないなってんねん。

RFCではこのの様になっとる: rfc4716

しかし、我々の知っている公開鍵ファイル(eg: .ssh/id_rsa.pub)はこのようになってるはずや:

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIBTKKjXHyWP6pv+Lmf0Y3URUQ21c7wY7VNzNMV1oMNzq9e3UXy0TyvMJcXJe5QDqoU/lPUk332JlBLTM2vJhZQCcsQSxUeA9s5h4twVvYW/+VC0WG3b+yioSacetioqx7CvVBOIyp2zIGgay1ykfxgaMm6BcPO9/t32IDohqwFNIw==

問い. この鍵はどうなってるのか

答え. ゴミ<space>[次の文字列のサイズ in byte :: 4byte][アルゴリズムの名前 in ascii (eg. ssh-rsa)][次の数字のサイズ in byte :: 4byte][e(positive)][次の数字のサイズ in byte :: 4byte][n(positive)] in Base64

最初の文字列ssh-rsaは次のbase64で表現されたバイナリに含まれるものと一致すべし。 次に続くのは上記のとおりバイナリ列であり、最初の4バイトはたいてい7とかかれている(00 00 00 07) - (これを aszと呼ぼう)。

次にaszバイト数だけ続くのはASCII文字列で、たいていssh-rsaなどとかかれている。

その次に4バイト分だけeのサイズがかかれており(eszとおく)、次にeがeszだけかかれている。

その次に4バイト分だけnのサイズがかかれており(nszとおく)、最後にnがnszだけかかれている。

eとnについてはwikipediaRSAの記事を読め。

  • 注意 * nを正数として表現するため、実際のサイズよりもここに格納されている値のサイズのほうが1バイトだけ大きい。たとえばeszが257であれば、実際の鍵長は256バイト(2048 bit)である。

GhcModTypeが訳分からんところをハイライトする。

この記事は追記の事情により読む必要がないです。

質問

ghcmod-vimを入れて楽々Haskellライフが送れるようになりますが、 こんな風にGhcModTypeが訳分からんところをハイライトすることがあります。 f:id:Ieshoriveul:20150314021633p:plain

さて、どうやって直すのでしょうか。

古い回答

Haskellで一般的なVimの設定にしないお前が悪い。

`~/.vim/ftplugin/haskell.vim'を作って以下のように書け:

" Tab specific option
set tabstop=8                   "A tab is 8 spaces
set expandtab                   "Always uses spaces instead of tabs
set softtabstop=4               "Insert 4 spaces when tab is pressed
set shiftwidth=4                "An indent is 4 spaces
set shiftround                  "Round indent to nearest shiftwidth multiple

そうすると自然とghc-modと仲良くできるコードが手から沸いて出てくるようになる。 f:id:Ieshoriveul:20150314022611p:plain

根拠: Vim - HaskellWiki

新しい回答

このブログを投稿した後、

となり、 となって、 Fix for tab indent · 2929163 · eagletmt/ghcmod-vim · GitHub からの、 Release v1.3.0 · eagletmt/ghcmod-vim · GitHub で、 となりました。

ありがとう!拍手!!!えらい!!!!

urxvtタブ健康法でこの春モテる!

みんな大好きTMUXですが

下手にタブを増やしすぎると苦しくなってきます(ショートカット + 数字が効かなくなる、など)。

URXVTタブ健康法でこの春モテよう!

.Xdefaultsに以下↓をこっそり書いてがんがんモテちゃおう!

gist3f7534e087229076df60

ちなみにこれを書くと、http://バカ.jp みたいなところでカーソルを当てて M-u すると、ブラウザでページが開くようになります。

w3m の v6 only/v4 only オプションは

v6 only/v4 only にならない。

% ip addr show
:
:
.. eth1: <BROADCAST,...
:
    inet 203.....
    inet6 2001:.....

オッ

% w3m -4 http://v6.iorivur.red/

アッ………。

フムー

最初は

opening socketと出て待つのでv4を先に見に行ってる感はあるが、そのうちv6で見に行って成功してしまう。

それからは

なんかキャッシュされて普通に見れてしまう。

  • 以上 -

hostnameが変わるとXがno protocol specifiedになる、学内LANなどが勝手にhostnameを変更してくるので頻発する。

サスペンドしてから学内を移動し接続するときに頻発するので、ACPIかIntel HD Graphicsのドライバのバグかと思ってた。

 - 以上 -