FuguIta on USB-HDD

Table of Contents

wifiアナライザー

Windows10上で、たまに利用してたスペアナってかwifiアナライザーをOpenBSD に移植してみる。以前i386機で作成してたのを、ちょっと変更しただけ。 変更点は、インターフェース名を iwn0 -> iwm0 にした事と、dBm -> % にし た事の2点。

本当は、何回も掃引して、ピークを求める(or 平均)とか、チャネル順に並べ るとかしなければならない。これが、スペアナの原点です。

uran$ cat bin/wifi.sh
#!/bin/sh
ifconfig iwm0 scan  |
sed '/ieee80211:/d' |
awk '/%/{print($7, sprintf("%3d",$4), substr($2,1,8))}' |
sort -nr

amd64機

uran$ bin/wifi.sh | head
73%   4 Buffalo-
64%   4 Buffalo-
55%   1 Buffalo-
52%  36 aterm-c2
43%  56 Buffalo-
43%  44 Buffalo-
35%  10 0x000000
34%  10 ctc-g-70
31%  36 Buffalo-
25%   1 5C6199C3

こちらは、i386機。

-43dBm   4 Buffalo-
-54dBm   1 Buffalo-
-56dBm   4 Buffalo-
-59dBm  36 aterm-c2
-69dBm  10 ctc-g-70
-70dBm  36 Buffalo-
-73dBm  10 aterm-38
-76dBm   2 pr500k-8
-78dBm   1 5C6199C3
-79dBm   6 rt500m-6

中央の数字は、チャンネル番号で す。36以上は、5GHz帯、それ未満は2.4GHz帯です。

dBm表示の方が通っぽくて格好いいぞ。%表示って素人受けするけど、これって 良く考えたら比だよな。分母は何になるんだろう? 煙に巻かれた気分。じゃ、 dBmはどうよ。一文字づつ分解すべし。最初のdはデシって接頭語。10倍って意 味だ。次のBは、電話を発明したグラハム・ベルに敬意して採用。裏の意味は、 常用対数ね。対数には引数が必要。で、その引数は、1mWを基準(分母)にした 電力比。上の場合だと、wifiの電波の強さって事 だ。マイナスって事は、1mWより小さい(しかも、とても小さい)。

とても小さくても、何とかしちゃう場合が有る。ラジオの原点、鉱石ラジオ。 小学生の頃作ったなあ。放送局からの電波だけで、クリスタル・イヤホンを鳴 らせましょって奴だ。今なら、ショットキー・ダイオードを使って倍電圧整流 とかすれば良く聞こえるなと思う。それとも、長いケーブルで電波を沢山集め るのが利口か。災害の時に活躍しそうだな。AM放送は電気ばかり喰うので残念 ながら廃止の運命。それで委員会? 災害列島日本。だからコミュニティFMか な。

原稿のアップロード

今この駄文は、サクラインターネット上で公開してる。5年程前に無料で使え ていた所が閉鎖されちゃったので、有料の所にしたんだ。決め手は、ランニン グコストが安かった事と、創業者がFreeBSDオタクだった事。年間で数千円な ので、ドネーションと思っている。

アップロードにはlftpを利用する(ちょいと以前に使ったよしみです)。 どんなスクリプトになるか、基本のダウンロード版を試してみる。

#! /bin/sh

HOST=hamesspam.sakura.ne.jp
USERNAME=myname
PASSWORD=mypassword
REMOTE="www/hes2024/"
LOCAL="/home/sakae/piki/hes2024/"

# サーバからローカルへデータをダウンロードさせたい場合
FROM="$REMOTE"
TO="$LOCAL"
lftp <<EOF
open -u $USERNAME,$PASSWORD $HOST
set ssl:check-hostname false
mirror \
$FROM \
$TO \
exit
EOF

wwwの直下がhtdocsに相当。最後が / であるのは、dirって事だ。ローカル側 はpikiの直下がhtdocsに対応するって塩梅。上の例だと、今年の投稿だけをダ ウンロードしてる。コードに自信が無い場合、mirrorの引数に –dry-run を 付けると、確認だけしてくれる。 なんか、オイラー的にはトラウマになってるrsyncみたいだな。

Q: rsyncの使い方を教えてください

rsyncは、ファイルやディレクトリを効率的にコピーするためのツールです。
主にバックアップやミラーリングに使用されます。以下に基本的な使い方を紹介します。
基本構文

  rsync [オプション] [ソース] [宛先]

主要なオプション

    -a: アーカイブモード(再帰的にコピーし、ファイルのパーミッションや
        タイムスタンプを保持)
    -v: 詳細情報を表示(verbose)
    -z: データを圧縮して転送
    -r: 再帰的にコピー
    -e: SSHを指定してリモートホストに接続
    --delete: 宛先に存在しないファイルを削除(ミラーリングに便利)

使用例

ローカルコピー:

  rsync -av /path/to/source/ /path/to/destination/

リモートサーバーへのコピー:

  rsync -av /path/to/local/source/ user@remote_host:/path/to/remote/destination/

リモートサーバーからのコピー:

  rsync -av user@remote_host:/path/to/remote/source/ /path/to/local/destination/

ミラーリング(削除オプション付き):

   rsync -av --delete /path/to/source/ /path/to/destination/

注意点
    /を使うかどうかに注意:ソースの最後にスラッシュを付けると、その中身だけが
    コピーされ、スラッシュがないとソースディレクトリ自体がコピーされます。
    大きなファイルを転送する際は、-zオプションを使うと転送時間が短縮される
    ことがあります。

これらの基本を覚えておけば、rsyncを効果的に利用できるでしょう。
質問があれば、ぜひどうぞ!

firefoxの移植

前回の続きになるけど、dllファイルが紛れ込んでいるのが気にくわん。その 正体を探ると不要っぽい。ならば、純正にやろう。 既にログインに必要なファイルは判明してるんだから、それだけをWindows側 から引っこぬいてくる。更に、ブックマークは輸出しといて、それを持ってく る。

.mozilla/ を削除した上で新規にfirefoxを起動。この時に、設定情報を輸入 するかとか、日本語にするか問われるので、はい と返答。

が、蓋を開けてみれば、ブックマークが反映していない。ログイン情報は、プ ロファイルの中に移動させた。ブックマーク管理から、輸入しようとすると、 ファイル選択のダイアログがおかしな動きをする。

ならば秘伝のタレである、bookmarks.htmlから、良く使用してる物だけ抜き出 そう。firefox bookmarks.html したら、/ram/home/sakae/bookmarks.html に ファイルは見付かりませんでしたと言うエラーが返ってきた。

それと同時に、起動した端末に、

ユーザーの MIME 型設定フォルダー /home/sakae/.config を作成できません: No such file or directory
ユーザーの MIME 型設定フォルダー /home/sakae/.local/share/mime/packages を作成できません: Permission denied

とかのエラーが出て来る。何で何で??

しょうがないので、/tmp/bookmarks.html にファイルを置いて、とりあえず難 をのがれた。Windowsからの移植だと120M有った ,mozllaが34Mに減少してたぞ。 これで、まがりなりにも使えるようになった。

どうも、ファイルのハンドリングが上手く行ってないな。FuguItaとの相性で も有るのかな?

試しにxfceを入れてみたけど、同じ現象が発生した。

smp

これ、CPUを総出演させる正しい方法だそうだ。

> あれ、2CPUしか稼動しとらんぞ。

これも sysctl.conf で hw.smt=1 してやれば、HyperThreading が有効になり
ます。
その代わり、MELTDOWNやSpectreなどのセキュリティホールに対して脆弱にな
ります。

インテル無理してる。投機実行とか、遊んでいるCPUを頑張って働かせてしま えとか。多少のセキュリティーは気にしない。速さは正義。 12世代以降の石で、新たな問題が河豚板で発生しているようだ。今、作者様が誠 意調査中。

xterm

こちらは、xtermも、きちんとフォントを設定すれば、日本語OKですって案 内。mlterm+tmuxで深い使い方をすると問題が有るとの事。オイラーはその機 微には遭遇していないけど、なるべくなら、余計な物は入れない主義に反する んだよな。GUIな物は、ほとんどがLinux譲りだと思う。極論しちゃうと、 DeskTopでOpenBSDを使っている限り、それは、GNU/OpenBSDだと思うぞ。

> よろしかったら、スケーラブルフォントの設定方法を教えてください。

日本語の入ってるフォントをインストールして、

xterm -fa "Noto Mono" -fs 10

などとやります。-fs はフォントサイズ指定です。

もしくは、リソースファイルで指定するかですね。

noto-fonsを入れてみたら綺麗に表示してくれました。が、一つ落とし穴が有 りました。emacsを使っていると、特定のキーシーケンス(ex; Ctl+Alt+>等)が 機能しないんです。フォント指定に関係なく、素のxtermでも発生しますんで、 相性問題でしょう。大体、 emacsを端末上で使用する人なんでいないでしょうから、見過ごされているん でしょうね。あちらを立てれば、こちらが立たずで、悩ましいです。

use FuguIta on USB-HDD

大体amd64なパソコンの挙動が掴めて来たので、河豚板の収納メディアを USB-HDDドライブに変更してみたい。今迄のUSB-flashdriveは、記念品にしよ う(あるいは、出張用)。

USB-HDDなら、容量が有るんで、十分にサーバーと言うか保管庫になるな。ス ピードも速いだろうし。

但し、インストールに当たって一つ制約が有る。有線ケーブルが来てる所にパ ソコンと据置きなHDDを置けないと言う事(家庭内事情による)。 そこで、その回避策を考えておく。

flashdrive

今のドライブからコピペだな。

uran$ doas mount /dev/sd1d /mnt
uran$ cd /mnt/livecd-config/7.6/amd64/uran-demo
uran$ ls
altroot/ etc/     home/    root/    tmp/     usr/     var/
uran$ du -sh etc/firmware/
35.0M   etc/firmware/
uran$ ls -l etc/hostname.iwm0
-rw-r-----  1 root  wheel  70 Oct 19 22:57 etc/hostname.iwm0

取りあえず、これだけを新らしいHDDに持って来れれば、wifiできる様になる な。インストールの際には、これがsd2dとして利用出来るはず。

disklabel

パーテションは、どんな風になってるんだろう?

uran$ disklabel sd1
# /dev/rsd1c:
type: SCSI
disk: SCSI disk
label: Block Device
duid: 9b7ae713355bac0b
flags:
bytes/sector: 512
sectors/track: 17
tracks/cylinder: 10
sectors/cylinder: 170
cylinders: 89148
total sectors: 15155200
boundstart: 1088
boundend: 15155200

16 partitions:
#                size           offset  fstype [fsize bsize   cpg]
  a:          2351104             1088  4.2BSD   2048 16384 16176 # /sysmedia
  b:            32768          2352192    swap
  c:         15155200                0  unused
  d:         12770240          2384960  4.2BSD    512  4096  3134
  i:             1024               64   MSDOS

先頭から、i -> a -> b _-> d って順番になってる。だから、拡張すると、d パーテションがビローンと伸びるんだな。独自にパーテションを切る なんて事は、河豚板の原点まで、戻らなければ無理だ。

それから地味に便利そうなのはMSDOS用のパーテションが有る事。このメディ アをWindows機に差したら、そのまま書き込みが出来るんだろう。容易にデー タ交換が出来そう。

OpenBSD側で mount_msdos /dev/sd1i /mnt して、現内容を確認。既に efi/BOOT なんてのが存在してた。そうか、ここはWindowsから起動する為のコー ド・エリアなんだな。一般の人は使用禁止だろう。でも、無理して適当なファ イルを書き込み。そして、WindowsにUSBを差してみると、フォーマットするか と問われたので、キャンセルした。でも、USBの中のファイルは見えていた。 大きなファイルの交換は出来ないけど、非常用には使えそう。これ自己責任だ からね。

target USB-HDD

Windows7のバックアップに使ってた古いやつ。FreeBSDを入れてたんだけど、 時々レスポンスがとてつもなく遅延して、OSがハングしたかと錯覚しそうな奴。 河豚板だと、HDDへのアクセスが限定されるから、大丈夫と思うぞ(思いたい)。

最初はHDDに素のOpenBSDを入れようと思った んだ。でも、それじゃFreeBSDの二の舞になるだろうと想像して、 これは却下したんだった。

焼くのは、以前のやつ。一卵性双生児を目指す。もう、何個目かのパッチが出 ているけど、取り敢えず実験って事で。

umass0 at uhub0 port 2 configuration 1 interface 0 "BUFFALO INC. USB2-IDE Bridge" rev 2.00/1.06 addr 2
umass0: using SCSI over Bulk-Only
scsibus4 at umass0: 2 targets, initiator 0
sd1 at scsibus4 targ 1 lun 0: <USB-HS, SAMSUNG SP1604N, 0.01> serial.0411002a000001112523
sd1: 152627MB, 512 bytes/sector, 312581808 sectors

こんなバッファローの奴です。中身はサムスン製か。もう、日本はDISKも作ら ない国になってしまったのか。工業立国の看板をとっくに下ろしてしまってい るん。

ob# dd if=FuguIta-7.6-amd64-202410141.img of=/dev/rsd1c bs=1M
2048+0 records in
2048+0 records out
2147483648 bytes transferred in 119.599 secs (17955699 bytes/sec)

flash-driveの時は、400秒かかったから、4倍弱の高速化が期待できるな。

install

ホスト名は、eq にした。uranは長くて入力がめんどう。それに一卵性双生児 と言えども、名前まで同一って事はないからね。

さすが、HDDの威力で、 pkg_add とか、usbfadm -r の様な書き込み系コマ ンドの実行スピードは速い。そんじゃ読み出し系はどうよ? 簡易試験をi386 機でやってみる。超昔のマシンなんで、USB-2ぐらいのスペックだろう。 最悪環境で試験をしておけって大事な事だからね。よく、健康診断の前夜はア ルコールや油分は控えましょって案内するけど、それじゃ試験にならんわな。 毎日晩酌してる人は意味無いじゃん。

USB faushdrive

ob# dd if=/dev/rsd1c of=/dev/null bs=1M count=300
300+0 records in
300+0 records out
314572800 bytes transferred in 10.821 secs (29070584 bytes/sec)

USB-HDD

ob# dd if=/dev/rsd1c of=/dev/null bs=1M count=300
300+0 records in
300+0 records out
314572800 bytes transferred in 10.969 secs (28678348 bytes/sec)

読み出しについては、両者で差は無いですねぇ。なお、300Mを試験のサイズに したのは、カーネル用のTAGSが、これだけの容量だったから、実戦に即し た試験です。

eq$ df -h
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/rd0a      1.5M    1.0M    509K    68%    /
/dev/sd1a      1.1G    1.1G    8.6M   100%    /sysmedia
/dev/vnd5a     1.1G    1.1G    4.3M   100%    /fuguita
mfs:78917      5.4G    1.3G    3.9G    25%    /ram

まだ、AV関係は入れていない。それらと、chromeを入れたら、どれだけの容量 になるんだろう。そうそう、Audacious用のデータを用意しないとな。 /mnt/my なんて自分用のエリアを用意して、そこに保存しとけばいいか。 usbfadm の管理外だろうから、しっかり自覚して紛失しないようにしないとな。 この状態で、起動に5分かかった。

このUSB-HDDは、接続してるパソコンの電源On/Offに連動してる。連動を解除 したい場合は、USB-HDD側の電源SWをOffにしとけば良い。USB給電が今やあた り前だけど、こういう制御が出来る物は有るのかな?

eq$ disklabel sd1
# /dev/rsd1c:
type: SCSI
disk: SCSI disk
label: Block Device
duid: 9b7ae713355bac0b
flags:
bytes/sector: 512
sectors/track: 17
tracks/cylinder: 10
sectors/cylinder: 170
cylinders: 1838716
total sectors: 312581808
boundstart: 1088
boundend: 312581808

16 partitions:
#                size           offset  fstype [fsize bsize   cpg]
  a:          2351104             1088  4.2BSD   2048 16384 16176 # /sysmedia
  b:            32768          2352192    swap
  c:        312581808                0  unused
  d:        310196848          2384960  4.2BSD    512  4096  3134
  i:             1024               64   MSDOS

dパーテションは、初期状態では、771Mだったよ。

eq$ doas du -sh *
1.3G    livecd-config
589M    my

音楽データをmyに入れてみた。

eq$ df -h
Filesystem     Size    Used   Avail Capacity  Mounted on
  :
mfs:9901       5.4G    1.3G    3.9G    25%    /ram
/dev/sd1d      129G    1.8G    127G     2%    /mnt

そして聞いてみた。

eq$ audacious &
[1] 65703
eq$ QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/ram/tmp/runtime-sakae'

sndioおかげかどうかは知らないけど、BGMしてても、CPU負荷は2%ぐらいのも のだった。快適。なお、BGMには、バックグランド・プロセスがお似あい。& を付けて貴重な端末を有効利用しよう。

映像を見るんだと、ながら族が出来ないので、正直嫌いだ。

usbfadm

早速usbfadm -r して、現在の環境をセーブしておこうと起動してみたら、エ ラーになったぞ。

eq# usbfadm -r
mount_ffs: /dev/sd1d on /usbfadm.d/mnt1: Device busy

usbfadmは内部で、mount /dev/sd1d … しようとして、既 にmountされてるよって、気付いてエラーにしたんだろう。この際だから探っ てみる。まずは何処に鎮座してるの?

eq# which usbfadm
/usr/fuguita/sbin/usbfadm
eq# echo $PATH | tr ':' '\n'
/usr/bin
/bin
/usr/sbin
/sbin
/usr/X11R6/bin
/usr/local/bin
/usr/local/sbin
/usr/fuguita/bin
/usr/fuguita/sbin

ついでに、rootでの検索順番も調べてみた。随分控えめなんだね。 多分shell scriptだろう。target指定でmountが実行される。そしてオイラー の鬼門がsyncコマンドの実態、rsyncで実現されてるに違いない。

eq$ cd /usr/fuguita/
eq$ tree bin
bin
|-- dtjsetup -> /boottmp/dtjsetup
|-- pv -> /fuguita/usr/fuguita/bin/pv
|-- rlwrap -> /fuguita/usr/fuguita/bin/rlwrap
|-- rsync -> /fuguita/usr/fuguita/bin/rsync
|-- rsync-ssl -> /fuguita/usr/fuguita/bin/rsync-ssl
|-- xxh128sum -> xxhsum
|-- xxh32sum -> xxhsum
|-- xxh64sum -> xxhsum
`-- xxhsum -> /fuguita/usr/fuguita/bin/xxhsum

eq$ tree sbin
sbin
|-- chnetconf -> /boottmp/chnetconf
|-- fdadm -> /boottmp/fdadm
|-- fiupdate -> /boottmp/fiupdate
|-- gen_mode0sldir -> /boottmp/gen_mode0sldir
|-- gennetconfs -> /boottmp/gennetconfs
|-- remaster_dvd.sh -> /boottmp/remaster_dvd.sh
`-- usbfadm -> /boottmp/usbfadm

2000行近くの力作。軽くmountで検索してみたけど、あちこちに出没してて、 どこで発生したか同定できず。sh -x だかで追跡してみるか。

rsyncの方はどうだ? こちらは、3箇所有った。

        if mount -o async,noatime $devname $mntdir1; then
            if [ "$opt_quiet" = 'yes' ]; then
                rsync -q -rlptgo --devices -xHS --delete --include '*/tmp' --ex\
clude 'tmp/*' /ram/. $mntdir1/livecd-config/$verarch/$uconf/.
                retval=$?
            else
                notice "Sync ${devname} with current ${memfstype} as ${uconf}"
                rsync --progress -rlptgo --devices -xHS --delete --include '*/t\
mp' --exclude 'tmp/*' /ram/. $mntdir1/livecd-config/$verarch/$uconf/.
                retval=$?
            fi
            # find $mntdir1 \! -type d \! -type f \! -type l -print | xargs rm \
-f
            rm -rf $mntdir1/livecd-config/$uconf/tmp/{.??*,*}
            sync
            sleep 5
            umount $devname

970行ぐらいの所にある物がそうだろ。usbfadmで、更新情報が報告してく。そ してそれが途絶えて暫くしてコマンドが終了する。それがここで使用されてる、 5秒待てなんだな。何もメッセージが流れないものだから、ハングしたかと心 配しちゃうぞ。まあ、これで安心だな。どっしりと待てばいいのだから。 後は、rsyncのmanを参照だな。

README

ヴェールを脱いだインド武術

なんて本を読んだ。昔は秘術で門外不出、一子相伝だったそうだ。 それが、他の武術が公開するものだから、遂に公開せざるを得なかったらしい。 時代の波は、こういう所にも押し寄せてくるのね。

イラスト入リで、体を動かしてみたくなったぞ。何でもヨガの源流でもあるら しいですから。


This year's Index

Home