妄想日記 by 妄想エンジン


IPv6 の ICMPv6 と pf ではまったはなし。

IPv6 理解した。って言えるようになりたい。

FreeBSD のサーバの設定をしていて、pf を使うと IPv6 で SSH が通らなくなってて、ちょっと不便だったので本腰を入れて調べてみたら通さなないといけないパケットを落としてたという、まあよくありがちが話なんだけど、ちょっとぐぐってみた限りではわからなかったのでここに記録しておく。
わかってしまえば「ああ、なるほどねー」という話だったのだが。

IPv6 で通信をするさいには ICMPv6 の 134,135,136 を通さないと通信できなくなってしまうため、SSHのみならず、その他すべての通信に支障がでるのでありました。
結果として

pass in inet6 proto ipv6-icmp icmp6-type 134
pass in inet6 proto ipv6-icmp icmp6-type 135
pass in inet6 proto ipv6-icmp icmp6-type 136

を /etc/pf.conf に追加してあげれば通るようになる。
パケットの気持ちになって考えるのはむずかしいのう。

参考URL:02-06 IPv6では重要な役割を担うICMPv6とリンクローカルアドレス
https://www.vwnet.jp/IPv6ImplementationGuide/02/02-06.htm

ツイート

FreeBSD マシンに nvme を追加する。

ファイルサーバのメモリを増やそうと思って、いろいろあって録画サーバのメモリが増えることになったのだが、ファイルサーバのメモリが足りていないのも放置してはおけないので、とりあえず対策をすることに。

とりあえず、スワップを nvme デバイスに取るかってことで、ついでに zil と l2arc も追加。
このへん、はまることもなかんべと思ってたら意外にもはまったので、記録として残しておくことに。
たぶん、未来の私が感謝する。

ツイート

Apache guacamole と戯れる。

ということで、Apache Guacamole と戯れた記録。

これは何?
ブラウザベースでリモートデスクトップやらSSHしてくれるすごいやつだよ。
これ入れておけば、VPN通さなくてもSSLだけ通してあげればブラウザからリモート作業ができる優れものだよ。

ということで、私が扱うので、例によって例のごとくサーバは FreeBSD です。

以下細かい説明。

ツイート

xrdp と jail で遊ばれる

書いておかないと忘れちゃうシリーズ。

jail で環境を作って、xrdp でどこからでもデスクトップが使える環境を以前から使っていて、いろんな場所で開発するのにとても便利だったのですが、あまりにもいろいろ入れたり消したりしていたら無駄に大きくなりすぎたため、必要最低限の環境を構築しなおすことにしました。
前回作ったのがかなり昔すぎて、いろいろ忘れていてはまったので、未来の私のためにここにメモを残します。

とりあえず、FreeBSD 12.2-RELEASE では xrdp のバックエンドで xorg は、セキュリティ上の問題から動きません。以前は動いてたのに。CBSD とかはカーネルにパッチあてて動かしていますが、毎回やるの大変なので、xorgは諦めます。バックエンドは tigervnc 使うことにします。

以下作り方。

ツイート

EPGstation v2 のインストール

や、v1 環境でなんの問題もなく動いているんだけど、とりあえず新しいのが出たら入れてみたくなるじゃん。
そして勢いがあるうちに入れて試して記事書いておかないと、すぐ忘れちゃうからとっとと記録。

前提
例によって例のごとく、FreeBSD 環境に入れてます。そして Jail でコンテナに入れます。
チューナーは Mirakurun を別コンテナで動かしています。
なんにもなければはまる要素はありません。

ということで、以下簡単な流れ。

ツイート

epgstation で録画したテレビ番組を自動エンコして、チャプタと字幕を追加した mkv を作成する。

ということで、以前から Amatsukaze を使って自動エンコする快適生活を送っていたのだが、そのためには録画サーバと別にエンコマシンが必要で、録画サーバは FreeBSD マシンで、エンコサーバは Windows 8.1 でした。
定期的にメンテナンスはしていたのですが、Windows マシンはときどき勝手に再起動していたり、アップデートで再起動していたりして、エンコがこけていて録画サーバがあふれてしまいそうになったことが何度もありました。
いいかげんどうにかしないといけないなと思っていたのですが、録画サーバでエンコするのは結構負荷的に厳しいと思っていたのであきらめていたのですが、 ffmpeg で vaapi 経由で QSV が使えることが分かったので、重い腰を上げて対応してみました。

ツイート

FreeBSD と vaapi であそぶ。

ということで、いつの間にか Intel QSV が vaapi 経由で使えるようになっていた。
作ってくれた方々、ありがとうございます。

さっそくインストール。

>sudo pkg install libva-intel-driver libva-intel-media-driver libva-utils drm-kmod

ということで、さっくりパッケージ入れる。

> vainfo
error: XDG_RUNTIME_DIR not set in the environment.
libva info: VA-API version 1.6.0
libva error: vaGetDriverNameByIndex() failed with unknown libva error, driver_name = (null)
vaInitialize failed with error code -1 (unknown libva error),exit

あれ?kldstat してもちゃんと入っているけどな、と思っていたら、サーバ機なのでヘッドレスということを忘れてた。
とりあえず、VGAケーブル繋ぎなおしてリブート。この機会についでに freebsd-update もしておこう。

ふたたび立ち上がってきたのでもう一回 vainfo

> vainfo
error: XDG_RUNTIME_DIR not set in the environment.
libva info: VA-API version 1.8.0
libva error: vaGetDriverNameByIndex() failed with unknown libva error, driver_name = (null)
vaInitialize failed with error code -1 (unknown libva error),exit

あれれ?もしかして?

> sudo vainfo
Password:
error: XDG_RUNTIME_DIR not set in the environment.
MobaXterm X11 proxy: Unsupported authorisation protocol
error: can't connect to X server!
libva info: VA-API version 1.8.0
libva info: Trying to open /usr/local/lib/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_8
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.8 (libva 2.8.0)
vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 20.2.0 (intel-media-20.2.0)
vainfo: Supported profile and entrypoints
VAProfileNone : VAEntrypointVideoProc
VAProfileNone : VAEntrypointStats
VAProfileMPEG2Simple : VAEntrypointVLD
VAProfileMPEG2Simple : VAEntrypointEncSlice
VAProfileMPEG2Main : VAEntrypointVLD
VAProfileMPEG2Main : VAEntrypointEncSlice
VAProfileH264Main : VAEntrypointVLD
VAProfileH264Main : VAEntrypointEncSlice
VAProfileH264Main : VAEntrypointFEI
VAProfileH264Main : VAEntrypointEncSliceLP
VAProfileH264High : VAEntrypointVLD
VAProfileH264High : VAEntrypointEncSlice
VAProfileH264High : VAEntrypointFEI
VAProfileH264High : VAEntrypointEncSliceLP
VAProfileVC1Simple : VAEntrypointVLD
VAProfileVC1Main : VAEntrypointVLD
VAProfileVC1Advanced : VAEntrypointVLD
VAProfileJPEGBaseline : VAEntrypointVLD
VAProfileJPEGBaseline : VAEntrypointEncPicture
VAProfileH264ConstrainedBaseline: VAEntrypointVLD
VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
VAProfileH264ConstrainedBaseline: VAEntrypointFEI
VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP
VAProfileVP8Version0_3 : VAEntrypointVLD
VAProfileHEVCMain : VAEntrypointVLD
VAProfileHEVCMain : VAEntrypointEncSlice
VAProfileHEVCMain : VAEntrypointFEI

やったぜ!

ということで、次は ffmpeg で動けばいろいろ捗るぞ。

> ffmpeg -hwaccel vaapi -hwaccel_device /dev/dri/card0 -hwaccel_output_format vaapi \
-i test.ts -vf 'hwupload,deinterlace_vaapi' -qp 23 -c:v h264_vaapi -c:a copy -absf aac_adtstoasc \
-f mp4 test.mp4

動きました。hevc_vaapi でも動いてばっちりです。あとは適当にパラメータ調整しよう。

とりあえず、ブートの際にモニタつなげばいけたので、モニタは外しちゃったけど、再起動で動かなくなりそうなので、VGAのダミープラグを発注しよう。

追記:
jail の中で動かすには、 /etc/devfs.rules に新たにルール追加して dri* と drm* を見せてあげれば動きました。やったぜ。

ツイート

録画サーバにいろいろ追加した。

前回録画サーバのHDDを追加した際に、「あともう1玉6TiBのHDD追加すれば2TiB増える」って書いてから早半年。
やっとHDD追加しました。これでミラー終わったら4TiBの玉を切り離せば安全に2TiB容量が増えるぞ。

そしてそれだけ撮りためても、結局見る時間は増えないので、意味が無いような気もするけど、まあ気にしない。

そして、もう一点。

前回のHDD交換の際に使った4TiBのHDDは SMR 方式のやつだったため、遅い。まあ、メーカーがブートドライブには
使うなよって言ってるくらいだからしょうがないと言えばしょうがないのだが。
「遅い」程度だったらまあ我慢できたのだが、そのおかげで、テレビを見ている際に裏で録画が走ると駒落ちするという
問題が発生していて、これ、録画されたものには問題ないのだが、リアルタイムで見ていると駒落ちしたりノイズが入ったり
して、家族からとても不評でした。
たぶん、正攻法としてはHDD交換なんだけど、いろいろアレなので、SSDを追加して l2arc と zil にして、ごまかすことにした。

さくっと挿して認識させたら

# gpart create ada4
# gpart add -s 64g -t freebsd-zfs -l l2arc ada4
# gpart add -s 64g -t freebsd-zfs -l zil ada4
# zpool add zroot cache gpt/l2arc
# zpool add zroot log gpt/zil

でおっけーです。

ツイート

環境のアップデートではまったはなし。

以前書いた、OSをバージョンアップしようとしたらどっぱまった話 http://www.mousou.org/node/463 の続き。

ほぼ問題なく動いていたように見えたのだが、コンソールに延々とエラーメッセージが出てたり、なぜか /usr/bin/install が signal11でこけたりしていて、これはまだ何かおかしいと思ったのでとりあえず、base.txz を解凍して上書きしてみたら、やはり動かなかった。
しょうがないので src 拾ってきて、/usr/bin/install だけ make してみたが、install できないのは相変わらず。できたバイナリ(xinstall)をコピーしてもダメ。

なんだこれ。

しょうがない、改めて make buildworld してみるか、とおもったら、buildworld する際に、最初に install 使うのね。そこでコケる。
ぐぬぬ。

いろいろ考えて、jail 環境でやってみるか、と思って、qjail でやったら、あれ、nullfs で/binとかその辺を共通で使いまわすので、親環境が腐っている状態だと影響を受けてダメ。
とりあえず base.txz を展開してjail で動かしてみたら、buildworld は問題なくできることは確認できた。

さて。どうするか。

適当なディレクトリに、base.txz を展開して、そこに、親環境の /usr/src と /usr/obj を nullmount して、あと devfs を作ってあげてから、chroot して、buildworld を実行したら
こっちはうまく動いた。やったぜ。

それでは、と、親環境に戻って、installworld しようとしたら ntp:ntp が無いから作れ、と出て失敗。
ぶっちゃけありえない。UPDATING に書いてあるじゃん。

素直に、/usr/sbin/vipw 使おうと思ったら、これまた signal 11 でコケる。
ぐぬぬぬぬ。
/usr/sbin/mergemaster -p でどうよ、とおもったらこれもダメ。

あきらめて、先ほど作った chroot 環境に /etc もマウントして、 mergemaster -p を実行したら、なんとか動いてくれて ntp:ntp 作ってくれたので、もう一度親環境に戻って installworld する。
やっとこさ動きましたとさ。

でも、ここで油断するとまだなにか罠が潜んでいるかもしれない。

お祈りをささげつつ、リブートすると普通に起動してきたので、改めて親環境で make buildworld して完走することを確認。再度 single user mode で立ち上げなおして installworld しました。
めでたしめでたし。

最悪、インストールメディアで立ち上げなおしてインストールしなおしかと思ってたけど、ヘッドレス環境なので、まあ何とかうまく行ってくれてよかった。そして、pi0 をシリアルコンソールとしてつないでおくと全部ネット越しでできるのでとても楽ちんでした。いろいろ問題でてもコピペで検索できるし。だが今回は調べてもほぼ役に立たなかったので、今後の自分のためにここに記しておくことにします。

ツイート

録画マシンのHDDを追加交換する。

録画マシンのHDDから不吉なメッセージが表示されはじめてしまったのだが、このマシン、
なぜか重要なのにRAIDで保護されていないことに気が付いて、とりあえずどうにかすることにした。
アーカイブ用に4TBのミラーがあるので、こいつにもう一台6TBのHDDを足して、その後、4TBの一台を
rootディスクのミラー用に充てるという、玉突き移植です。これで来月にもう一台6TBのHDDを買えば
アーカイブ用は6TBになる。やったね。

ということで例によって例のごとく書いておかないと忘れてしまうので以下HDD玉突き交換の手順
なお、交換自体は電源を落とさない方向で行います。録画マシンだから随時録画されているからね。

ツイート
|top |アフィリエイト |windowsネタ |料理メモ |コンタクト |twitter |
さわやかなエロスを目指す--妄想エンジン ©1996-2022
コンテンツ配信