僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。
Noteのバックアップを試してみた。"名称未設定_0001.xcf"が "名称未設朕_001.xcf"になっていた。...かと思ったが、tailなどに 通すと、元通りになっていた。
ちなみにrsyncの行き先にはPC-9821 + FreeBSD(98)-4.10を使ったが、 /varの残りが1%しかなかった。さっさと(ry
httpd.confに定義したErrorDocumentを読んでくれないんだろうか。
ポートフォワーディングによるファイアウォール突破失敗成功。
まずNotePCのLANケーブルを抜き(考えてみれば不要であったが)、LANの外に出る。
AirHでNetにつなぎ、疑似端末を次のように叩く。
端末A $ ssh -L 5000:$POPSERVER:22 $RELAYHOST ここでrelayにログインした。 端末B $ ssh -L 10000:$POPSERVER:110 -p 5000 localhost ここでpopserverにログインできた。 端末C $ telnet localhost 10000 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. +OK Qpopper (version 4.0.5) at $POPSERVER. starting. \ <XXX.XXXXXX@server.> quit +OK Pop server at $POPSERVER. signing off. Connection closed by foreign host.
$POPSERVERはLANでの名前(プライベートIP、もしくはLANのDNSが応えるもの)が ミソだったらしい。 また、 こないだとってきたノートには"-P port"とメモっていた。 それがわかるまで失敗を続けていた。
mewでの接続は失敗。違うユーザ名が祟ったか?
# uname -a FreeBSD $HOST.domain.tld 5.3-RELEASE-p2 FreeBSD 5.3-RELEASE-p2 #0:\ Sun Dec 26 08:26:51 JST 2004 root@$HOST.domain.tld: \ /usr/obj/usr/src/sys/FIRST i386 # mdconfig -a -t vnode -f $IMGFILE -u $NUM # mount_cd9660 /dev/md$NUM $MOUNT_POINT
こんだけでマウントできる、と知るまでずいぶんかかった。
を自動起動させるなら、/usr/local/etc/rc.d/sshd.sh.sampleを修正。 初期設定ファイルを/etc/ssh/sshd_configにしただけ。
shutdown -r now やった。
#mount -o rw /dev/hogefuga / ; ro -> rw #cat -n /etc/rc.conf ; vf3スクロール #ed /etc/rc.conf ; 別端末でwebの man 1 ed 見ながら XXX YY p hogefoobar s/hoge/fuga/ YY p fugafoobar w XXX q # shutdown -r now
でひと安心。
さき一昨日の足跡である。
何を探しにこのサイトに来たか一目瞭然だ。
気の毒な事に、# yum install ckermit な
ページには辿り着かなかった模様である。
とりあえずはこんだけ。 おっと、パーミッションは600と。
$LANGはCにしないと$MAILLOGに漢字が混ざる。
あと、-d num いくつにしようか。とりあえずは15分。
set no bouncemail set postmaster "USER" set syslog poll MAILSERVER with proto APOP user USER_OF_MAILSERVER password 'PASSWORD' smtpname USER@DOMAIN.TLD
今度はSPAMをなんとかせねば。
PCの広い画面なら二つ三つ届いた程度では気にならないが、
問題はmobileimap。自分の携帯の狭い画面では非常に
目障りだ。
以前のツッコミを検索して、ようやくアップデートツールの 名前を思い出す。 portsのtarボールを貰ってきて、/usrの下に展開する。 真っ先にGNU screen、そしてbash、それからcsupをmake install。
適当にぐぐって出た頁を参考にする。
supfile持ってくるのを忘れていた。/usr/share/example/cvsup/stable-supfile
を適当に書き換える。
/usr/srcに行き、 make update すると、sys以外(Makefileまで)全部消された。orz。
csup stable-supfile でやり直す。なんかTAGが間違っていたっぽい。
なんとかsourceをget。
Handbookを見ると、少し変わっているように見えた。
とりあえずはcd /usr/src; make buildkernel=GENERICから。
portsからbashを入れるとき、bash-completionというディレクトリが 目に留まった。懸案のbash補完だった。
ダウンロードサイト
に飛んで行き、latestを貰ってPlamoに展開。
READMEに書かれていたスクリプトを~/.bashrcなどに貼ってみたが、
bashのバージョン判定か何かがおかしいようで、うまく動かない。
とにかくbash_completionを適当なところに置いて、sourceすれば
いいらしい。
ちょっともたつく。流石に9299行は一瞬では読み終わらない。
$ dd if=/dev/zero <Tab><Tab>
すると
$ dd if=/dev/zero --help --version bs= cbs= conv= count= ibs= if= obs= of= seek= skip=
という塩梅。
etchには入ってないのかなぁ。と考えてPowerPCにscpしたが、
user@mac:~$ echo $BASH_VERSION 2.05b.0(1)-release user@mac:~$ . bash_completion -bash: complete: w3m: no completion specification
どうしてw3mが。
[root@host ~]# uname -a FreeBSD ma56.kuzuore.com 6.1-RELEASE FreeBSD \ 6.1-RELEASE #0: Sun May 7 04:32:43 UTC 2006 \ root@opus.cse.buffalo.edu: \ /usr/obj/usr/src/sys/GENERIC i386
[root@host ~]# uname -a FreeBSD host.kuzuore.com 6.1-RELEASE-p11 FreeBSD \ 6.1-RELEASE-p11 #0: Sat Dec 30 10:27:20 JST 2006 \ root@host.kuzuore.com:/usr/obj/usr/src/sys/GENERIC \ i386
Plamo-4.21とDebianEtch。
こないだと似てるが、結果は大きく違うものになった。
/dev/urandomの吐き出した104,857,600バイトのファイル
を、互いのftpサーバに、ieee1394を介して送信、受信する。
FTP Server | Client | put to server | get from server |
Plamo | 4m51.161s | 1m47.467s |
Etch | 2m4.304s | 4m52.923s |
ずいぶん違ったデータになった。
どうもPlamoからEtchにデータが流れる方が早くなるようだ。
で、どう理解すべきなんだろうか。
IPFILTERの用意をしていて、configにうっかり追記してしまっていた。
当然、外からは全く繋がらない(pingも返さない)。シリアルポートを
開けといたので助かった。
そろそろこっちから始めてもよさそうな気がする。と考えて、
以前(2004年の夏は、まだ「昔」でもなさそうだ)のテキストをめくる。
適当に列挙しては、 ipf -Fa -v -Z ipf.rules
のtry and errorを繰り返す。
pingとdnsとsshとwwwができれば、さしあたりはOKだろう。
$ cat /etc/ipf.rules pass in quick on lo0 all pass out quick on lo0 all pass in quick proto icmp all icmp-type 0 pass out quick proto icmp all icmp-type 0 pass in quick proto icmp all icmp-type 8 pass out quick proto icmp all icmp-type 8 pass out quick proto udp from any to $dns_server port = 53 keep state pass in quick proto tcp from any to $localnet/mask port = 22 keep state pass out quick proto tcp from any to any port = 80 keep state
linux-image-2.6.18-5-xen-686をapt-getしてみた。
しかし、Xenなカーネルを上げようとすると、PAE-enabledが祟る
らしく、たちまちPanicに続く強制リブート。さてと。
バッテリリフレッシュして考え直すとするか。
VirtualBoxのetchにも入れてみたが、Xenで起動させると、 たちまち「中断」してしまう。やっぱりダメか。
# bmake => Bootstrap dependency digest>=20010302: found digest-20080510 => Bootstrap dependency tnftp-[0-9]*: found tnftp-20070806 => Checksum SHA1 OK for ppp-2.4.3.tar.gz => Checksum RMD160 OK for ppp-2.4.3.tar.gz ===> Installing dependencies for pppd-2.4.3nb2 ===> Overriding tools for pppd-2.4.3nb2 ===> Extracting for pppd-2.4.3nb2 ===> Patching for pppd-2.4.3nb2 => Applying pkgsrc patches for pppd-2.4.3nb2 ************************************** Ignoring patch file /usr/pkgsrc/net/pppd/patches/patch-ae: invalid checksum ************************************** ERROR: Patching failed due to modified or broken patch file(s): ERROR: /usr/pkgsrc/net/pppd/patches/patch-ae *** Error code 1
patchesディレクトリにある patch-* (aaからbpまで42個)のSHA1を調べてみた。
一つとしてdistinfoに記述されている値と合っているものはなかった。
他のソフトもいくつか見たが、合っていないのが普通みたい(patch以外は合ってるけど)。
ツッコミを受けて、改めて確認。
先頭行を抜いてsha1すると合った。patch-aeだけが合ってなかった。
/usr/pkgsrc/net/pppd:# grep patch-ae distinfo | awk '{print $4}' 9e45283b07dac0d3422b25ea80b4ebe0c18a10b7 /usr/pkgsrc/net/pppd:# sed "1{/./d}" patches/patch-ae | sha1sum | awk '{print $1}' e21e7dbcbcc3dee08de92f4466c8e8fb3c1c1da3
Netで確認すると、既に更新されているようだった。早い。
RIPEMD-160アルゴリズムに基づいたハッシュ関数...らしい。
FreeBSD-6.4にはある(man はsha1とかと一緒くた)が、
GNU-Coreutils-6.12には含まれていない。
オプション無しでbootstrapしたpkgsrcでも作られないようだ。
ツッコミを受けて、これも確認。
/usr/pkgsrc/net/pppd:# grep RMD distinfo RMD160 (ppp-2.4.3.tar.gz) = 845821496bacb07d93bb7572a171854853ef722b /usr/pkgsrc/net/pppd:# digest rmd160 ../../distfiles/ppp-2.4.3.tar.gz RMD160 (../../distfiles/ppp-2.4.3.tar.gz) = 845821496bacb07d93bb7572a171854853ef722b
nkf もう少し追ってみた。
まずリポジトリを clone。ああでもないこうでもないの
試行錯誤ひとしきりを経て、リセットとビルドとテストを
繰り返すに至る。
最終的にこんな感じ。
$ alias RESET alias RESET='make clean && git reset --hard HEAD^' $ alias TEST1 alias TEST1='echo '\''testてすと'\'' | ./nkf --numchar-input' $ alias TEST2 alias TEST2='echo '\''てすとtest'\'' | ./nkf --numchar-input'
あとはwhileループで回しながら、しばらくぼんやり眺めていた。
git/nkf$ while :; do RESET ; make ; TEST1 ; TEST2 ; sleep 4 ; done . . . rm -rf nkf.o nkf nkf.exe nkf.in nkf.out nkf-2.0.8 *~ *.bad utf8tbl.o cd NKF.mod; if [ -f Makefile ]; then make clean; fi HEAD is now at d5ff582 Introduce nkf_state. cc -O -Wall -pedantic -c nkf.c cc -O -Wall -pedantic -c utf8tbl.c cc -O -Wall -pedantic -o nkf nkf.o utf8tbl.o testてすと ; TEST1 が正常に実行された fすとtest ; TEST2 は正常に実行されない ; で、またダウングレード rm -rf nkf.o nkf nkf.exe nkf.in nkf.out nkf-2.0.8 *~ *.bad utf8tbl.o cd NKF.mod; if [ -f Makefile ]; then make clean; fi HEAD is now at c122807 Change to MIT License. cc -O -Wall -pedantic -c nkf.c cc -O -Wall -pedantic -c utf8tbl.c cc -O -Wall -pedantic -o nkf nkf.o utf8tbl.o testてすと ; TEST1 が正常に実行された てすとtest ; ここまで降りた結果、TEST2 も正常に実行された ^C
さて、このあたりの変更が効いた...のかもしれないが、 そこまで。
$ echo いろはニホヘト | nkf --katakana-hiragana イロハにほへと
ダウンロードしたrasbianのイメージを展開すると約1.9GB。
とりあえずは手元のMicroSDカードにddする。
USBキーボードとマウス、HDMIケーブルは手元にあった。
しかしながら、PCのUSBから電源を供給するコネクタが ない。手元のe-mobileなどのコネクタは、いずれも 一回り大きい"miniUSB"だったが、必要なのは "microUSB"端子(メス)だった。
手許のMicroSDにしても実は携帯電話向けに買った
2GB。イメージがやっと入るサイズである。
他にストレージを設けるとすれば、USBの口を増やすか
それともネットワークにするか...
ようやく できた。
共立で買ったsparkfun.comのFT232R (Lがない) Breakout。
PCのUSBに挿すと、すぐ/dev/ttyUSB0になった。
三ヶ所のはんだづけは、ますます下手になったことを実感。
$ cat serial.txt FT232R RaspberryPi GND 黒 黒 GND 6 RXI 茶 茶 UART TXD 8 TXO 赤 赤 UART RXD 10
落とし穴としてkermit。
まず起動時に文字化け。これは set speed 115200 で正常に
なった。
そして、シリアルからの文字は流れてくるのに、端末の打鍵
は全然伝わらない。RaspberryPi上で
$ sudo sh -c "/usr/games/sl > /dev/ttyAMA0"
などとやると端末にSLが走ったが、ログインプロンプトに
何を入力しても何も。はんだづけをやり直したり、
テスタを当てたり、違うRaspberryPiに繋ぎ直したりと、
ひとしきり試行錯誤。
やがて kermit のマニュアルと睨めっこ。
$ cat .kermrc
set line /dev/ttyUSB0
set speed 115200
set carrier-watch off
set flow xon/xoff
でようやく。
ピンが曲がったUSBを、RaspberryPiから外そうと小二時間。
流石にあっさりとは抜けなかった。RaspberryPiは思ったより
頑丈にできているようだった。
なんとか外したいものの半分は外せた。さて、端子が抜きにくいので
ここで次を考えることとする。
とりあえず、プラスとマイナスがどれかは分かった。
ここに何を繋いだものか。
今日の限界のはず
Rasbianのコンソールで画像を表示できるコマンド。
JPEGおよびPNGができた。
-a で自動ズームし、 -t NUM -1 で何秒後に終了とかできる。
嵌ったのは任意の端末から表示させる機能。/dev/pts/3など
からコマンドを叩くと、
$ fbi hoge.jpg using "DejaVu Sans Mono-16", pixelsize=16.67 \ file=/usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf ioctl VT_GETSTATE: Inappropriate ioctl for device (not a linux console?)
でうまくできず。コンソールにログインしていてもしてなくても同様。
man pageと睨めっこの末、なんとか以下のオプションを与えて、
リモートから表示させることに成功。
$ sudo fbi -a -t 5 -1 -T 1 -d /dev/fb0 foo.png using "DejaVu Sans Mono-16", pixelsize=16.67 \ file=/usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf
man pageによれば-d でフレームバッファデバイスを指定し、-T で 仮想端末の番号を指定するが、これをスーパーユーザ でやるのがミソと思われた。
-d は無くても動いた。
Debian再インストール。今度はパーティションを2つに切った。
ルートパーティションに30GBを割り当て、残りを/homeにして
暗号化する。
8Gのメモリを考えて、Swapは無しにする。
$ df -h | grep ^/dev /dev/sda1 37G 4.7G 30G 14% / /dev/mapper/sda2_crypt 81G 35G 42G 46% /home
起動/再起動が「若干」面倒になったが、とりあえずはこれで。
gem の依存関係地獄にしばらく嵌る。
敗因の一つに、ruby-devパッケージが入ってないことがあったが、
それだけではなかった。
oauthにも問題があったらしい(エラーメッセージ省略)。
$ gem list oauth --remote | grep "^oauth " oauth (0.5.1) $ gem list oauth --local | grep "^oauth " oauth (0.4.7)
で、一応twが動くようになった。
0.5.1かそれ以上に対応させられなければ捨てるしかないか。
dnsmasqは入ってる。bridge-utilsとかもある。
lxcは起動するが、vethで通信できない。vagrant up できても
vagrant ssh はできない。
$ sudo systemctl status -l lxc-net ● lxc-net.service - LXC network bridge setup Loaded: loaded (/lib/systemd/system/lxc-net.service; enabled; vendor preset: enabled) Active: active (exited) since Sun 2018-12-30 10:02:51 JST; 13min ago Process: 421 ExecStart=/usr/lib/x86_64-linux-gnu/lxc/lxc-net start (code=exited, status=0/SUCCESS) Main PID: 421 (code=exited, status=0/SUCCESS) Tasks: 0 (limit: 4915) Memory: 0B CPU: 0 CGroup: /system.slice/lxc-net.service 12月 30 10:02:48 macmini systemd[1]: Starting LXC network bridge setup... 12月 30 10:02:51 macmini lxc-net[421]: dnsmasq: failed to create listening socket for 10.0.3.1: アドレスは既に使用中です 12月 30 10:02:51 macmini lxc-net[421]: Failed to setup lxc-net. 12月 30 10:02:51 macmini systemd[1]: Started LXC network bridge setup.
libvirtdと干渉しているらしいが、未解決。
手元のStretchからsshでVPSのStretchへ。そこでLXCのコンテナの中に入り、
一般ユーザになってクラウドのubuntuをvagrant upする。
その中でvagrant-lxcしようとしたが、うまくできなかった。
lxc自体は動く。コンテナができて、起動できて、attachもできた。
でもvagrant ssh は失敗。ユーザがいなかったからかしら。
色々コマンドを覚えて、結果を読めないと駄目っぽい。
ubuntu@debian:~/vagrant/sakura$ vagrant status Current machine states: default up (sakura) The server is up and running. ubuntu@debian:~/vagrant/sakura$ vagrant global-status id name provider state directory --------------------------------------------------------------------- 6f15f25 default sakura up /home/ubuntu/vagrant/sakura The above shows information about all known Vagrant environments on this machine. This data is cached and may not be completely up-to-date. To interact with any of the machines, you can go to that directory and run Vagrant, or you can use the ID directly with Vagrant commands from any directory. For example: "vagrant destroy 1a2b3c4d"
$ VAGANT_LOG=info vagrant status INFO global: Vagrant version: 1.9.1 INFO global: Rubyversion: 2.3.3 INFO global: RubyGems version: 2.5.2.1 INFO global: VAGRANT_LOG="info" . . (ざっと250行) . The server is up and running. INFO environment: Running hook: environment_unload INFO runner: Preparing hooks for middleware sequence... INFO runner: 1 hooks defined. INFO runner: Running action: environment_unload #<Vagrant::Action::Builder:0x005587faaf7418>
VPSにLXCを入れて、WordPressをインストールする。
All-In-One Migrationプラグインを突っ込み、インポートデータサイズを広げておく。
インポートするファイルを、さてどこから突っ込むか。「ファイル」 以外は別途拡張が必要っぽい。
VPSに置いてあるファイルを、sshfsで手元にマウントしてみた。
VPSから手元にはIPv6でsshを通し、同じVPSのLXCコンテナには
IPv4でhttps。
IPv6が一つしか使えず、LXCコンテナにはIPv4+natという形になると、
そんな感じになる、らしい。
一応うまくいったけど。
メールサーバのリソースレコードに追記してみた。
$ dig +noques -t txt _dmarc.kuzuore.com | grep ^_dmarc _dmarc.kuzuore.com. 2979 IN TXT "v=DMARC1; p=none; rua=mailto:dmarc_report@kuzuore.com"
流石にp=rejectとかなんとかはまだ。
さしあたり
Gmailは'PASS'したようだ。
smtp.mailfrom=$USER@kuzuore.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kuzuore.com
mx.iijmio.jp も。
Authentication-Results: mx.iijmio.jp; spf=pass smtp.mailfrom=$USER@kuzuore.com; dkim=pass header.i=@kuzuore.com; dkim-adsp=pass header.from=$USER@kuzuore.com; dmarc=pass header.from=$USER@kuzuore.com
リンクはご自由にどうぞ。でもURLや内容が変った場合はあしからず。
※ obache [hash値は NetBSD RCS ID ($NetBSD ...$)を抜いて計算します(そんこは commit す..]
※ obache [rmd160は pkgsrc では何かbuildすると漏れなくインストールされる pkgtools/digest に..]
※ kuzu [ツッコミおよび対応ありがとうございます_o_]