Jailでresolv.confどないすんねん問題

jail中でpkg installできないと思ったらそもそも名前引けなかったみたいな事例、普通にresolv.conf書けば治るんですが、それはそれとして

Resolvconf with FreeBSD jails

こういう、Jail中のresolv.confはpublic DNSにしたら?みたいなクソどうでも良い回答でスレッドが終わってて悲しかったので一応言っとくと、

#!/usr/local/bin/zsh

#This file is located /etc/resolvconf.conf

for i in /var/jails/*/etc; do
        cp /etc/resolv.conf $i
done

(ただしすべてのjail環境が/var/jailsの下にある場合)

以上です

Jailから出る

jailから外にpingが打ちたいねん

うちたい。

当方FreeBSD 10.2-RELEASE #0 r286666

ま、とりあえずjailたてようか

mkdir -p /var/jail/hoge
cd /var/jail/hoge
fetch http://そこらへん/base.txz
tar xf base.txz
vi etc/crontab #最終行を消せ!!!

ここが網走だ、覚悟しろ

jailの設定を/etc/rc.confに書くと計算機が爆発する

jailが増えるといずれrc.conf設定ファイルが摩擦熱で徐々に熱くなり、そのうち発火、最悪CPUのグリスに引火・爆発して周囲10kmが焼け野原になる。

これを避けるために発明されたのが/etc/jail.confというファイルだ。

これはこんな見た目をしている。

allow.raw_sockets = 0;
allow.set_hostname = 0;
allow.sysvipc = 0;
mount.devfs;
exec.start += "/bin/sh /etc/rc";
exec.stop = "";

baka {
        host.hostname = "baka";
        path = "/usr/jail/hoge";
        ip4.addr += "一億/16";
        allow.sysvipc = 1;
        allow.raw_sockets = 1;
}

ちなみに、/etc/rc.confに

jail_devfs_enable="YES" 
jail_sysvipc_allow="YES"

とか書いてても、上のallow.*みたいなのを書かないとpingが通らず(ping: socket: Operation not permitted とかみたいになる)、ユーザは禿げるし、ユーザが放った数多くのpingがネットワークカードに詰まって摩擦熱で徐々に熱くなり、最悪PCIスロットに詰まったホコリに引火・爆発して周囲30kmが焼け野原になる。

お土産

[/etc/rc.conf]

hostname="oyaga_bakanara_komo_baka"
keymap="us.pc-ctrl.kbd"
ifconfig_em0="DHCP"
sshd_enable="YES"
# Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable
dumpdev="AUTO"
zfs_enable="YES"

jail_enable="YES"
jail_list="baka"
ifconfig_em0_alias0="inet 一億/16"

wpa_supplicant and WPA enterprise (like eduroam)

Like as wiki (WPA supplicant - ArchWiki) says, anyway you need to install wpa_supplicant.

Then, because Networkmanager can't handle with eduroam, you'll start to thinking about connecting to it by hand.

Write a configration file (eg: /etc/wpa_supplicant/wpa_supplicant.conf) like below:

network={
    ssid="eduroam"
    scan_ssid=1
    key_mgmt=WPA-EAP
    eap=PEAP
    identity="foo"
    password="bar"
    phase1="peaplabel=0"
    phase2="auth=MSCHAPV2"
}

OK, configuration is done. Let's up wpa_supplicant.

% wpa_supplicant -B -i wlp3s0 -c /etc/wpa_supplicant/wpa_supplicant.conf

... and connect a client to wpa_supplicant.

% wpa_cli
:
:
blah
blah
blah
:
:

You will get a prompt to put a command.

> list_networks                               # [list_network] is your input
network id / ssid / bssid / flags

0   eduroam any 
> enable_network 0
OK
:
:
blah
blah
:

If you have some configuration other than eduroam in wpa_supplicant.conf, it's ok. Then you'll see some networks on list_networks. Disable unneeded one with disable_network m and choose eduroam with enable_network n(if needed).

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 で、 となりました。

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