投稿

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

Intel HD Graphics のマシンで,Wine の DirectX をいいかんじにやってもらいたい(ArchLinux)

実は,数年前より,フリーのグラフィックスライブラリである Mesa において,DirectX 9 がネイティブに扱えるようになっています.と,言うのも,Mesa が導入した Gallium 3D というもののおかげです.

これは,OpenGL や DirectX のバックエンドとなる,3D 描画一般の標準的な API を提供するレイヤです.そこで,Wine についても,この Gallium を使って DirectX 9 をネイティブに描画する,Gallium nine patch というものが存在しています.
# pacman -S wine-staging-nine このパッチが当たった wine では,winecfg の staging タブで Gallium Nine を有効化するだけで使えるようになります.しかし,Intel HD Graphics のマシンでは,
ilo: driver missing と出てしまい,DirectX を使うアプリケーションの起動が失敗するようになってしまいます.
そこで,解決方法は,次の通りです.

# pacman -S abs && abs で /var/abs/ にパッケージビルドレシピをダウンロード$ cp -r /var/abs/extra/mesa $HOME/ PKGBUILD を編集し,--with-gallium-drivers= へ,ilo を追加$ makepkg -i によりパッケージビルド,インストール これで,Wine で DirectX をいいかんじにやってもらえるようになります.ただし,已然として不具合や欠けている機能の多いものなので,正しく動作しない可能性も高いです.その場合は,Gallium Nine を無効化して,諦めて従来の描画方法に頼りましょう.

インドのふたつのカレー

イメージ
カレー Advent Calender 2016 22 日目の記事です.

カレー†1の本場と言えば,言わずもがな,インドです. インドカレー屋は,案外街のあちこちにあったりして,馴染み深い人も多くなったんではないでしょうか.ところで,インドカレーと一口にいっても色々あります.大きく,北インド南インドでそれぞれ分けられます.北インドでもパンジャブ地方のパンジャブ料理と,ムガル帝国†2の宮廷料理であるムガル料理など,いくつか種類がありますが,タンドールを使った料理,ナンや,バターチキンカリーといったものを生み出したパンジャブ料理は日本でよく知られています.
この,南北ふたつのカレーについて,特徴を紹介しようと思います.
スパイス 北インドカレー インドカレーの南北をそれぞれ象徴付けるのは,やはりスパイスです.北インドカレーでは,カルダモンクローブシナモンローリエといったものが,よく使われるようです.カルダモンは,スパイスの女王と呼ばれる,さわやかな香りが特徴的です.
クローブは,肉料理によく使われ,臭み消しだったりします.中国だと丁子
ローリエはあの冠とかに使われる月桂樹の葉っぱ,と言えば通りが良いかと思います.この画像のような大きめの葉っぱが煮こまれて入ってるカレーとか,インド料理レストランで食べたことないですか?
シナモンはみなさんご存知ですね.エジプトでミイラ保存料として使われたり,聖書に出てきたり,歴史の古いスパイスです.甘い香りがして,おかし作りなどに出てきますね.

こういったスパイスを,ホール(粉にしない,実や葉,樹皮のようなスパイスのそのままの形)で使うのが北インドカレーです.それも,最初に油でこれらを炒めて,作った香油を,鶏肉など材料に絡めて,調理していくというのが,大きな特徴となります.ちなみに,ここで書いた中でも,カルダモンやクローブ,シナモンは,ハウス食品や S&B が瓶詰めのスパイス粉として発売している「ガラムマサラ†3」の中によく入ってます.
南インドカレー 対して,南インドではどのようなスパイスを使うのでしょうか.ホールスパイスとして使うものとして代表的なのは,マスタードシード赤唐辛子カレーリーフ
マスタードシードは,白芥子の種子です.あのマスタードの原料そのもの.場合によっては,粒入りマスタードなどにも使われる表皮の黒…

Rust で nostd(と UEFI)

Rust Advent Calender 2016,19 日目の記事です.

Rust で OS 作ったりなんだり,簡単にできるといいなあってことで.

まず,Rust で nostd な環境でどのようにすれば良いのか,なのですが,単純にこれだけならば,Rust の公式ドキュメントに載っています.
https://doc.rust-lang.org/book/no-stdlib.html
基本的には,nostd をコンパイラに指示して,lang_item を使っていくつかの不足のシンボルを定義してあげます. また,ここで panic_fmt をいい具合に定義するときっと panic!() とか使うのに役立つ(と思います).

ここからが,ちょっとした TIPS になります.
実際に本当に使える何かを作ろうとしたとき,何もないと不便で,作りづらいです.そこで,Rust の libcore,つまり core ライブラリを使って, core::fmt::Display でフォーマット文字列使ったり,core::mem::size_of で特定の型のメモリサイズを取得したり, core::ptr::null で null pointer 作ったり core::ptr::swap でポインタの中身を取り替えたり,そういう unsafe な部分も 組込みっぽい場所で必要になるでしょう.しかし,これらを使うにも,クロスコンパイルの時には,Rust のソースを全部もってきたりして,手動で core ライブラリを ビルドしてリンクさせないと使えなかったりするのです.

そこで便利なのが,xargo です.次のように使えます. $ cargo install xargo
$ export PATH=$HOME/.cargo/bin:$PATH
$ xargo build 普段のcargoの代わりに,ビルドなどにこのコマンドを使うと,cargoのラッパーとして動作し,しかも core ライブラリ等を自動でビルド,リンクしてくれます. 結構地味に便利なので,ぜひ.

最後に,宣伝というか.
UEFI で動かせるナニカを Rust で作りたいなーと思いつつ,放置してたのですが,crates.io に uefi というライブラリがあったので,手を出しはじめました. しかし,実装が全然足りてなかったの…

HIL: Designing an Exokernel for the Data Center

イメージ
遅刻しました.ごめんなさい.
本稿はシステム系論文紹介 Advent Calener 2016,2 日目の記事になります(大遅刻).
今回はHIL: Designing an Exokernel for the Data Center を紹介します.
原論文 J. Hennessey, S. Tikale, A. Turk, E. U. Kaynar, C. Hill, P. Desnoyers and O. Krieger, “HIL: Designing an Exokernel for the Data Center″, in 7th ACM Symposium on Cloud Computing, ser SoCC '16, Santa Clara, CA, USA: ACM, Oct. 2016, pp. 155―168, ISBN: 978-1-4503-4525-5. DOI: 10.1145/2987550.2987588. [Online]. Avaliable: http://doi.acm.org/10.1145/2987550.2987588.
前提 まず始めに,表題にもある,Exokernel について説明しなければなりません.Exokernel とは,1995 年に生まれた技術です[1]. 図1を見てください. これは,マイクロカーネルよりさらに一歩進めて,security bindings 以外を全てカーネルから追い出してしまい,従来のカーネルのサブシステムは,全てアプリケーションとリンクするライブラリとしてしまうアーキテクチャです.この,従来の OS の機能を持つライブラリを,libraryOS と言います.リソース管理などの機構をアプリケーション毎に特化させる事を容易にし,また,複数のアプリケーションの,デバイスや計算資源へのアクセスの分離(isolation)とその管理(management)をそれぞれ Exokernel と libraryOS で全く分けてしまえる事が特徴のアーキテクチャでした.
TL;DR さて,今回紹介する論文は,この Exokernel のような抽象層を,ベアメタルクラウドのデータセンタに導入する試みです.
双方向に信頼されないベアメタルのデプロイメントサービス(OpenStack …

Ansible 2.2.0 でホストごとに実行するタスクを切り替える

ansibleで実行対象を切り替える方法 http://tdoc.info/blog/2014/05/30/ansible_target_switching.html

このサイトを参考にしようと思ったのですが古くて現在に似わなかったのでメモ.

when: "'foo' in group_names" inventory_host でグループ分けするところまでは同じ.
when で条件分けをするにあたって,
group_names はタスクを実行しているホストが所属するグループの配列になってるので,目的のグループに所属しているかどうかを in 演算子で確認する感じです.

フォントが埋め込まれていない PDF にフォントを埋め込む

表題通りです.

古い日本語論文を読むと,90 年代終わりから 00 年代初頭ぐらいのもので,
PostScript プリンタのフォントダウンロードを期待して Adobe 基本 35 書体と
Ryumin-Ligtht と GothicBBB-Medium を指定するが埋め込んでいない,
という PDF を見かけることがある.

ふつうは代替フォントが表示されて終わるのでなんでも良いけれども,
Mendeley の内蔵ビューワーであったり,ブラウザ内蔵ビューワーであったり,
そういう環境では埋め込まれていない和文フォントはそのまま表示できずに空白になる.

次のコマンドで GhostScript を使ってこれを解決.

$ gs -o font_embedded.pdf -sDEVICE=pdfwrite -dEmbedAllFonts=true -sFONTPATH="/usr/share/fonts/Type1:/path/to/your/font/dir" font_not_embedded.pdf -o の後には出力ファイル名,最後の引数にしているのはフォントが埋め込まれていない,今回操作を行ないたいファイルへのパス.
言うまでもないけれども,-sFONTPATH="" には : 区切りでフォントへのパスを書く.

標準エラー出力を pipe で受け取る

たまに標準出力エラーについて加工したくなることがある.
しかし,単純に|を使っても出力は受け取られないので,加工に使うコマンドの標準入力は空のままである.
次のようにすれば良い.
$ mage? 2>&1 >/dev/null | magemge! これは,一度標準エラー出力をリダイレクトして,標準出力に投げなおしているだけである.つまり以下でも同じことができる.
$ mage? 2> /dev/stdout 1> /dev/null | magemage!

PS VIta をハックしよう

イメージ
インロダクション ずっとまえにこんな記事を書いた私がこのネタを逃すはずがなかった.
そもそも低レイヤに興味をもつ切っ掛けのひとつが PSP のハックシーンだったので,
そのハックシーンの人達がおおきく影響している PS Vita に興味がないわけがなかった.

その PS Vita だが,今年 2016 年の 7 月終わりになりにわかに動きを見せはじめている.
背景と経緯 以前は,PS Vita に内蔵されている PSP エミュレータについて,PSP のファームウェアのバグをつつく形で PSP の Homebrew を起動させることが主流だった.Homebrew はビールの自家醸造を指す単語だが,転じてハックシーンでは自作アプリケーションをコンソールゲーム機で動作させることをいう.PS Vita は PSP の反省からなのかゲームメディアもセーブデータなどを格納するメモリーカードも独自規格かつ暗号化されており,バッテリーを自分で取り外すことも不可能になっていた.
OS には *BSD ベースのものが採用されており(未確認.一部のソフトウェアスタックだけという話も.FreeBSD と NetBSD のふたつについてライセンスされている),ASLR も有効化されてるという.

だが,実はこの PS Vita に搭載されているブラウザのレンダリングエンジン,WebKit の改造版に exploit が存在しており,PS Vita でネイティヴに Homebrew が動作させられるらしい.

そんなこんなで去年登場したのが,Rejuvenate,若返りを意味するハックである.
Yifan Lu 氏によるハックで,PlayStation®Mobile 向けに作った Homebrew が未署名でも動作する.しかし,この PlayStation®Mobile のサービスは去年終了してしまい,Yifan Lu 氏もこの Rejuvenate の開発を停止した.なにより,導入が煩雑であった.
今回の手法 今回登場したのは,またもや Yifan Lu 氏による WebKit exploit で,その名前も
HENkaku(変革)である.
これはとても簡単で,ファームウェアバージョン 3.60 の PS Vita のブラウザで,
上記サイトにアクセスし install ボタンをタップすれば良い…

VAIO Z(フリップモデル)に Arch Linux をいれる

自分のメインマシンである VAIO Pro 13 | mk2 が不慮の事故で一部破損したので,
実用上一切問題ない箇所だったが修理送りにした.

そこで,今研究室で貸与されている VAIO Z(フリップモデル)にVAIO Pro 13 | mk2 の環境を全部転送することにした.
ちなみに,もちろんデュアルブートにしてる.Windows 消すの勿体なく感じるんですよねぇ.びんぼーしょー.

以下,覚書


initramfs には nvme モジュールを含める.btrfs の subvolume にしていた /home は,read-only で snapshot を作成して,btrfs-send で全部送ってやることで /home をそのまま新環境にそっくり移した.その際に,mbuffer を使って転送した受け側は mbuffer の stdout を btrfs-receive が受ける また,VAIO Z(フリップフロップモデル)は N-Trig の筆圧感知のタッチスクリーンとペンが付いている.しかし,Linux の X や Wayland はデフォルトではこれを使えない.
次のようにする.
これを /etc/X11/xorg.conf.d に配置しておくことで,ペンを認識するようになる.

最後に,自動回転についてだが,現状これに対応していない.
iio-sensor-proxy というツールを使えば自動回転に対応できるのだが,
そのためのセンサーのドライバがそもそも存在していないためである.
これは Intel Integrated Sensor Hub (Intel ISH) というデバイスのドライバが必要である.
このドライバは先頃 LKML にパッチが投稿,議論されており,ついには
https://lkml.org/lkml/2016/9/7/98
のとおりに hid/for-next のツリーにマージされた.
おそらく Linux 4.9 から使えるようになるだろう.

ビルドしたx86_64なPC向けの「lk」カーネルをQEMUで動かす

前回の記事の続き.

ビルドしたものはscripts/do-qemux86に-6を付けると動かせる.
が,このスクリプトを走らせるとmakeでlkのビルドをしなおそうとする.

正直単にQEMUを起動するだけなので,次のコマンドをlkのプロジェクトディレクトリのルートで行なえば良い.
$ qemu-system-x86_64 -m 512 -smp 1 -machine q35 -kernel build-pc-x86-64-test/lk.elf -nographic-enable-kvm -cpu hostを付けるとか-nographic外して-serial stdio付けるとか,-mや-smpの後ろの数字変えてメモリ割り当てやVCPU数変えるとか,
scripts/do-qemux86で指定できるオプションでの引数の変更とかは勝手にすれば良いと思う.

Googleの新OS,Fuchsiaに使われてるらしいカーネル「lk」をx86_64なPCをターゲットにビルドしてみる.

表題の通りです.
レポジトリはここ
https://github.com/littlekernel/lk.git

まずは,
$ git clone https://github.com/littlekernel/lk.git
$ cd lk ここで次のパッチをあてる.
このパッチは2つの変更から為る.

ひとつめ
arch/x86/toolchain.mkの25行目,FOUNDTOOLが,ifndef ARCH_x86_64_TOOLCHAIN_PREFIX の中にある.
これだとARCH_x86_64_TOOLCHAIN_PREFIXを自分で指定したら必ずビルドに失敗してしまう.
しかも,この変数はもし宣言されてない場合はx86_64-elf-をプレフィクスにしようとする.大半のPCのLinux環境ではx86_64-pc-linux-gnu-だろう.
ふたつめ
engine.mkのGLOBAL_DEFINESにHAVE_MREMAP=0を追加する. Linuxだとこの環境変数はデフォルトで1にされてしまい,external/lib/heap/dlmalloc/dlmalloc.cでmremap(2)を使おうとするが, その実装がこのプロジェクト中に存在しないので,ビルドに失敗する.

加えて,次の修正が必要かもしれない.
binutilsの中でも,nm, c++filt, objdump, objcopy, size, ldのコマンドを使用するが,このlkのビルドシステムはARCH_x86_64_TOOLCHAIN_PREFIXで指定したツールチェインのプレフィクスがこれらコマンドについてる前提でビルドする. しかし,x86_64向けのbinutilsにプレフィクスがついたコマンド名のコマンドが入ってない場合も多い.その場合はlnコマンドとか使ってなんとかするしかない.

以上を修正したところで,次の通りに実行.
(ただしツールチェインのプレフィクスは自分の環境に合わせてください)

$ env ARCH_x86_64_TOOLCHAIN_PREFIX=x86_64-pc-linux-gnu- make pc-x86-64-test これでビルドは完了

P.S.lk開発してる人達、x86_64も多分ここのツールチェイン使ってるんじゃ? https://t.co/FVIpEFl8…

フレッツ回線の収容ビルとか障害情報とか

https://flets.com/customer/const2/

ここで自分の住所や電話番号から障害情報やどこのNTTビルに収容されてるか確認できる。
今知りました。

近年のTeXLiveでAdobe14書体を使う+日本語フォント埋め込み

Adobe書体の埋め込み ちょっと前の情報だと,dvipdfmx -f dlbase14.map foo.dvi などとすれば良いとある.
しかし,最近は dlbase14.map はない.

また,usr/share/texmf-dist/dvipdfmx/dvipdfmx.cfgには
f pdftex.map という項目があり,pdftex.map は updmap-sys の結果の pdftex_dl14.map のコピーだった.
だが,デフォルトで,
\renewcommand{\rmdefault}{ptm}
\renewcommand{\sfdefault}{phv}
\renewcommand{\ttdefault}{pcr} としても,実際に PDF に埋め込まれるのは URW のクローンフォントである.
本当に Times とかを埋め込むには,
# updmap-sys --setoption LW35 ADOBEkb などとすると,/var/lib/texmf/fonts/map/pdftex/pdftex_dl14.map が書き換えられた.
べつに /usr/share/texmf-dist 以下とか見てなくて,/var/lib/texmf-dist のほうを見てる事にしばらく気がつかず.


日本語フォント埋め込み デフォルトだと日本語フォントが埋め込まれなくて悲しくなる.というか読み辛い.
次のコマンドでプリセットのフォントマップをつかってくれる.
# kanji-config-updmap-sys auto 大抵の環境で ipa.map を使われると思う.指定できるのは次
hiragino, hiragino-pron, hiragino-elcapitan, hiragino-elcapitan-pron, morisawa, morisawa-pr6n, kozuka, kozuka-pr6n, ipaex, ipa, ms, yu-osx, yu-win, yu-win10 例えば Windows 10 で游書体を使いたいとかなら
C:\Windows\System32> kanji-config-updmap-sys yu-win10 とかすればいい感じにやってくれるはず.試してないけど.

とか書いておきながら,次の Te…

ちょっとスクレイピングの練習と,narou.rb

イメージ
ちょっと最近Kindle PaperWhiteを書い直しまして,それと
小説家になろうをちらちらと読むようになった.
私はもともとしたらば掲示板にあるやる夫スレなどを読んでおり,それからすると小説家になろうの小説もまあまあ馴染みやすかったのでつい読んでしまう.

そこで,Kindleで素敵な組版で読めるといいなとおもったところ,
narou.rbの存在を知った.

しかしながら,(当然だが)既に商業化などに付き削除されてしまったものはnarou.rbじゃダウンロードも電子書籍化も不可能である.
だが,Web Archiveに生きている事は多々あり,これをEPUB3にして手元に保持しておきたいなあとか考え,次のスクリプトでnarou.rbで管理できる形に目次と小説本文をyaml形式で保存するスクレイピングスクリプトをつくった.

ぶっちゃけていうとこの素晴らしい世界に祝福を!のWeb版のEPUBをコレクションしておきたかったというわけです.

以下,成果.
RubyもNokogiriもあまりよくわかってないのでイテレーションが非効率な気がするが,まあそんなに問題ないとおもう.


Raspberry PiでH.264エンコード

かつて Raspberry Piでh264動画をハードウェアエンコードする という記事の後に
(録画をWindowsのEPGDataCap_Bonでやって録画マシンと違い常時起きてるRaspberryPiにファイルを貯めていくという構成だったので)Raspberry PiでMPEG2-TSをH.264にしようとしてた事があった.その記事の主に,いくつかこちらでわかった事をブログにまとめるといいながら1年半ブログに書いていない事に今気がついてしまった.
忘れないうちに書きます.いまさらこの情報役に立つかなあ…….

2,3日試行錯誤してたと思うのだけどその結果がこちら.
このスクリプトです.MPEG2のハードウェアデコードのライセンスを買う必要あり.
最初に紹介した記事最後で,エンコードした動画がカクつくという記述があったが,
あれは彼のパラメータ指定がわるくって,H.264のGOPがやたら小さいとどんなマシンでも
デコードの負荷が異常になって再生がおっつかなくなるという話だった.
RaspberryPiのハードウェアエンコーダ(OpenMax)向けのgstreamerプラグイン(gst-omx)では,
periodicty-idrでIDRフレームの間隔を指定できるので,元動画のフレーム数の10倍ぐらいに指定しておけばいいとおもう.アニメなら240ぐらい?
GOPが大きすぎるとシーク位置があまりにも飛び飛びになる上に,動き予測を失敗して本当にひどい動画が出来上がる.

それと,どうやらgst-omxはBフレームとか使えないっぽいので,quant-b-framesとかのパラメータは指定できないようだし,参照フレーム数は1で固定の模様で,さらにデインターレースやリサイズ,平滑化といった処理はどれもCPU処理になるのでこれらをやらせようと絶望的な速度になるようだ.加えて,interval-intraframesでI/IDRフレームの挿入頻度を決定してて,動きの多い部分で増やして,そうじゃない部分では減らすとかないので,ファイルサイズがそんなに小さくならない.
また,音声部分について,aacparse + avdec_aacはなぜか失敗するので,gstreamerのbadプラグインだったかuglyプラグインだったかを追加して,mpegaudioparse + madを用いて再エ…

Kindle端末のフォントを筑紫明朝から別のフォントに差し替える

初代PaperWhiteなどは自由にフォントを追加できるようですが,
最近のKindle端末はそれが出来なくなってるようです.
しかし,筑紫明朝のファイルの中身を差し替えると好きなフォントにできるようでした.

Kindle端末の/system/fonts/ja.fontはcramfsで作られたファイルシステムイメージのようです.

この差し替え作業,面倒なのでスクリプトにしました.

これを使うためには
Linuxで,かつgvfsが使えるgvfsでKindleをマウントしている これらを満たしている場合に,引数に差し替えたいフォントへのパスを指定し実行すると,
なんやかんややってフォント差し替えをしてくれます.


ちなみに紹介すると,やってることは,cramfsを展開し,ファイルを差し替え,cramfsを作りなおし,足りないサイズをzero fillで足し,ctimeをオリジナルに合わせる,というだけです.

Rump Kernelをつかってみる

RumpはNetBSD Runnable Userspace Meta Programの略である[1].
BSDCan 2009の論文を読むとRumpはNetBSDのカーネルをユーザランドにもってきて,
例えばネットワークをカーネルスタックをバイパスしてユーザランドにもってきた
スタックで処理してスループットを上げたりするもの,と解釈していた.

しかし,調べるとどうやら,単にユーザランドで使えるLibraryOSとしてだけではなく,
Type1ハイパーバイザ上で直接動作するコンテナとしても使えるLibraryOSのようだ.
Xen PVやVirtioのドライバが実装されているらしい.

そこで,Rump Kernelを使ってみたメモ.

experimentalなものらしいが,rumprunというのを使ってみる.
これをつかうと簡単にRump Kernelを含むイメージファイルの作成・起動ができるらしい.
準備 $ git clone http://github.com/rumpkernel/rumprun
$ cd rumprun
$ git submodule update --init
$ ./build-rr.sh hw これでrump kernelのツール一式とライブラリがビルドされる.
build-rr.shにhw以外を渡してクロスビルドもできるっぽい.

ここでは,x86_64なLinuxの上で作業したと仮定します.
次に環境設定.
$ export PATH="${PATH}/$(pwd)/rumprun/bin"
$ export RUMPRUN_TOOLCHAIN_TUPLE=x86_64-rumprun-netbsd これで,x86_64-rumprun-netbsd-gccなどRump kernelをlinkしてビルドしてくれるツールチェインへのPATHが通る.

では次はアプリケーションをビルドしてみよう.
アプリケーションビルド $ git clone http://github.com/rumpkernel/rumprun-packages
$ cd mysql
$ make bin/mysqldとしてビルドしたアプリケーションが置かれる.
ただし,images/data.ffsとしてファイルシステムイメージが UFSで…

IIJmioのひかりコラボ,「mioひかり」でIPv6 IPoE

イメージ
そういえば最近関西から関東に引越しました.

で,IIJmioのMVNOサービスを使ってたので,安さに目が眩んで,
回線+ISPにmioひかりを選びました.

これはサービスインの時のてくろぐさんの記事で,
IPoE方式によるIPv6接続、DS-LiteによるIPv4接続への対応を検討しています。対応時期などは未定です。 とあったので, それへの期待も込みでした.

そこで昨日,mioひかりでもIIJmio FiberAccess/NF同様にIPv6 IPoEとDS-Liteが
オプションで使えるというプレスが出たので,早速申し込みました.
IIJmioひかりにおけるIPoEオプション提供開始のお知らせ
料金は月額800円

私の場合,IIJmioの紹介割引x2と春のスタートアップ割引とmio割(MVNOとのセット割引)
があったので,まあ月額800円でもお釣りが来るかな,とおもって迷わず申し込みました.

ちなみに,今ならIPoEオプションの最初2月は無料だそうです.

これが昨日の11時30分,申し込み受け付けのメール.

そして19時間10分後の今朝6時40分のメール.
メールではサービス開始が明日の日付になってますが,
このメールの来た時間に丁度DNSが引けなくてネットワークが不通になりました.

理由は,私がGentooでルータを作ってるため,IPv6 PPPoE(net.ppp1)が切れた時点で
依存サービスのdnsmasqが停止して,家のLAN内のマシンが一斉にDNSが引けなくなったため.

一般的なブロードバンドルータつかってたり,
DNSキャッシュサーバを建てずに直接DNSサーバとしてISPのサーバを指定してたらネットワークが不通になるなんてことはないです.(そのはず)

で,ルータのWAN側のポートにRAされたPrefixでアドレス生やしてとりあえずgoogleとかにping6したら,疎通できました.

ということで自宅もIPoEなv6が使えるようになりました.

しかし,ルータでRA Proxyするまでは良いのですが,
そのアドレスでLANから外に繋がらないので,ip6tablesのルールが間違えてる気がします.

とりあえず,以下ポインタ

OCN IPv6 の非固定prefixを配下のルータで使う
この記事最後にrdiscでRAを受けて,radvdのconfigを生成す…

おるみんマイグレーション - 洗濯機扁

実は居を関西から関東に移しました.

以前は寮(というとちょっと語弊があるかも)に住んでいたので,
生活用品がほぼゼロで越してきたのでちょっと四苦八苦.

実家で昔単身赴任に使われ現在腐らせてる白物家電を送ってもらったのですが,
以前の使用者の片付けが非常に悪く(これは愚痴です),洗濯機の脚スペーサーがひとつ欠けており水栓つぎてと説明書が消失しておりました.

新居の洗濯機用蛇口は通常の蛇口だったので,
この際と思い(というか以前の洗濯機使用者たる父が,「水栓つぎてで既存の蛇口を傷めるより別の蛇口にせよと頑強に主張したのもあるのですが),蛇口を交換してみることに.

過程を書くのは備忘録と,かつて一度だけDIYという記事タグを使ったことを思い出したためです.

使ったもの:



TOTOのTW11Rとシールテープです.

このTW11Rは大変素晴しく,給水ホースが簡単に取り付けられる上に止水弁があります.
ホースが抜けても水がだばだばしません.
それに,バルブは45度回すだけで開栓できる構造です.

取り付け方:

まず元栓を閉めにいきます.だいたい玄関の外の水道メーターの近くだとか,
アパートの1階の基礎部にまとめて並んでるとかです.

次に,既存の蛇口を外します.


このようなレンチを使っても良いかもしれません.私はえいやと筋肉で外しました.
外したところには,以前のゴミや錆びがたくさん付いてるので使い古しの歯ブラシなどでキレイにしましょう.

その次は,とりあえず蛇口を取り付けてみます.
だいたい5回ほど回すと閉まると思うのですが,この時の回す回数を記録して蛇口はまた外します.

そして,実際の取り付けにかかります.

蛇口のネジ部にシールテープを5,6周巻き付けます.
シールテープは粘着性がないので,軽く引っぱりながらしっかり巻き付けます.
巻き付け終わったら指でおさえて更にくっつけます.

そして,取り付けます.(先程記録した回数-1)回ほど回すようにしましょう.
回すとき,回しすぎたとおもって逆方向(緩める方向)に回すといけません.
回しすぎた時は取り外して取り付け部も蛇口のネジもシールテープをキレイに除去し,
シールテープ巻き付けから再開します.
そうしないと水漏れするからです.

以上で,単水栓の取り付けは完了です.


なお,余談ですが私は蛇口を取り付けたとき締めすぎたとおもってやり…

CentOSを複数台のUEFIなホストにインストールするときPXEでうまいことやるやつ

どこかにメモをしようとおもったけどブログの記事をまるで書いてないのを思いだしました.

CentOS 7.2前提

1. CentOSのisoイメージをダウンロード

2. /mnt/centosにisoイメージの中身を全部そのまま配置

3.

次を実行
$ mkdir -p /var/tmp/tftpboot
$ cp /mnt/centos/EFI/BOOT/grubx64.efi /var/tmp/tftpboot/
$ cp /mnt/centos/images/pxeboot/{vmlinuz,initrd.img} /var/tmp/tftpboot (もしかしたらgrubx64.efiは/mnt/centos/Packages/grub2-efi-なんとか.rpmを解凍してgrubx64.efiを取り出さないといけないかも)

4.
これを/etc/dnsmasq.confにする.
enp8s0は自分の環境のインターフェース名に変える.

5.
/var/tmp/tftpbootに次の中身でgrub.cfgを作成

6. kickstartのコンフィグファイルをks.cfgという名前で/mnt/centos/に配置


7.
# darkhttpd /mnt/centos
# systemctl start dnsmasq

これで自動でPXE Bootして,Kickstartでインストールしてくれるはず.
もしKickstartを使わず手動インストーラをぽちぽちするならば,
2.で/mnt/centosにファイルを配置とかじゃなくてisoを直接マウントして,
grub.cfgのカーネルコマンドラインからks=の部分を削除すれば大丈夫です.