Try FuguIta

梅雨空なこの季節。雨の合間をぬって散歩に勤しんでいる。さすがに雨の時はご遠慮してるんで、辛うじて人間だな。犬だと雨だろうが雪だろうが、散歩に連れて行けと大騒ぎするけどな。

で、雨の合間ってのは農家の人も同じとみえる。この間、毒霧攻撃を受けたぞ。果樹園の病害虫退治の、大事な作業なんですな。農家の人によっては、オイラーが通行してる時は、消毒を休止してくれる事がある。貴重な時間を潰してしまって御免なさいと、足早に通り過ぎる、あるいは迂回するとかするんだけどね。ついつい考え事をしながら歩くと、霧に突っ込む事になるんだ。

いつも、茶髪の犬3尾と黒毛の犬1尾をまとめて散歩させてる人に会うんだ。が、たまたま黒毛の犬だけを散歩させてる人に出会った。

そのワンコは、空を仰ぎ見ながら、気持ちよさそうに脱糞中。まだまだ時間がかかりそうなんで、その人に話かけてみた。4尾まとめて散歩してる人は、40歳を超えた息子さん。今回の人は、その父親なんですと。

自衛隊を退官して悠悠自適な生活をなされてるとか。息子の嫁が見つからず、やきもきしてるんですよ。あなたのお知り合いで、適当な方がいたら紹介くださいと頼まれてしまったぞ。

田舎は出会いが少ないですからねーー。まして、農家の跡取り息子となると、なおさらですよ。 あれ?そうすると、農家は奥さんが担当されてたのかな? まあ、深くは突っ込むまい。

それより、黒毛のワンコに興味が出て来た。余り見かけない犬ですけど、犬種は何になるんですか? 甲斐の純血らしい。

散歩してる割には、ふくよかですねって言うと、メス犬なんだけど、子宝に恵まれなかったので、子宮に問題を生じたため、取ってしまったとか。それでホルモンバランスが崩れ、太ったそうな。人間で言うともう、おばあちゃんだそうだ。そのせいか、後ろ足がブルブルと震えていた。

なんか、人間世界も犬世界も、大変だな。

emacs mozc on Debian

前回の最後で思案したあれ。CUIな人が端末上で使うemacsから、もずくが快適に使えるかのお題。手を動かせって事でやってみた。

anthy から mozc に移行

emacs-mozc ってのが、mozc.elの事。emacs-mozc-binがヘルパーらしい。

CUIなemacsでも、候補がビローンと出てきて、一応入力出来るけど、本命はGUI上のemacsで使えって事だな。それに、i386な石じゃ、重くてかなわん。貧乏人は、anthyを素直に使っとけってのが結論。

debian:~$ ps awx|grep mozc
 7975 ?        Ss     0:00 /usr/bin/mozc_emacs_helper --suppress_stderr
 8009 ?        Sl     0:00 /usr/lib/mozc/mozc_server

デフォで、emacs25 が入っているんだけど、emacs-mozcを取り寄せると、emacs24が付いてくる。なんだかなあ。(実害は無いんで、放置しといてもいいよ)

もっとスマートにやりたいなら、 Google mozc の、src/unix/emacs内にある、mozc.elを抽出してきて、emacsのライブラリィーPATHの中に放り込んでしまえばおk。努々、全部を落としてこないように。Cフラフラ語に対面する事になって、頭がクラクラしますから。

check FuguIta

河豚喰いねえ、江戸っ子だってねぇ。

って、昔、山口県あたりに出張した時に勧められた。 空港で、ふぐの一夜干しと、ふぐのてんぷらだっかと、ふぐヒレをセットで買った覚えがある。

前回見つけておいた、OpenBSDのライブ版 FuguIta ってのを試してみる。取ってきたのを 展開。素性を確認。USBに焼いたのをを刺すから、これぞ河豚刺しだか河豚ヒレです。

ob6$ file FuguIta-6.3-i386-201805241.img
FuguIta-6.3-i386-201805241.img: x86 boot sector; partition 4: ID=0xa6, active, starthead 255, startsector 128, 2096972 sectors

1GのUSBに焼けるように構成されているとな。

ob6$ doas vnconfig vnd0 /home/sakae/FuguIta-6.3-i386-201805241.img
ob6$ doas mount /dev/vnd0a /mnt

まずは、まな板に乗せられるように、仮想デバイスに紐付けてから、マウント

ob6$ cd /mnt
ob6$ ls -l
total 1432952
-rw-r--r--  1 root  wheel      82784 May 24 02:21 boot
-rwxr--r--  1 root  wheel       2048 May 23 23:44 boot.catalog*
-rw-r--r--  1 root  wheel    6914286 May 24 00:00 bsd-fi
-rw-r--r--  1 root  wheel    6943640 May 24 00:00 bsd-fi.mp
-r-xr-xr-x  1 root  wheel      85592 May 24 00:00 cdboot*
-r-xr-xr-x  1 root  wheel       2048 May 24 00:00 cdbr*
drwxr-xr-x  2 root  wheel        512 Apr 18  2014 etc/
-rw-r--r--  1 root  wheel  719388672 May 24 02:21 fuguita-6.3-i386.ffsimg
ob6$ ls etc
boot.conf    random.seed
ob6$ cat etc/boot.conf
echo
echo >> bsd-fi.mp is for
echo >> multiprocessor kernel (default).
echo >> Enter 'bsd-fi' for Uniprocessor.
echo
set timeout 10
set image /bsd-fi.mp

USB用と言っても、実体はCD風なのね。

ob6$ doas umount /mnt
ob6$ doas vnconfig -u vnd0

構成が分かったんで、本体のfuguitaを抽出。取り合えずCD(もどき)は、マウントを解除。 今度は、本体を解体してあげる。 特徴的な所を、思いつくまま見ていく。

ob6$ ls /mnt/dev
MAKEDEV* klog     ksyms    null     stdin    tty      zero
console  kmem     mem      stderr   stdout   xf86

必要最低限なデバイスだな。

ob6$ tree /mnt/usr/fuguita/sbin
/mnt/usr/fuguita/sbin
|-- compress_man.sh
|-- fdadm -> /boottmp/fdadm
|-- find1so.sh
|-- gen_mode0sldir
|-- mkusbfi.sh
`-- usbfadm -> /boottmp/usbfadm

usbfadmで、ユーザーが変更を加えたものをsave出来るそうなんだが。。。/mnt/etc/mtreeの中を確認すべきかな。まあ、そこは端折って先に行く。気の向くままに、本能的にね。

ob6$ diff -u /etc/rc /mnt/etc/rc
--- /etc/rc     Fri Apr 20 16:35:24 2018
+++ /mnt/etc/rc Sun Apr  8 09:20:25 2018
@@ -367,11 +367,12 @@
 # Mount all filesystems except those of type NFS and VND.
 mount -a -t nonfs,vnd

-# Re-mount the root filesystem read/writeable. (root on nfs requires this,
-# others aren't hurt.)
-mount -uw /
-chmod og-rwx /bsd
-ln -fh /bsd /bsd.booted
+# disabled by FuguIta
+# # Re-mount the root filesystem read/writeable. (root on nfs requires this,
+# # others aren't hurt.)
+# mount -uw /
+# chmod og-rwx /bsd
+# ln -fh /bsd /bsd.booted

 rm -f /fastboot

@@ -615,9 +616,11 @@
 start_daemon apmd sensorsd hotplugd watchdogd cron wsmoused xenodm
 echo '.'

-# Re-link the kernel, placing the objects in a random order.
-# Replace current with relinked kernel and inform root about it.
-### /usr/libexec/reorder_kernel &
+# disabled by FuguIta
+# # Re-link the kernel, placing the objects in a random order.
+# # Replace current with relinked kernel and inform root about it.
+# /usr/libexec/reorder_kernel &
+echo 'KARL: disabled'

 date
 exit 0

親分には怒られるかも知れないけど、多大な時間がかかるアレはオミットしてるのね。そして、初回起動時のお約束。

ob6$ cat /mnt/etc/rc.firsttime
/usr/sbin/fw_update -v

USBに焼いて、ThinkPad/SL510に刺してみる。

無線LAN どうしよう?

ホスト名は心に決めていたんだ。西国では河豚のことを ふく って言ってたはず。 ならば、ふく でいいと思ってた。けど、いざ登録する時に、英語キーボードを使ってるんで、 指が勝手に happy ってタイプしちゃったぞ。

で、問題は、無線LAN。使えるようにするには、fw_update して、ファームウェアを落として こなければならない。その為には一度、有線LANに繋ぐ必要がある。

リビングと言うか居間にあるテーブルと言うか兼用の炬燵テーブルの上にパソコンを置いて、 線を這わせて。。。女房に白い眼で見られるな。今時、線なんか繋いで。

女房にばれないように、超早朝に工事をするかな。まてまて、今時のパソコンには有線LANの口が無い物も有るとか。そういう人の為に知恵を絞るんだ。

過去にポータブルOpenBSDでやった残骸が残っているじゃん。そこから使うUSBに必要なものを 移しちゃえ。

供給されてるUSBのイメージは1G。使う予定のUSBは、公称8Gと言う、容量水増し呼称のもの。 まずは、広く使えるように、usbfadm のnewdeviceで、焼き直しをしておこう。

一番気を遣う所は、デバイス名を間違えない事。sd0 は備え付けのHDD。sd1は、起動したFuguitaのUSB。追加で刺したのは、sd2 になってた。書き込んで、新しいので起動。

happy# df -h
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/rd0a      1.6M    712K    850K    46%    /
/dev/sd1a      706M    700M    6.1M    99%    /sysmedia
/dev/vnd5a     676M    562M    113M    83%    /fuguita
tmpfs          2.6G    227M    2.4G     8%    /ram

なんの変化もないけど、裏に隠れているんだな。

happy# mount /dev/sd1d /mnt
happy# df -h /mnt
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/sd1d      6.4G    219M    6.2G     3%    /mnt

これが、隠れているデータの保存場所。

happy# tree -d -L 5 /mnt
/mnt
`-- livecd-config
    `-- 6.3
        `-- i386
            `-- happy
                |-- altroot
                |-- etc
                |-- home
                |-- root
                |-- tmp
                |-- usr
                `-- var

こんな風に、起動時にオーバーライドされる領域が出来ているんで、この適当な場所に、 必要なものを入れていけばよい。etc/hostname.iwn0 とか、etc/firmware/iwn-* とかね。

こうしておいて、再度、fw_update すると、pkgの管理下で再登録される。後は、好きにpkg_addするだけ。おっと、etc/installurlを忘れないで先に入れておく。

happy# cat /etc/installurl
https://ftp.jaist.ac.jp/pub/OpenBSD

使うであろう最低限のpkgを入れておいた。

happy# ls /var/db/pkg
anthy-9100hp2              iwn-firmware-5.11p1        p11-kit-0.23.2p0
boehm-gc-7.6.0p1           libffi-3.2.1p4             quirks-2.414
emacs-25.3p0-no_x11        libiconv-1.14p3            rlwrap-0.43
emacs-anthy-9100hp3        libidn2-2.0.0p0            rsync-3.1.3
gettext-0.19.8.1p1         libnettle-3.4              tree-0.62
gmp-6.1.2p1                libtasn1-4.13p0            w3m-0.5.3p6
gnutls-3.5.18              libunistring-0.9.7         xz-5.2.3p0
intel-firmware-20180312v0  libxml-2.9.8

デフォで入っていたのは、rsyncとrlwrap。rsyncは、usbfadmで使うと想像出来るけど、rlwrapは、普通の人は余り用ないよな。ひょっとして、作者さんの一番のお気に入り?

まあ、オイラーもrlwrapの使いどころは知ってて、便利に使わせてもらうんで、同梱されてるのには異議無しなんですけどね。ああ、OpenBSDでは、gaucheが動かないので、gambitを入れておこう。

ちょっと探検

usbfadmでrsyncが使われているはず。確認してみる。

happy$ grep rsync usbfadm
            rsync -aqHx --delete --include '*/tmp' --exclude 'tmp/*' /ram/. /mnt/livecd-config/$verarch/$uconf/.
            rsync -avHx --delete --include '*/tmp' --exclude 'tmp/*' /ram/. /mnt/livecd-config/$verarch/$uconf/.
                rsync -avHx --delete --include '*/tmp' --exclude 'tmp/*' /ram/. /mnt/livecd-config/$verarch/$uconf/.

久しぶりにrsyncのコマンドラインに遭遇。消されている物は、バックアップ側でも情け容赦なく削除。こうしておかないとごみが溜まりますからね。一時的な作業はどうぞtmpの下で行ってくださいって事だな。

無駄にrlwrapを入れてはいないだろうという予感がするな。

#-------------------
# read user's input with readline functionality
# outputs echoed to stdout
#
#     usage: rl_wread prompt-str default-str [completion words ....]
#
function rl_wread {
    typeset prompt="$1";  shift
    typeset default="$1"; shift

    if [ -x /usr/local/bin/rlwrap ]; then
        echo "$@" > /tmp/rl_words
        rlwrap -b '' \
               -f /tmp/rl_words \
               -P "$default" \
               sh -f -c 'echo -n "'"$prompt"' --> " >&2 ; read w || echo EOF; echo $w' || echo RL_ERR
    else
        #-------------------
        # fallback to dumb input
           :

親切な心が、ユーザーの利便性を高めるという証拠。海外の人に、日本人の お・も・て・な・し。嫌味が無いのが、どこかのM$と大違い!

acpicpu0 at acpi0: !C2(250@17 mwait.3@0x20), C1(1000@1 mwait.1)
acpitz0 at acpi0: critical temperature is 105 degC
"LEN0017" at acpi0 not configured
acpithinkpad0 at acpi0
acpiac0 at acpi0: AC unit online
acpibat0 at acpi0: BAT1 model "42T4763" serial  3822 type LION oem "SANYO"
acpibtn0 at acpi0: LID_
acpibtn1 at acpi0: PWRB
acpibtn2 at acpi0: SLPB

dmesgに珍しいのが出てたので載せておく。LEN0017ってThinkPadのポインティングデバイスなんだ。そんな事知らんがな。やばい温度が105度って、どこの事? 石のジャンクション温度だったら、設定が高すぎると思うぞ。おまえら、アレニウスの法則って知ってるんか? アレニウスのあれは、温度が10度上がると、活性度が倍になるってやつね。

Lチカ

実は8GのUSBで使おうと思ったのには、深遠な理由がある。ポータブルOpenBSDを、東芝のUSBに 作ったんだけど、意味もなくLチカ(アクセスランプが点灯)してたんだ。

今回のFuguItaは、完全にメモリー上に展開された上で実行されてるんで、Lチカする理由が無いはず。だったら、東芝のUSBにFuguItaを入れてLチカすれば、東芝USBの個性と言う事になるな。ってな事で、検証したのさ。結果は、

Lチカしてました。

ちなみに、東芝さんUSBの諸元は、

sd1 at scsibus2 targ 1 lun 0: <TOSHIBA, TransMemory, 1.00> SCSI2 0/direct removable serial.09306544C1A0C002431A
sd1: 7400MB, 512 bytes/sector, 15155200 sectors

東芝さんに理由を聞いてみたいぞ。まてまて、もう一本持ってるバッファローのUSBにポータブルOpenBSDを入れてみるか。入れてみた。そして起動。運用中は全くLチカしなかった。

後は、勝手にLチカする東芝さんのUSBをポータブルFreeBSDにしてみる事ぐらいかなあ。これを 確認すれば、OSとの相性が点検出来るな。

それをやる前に、別な事の確認を

X Windows

以前作ったポータブルOpenBSDで、Xを立ち上げようとして、startxすると、ddbに落ちてしまう。河豚毒にあたって、ほぼ即死。ダイイングメッセージを残す間もなく、逝ってしまう。

折角、別の方が設計製作された、FugiItaが有るんで、Xが動くか検証しておきたい。解毒剤は、開発されてるか? あるいは、調理師免許を持った方が料理されてるか?(多分、どっちも、だめだろうけど)

やってみた。あっと言う間にddbに落ちましたよ。でも嬉しい?事に、再起動させると、fsckが走る事なく、普通に動き出した。落ちたっていう痕跡は、lastコマンドに crash して終了しましたってのが残ってるぐらいだな。勿論、/var/log/Xorg.0.log には記録無し。(記録する前に、落ちちゃったんでしょうな。)

はて、どうしたものかとググル先生に聞き込み開始。 手がかりが余りないので、上手に質問しないと有益な情報が得られないな。現場のデカ(刑事)さんの心境。OpenBSD startx SL510 ddb ぐらいかな。最初から絞り過ぎると情報量が減るので、最初は緩く、段々と締め上げていくのが鉄則かな。(デカさんは、絞めて緩めて、矛盾を突いていくらしいですけど)

グラフィックボードを2枚刺ししてる優雅な人がいて(きっとBitCoinのあれだな)、OpenBSDの重鎮に聞いてた。

そんなブルジョア生活するなとな。で、その人は試行錯誤してた。その中にオイラーへのヒントが潜んでいた。

次の設定ファイルに追加しちゃうという、荒技(この時点でポータブル性を放棄)。インテルさんをご指名。

/usr/X11R6/share/X11/xorg.conf.d/{50-fpit.conf,70-synaptics.conf}

Section "device"
  Identifier "default device"
  Driver "intel"
EndSection

30分でできる OpenBSD 日本語デスクトップ環境

startx用

ob$ cat .xinitrc
LANG=ja_JP.UTF-8
setxkbmap -option ctrl:nocaps &
# twm
# fvwm
fluxbox

記念に Xorg.0.logの一部を載せとく。

[   744.839] (II) LoadModule: "intel"
[   744.839] (II) Loading /usr/X11R6/lib/modules/drivers/intel_drv.so
[   744.863] (II) Module intel: vendor="X.Org Foundation"
[   744.863]    compiled for 1.19.6, module version = 2.99.916
[   744.863]    Module class: X.Org Video Driver
[   744.864]    ABI class: X.Org Video Driver, version 23.0
[   744.864] (II) intel: Driver for Intel(R) Integrated Graphics Chipsets:
        i810, i810-dc100, i810e, i815, i830M, 845G, 854, 852GM/855GM, 865G,
        915G, E7221 (i915), 915GM, 945G, 945GM, 945GME, Pineview GM,
        Pineview G, 965G, G35, 965Q, 946GZ, 965GM, 965GME/GLE, G33, Q35, Q33,
        GM45, 4 Series, G45/G43, Q45/Q43, G41, B43
[   744.866] (II) intel: Driver for Intel(R) HD Graphics: 2000-6000
[   744.866] (II) intel: Driver for Intel(R) Iris(TM) Graphics: 5100, 6100
[   744.866] (II) intel: Driver for Intel(R) Iris(TM) Pro Graphics: 5200, 6200, P6300
[   744.868] (II) intel(0): Using Kernel Mode Setting driver: i915, version 1.6.0 20151010
[   744.879] (--) intel(0): Integrated Graphics Chipset: Intel(R) GM45
[   744.879] (--) intel(0): CPU: x86, sse2, sse3, ssse3
[   744.879] (II) intel(0): Creating default Display subsection in Screen section
        "Default Screen Section" for depth/fbbpp 24/32
[   744.879] (==) intel(0): Depth 24, (--) framebuffer bpp 32

気を良くしたオイラーは、FuguItaのシステムに適用しようとした。

happy$ doas vi 50-fpit.conf 70-synaptics.conf
  :
Read-only file, not written; use ! to override.
Error: 50-fpit.conf: Read-only file system.

あろう事か、書き込み禁止エリアになってる。

rootを見ると、usr -> ram ってなってるんで、

happy$ cd /ram/usr/X11R6/share/X11/xorg.conf.d

してから、実行しても、やはり書き込み禁止だなあ。何処かに見落としが有るかな?

lrwxr-xr-x  1 root  wheel  58 Jun 21 15:08 70-synaptics.conf -> /fuguita/usr/X11R6/share/X11/xorg.conf.d/70-synaptics.conf

なんと、変な所へリンクされてるな。このリンクを止めて、上書きするんだ。 こういうからくり、さっさと気づけよ。aliasに、ls -F を登録しとこう。

こういう仕組みは、/boottmp/ を見るといいんだな。やや、世間一般で言う busybox が色々と居るなあ。rc,libcd-retr.sh.incの力作が置いてある。