投稿

2015の投稿を表示しています

btrfsでsnapshotを使わず消してしまったファイル復活

ext4だとextundeleteとか使うけどbtrfsはそれそのものの機能でなんとかなる(ことがある)
メモ.

まず,
# btrfs-find-root /dev/sdXY これで大量にリストが出てくるうちの,
Well block 25240 seems great, but generation doesn't match, have=1000, want=1001 とかseems greatと書いてある行が出てきたらラッキー.
このWell blockのうしろにある数字(bytenr)を覚えておいて,
たとえばデスクトップ上のpngファイルを復活させたいなら,
# btrfs restore -t 25240 -v --path-regex '^/(|home(|/username(|/Desktop(|/.*\.png))))$' /dev/sdXY /tmp/restore とすれば,btrfsでフォーマットされた/dev/sdXYから,btrfsのツリーのうちbtrfs-find-rootで見つけた25240という木の中の,--path-regexに渡した 正規表現にマッチするファイルを/tmp/restoreにダンプする事になる.

また,この一連の操作を行なうbtrfs-undeleteというシェルスクリプトがGPLv2で公開されている.
http://comments.gmane.org/gmane.comp.file-systems.btrfs/22560

以上

P.S.
やっぱりbtrfsは便利だし安心安定高機能,みなさん使うべきですね

Chinachuを/じゃなくてサブディレクトリの下で公開したかった

DTV AdventCalender 19日目の記事です

2016/04/09ページ末尾に追記

私事なのだけども,ChinachuにNginxをかまして運用している.
また,いろいろあってドメインのルートではなくディレクトリの下で動かしたかった.
そのためにやったいくつかのメモです.
まず,Nginxの設定.一部抜粋.
httpsで公開している.
locationのところでChinachuを公開するようにして,別のホストのサーバーに
プロキシしている.
proxy_set_headerでUpgradeとConnectionを設定してるのはWebSocketのため.
それとこれだと認証がないので,実際の運用ではNginxで認証かけてます.

最初はNginxのdigest認証モジュールを使おうとおもったのだけど,
http://tokcs.com/archives/1810
にあるように規格違反なバグが存在している.
他にもalgorithm=MD5とすべきを"MD5"としていたり,RFCに記述されてるEBNFをちゃんと読み取れてない事に起因するバグを複数みつけてしまい,VLCのdigest認証が予想以上に厳格だったのでつらくなった.

AURにdigestモジュールのNginxがなかったこともあって,
先のURLにあったパッチと手元で作ったパッチを適用するAURパッケージを作っておいた
https://aur.archlinux.org/packages/nginx-http-auth-digest/
が,Chromeなどでは使えるが未だにVLCに認証エラーで弾かれるのでまだバグがあるのだと思う.だれかNginxでdigest認証プラグインを運用してる人,教えてください.

次にChinachuの改変.
Chinachuはべつに特に設定する事なくちゃんと動いてくれるのだが,
Chinachuから動画を見ようとするとChinachuのAPIが返すjsonのパスがChinachuがルートで動いてる前提になっていて見れなかったりする.
次のパッチで解決.

以上で,Chinachuをドメインのサブディレクトリ以下で公開する事ができた.
まああんまりこういうことしてる人っていないと思うので,誰の役に立つかはわからないが,メモでした.

追記:
2015年11月のコミット…

Nginxとアタック

さいきんこっそりNginxを使いはじめた.
すると,アクセスログをみるといろいろなお客さんが居ることに気がついてちょっと面白かったのでメモ.

ひとつめ.ひたすら/admin/phpmyadmin/...とかにアクセスしようとするヤツ.
アクセス元のIPアドレスは中国からだった.
どうやらMorfeus F*cking ScannerとかいうPHPの脆弱性スキャナがあるらしい.
他にも同様のスキャナにZmEuとかもあるようだ.

ふたつめ./cgi-bin/env.cgiに対してGETをしようとして,リクエストの中身がperlを叩きに行こうとしてたりあからさまにOSコマンドインジェクション狙ってそうなやつ.
これはTrojan.Perl.Shellbot-2というトロイウィルスらしい.
http://psychoid.usというURLにwgetをして更なるウィルスのDLを目論んでいたようだ.
アクセス元はオランダ.

どちらも,私の環境だと不発で終わりなので問題はナシ.

GeoIPで特定のお国を弾くとか,UAで弾くとか,やれる事はありそうだけど,
UA偽装されてるとつらいしIPで特定の国を弾くとかやりすぎると閲覧できる人が限られてしまって苦しいところ.今は個人的にしか使ってないからIPで国をJPだけにとかで何も困ってないけど,ブログとかのコンテンツを置くようになったらどうするべきなんでしょ.

BFQスケジューラ

イメージ
私事ですが,この前買ったVAIO Pro 13 | mk2のカーネルをZENパッチセットを適用したlinux-zenにしました.
ArchLinuxではなぜか公式レポジトリ入りしてるのでバイナリが降ってきます.
それ以前はlinux-drm-intel-nightlyから自分でビルドした4.4rcのカーネルを一瞬使ってましたが,このマシンで発生しているチラつきや不安定な挙動の解決に有効ではなかったようなのでやめました.

閑話休題

pfパッチセットやZENパッチセットではI/OスケジューラにBFQが採用されています.
ckパッチセットではデフォルトではないもののBFQが使えるようです.
さて,そこでBFQスケジューラについて調べ,まとめました.

BFQスケジューラとはBFQ = Budget Fair Queueingインタラクティブなアプリのための低遅延なschedマルチメディアのようなsoft real timeなアプリのための低遅延なsched高スループット(CFQに比べHDDで30%高速)強い公平性 などがメリットとして上げられています. Manjaro,OpenMandriva,ArchLinux ARMのデフォルトI/Oスケジューラになっている模様です.(ManjaroはCPUスケジューラにBFS,I/OスケジューラにBFQをつかってるみたいですね.)
ホントかよ?と思いますが,ここに挙げられているテスト結果を引用すると[1]


たとえばSeagateのHDDにおいてスループットのテスト(上図,高いほど良い)やxtermの起動時間テスト(下図,小さいほど良い)でとても良い結果を出していますが,
この図のようにOpenOffice Writerの起動時間テストでは他のスケジューラに大きく差を付けて悪い結果を出してしまっていたり, また,PLEXTORのSSDにおいて, スループットが他のスケジュールとほぼ差がなかったり(やや負けている)しています. ただ,PLEXTORのSSDでのxtermの起動時間とOpenOffice Writerの起動時間は,
けっこう良いみたいですね. ほかにもサイトにはToshibaの1.8" HDDやTranscendのmicroSDHC,SamSungのeMMCなどのテスト結果が掲載されています. Ope…

VAIO Pro 13 | mk2 を購入 + Linuxインストールした

イメージ
2014年春にThinkPad Edge E145を購入し,使用してましたが,

現状、おるみんのラップトップマシンはキーボードについてGとHのキーについて摩耗してキートップおよびセンサが半壊、ヒンジ周り他ケースが浮き始めている、AMD APU+HDDで若干の不便を感じはじめてきたなどがあるだや — orumin (@kotatsu_mi) 2015, 11月 9
なんか常からgとhのキーが死にかけてて認識しない事がしばしば、つってたんですけどついに今日はg押したらyやtになる事例が発生していよいよ限界ある — orumin (@kotatsu_mi) 2015, 11月 13 などが発生しており,コアもA4-5000なので動画再生は良いけどビルドの時とかが微妙だなあって考えるようになった.

ので,VAIO Pro 13 | mk2をタッチパネルモデルで購入しました.
いろいろ妥協して,Core i5 + 8GB DDR3 Memory + SATA SSD(256GB)

今日初めて自分以外でVAIO Pro 13 | mk2でLinuxを使ってる人を観測できたので,私も忘れないうちにハマりポイントとレビューを残しておきます.

画像多めです
レビュー

開封直後からWindows 10 Threshold 2のアップデートがw
受けとったその直後からカーネルVMキャンプ第二回参加のために一夜車に乗り谷川岳へ
谷川岳はヤマノススメの,ひなたとあおいの約束の山なのですが,ロープウェイ乗り場にヤマノススメが4巻(谷川岳登山)から以下続刊が置いてありおもしろかった.

(谷川岳のふもと,水上の古民家)

しゅううせんせー(@syuu1228)に借りたVAIO Pro 11(左)とVAIO Pro 13 | mk2
VAIO ProやVAIO ZはAMIのAptioの改造を使ってたようですが,UEFIのBoot Entryがちゃんと見えない上に
VAIOレスキューモード(UEFI設定に入る前に独自UEFI Appがhookして起動するぽい)を起動した瞬間Boot EntryをWindowsだけに初期化してくれやがる仕様だったのが,
mk2からPhoenixのSecure Coreになりタッチ対応,Boot Entryもグラフィカルに設定できるように.

方々のリリースで"V…

ねこ

イメージ
いつもの駅に行く道すがら,女の子が何人か何かを囲んでたのでふと見てみると,
古い町の電気屋の前でノラネコがいた.


ちょっと小生意気な顔した,野良で強く生きてんだゼ感出してるように見えてかわいい

なんとなくラップトップのアカウント画像にしてます.
GNOME3案外便利だった.

Linuxとbluetooth

Prime MusicがAmazonから提供されるようになったので意味もなく
ブルースとかレゲエとかヘヴィメタルとか聴いてます

閑話休題

ブルースではなくbluezです
私のラップトップはThinkPad Edge E145なのですが,これのwifiが
Broadcomの43228 + 20702A1 comboです.
43228(pci)のほうは,Linuxカーネルのリバースエンジニアリングドライバ(メインライン)なりプロプライエタリのwlドライバなりが存在します.
なので,無線LANには困りません.
もう片方,207021A(vid:0a5c, pid:21f3)のほうが問題でした.
btusbドライバがカーネルにはあるので,ちゃんとデバイスは読めるのですが,
バイナリブロブ(ファームウェア)は存在しません.
なので,このbluetoothインターフェイスは使えませんでした.


しかし,これの解決方法を知ったので以下に

1. 公式のWindowsドライバをDownload ThinkPadならば,普通に公式サイトからダウンロードしてください
他のマシンでも同様です.
または,http://catalog.update.microsoft.com/v7/site/ScopedViewRedirect.aspx?updateid=87a7756f-1451-45da-ba8a-55f8aa29dfee
から.cabのパッケージをダウンロードする手もあります

2. 解凍 普通にexeをダウンロードしたらならば,wineかWindowsで起動して中身を取り出します
setupに必要なファイル群が解凍されたらsetupそのものは実行しないようにすれば良いです
cabをダウンロードしたならばcabextractコマンドをインストールして使いましょう

3. インストール まず,lsusbコマンドで自分のマシンのbroadcomなbluetoothデバイスのIDを控えましょう
ID 0a5c:21f3となっていれば,0a5cがvid(ベンダーID)で21f3がpid(製品ID)です

解凍先のWin32とかWin64とかのディレクトリをを見にいきましょう(32か64はどっちでも良いです).
cabextractでcabから取り出したならばならコマンドを実行したディレクトリにファイル群が…

解決方法募集中! K-9 Mailで受信に失敗

表題の通り.
Outlook.comのメールをAndroidのK-9 Mailで受信しようとしたところ, Username or password incorrect.
(Command: AUTHENTICATE PLAIN; response: #2# [NO, AUTHENTICATE failed.]) というエラーで失敗.
しかし,まったく同じuserとpassでsmtpの認証は通っている他,
このメールは独自ドメインのメールだが同じドメインのOutlook.comのアカウント
複数あるものはどれも受信が問題なく行う事ができる.

また,先月末までは何も問題なく受信できていました.

他の問題ないアカウントとこのアカウントの差異といったら,
このアカウントがOutlookメール(プレビュー版)になっているところ.

もしかしてプレビュー版だと認証とか少し変わったのだろうか.

だれか詳しい人,あるいは同じ症状の人,情報お願いします.

切実.

足りないカーネルモジュールを知る

カーネルを自前ビルドしてると,いざという時にいくつか機能が足りなくて頭を抱える事がままある.

怒られたやつつっこんでビルドしてリブートするもまだ足りなくて……
みたいなのはもうやめたいと考えていたが,良い方法を知ったので以下紹介



これを/tmp/modprobeに配置
それから,
$ chmod a+x /tmp/modprobe 最後に
$ echo /tmp/modprobe | sudo tee /proc/sys/kernel/modprobe これでカーネルが機能が足りないとき,modprobeをしようとして/tmp/modprobeを呼ぶ.
すると,modprobeしようとしている内容が/tmp/modprobe.logに出るわけだ.
あとはそのモジュールについて,カーネルコンフィグしてリビルドすれば良い

SSL/TLS証明書を買いました

最近宅内のファイルサーバーと録画サーバーを内側セグメントにまとめてしまい,
DMZのRPiはファイルサーバーではなくNginxでリバースプロキシにしてしまった.

Chinachuを導入したついでにTLSのDV証明書を購入したという話.

べつにオレオレでも良いけど,今丁度さくらのSSL代理購入がキャンペーンで
ラピッドSSLを1年目タダで売ってて,まあさくらのアカウントもってたのでものの序でです.

http://ssl.sakura.ad.jp/

ついでのついでに,そのうちWebページをそのドメインで公開してブログもひっこすかも.
これはあくまで予定で,しばらく着手してる暇はなさそうです.

セント・カノッサ学園支部

なんかラノベ話してたら宅配コンバット学園(TKG)読みたさ熱が再発した.あれまだ読んでないけどぜっっっっっったいに買いたくないんだよな,読み終わったら焼却場に送る破目になるのわかってるから. [sokutenable] — orumin (@kotatsu_mi) 2015, 10月 3
楽しかったものを共有したいかどうかは個々人の自由でいいと思うし,オレは宅配コンバット学園を読んでそのクソさを知見としてシェアしたい [sokutenable] — orumin (@kotatsu_mi) 2015, 10月 3
宅配コンバット学園,2円でAmazonにあったから買った [sokutenable] — orumin (@kotatsu_mi) 2015, 10月 3
ラノベ読み界隈で史上最悪最強のクソラノベとして名高い宅配コンバット学園、通称TKGが届いてしまった。 pic.twitter.com/HIY8vnCXCb — orumin (@kotatsu_mi) 2015, 10月 6
今日読んだ

宅配コンバット学園,開いて1ページ目でなんというかこれはなんというか,うううーんっ……という気持ちになる.ひどすぎる!とかじゃないんだけどなんかこれなんか — orumin (@kotatsu_mi) 2015, 10月 8 というかその過去のユーゴに送られるってところから本編だと思うんですが,もうこれページ3/4は読み進めてないかこれ? > 宅配コンバット学園 — orumin (@kotatsu_mi) 2015, 10月 8
す,すっげえ,宅配コンバット学園,何のカタルシスもなくすっと始まってすっと終わったよ,というかあのプロローグなんだよ意味深にしといて全く本編とリンクしてない感じじゃねえか — orumin (@kotatsu_mi) 2015, 10月 8
いや,コンセプトこれうまくつかえばもっと面白く調理できただろなんでこういうものになってしまったんだ……訓練のくだりそんな要らんかっただろ,学園の軽音部の説明とかもっと端折るでもいいし…… — orumin (@kotatsu_mi) 2015, 10月 8
このコンセプトでかかれるべき部分の1/4しか書かれてない感じがする — orumin (@kotatsu_mi) 2015, 10月 8
面…

SecureBootとLinux

イメージ
みなさんUEFIしてますか(挨拶)

UEFIではSecureBootという機能があり,Windows以外が起動できないかもしれない云々という話はみなさんの記憶に新しいかと思います.

将来の話はともかく,現状でもSecureBootが有効だとLinuxが起動できないという誤解も一部蔓延してるようなので本記事を執筆するものであります.

本記事はSecureBootを有効にしてLinuxを起動しようとしてたけどイマイチ方法わからなかったという人にも有効かと思われます.

Google Container Engineでハマったところ

Google Container Engine (GKE)はKubernetesのクラスタを作り,Dockerコンテナを大量に上げるまで自動でやってくれたりするサービス.
VMコンテナ自体はGCEと同様に管理できます.

で,クラスタなんかもGoogle Cloud SDKのgcloudコマンドで色々と手元からCLIでできるのですが,ハマりました.

ハマりポイント gcloud preview container kubectl create -f sample.json --cluster="<CLUSTER NAME>" これでsample.jsonにswagger形式で記述したクラスタが上がる……はずなのですが
なぜか手元ではタイムアウト.次のようなメッセージが飛びます
ERROR: F0326 10:43:53.728513    5117 get.go:166] Get https://130.211.179.83/api/v1beta1/pods?namespace=default: dial tcp 130.211.179.83:443: i/o timeout kubectl get podsなど,他のkubectlのコマンドも同様にタイムアウトしてハマってました.

これは,一度作ったクラスタを削除して,また同じ名前でクラスタを作成した後の操作でした.
実はこれがハマったところのポイントで,
$HOME/.config/gcloud/kubernetes/<PROJECT>.<ZONE>.<CLUSTER NAME>/ に配置されている,cluster.jsonに,
{
    "endpoint": "130.211.179.83"
} のような形式でgcloudコマンドを通してそのプロジェクトへkubectlをする時のエンドポイントのIPアドレスがキャッシュされてました.
なので,以前同じ名前でクラスタを作って,gcloudコマンドを使った事がある場合,その前の時のIPアドレスをつかってkubectlを発行するため,タイムアウトしてしまうというオチでした.

このcluster.jsonを削除してしまえば解決します.

EdgeRouterLite-3をGentooで運用しはじめました+IPv6導入(本篇)

イメージ
前提これまでのネットワークは,BaffaoのBBR-4MGをブロードバンドルータにしてた100Mなネットワークで,IPv6未対応だったので,IPv6+GbEにしたい既存ネットワークのトポロジは下図の通り.ただし,これからの記事でアドレスについてはxxxxで伏せさせていただきます ファイアウォールはBBルーターとパーソナルファイアウォール任せな感じの,よくある一般的なネットワークっぽい.APは諸事情によりRaspberryPiにやらせてて,RaspberryPiにはUSB HDDが接続してありLAN内のファイルサーバとなっている.
これを,次のようにした.
いままで市販のBBルーター任せであんまり考えてなかったファイアウォールルールをイチから見直した事と, 外から自宅にアクセスするために外部にもBBルータの機能で静的ポートフォワードしていたRaspberryPiを, サブネットで分離してちゃんとDMZとして機能するようにさせたところがポイント.とはいえDMZは全部フォワードしてるわけじゃなくて,結局静的ポートフォワードでやってます.

図に書き忘れましたが,IPv4 PPPoEの出口がppp0,IPv6 PPPoEの出口がppp1になってます.

IPv6だと,NATが必要ないのでちょっと設定に戸惑いました.むしろNATとか頭から追い出してちゃんと考えればIPv6のほうがラクっぽいかも.

ネットワーク図がアレゲなのは勘弁してください……
あと,セキュリティの事を言うとまだまだ足りないとこが沢山ある気がしますね.
本当はルーターに色々やらせすぎなんだとおもいますが,ウチは負荷がかかるネットワークではないのでそこは良いかな.

なお,フレッツ系のプロバイダで,IPoEなIPv6が使えない環境だったので,
PPPoEを2セッション張る事にしています.

実際どのようにしたか,以下に記します.
参考: Home Router - Gentoo Wiki

設定(IPv4) このように設定して,
# cd /etc/init.d && ln -s net.lo /etc/init.d/net.ppp0
# rc-update add net.ppp0
# rc-update start net.ppp0 これでIPv4のPPPoEは自動起動します.
ユーザーネーム,パ…

EdgeRouterLite-3をGentooで運用しはじめました+IPv6導入(OS環境構築篇)

イメージ
先日,@syuu1228先生からEdgeRouterLite-3を頂く機会があったので,
自宅のネットワークを全面的に直しました.
EdgeRouterLiteとは
Ubiquiti社の製品,EdgeRouterシリーズの下位モデル.EdgeRouterLite-3はギガビットポートを3つ持つルーターで,この3つの使い道は特に限定されてません.
2ポートをブリッジしてWAN+LANなよくあるBBルーターでも良し,1WAN2LANなルーターでも良いし,2WANにしてロードバランスとか冗長化するのも良いかもしれません.

性能としては,OCTEONのMIPS64 500MHzのデュアルコアに,DDR2メモリが512MBと,
結構高性能です.ハードウェアスペックだけを見れば,定価10万円くらいのYAMAHA RTX1200以上の性能が出ると噂です.ポートが少ないですが…….価格はUS$100とかなりお手軽,ただし日本だと代理店が無いので
楽天から買うと2万円ぐらいになるかもしれません.

詳しくはInternetWatchのこのレビューがわかりやすいでしょう.
どっちでAzureにつなぐか? Ubiquiti Networks「EdgeRouter LITE(ERLite-3)」を試す

個人的には公式のプロダクトのページのCiscoに喧嘩売りにいってるプロモーションビデオが素敵で好きです.
環境構築 EdgeRouterLiteにGentoo入れました.
IPv6をどうしたか,が気になるかたはつづきの記事を読んで,この記事の残りはすっ飛ばして良いです.

参考リンク: MIPS/ERLite-3 Gentoo Wiki

EdgeRouterLiteはu-bootが収められてるNORメモリと,OSが収められてるUSBフラッシュメモリなストレージデバイスの2つの記憶領域を持っています.
後者はデフォルトだと2GBのものがボード上のUSBポートに挿してあり,EdgeOSというVytta,VyOSベースのOSがインストールされています.

これを別の,Gentooをインストールした大容量のUSBフラッシュメモリに挿し替えました.


私はこれを買いましたが,べつにこれでなくとも良いと思います.
Gentoo Wikiにて,いくつか動作確認済みのUSBメモリが記載されています.
が,スペースが限…

Intel Memory Protection Extensions (MPX)

イメージ
つい先日,Linusが,次のような苦言を呈しました.
Why would I want to enable this in my kernel when there are no actual CPU's out yet that support it? - https://patchwork.kernel.org/patch/5463081/ 「この機能を実際にサポートした CPU がまだ出てないのにどうしてボクが自分のカーネルでこいつを有効にしたいと思うかい? 」 このような苦言にも関わらず,これは3.19へとマージされました.
これは Memory Protection Extensions (MPX) という機能のサポートについてで,どうやらパッチ自体は悪くないけど,デフォルトで有効にされるパッチが含まれているのが気に要らないようでした.
ところで,MPXとはいったいなんでしょうか?


MPXとは MPXとは,Intelのtick-tackのtick,次の新アーキテクチャであるSkylakeにて実装予定の新機能です.
これは,具体的には配列の境界チェックをハードウェアでサポートする事でexploitを防ぐ機能となります.

Intel CPUの命令リファレンス[PDF]の第9章がまるまるその機能に割かれています.

MPXのため,BNDレジスタが4本追加され,このBNDレジスタは1本128bitです.
このレジスタは上位と下位でそれぞれアクセス可能で,64bitが2つという事になります.
BNDレジスタの上位はUB(UpperBound),下位はLB(LowerBound)と名付けられており,
勘が良い方は気がつかれたかもしれませんが,配列の上界のアドレスと下界のアドレスをそれぞれ格納します(そのため64bitが2つなんですね)

また,設定レジスタがユーザーモードのためにBNDCFGU,スーパーバイザーモードのためにIA32_BNDCFGS,状態レジスタとしてBNDSTATUSが追加されています.

レジスタ構成 拡張レジスタ



BNDCFGU,BNDCFGS

BNDSTATUS

命令 BNDMK b, m: BNDレジスタbにLowerBound(LB)とUpperBound(UB)を作成
BNDCL b, r/m: メモリ参照かレジスタにあるアドレスについ…

ハッピーバースデイ,僕 〜そして恐怖のシュールストレミング〜

2/7は私の誕生日でした.
GSoCとか,今させてもらってるバイトとか,色々と学ぶところが多く,
これからの一年も色々と学んでいきたいなあと思う所存.

誕生日は色々と頂いてしまいました ...