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
なんて本を読んだ。昔は秘術で門外不出、一子相伝だったそうだ。 それが、他の武術が公開するものだから、遂に公開せざるを得なかったらしい。 時代の波は、こういう所にも押し寄せてくるのね。
イラスト入リで、体を動かしてみたくなったぞ。何でもヨガの源流でもあるら しいですから。