Hatena::ブログ(Diary)

かーねる・う゛いえむにっき このページをアンテナに追加 RSSフィード Twitter

2016-12-03

[][][]カーネルVMキャンプ #4 at 山梨県小菅村

温泉ハッカソン Advent Calendar 2016 3日目の記事です。

昨日より山梨県小菅村カーネル/VMキャンプ #4を開催しているので、こちらのハッカソン会場と温泉を紹介しようと思います。

カーネルVMキャンプってなに?

カーネルVM探検隊っぽいハッカソンイベント」です。

カーネルVM探検隊主催者常連参加者が中心に参加しており、特にジャンルの縛りや成果発表などはなくみんなで集まってわいわいやりながら各自好きな作業をするイベントです。

もうひとつのイベントの特徴として、毎回山奥で開催される掟になっています。

開催場所によってはロードバイクで宿まで来る参加者がいたり、山へハイキングに行く参加者がいたりします。

f:id:syuu1228:20161203211927j:image

小菅村

小菅村は奥多摩湖の西側、大月の北側、檜原村(※)から山ひとつ越えた裏側にある人口約700人の山間の小さな村です。多摩川源流の小菅川での釣りと周辺の山でのハイキングが人気のようです。

※…東京都檜原村潜入記録

f:id:syuu1228:20161203071551j:image

f:id:syuu1228:20161203162116j:image

ハッカソン会場

廣瀬屋旅館を利用させていただきました。

一般客の宿泊プランは一泊二食付き10,000円ですが、合宿ということで食事の内容を安くしたりアメニティを省略していただく代わりに少し割引してもらえました。

宿泊客が多くなかったので部屋を多めに貸して頂けたので、客室のうちの一つにハックルームを構築しました。

ネットワークは全館WiFi有りだったのでこれをそのまま利用しました。

10名で負荷かけたらWiFi APが落ちまくりましたが、そういう使い方は想定されてなかったのかも。

モバイル回線に関しては、Docomo MVNO回線ならLTEで数Mbps出てました。

f:id:syuu1228:20161203102943j:image

f:id:syuu1228:20161202110415j:image

f:id:syuu1228:20161203162933j:image

f:id:syuu1228:20161203223611j:image

温泉

宿には5人同時に入れるサイズの浴場がありますが温泉ではないので日帰り温泉を利用しました。

宿から1.7km先に小菅の湯道の駅こすげがあります(@nifty温泉の口コミ)。

泉質はPH9.98の強アルカリ性温泉で、透明でぬめりのあるお湯です。露天風呂も付いてます。

f:id:syuu1228:20161203160233j:image

f:id:syuu1228:20161203153955j:image

入館料は3時間で620円、冬季営業時間は10:00〜18:00でした。

昼食

小菅の湯・道の駅こすげを利用しました。

おさんぽ

松姫峠から鶴寝山を経由し山沢入りのヌタへ行って戻る片道1時間のイージーハイクコースがあります。

f:id:syuu1228:20161203230334j:image

晴れていると鶴寝山からの富士山がきれいです。

f:id:syuu1228:20161203074015j:image

f:id:syuu1228:20161203072656j:image

アクセス

小菅の湯の案内を見たほうが早いです。

公共交通機関の便はダメです。

奥多摩駅からのバスは日に4本で所要時間50分、大月駅からのバスは日に3本で所要時間60分です。

車の場合は大月ICから松姫トンネルを通って小菅村まで30分です。

ハッカソンの成果

この記事が書けました(完)

2015-12-27

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

singlefilelinuxとか名前を付けてみたが、新しいディストリを作ったり新しいツールを作ったりしたのではなく、単にGentooのLiveCDを単一カーネルイメージに埋め込んでブート可能にしただけである。

使い方は以下の通り:

http://s3.amazonaws.com/syuu1/singlefilelinux.gif

これで普段データを入れておく用のUSBメモリからデータを消すことなくLinuxインストールをしたり、壊れたbtrfsの復旧作業が出来るようになった。

なお、UEFI専用なので当然のことながらUEFI対応PCでは使えない。

また、UEFIexFAT対応していないので32GBを超える容量のUSBメモリでこれを使う事は難しい(デフォルトexFATフォーマット済みだし、FAT32は32GB以上の容量をサポートしないし、UEFINTFSext3などにも対応していないため)

ちなみにGentooにしたのはLiveCDのイメージサイズが小さくてsystemdじゃなかったので簡単そうだったから、というだけの理由で、Ubuntuや他のディストリだと出来ないということではありません。

イメージビルドの仕方はGithubを参考にして下さい。

他のディストリ対応試してくれる人が居るとうれしいな。


追記:当然ながらsecurebootとは共存出来ない…

2015-10-06 このエントリーを含むブックマーク このエントリーのブックマークコメント

2015-01-22

[]Route 53でcli53を使ったDynamic DNS

Route 53でDDNSというとroute53DynDNS.bashを使った例を多く見かけるのだが、自分の手元では正常動作しないし読めた物ではない感じの作りなので、cli53を使って極めて簡単に書き直した。

AWSインスタンスでの例はこちらにあるのだが、ここではAWSではない自宅鯖のDDNSに用いるのでEC2関係の所は参考にしない。

cli53をインストール
sudo pip install cli53
.botoにIDとKeyを設定

こんな感じの奴を作る

[Credentials]
aws_access_key_id = <your_access_key_here>
aws_secret_access_key = <your_secret_key_here>
update53.shを作成
#!/bin/sh

ZONE=example.com
RECORD=www
DAT=/tmp/update53.dat

if [ -f $DAT ]; then
	PREV=`cat $DAT`
else
	PREV=`cli53 rrlist $ZONE|grep ^$RECORD|awk '{print $5}'`
fi
CUR=`wget -q -O - checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//'`
echo $CUR > $DAT

if [ "$PREV" == "$CUR" ]; then
	exit 0
fi

cli53 rrcreate $ZONE $RECORD A $CUR --ttl 3600 --replace

crontabに適当インストール

*/5 * * * * /home/syuu/update53.sh

2014-12-18

[][]mrubyでUEFIブートローダなやつのバイナリ配布

多分みなさんEDK2のビルドが面倒い最高で試すの嫌だと思うので、バイナリ配布しておきますね。

こちらです:

https://s3.amazonaws.com/syuu1/mruby.efi

ブートローダスクリプトはこちら:

https://raw.githubusercontent.com/syuu1228/mruby_on_efi_shell/devel/example/bootloader.rb

いきなりefibootmgrなどを使ってブートメニューに組み込もうとせずに、EFI Shellから起動することを強くおすすめします(しくってブート出来なくなったりすると困ると思うので)。

※追記:落としてバイナリ見れば分かると思うんだけど、X64版です。他のアーキテクチャ(IA32を含む)では動かんです。

[][]GCEでOSvを動かそう

OSvは、ハイパーバイザやIaaSプラットフォームアプリケーションデプロイすることに特化した軽量OSです(※詳しくはこちら)。

今回はRuby on Railsで書かれたブログエンジンPublify」をインストールしたOSvのイメージGoogle Compute EngineGCE)へデプロイしてみます。

プロジェクトを作成

まずOSv用にプロジェクトを作成してみます。

f:id:syuu1228:20141218083122p:image

Cloud Storageの登録

Cloud Storageが有効化されてなかったので登録しておきます。

f:id:syuu1228:20141218083123p:image

GCE SDKインストール

GCE管理用のコマンド群を使用するため、SDKインストールします。

curl https://sdk.cloud.google.com | bash
プロジェクトIDの設定

先ほど作成したプロジェクトログインしてIDを設定します。

gcloud auth login
gcloud config set project fresh-mason-798
バケットの作成

OSvのディスクイメージアップロードするためにCloud Storageへバケットを作成します。

gsutil mb gs://osv_test
Rubyのインストール

Publify入りのディスクイメージビルドするためにrvmでRubyインストールします。

 gpg --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3
\curl -sSL https://get.rvm.io | bash -s stable
source ~/.profile
rvm install 2.1.4
rvm use 2.1.4
sudo yum install sqlite-devel
OSvイメージビルド

OSvのソースコードをcloneしてPublifyのイメージビルドします。

ビルドが終わったらGCE用のtar.gzファイルを生成します。

git clone https://github.com/cloudius-systems/osv.git
git submodule update --init --recursive
make image=ruby-publify
./scripts/gen-gce-tarball.sh

※今回は、make image=ruby-publify,httpserverとしたところエラーが出て起動しなかった(Rubyとの組み合わせで発生するバグ)のでhttpserverを外しましたが、これがないと8000番ポートRESTサーバが起動しないのでOSvの管理が著しく不便になります。Ruby以外のアプリを使用する時は必ず付けることをオススメします。

OSvイメージデプロイ

gsutil・gcutilコマンドを使ってgen-gce-tarball.shコマンドで生成したosv.tar.gzをアップロードデプロイします。

今回はus-central1-aのf1-microへosvという名前で実行することにしました。

gsutil cp build/release/osv.tar.gz gs://osv_test/osv.tar.gz
gcutil addimage osv gs://osv_test/osv.tar.gz
gcutil addinstance --image=osv  --machine_type=f1-micro  --zone=us-central1-a osv
動作状況の確認

getserialportoutputでOSvインスタンスの動作状況を確認します。

gcutil getserialportoutput osv

以下のような出力が表示されます。

(略)
OSv v0.16-22-ga6c87f0
eth0: 10.240.159.233
sigaltstack() stubbed
=> Booting Thin
=> Rails 3.2.21 application starting in production on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
You did not specify how you would like Rails to report deprecation notices for your production environment, please set config.active_support.deprecation to :notify at config/environments/production.rb
WARNING: fcntl(F_SETLK) stubbed
Thin web server (v1.6.3 codename Protein Powder)
Maximum connections set to 1024
Listening on 0.0.0.0:3000, CTRL+C to stop
ファイヤウォールの設定

グローバルIPからポート3000へ接続出来るように設定を変更します。

gcutil addfirewall publify --description="publify http" --allowed="tcp:3000"
Publifyへ接続

http://<インスタンスグローバルIP>:3000/ へブラウザから接続すると、Publifyのセットアップ画面が出てくるので設定を開始します。

f:id:syuu1228:20141218083124p:image

覗いてみる

http://146.148.55.173:3000/ で起動中です(そのうち落とします)。


まとめ

OSvのイメージGCEデプロイする方法を解説しました。

今回はPublifyの例を挙げましたが、CassandraのようなJavaアプリRedisのようなネイティブアプリも同様の手順でデプロイすることが可能です。