30-Apr-2018
[#mikutterinstallbattle on OpenBSD-6.3/amd64]

OpenBSD-6.0の頃と比べると、mikutterのインストールは随分簡単になりました。

まずはruby-2.5.0p1とgtk+2-2.24.32をpkg_addで取ってきます。次に、最新版(これを書いている時点ではmikutter-3.6.7)のtar ballを展開して得られるvendor/の中身に対応する以下のgemと、

addressable assets delayer diva gettext ruby-hmac idn-ruby instance_storage json locale memoist oauth pluggaloid public_suffix text twitter-text typed-array unf unf_ext

それ以外で不足する以下のgem

delayer-deferred eventmachine faye-websocket httpclient gtk2 moneta nokogiri totoridipjp

について、gem(gem25)を使用してインストールします。idn-rubyはlibidn-1.33p0を必要としますので、pkg_addで取ってきてください(これに限らず、gemが要求する各種ライブラリは適宜用意してください)。cairo, nokogiriのインストールに関しても特殊な操作を行う必要はなく、すんなりインストールできます。

あとは、vendor/をリネームするか消すかして無効化すれば終了。

別記事にしようかと思ったのですが大した量ではないのでこちらに。

pcDuinoでDebian9(stretch)をインストールするのは難しいのかなと思っていたのですが、インストーラでのビルド済みSDカードイメージの利用の手順に従えば簡単にできますね。

近辺のサーバ(たとえばhttp://ftp.jaist.ac.jp/pub/Linux/debian/dists/stretch/main/installer-armhf/current/images/netboot/SD-card-images/)からfirmware.pcDuino.img.gzとpartition.img.gzを取ってきて、zcat firmware.pcDuino.img.gz partition.img.gz | dd if=/dev/stdin of=/dev/rsd1c bs=4mで起動ディスク作成。あとは画面の手順に従えば良し。

ただし、インストール作業にはシリアルコンソールが必要なのと、インストーラーの言語及びロケールに日本語が選べないためとりあえずen_US.UTF-8でインストールして別途日本語化の作業を行う必要があるという点に注意が必要です。あと、ネットワークが遅いのかSDカードが遅いのかは分かりませんが、インストールには結構時間がかかりました(1時間は超えているような…)。59.65kg(22:25)

25-Apr-2018
[雑メモ(2)]

防犯登録する際にSUBROSA Salvadorに乗って自転車屋さんへ行った際、靴の食いつきが良くしっかり踏めるペダルだなーと思ったので、ESCAPE R3(2015)のペダルもRANT Shred pedalに変えちゃいました。とはいえ、標準で付いていたVPの物から80g程度重量が増えるので、Hellaの方が良かったのかもしれません(ペダルグラインドとかやってごりごり削る訳ではないし)。

publicなDNS64、Google, TREX, Open Public Test of NAT64/DNS64 at Go6labにあるものくらいしか見当たらないのですが(Ecdysysは落ちています)、他に何かありましたっけ?ちょっとまとめてみますが…

Google Public DNS64 (prefix 64:ff9b::/96)
2001:4860:4860::6464, 2001:4860:4860::64
TREX - Public Service: DNS64 Name Servers (prefix 2001:67c:2b0::/48)
2001:67c:2b0::4, 2001:67c:2b0::6
A10 Networks (prefix 2001:67c:27e4:642::/64)
2001:67c:27e4:15::6411
PaloAlto Networks Firewall (prefix 2001:67c:27e4:64::/64)
2001:67c:27e4::64
Jool (prefix 2001:67c:27e4:1064::/64)
2001:67c:27e4:15::64
Cisco ASR1000 (prefix 2001:67c:27e4:11::/64)
2001:67c:27e4::60

何にせよ、フツーのpublic DNSほど選択肢は多くなく、EdgeRouter使ってるなら自前で立てるという手はあるのですが。

再インストールしたOpenBSD-6.3/amd64、結局pkg_addで突っ込んだパッケージはこんな感じ。とはいえ、emacs-25.3p0-athenaはportsからビルドする必要があるので、ports.tar.gzをダウンロード→emacsをビルド→他はpkg_addという手順で復旧です。

tar ballから野良ビルドしたのはepicon, Wanderlust(apelflimsemiwanderlustの順), lv, msdl, Apache httpd。mikutterのインストールについては後日。59.65kg(11:25)

22-Apr-2018
[ディスク飛ばしました]

いつかきっとやるだろうと思っていた、OpenBSD-6.3/amd64のシステムSSDにU-bootを書き込む、ってやつをやってしまいました。ちょうど良い具合にOpenBSD区画の先頭にあるPBRとdisklabelが飛んでしまい、起動時にはMBRがNo O/Sとゴネるし、ディスクの中のファイルは生きてるんだか死んでるんだか分からない状況で真っ青になりましたよ。

ですが、色々優秀なツールのおかげでどうにか復旧しています。

自分の場合、swap領域はディスクの先頭側に作るようにしているため、結果的にファイルシステムは無傷で済みました。なので、ファイルシステムをどうにか探し出してdisklabelを作り直すことと、PBRを書き直せば今回の問題は解決できそうです。

結局やったのは、SDカードにインストールしたOpenBSD上でTestDiskを動作させ、得られたtestdisk.logの情報からdisklabelを作り直し、ファイルをサルベージしてシステムを再インストールしたのですが…testdiskの場合、区画情報がCHSで返ってくるため、これをLBAに変換してdisklabelに渡さないといけない点が厄介です。

なので今回のようなトラブルの場合、OpenBSD FAQ: Disk SetupのDisk labelsにある、scan_ffs(8)でファイルシステムを探す方が楽でしょう。また、PBRの書き直しもinstallboot(8)でできそうです。

同じミスをした場合の損害を軽減するため、再インストールした際はディスクの先頭の空きを8kB→32MBに増やしてからOpenBSD領域を作成し、swap領域のサイズも12G→16Gに拡張しておきました(気休めにしかなりませんが)。これ以上の対策としてはahci(/dev/sdX)ではなくpciide(/dev/wdX)側にSSDを繋ぐことが考えられるのですが、パフォーマンスの低下を考えるとこれはやりたくありません。

折角のシステムのインストールなので、SSDのファームウェアも更新したり使わないソフトの掃除もしておきました。コードを書く暇も気力も無いので、H8・SuperH・超漢字・T-Kernel2/x86の開発環境は必要があった場合のみインストールするようにし、portsに入っているARMの開発環境を入れておく程度に留めます。

自分の環境では、/etcの下にある以下のファイルは修正が必要になります。

inetd.conf
examples/inetd.confから、ftp stream〜の行をコメントアウトするだけ。Windows Subsystem for Linuxが実装され、Windows上のDebian/Ubuntu等からsftpが使えるようになった以上、これは無くても良いのかもしれない。
mixerctl.conf
examples/mixerctl.confに、outputs.mode=digitalを追加しただけ。azalia(4)によるSPDIF出力を行うためにこの設定が入っている。
newsyslog.conf
ApacheはOpenBSD付属のではなく、tar ballからインストールしたのを使っている。そのままではログが増えてしまうので、/usr/local/apaches/logs/{access_log,error_log}の面倒を見てもらうよう設定。
rc.conf.local
inetdについては前述。ntpd, apmd, vmdを使えるようにしておくのと、sndiod_flagsは"-f rsnd/1"としたくなった時のためにわざとこの形で残している。
rc.local
Apache httpdの起動と、OpenVPNの起動。OpenVPNは以前の仕事場で使っていたから残しているけど、今はもう使わないし消しても良いとは思う。とはいえ、必要になったときに困るものなあという理由で残している。
rc.openvpn
前述。このスクリプト自体はどこかからの拾い物なのだけど、どこで拾ったか思い出せない…
resolv.conf
IPv4はJ:COM、IPv6はGoogle Public DNS64、IPv6優先。
sysctl.conf
VESAなx.orgを使うにはmachdep.allowaperture=2は必須。IPv4/IPv6のフォワーディングはとりあえず有効にしているだけで今のところこれを使って何かをする予定は無いからコメントアウトしておいた方がいいのかなー

Apache httpdは最新の2.4.33を入れていますが、modules/ssl/ssl_engine_init.cのDH_set0_pqg()の宣言が違うのかエラーを出してビルドできないので、ちょっと修正する必要があります。

とりあえず日記を書ける程度にまではなっていますが、前の環境の/etcだの/usr/local/野良ビルドした色々だのの整理がまだ終わっていないので、本来のタスクに戻ることはしばらくの間難しそうです…58.20kg(17:25)

11-Apr-2018
[雑メモ]

pcDuino向けにOpenBSDをインストールした場合、

を/etc/rc.conf.localに記述しても良いのかも。

LUMIERE(503HW)、とうとう割っちゃいました(操作はできています)。今まで壊して捨てた使ってきたスマートフォンの一覧を晒すとこんな感じになるのですが、なんかどの端末も2年持っていない気がします。流石にPriori2の6ヶ月を下回るものはまだありませんが…

この中で割らずに済んだのはIDEOS, Ascend G330Dくらいで、あとは大抵割ってます…Streakは割ったというよりかは文鎮化ですけど(結局壊していることに変わりはない)。

この中で一番印象に残った端末はAscend G330Dですかね。HUAWEI Ascend G330D(U8825D)を購入して日本語で使うには非常にお世話になり、root化してGoogle Play突っ込んでどうにかするという骨の折れる作業が必要でしたが、4インチのサイズは非常に使い勝手の良いものでした。とはいえ、最近のIngressのグリフハックは複雑なグリフ(BEGINやKNOWLEDGE)を書かせるので小さい端末だと辛い気もします。

割ってしまったLUMIEREのLCDパネル、eBayでP8Lite向けのものを買って交換しちゃえば復活はするのですが、このご時世にIPv6非対応な端末を復活させてもアレだなーということで今回はこのまま直さず放置します。今年はY!mobileを切ることにしているので、この時期に合わせて端末も適当なものに変えることにしましょう…頻繁に落として壊すことを考えると、OUKITEL C5 ProとかE&L W5みたいなのが良さそうです(ってどっちも技適無いから違法端末ですけど)。

とりあえず次の端末へ移行する際の手掛かりとして、現在のホーム画面を晒してみたり。

tScreenshot_2018-04-08-16-40-42.jpg tScreenshot_2018-04-08-16-40-53.jpg

05-Jul-2016と比べると一部位置が変わっている箇所がありますが、基本的には大体一緒な感じです。

03-Apr-2018の、Chromecastがいつの間にかどこかへ消えてしまう問題を解決するため、UGREENのEthernet Adapter for Chromecast and Micro USB TV Sticksを入れて様子を見ることにしました。変換アダプタ経由でPCに繋いでみたら、AX88772Cが入っているようです。60.45kg(19:15)

07-Apr-2018
[しばらくの間]

http://153.126.212.136.v6.sakura.ne.jp/~uaa/によるIPv6アクセスのできない状態になっていましたが、どうもOpenBSD Upgrade Guide: 6.2 to 6.3にあるRFC 7217 style IPv6 addresses enabled by default.に引っかかっていたようです。If you need the old style stateless address calculated from the layer 2 address (i.e. ethernet mac address) put -soii into the /etc/hostname.if file.の指示に従い、/etc/hostname.vio0に-soiiを追加することで現在は動作しています。

自宅ではinet6 autoconfを使っているのでVPS上ではまったく勝手が違い、どう解決するか途方に暮れていたのですが…IPv6 bei vServern wie bei Hetznerがヒントになりました。てゆーかUpgrade Guideちゃんと読んどけと>俺

とりあえず娘が小学校に入学し、息子が幼稚園に入園して一段落という感じではあるのですが、まだまだ生活が落ち着くには時間がかかりそうです。60.30kg(20:40)

06-Apr-2018
[EdgeRouter LITE-3格闘中。(3)]

11-Feb-2018で、とりあえずIPv4だけでなくIPv6でもNATv6を使えるようにした訳ですが…さらにNAT64を動作させ、IPv6しか喋れない端末が繋がっても困らない設定を追加します。DNS64については、今回は簡単に済ませたいのでGoogle Public DNS64を利用します。

13. Debianリポジトリの設定

NAT64を実現するためのツールは複数あるようですが、EdgeRouter LITE-3で使用できるのはTAYGAなので、これを使います。その前に、Debianのリポジトリにアクセスできるよう設定を行います(EdgeRouter - Add other Debian packages to EdgeOSの丸写しでもあります)。


set system package repository wheezy components 'main contrib non-free'
set system package repository wheezy distribution wheezy 
set system package repository wheezy url http://http.us.debian.org/debian

14. TAYGAのインストール

apt-get update; apt-get install taygaでTAYGAをインストールできます。起動用のスクリプトは別途記述するため、勝手に起動しないよう/etc/default/taygaでRUN="no"となっていることを確認しておいてください。

15. TAYGAの設定

TAYGAの設定は戸惑うかもしれませんが、必要なものをまとめるとこうなるのでしょうか。

これらを踏まえて、/etc/tayga.confおよび/config/scripts/post-config.d/nat64-enableを記述します。トンネルデバイスにおけるEdgeRouterとTAYGAのIPv6アドレスは(ルータ内部で使用する値なので、ここまでやる必要はないのかもしれませんが)RFC4193 IPv6 Generatorで作成してください。

16. DNSv6サーバアドレスの切り替え

RAによるDNSv6サーバアドレスの通知を、CATV(J:COM)からGoogle Public DNS64に切り替えます。


delete interfaces ethernet eth1 ipv6 router-advert name-server 2001:ff0:2041:1::d:233
delete interfaces ethernet eth1 ipv6 router-advert name-server 2001:ff0:2089:1::d:201
set interfaces ethernet eth1 ipv6 router-advert name-server 2001:4860:4860::6464
set interfaces ethernet eth1 ipv6 router-advert name-server 2001:4860:4860::64

ここまでの/config/config.bootとshow configuration commands > config.commandsを置いておきます。

なお、上記の設定ではping6 64:ff9b::XXX.XXX.XXX.XXXを実行した際、プライベートアドレス(10.xxx.xxx.xxxや192.168.xxx.xxx)ではDestination unrechable: No routeとなり、それ以外では応答がない問題があります。tcpdumpで見ていると、本来ならeth0に割り当てられたIPアドレスからのICMP echo requestが外に出て行かなければならないのですが、TAYGAが変換したICMP echo requestそのもの(NAT64を行う際に使用するIPv4アドレスプールのIPアドレスからのICMP echo request)をeth0から投げていました。

これを解決するにはもう少し設定を追加する必要があるように思われるのですが、今は分からないのでこのまま放置します。ping以外については今のところ動いているように見えます。59.35kg(23:00)

03-Apr-2018
[困った…]

OpenBSD-6.3へのアップグレードはどうにか終わったのですが、問題はこの次…Disable IPv4 support.への対応なんですよね。ざっくり訳すと「IPv6の仕様(RFC2460)が発行されてから大体20年、もうIPv4を捨てても良い時期でしょ。とりあえず、IPv4関連の機能はばっさり削除な。」ということで、多分OpenBSD-6.4辺りはIPv6専用になるんじゃないかなと。

家庭内LANで使う分にはともかく(EdgeRouterにNAT64/DNS64を仕込む必要があり、これはこれで手間がかかりそうですが)、VPS側ではIPv4切られちゃうとちょっと困るんですよね。他のOSに入れ替えるか、OpenBSDのまま使うなら適当な解決策を探さないといけません…タイムリミットは1年後くらい。

そういえば最近購入したChromecastも、pingは通るけどChromeからキャスト先のデバイスが見つからないという不思議な現象が起こるため、あまり真面目に使えなくて困っています。EdgeRouter導入によりこれまで使っていた無線LANルータ(Logitec LAN-W300N/R)はアクセスポイントとして使っていますが、この辺りの構成による問題なのかもしれません。LAN-W300N/RをリセットするとChromecastがまた見つかるということがありましたので。

これらの問題を解決したくても、気力というリソースが枯渇しているのでなーんにもできないというのが困ります。日記を書くのも億劫以前にもうなんか何もしたくないんですよねえ。家事とか仕事とかを気にせずにのんびり寝ていたいのですが、なかなかそうもいかないので困ります。59.50kg(23:05)