生OpenBSD
Table of Contents
raw OpenBSD
前回の計画に則り母艦のThinkPadにインストールしてみた。 最終的には、これにFuguItaを被せて使う予定。
ob$ df -h Filesystem Size Used Avail Capacity Mounted on /dev/sd0a 989M 327M 613M 35% / /dev/sd0f 9.7G 22.0M 9.2G 1% /home /dev/sd0d 23.2G 2.8G 19.3G 13% /usr /dev/sd0e 38.7G 1.5G 35.3G 5% /usr/local /dev/sd0g 153G 61.6M 146G 1% /var mfs:3694 743M 7.0K 706M 1% /tmp
悩んだ所
これが終の住処なんで、もう同じ事をしないだろうけど、メモとして残してお く。
Diskの区割りはどうするか? OpenBSDチームの経験値が反映されたレイアウト が提示されたけど、そこにはX用の区割りもあった。Xは重視しないんでそれは 却下。/usr/localは広めにした。/usrはもっと狭くてもいいかなと思ったけど、 突然に気が変ってbuild worldしたくなるかもと思い、/usr/objの為にお勧め サイズにしてる。
/homeが以外に狭いのは、眼につく所に色々な物をちりばめない対策。その代 わりに /var を広大にして、こちらをトランクルームに割り当てろ事にした。 俗名で、ごみすて場。
イメージをUSBに焼いた場合、cdじゃなくてhttpでもなくてdiskを指定するのね。そして、そ れはまだマウントされてないって指定すると、インストール元のsd1が選ばれ る。
/tmpは例によってtmpfsなんだけど、欲張って、1024m なんて指定しちゃうと、 イリーガルと言われて、/tmpがマウントされなかった(お勧めレイアウトでは、 独立してhddの領域を4G程指定されてた)。大量に必要になる場合が有ったら、 その時は別な手段を考えよう。
計画漏れ
一大目標だった、一度も有線に接続しないでもWiFi可能にするってのは、 FuguIataのおかげで無事に達成できた。
ただ、/etc/{wsconsctl.conf,sysctl.conf}の両者は、cpすべきリストから抜 け落ちていた。念入りに計画した積りでも、やはり穴が有るものだな。
計画漏れとは関係ないけど、今気づいたので、ちょっとOpenBSDを礼賛しとく。 OpenBSDのパッケージ・システムは見える化が実現されてて素晴しい。これが FreeBSDとかリナになると、パッケージの管理をデータベース(aqlite3とか)に 任せてしまっているので、簡易にはいかない。テキスト文化の申し子をきちん と守っているのがオイラー的には好感。(see /var/db/pkg)
memory usage
お勧めでは、swapに3Gを提案してきてた。swapのサイズって、搭載メモリー容量 の関数だったはず(係数は1だ、いや2だって議論はあったけど)。係数が1だと すると、OSはメモリー容量を3Gと認識してる事になる。
dmesgの冒頭が、こうなってた。4Gのメモリーを搭載してるマシンなのにね。
real mem = 3047378944 (2906MB) avail mem = 2974646272 (2836MB)
今迄気がつかなかったぞ。ローダーは、ちゃんと4Gのメモリーを検出している ので、カーネルの手抜きなんだろうか? 何かもったいない気がする。
FuguItaと結合方法
丁寧に結合方法が解説されてた。所詮、考える事は皆同じだな。
その為の切り口まで用意されてて便利そう。母艦の装備がきちんど完了したら、 やってみよう。
母艦の装備って、ひたすら pkg_add
するだけだけどね。あれこれ入れていっ
ても、飽和する事はない(入れ過ぎ注意報を発令しとこう)。
常時接続しとかなければならないのは、/usr/localだけでいいかな。 あとの母艦側は、必要な時だけ、/mntに接続すればいいか。
オイラーが不定期に参照するのは、/usr/{src,ports} だ。メジャーバージョ ンのtar玉をあらかじめ展開してあるからね。展開した後、目障りなCVSを
find . -type d -name CVS -exec rm -rf {} +
して、消しておくのは、お約束事項だったりします。
現在進行形や過去形なやつは、CVS Repository で見れば事足りるね。
/etc/ssh/key
母艦の準備にまだ追われている。一度USBを差して出向してしまうと、もう母 港には帰れないからね。って、出港違いじゃん。サラリーマンの哀愁がただよ う誤変換だな。いやSKKは、基本的に、そんな誤変換はありえないんです。全 ては、操縦者の責任です。
で、母艦のみの整備って事で、 PuTTYからsshしたら、hostの鍵が違うケンどうするって警告が出てきた。 そりゃそうだ、DHCPは、同一MACに対しては、同一IPを割り振ってくるからね。
Debian/FreeBSDのディアルブートで使ってた時の同様問題があった。で、鍵を 同一にしてしまってた。
今回はどうする? 河豚板のそれをマスターキーにしたいんだけど、河豚板の 鍵の扱いが不明。作者さんが、すぐ近くにおられるので、聞いてみた。
> 1.生成は何時? SSHのホスト鍵 /etc/ssh/*.keyk , /etc/ssh/*key.pub ですが、 起動モード0, 1, 2 → 起動時に毎回新たに生成されます("fresh boot"なので)。 起動モード3 → usbfadm sync でUSBに保存されていた鍵が読み出され、使用されます。 起動モード4 → fdadmでFDに保存されていた鍵が読み出され、使用されます。 > 2.マイナーバージョンアップで、ひきつがれるか? fiupdateユティリティでマイナーバージョンアップをすると引き継がれます。 (fiupdateは、カーネルと/fuguita以下のシステムファイルツリーを書き換え るだけなので、/home/*, /etc/*, /var/* などは保護されます) > 3.メジャーバイジョンアップ時もひきつがれるか? > 同一USBを使った場合を想定しての質問です。 同じUSBメモリに新しい河豚板を書きこんでしまうと、古いバージョンで使っていた、 保存されていた鍵 /mnt/livecd-config/7.3/amd64/hoge/etc/ssh/*key* は勿論 消えちゃいますので、一旦他のメディアに保存して新しいバージョンの /etc/ssh に コピーするなどして引き継ぐのが確実かと思います。
との事。さあ、将来を見据えてジックリ考えておこう。まて、そんなもん、考 える事もなかろう。ルーチン・ワークにしちゃうのが得策。
マスターキーは母艦の物とする。河豚板が変更されたら、母艦のキーをUSBに 転送。すかさず、usbfadm syncする。それから、rcctl restart sshdを実行。 そうしておいて、sshすれば良いはずだな。
mlterm
昔FreeBSDで使っていたんだけど、教えていただくまで蒸発してた。多言語対 応のX端末。
ob$ cat .mlterm/main fontsize = 16 use_variable_column_width = false use_anti_alias = true not_use_unicode_font = true use_scrollbar = false bg_color = black fg_color = #f6f3e8 letter_space = 1 line_space = 3 col_size_of_width_a = 2 mod_meta_key = alt mod_meta_mode = esc bel_mode = none
この設定でemacs(ddskk)も不自由なく使えるようになった。五月蝿い音もしな いしね。
ガッツリしたフォントを使うなら、ktermもお勧め。但し、ja-nkfを利用して、 昔懐かしい、EUC-jpな世界に戻ってからね。
.fvwmrc
河豚板の日本語導入ツールでは、icewm推しだった。オイラーも昔はよく利用 させてもたってた。結構カスタマイズ性があって、良い物なんだけど、貴重な メモリーエリア重視って事で、既存な物を流用。でも、少しはカスタマイズ。
ob$ locate fvwmrc /usr/X11R6/lib/X11/fvwm/.fvwmrc
雛形を持ってきて、単に、mltermとkterm起動のメニューを付け足し。仮想画 面は、9面から4面に変更。若者でも短期記憶は7つぐらいと言われているし、 年寄なら、4つぐらいが、身の丈に合っているだろう。
ob$ diff -u /usr/X11R6/lib/X11/fvwm/.fvwmrc .fvwmrc --- /usr/X11R6/lib/X11/fvwm/.fvwmrc Mon Oct 9 02:04:05 2023 +++ .fvwmrc Fri Feb 2 15:40:19 2024 @@ -19,7 +19,7 @@ HilightColor #bebebe blue MenuStyle #4d4d4d #bebebe #e7e7e7 -adobe-times-bold-r-*-*-12-*-*-*-*-*-*-* fvwm -DeskTopSize 3x3 +DeskTopSize 2x2 ColormapFocus FollowsMouse @@ -95,7 +95,8 @@ ######################## Menus ################### AddToMenu RootMenu "Root Menu" Title + "XTerm%mini.xterm.xpm%" Exec exec xterm -#+ "Rxvt" Exec exec rxvt ++ "MLTerm" Exec exec mlterm ++ "Kterm" Exec exec kterm -r -fk 8x16 -fn 8x16 + "" Nop #+ "Remote Logins" Popup Remote-Logins #+ "" Nop
wsconsctl
オイラーのPCの画面輝度は、
wsconsctl display.brightness=70
これぐらいで丁度良かった。どのハードを叩いているの? ちょっと調べてみ る。探索場所は勿論カーネル内ね。最初は軽く検索して全体像を把握する。
ob$ grep brightness -r -l . ./dev/acpi/acpithinkpad.c : ./dev/pci/drm/i915/i915_params.h ./dev/pci/drm/i915/display/intel_backlight.c ./dev/pci/drm/i915/display/intel_bios.c : ./dev/wscons/wsdisplay.c ./dev/wscons/wsdisplayvar.h
wsdisplay.cあたりが総括者で、個別なハードはインテル入っていますの i915/ だろう。後、気になるのはthinkpad.cってモロな名前が付いているファ イルぐらいかな。
/* set backlight brightness to level in range [0..max], assuming hw min is * respected. */ void intel_backlight_set_acpi(const struct drm_connector_state *conn_state, u32 user_level, u32 user_max)
intel_backlight.c
に有ったコード。もうハード叩きの現場。ここまで来ると
仕様書が欲しい。そんな贅沢言わないで、ヘッダーファイルでも見てOK.
sag
FuguItaの作者さんが200年11月に公開された息の長いソフト。その頃からの OpenBSDユーザーさんて、筋金入りのハッカーですね。
これを走らせて おけば、マシンの稼動状況が手に取る様に分かる、プロバイダー御用達の監視 ツールだ。異常を検出したらメールを飛ばすなんて事もできそう。
インストーラーが付属してるけど、手動でやってみるのが良い。
System Activity Grapher - インストール手順(手動)
実は現職の時、同様のシステムを作成した事が有る。IoTなんてバズワードが 流行するよりずっと昔の頃だ。
こちらのシステムにはperlが使用されてるけど、オイラーが使ったのは、確か ruby 1.4ぐらいだったかな。WEBサーバーは元祖CERNの奴だったか、ncsaの奴 だったか、apatchだったかは遠い昔の事なんで忘れてしまったわい。
cronなんて懐かしいな。このあたりから、どんな事をやってるか見ていくか。 データの収集系はcron(時の神)でしょう。グラフのpng作成もcron任せにしてる? たいしたデータ量ではなさそうななので、オンデマンドかな? そうなるとcgi が必要でやっかいな事が増えそう。
ずっとデータを蓄積する様だけど、過去の記録はWEBから参照できるのかな? 1年前に比べて、DISKにどれだけ垢が溜ったか確認したい、なんてのは、よく ある需要と思う。
これ自分用に作った血圧データをグラフ化するアプリ。PDF出力なんで、コン ビニで印刷して医者へgoする。データはCSVで保存してるんでRを使うなり pythonするなりhaskellで解析するなり自在だ。実録データの分析って面白い。 このアプリ自身で、任意の年月日からのグラフ化が可能になってる。
ああ、golangも入れておこう。
ob$ doas pkg_add go doas (sakae@ob.my.domain) password: quirks-6.160 signed on 2024-01-30T14:02:46Z go-1.21.1: ok
話が逸れた。で、このsagを実行してみたいんだけど、オイラーのパソコンの 使い方では、意味が無いなあ。朝に2時間、午後に2時間ぐらいの通電だものな。 パソコンを徹夜させるんじゃ、老人苛めになりそうなので、自重するよ。
ちょいと閲覧
って、ソースね。全部見ると疲れるので、一つだけ。 bin/t0001 この形のファイルは他にもあるけど、翻訳すると tHHMM この例だ と、毎分実行される、せわしないコマンドだ。中身は、
echo =la $(sysctl -n vm.loadavg)
な具合に、センサーを指定して、データをカーネルから引き出している。
ob$ sysctl -n vm.loadavg 0.61 0.52 0.44 ob$ sysctl vm.loadavg vm.loadavg=0.59 0.52 0.44
相変わらず、偽情報を返してくるな。困ったものだ。
httpd
その代わりに、httpdを起動して、各種ドキュメントを読めるようにしよう。
ob$ find /usr/local/share/ -type d -name html /usr/local/share/doc/libcerf/html /usr/local/share/doc/pcre2/html /usr/local/share/doc/ffcall/html /usr/local/share/doc/R/html /usr/local/share/gtk-doc/html /usr/local/share/maxima/5.46.0/xmaxima/html /usr/local/share/maxima/5.46.0/doc/html
例えば、次のようにコンテンツを設置する。
ob$ doas cp -r /usr/local/share/maxima/5.46.0/doc/html /var/www/htdocs/maxima ob$ cd /var/www/htdocs/maxima ob$ doas ln -s maxima.html index.html
Windows側からアクススするんで、hostsにサーバーアドレスを登録する。 何と言ってもブラウザーの更新は激しいので、迅速に対応されてるWindowsを 利用するのが得策だ。
を見てOpenBSDのIPAddressと名前(ob)を登録。 C:\windows\system32\drivers\etc\hosts なんて、さっと出てくる訳がないか らね。
これで、http://ob/maxima/ すれば、Windows側からスイスイ。とは行かなくて、 一呼吸待たされる。本物のサイトにアクセスしてるみたい。/etc/resolv.conf に設定されてる、lookup file bind のWindows版はどうやるの?
大事な事だからセカンド・オピニオンを取ってみたけど、同じことが報告され てる。想像を外した訳だけど、次は何を調べよう?
Windows側のfirefoxだけでこの現象が出る。ググルやエッジ、Debian/WSL2の w3mでは、全く問題なし。よって、これ以上の探索は中止する。
kernel tags
カーネルを読む時に必要なタグ・ファイルなんだけど、普通にやるとvi用の奴 が作成されちゃう。そんでarch/i386のMakefileを改造。
ob$ diff -u Makefile eMakefile --- Makefile Sun Jan 22 12:27:31 2017 +++ eMakefile Fri Feb 2 07:56:55 2024 @@ -34,7 +34,7 @@ eval "SFILES=\"`make -V SFILES -f $${TDIR}/Makefile`\"" && \ eval "CFILES=\"`make -V CFILES -f $${TDIR}/Makefile`\"" && \ eval "AFILES=\"`make -V AFILES -f $${TDIR}/Makefile`\"" && \ - ctags -wd -f ${TAGS} $${CFILES} $${HFILES} && \ + etags $${CFILES} $${HFILES} && \ egrep "^[_A-Z]*ENTRY[_A-Z]*\(.*\)" $${SFILES} $${AFILES} | \ sed "s;\\([^:]*\\):\\([^(]*\\)(\\([^, )]*\\)\\(.*\\);\\3 \\1 /^\\2(\\3\\4$$/;" \ >> ${TAGS} && \
いざ実行。tagsを指定しておかないと、普通にコンパイルを始めちゃうんで注 意。
ob$ doas make -f eMakefile tags
それらしいサイズのファイルが出来たんで、後は使ってみるなり。
ob$ ls -l tags TAGS -rw-r--r-- 1 root wsrc 280070825 Feb 2 07:59 TAGS -rw-r--r-- 1 root wsrc 275965551 Feb 2 07:59 tags
kern/init_main.c
の中でズラズラと初期化してるうちの cpu_startup()
へ、飛んでけー。
/usr/src/sys/arch/i386/i386/machdep.c 336:cpu_startup( /usr/src/sys/arch/i386/include/cpu.h 217:#define CPU_STARTUP(
ちゃんと拾い出してくれて、飛んでくれた。以上、試食は終了。
懸念事項は、河豚板の狭いram上で、emacsが不満を言い出さないかだ。これ ばかりは、やってみるまで何とも言えないな。
FreeBSD上の残骸
VMWare player上のFreeBSDに入れていたOpenBSDのソース一式は、もう不要に なった。バッサリと消してしまう? そこに悪魔のささやきが、、、
せめて、カーネルのースだけは、残しておけ。で、その訳は?
河豚板なら、無茶振りしても大丈夫。ddbに落ちてヘマしても、それは無かっ た事にできる。ddb上に居る時は、ソースの参照は出来ない。よそのパソコン を参照するしかない。 だから、残しておけと。
もう一度 man ddb して、ヒントを見付けておけ。