28-Jan-2024
[utmp(utmpx)って]

書き込み権限持った人でないと操作できないんですね、ってUNIXをちゃんと知ってる人だと「それ常識でしょ」と言われる問題で詰まっておりました。

なんとなく、X11上でkinput2/uimからsj3servが使えれば十分ということでttyクライアントたるsj3は誰もメンテナンスしていなかったのではないかという疑問を抱いています。随分前にFreeBSDはutmputmpxへの移行があったのですが、FreeBSD向けのコードにutmpx対応が含まれていないというのがその理由。

EUC-JP向けのコードがちゃんと動くようになってからあれこれやろううと考えていましたが、なんかEUC-JP向けのコードの動作も怪しい気がしていて、ちょっと悩んでいます。Vine 2.5上での原典(sj3-2.0.1.20)自体がなんか…?という状況なので、一体何が正しくて何がおかしいのか、もう少し調べる必要がありそうです。

調べるのに飽きたらUTF-8対応(もどき)の方に走るかもしれませんけど。55.3kg(21:25)

21-Jan-2024
[VirtualBoxへ移ってみましたが]

「ん?」と思う箇所も無い訳では無いものの、概ね問題ないのかなーという気はしています。とはいえそれほど使い込んではいないので、実はとんでもない問題を抱えていたという可能性も否定できないのですが。

VMware Playerと違い、仮想マシンの設定は設定用のXMLファイル(.vbox)を直接書き換えるよりもツール(VBoxManage)で変更する方が良さそうです。たとえば、VBoxManage modifyvm VM-NAME --uart-type1=16450とすると、.vboxのエントリが<Port slot="0" enabled="true" IOBase="0x3f8" IRQ="4" path="COM2" hostMode="HostDevice" uartType="16450"/>になるとか。ソースコードを見るに、UARTのエミュレーションはデフォルトでは16550A相当、オプション次第で16450, 16750に化けるようです。

FUJIMI-IM/sj3のsj3(tty client)は、非常に手強いです。ようやくVine 2.5上で動いているsj3servを使った変換ができるくらいにはなりましたが…

20240121.png

やった作業としては、こんな感じでしょうか。

原典(sj3-2.0.1.20)とFUJIMI-IM版とではデフォルトの設定ファイル(serverrc, sjrc, sjrk, cvtkey.*)の置き場所が違うので注意が必要です。原典は/usr/local/lib/sj3、FUJIMI-IM版は/etc/sj3になるため、sjrcとsjrkについては環境変数SJRC, SJRKに指定するか、もしくは~/.sjrc, ~/.sjrkに配置してしまうのが良いかもしれません。なお、sjrk, sjrcが全く参照できない場合はsj3によるローマ字かな変換・かな漢字変換が行えなくなるので気を付けてください(特にsjrcについては警告すら出ないので厄介です)。

現状のutmp周りはLinux/NetBSD/OpenBSD向けに整理してしまったので、utmpxを使うFreeBSD/DraonFlyBSD向けの対応を追加する必要があります。UTF-8環境でも動作がおかしくならないようにする必要もありますが、これはEUC-JP向けのコードがちゃんと動くようになってからの話になるでしょう。56.0kg(22:35)

08-Jan-2024
[流石Slackware]

FUJIMI-IM/sj3と原典(sj3-2.0.1.20)を同時に動かせるLinux環境、原典側の要件が厳しいのでどうにもならないなあと諦めていたのですが、良いものがありました。Slackware-15.0(i686)です。Slackware-7.1の頃(20-Jul-2000)と比較しながらsj3(serv)を動かせる程度のところまで書いていきますが…

sj3原典、K&Rスタイルかつgcc-2.9xな時代のコードなので今となってはwarningだらけですが、それでも少し手を入れるだけでコンパイルが通ってしまうのが凄いです。あと、細々とした設定も時代の流れとともにデフォルトで含まれるようになったのか、LANGの設定だけで済んでしまうところもありがたいです。

Slackware-15.0のLinuxカーネルの設定(/usr/src/linux-5.15.19/.config)も見ていますが、CONFIG_UNIX98_PTYS=yに加えてCONFIG_LEGACY_PTYS=yおよびCONFIG_LEGACY_PTY_COUNT=32の設定を行ったカーネルを用意できれば、Slackware以外のdistroでもsj3を試せそうです。今ならopenpty()を使った実装に書き換える方が現実的な気がしますけど。

Slackware-15.0、lilo.confにcompactオプションを記述しているにもかかわらずVMware Playerでの起動が非常に重すぎて不可能なため、VMware Playerを捨ててVirtualBoxへ移ることにしました。ブートローダをLILOではなくGRUB2に変更すれば回避できるとはいえその後も色々と面倒ですし、VMware Player 17.5のvlanceバグによりVMware Playerがクラッシュする問題…超漢字だけでなくNetBSD-5.2.3でもクラッシュするのを見てしまうとこれ以上VMwareを使い続けるのは無理かなーって。

ただし、超漢字VのVMware Player向けディスクイメージをそのままVirtualBoxに移すとUSBが全く使えなくなるので、これを何とかする必要があります。ホストOSとのシームレスなポインタ操作やクリップボード共有については諦める方向で。55.7kg(22:10)

07-Jan-2024
[Vine 5.2仮想機の]

/usr/sbin/sshdがOpenSSH 5.2と非常に古く、イマドキのSSHとの鍵交換がうまくいかずtelnetログインすらできないのが面倒なので、Dropbearに替えてしまいます。

アーカイブはbzip2形式ですが、tar xpf dropbear-2022.83.tar.bz2で展開できます。default_options.hを以下のように修正し、

X11 forwardingとsftpを利用可能にしておきます。configure時にzlibがdeflateに対応しないと言われてしまうので、./configure --disable-zlibで回避します。あとはmake; make installで/usr/local/sbin, /usr/local/bin, /usr/local/share/manにファイルをインストールします。

/etc/sshにはssh_host_key(RSA1), ssh_host_rsa_key(RSA), ssh_host_dsa_key(DSA)がありますが、これは無視して/etc/dropbearに鍵を作ります。Ed25519鍵があれば十分なのでmkdir /etc/dropbear; cd /etc/dropbear; /usr/local/bin/dropbearkey -t ed25519 -f dropbear_ed25519_host_key | grep ssh-ed25519 > dropbear_ed25519_host_key.pubとして作成します(公開鍵は不要ですが念のため控えておきます)。もちろん、必要に応じECDSA鍵などを用意しても良いでしょう。

動いているsshdをkillで殺した後、/usr/local/sbin/dropbear -wでdropbearを起動し、外部からSSHログインが可能なことを確認しておきます。

sshdの起動は/etc/rc.d/init.d/sshdで行われているので(/etc/rc.d/rc?.d/{K25,S55}sshはこのファイルへのシンボリックリンクです)、chmod -x /etc/rc.d/init.d/sshdとでもして起動しないようにしておきます。本来ならきちんとした起動用スクリプトを書かないといけないのですが、今回はecho "/usr/local/sbin/dropbear -w" >> /etc/rc.localとしてお茶を濁します。流石にこの時代ともなるとデフォルトでtelnetdが上がっていることが無い以前に、/etc/inetd.confすらありません。

本題とは離れますが、/etc/sysconfig/i18nのLANG="ja_JP.UTF-8"を"ja_JP.eucJP"に変更し、システムのロケールをEUC-JPにしておきます。

実はFUJIMI-IM/sj3と原典(sj3-2.0.1.20)を同時に動かせるLinux環境を構築したいと思ってあれこれ試しているのですが、

を全て満たす環境というのは厳しそうです(特にpts(4)については、改造しない限り動きません)。今でもpackagesがあるくらいなのでNetBSDをLinuxの代わりに使えるのではないかとも思ったのですが、OS本体はともかく古いpackagesが残っていないという問題があるので(git等をtar ballからビルドすれば良いのでしょうが、そのtar ballをダウンロードする手間も考えないといけません…古いOSではhttpsが通らないこともあります)これもこれで難しそうです。55.1kg(19:05)

06-Jan-2024
[以前購入した(2)]

MMDVMHostのステータス表示用に使う、Surenoo製のUART接続な240×320のTFT液晶パネル(JC028_V03)…最近AliExpressを覗いてみるとこのLCDパネルと同じようなコマンドを持つ、JYC024-QVGA-YW-V2.2なるパネルを見つけたので試しに買ってみました。

timg_20240104_120749_092.jpg timg_20240104_120816_739.jpg

同じようなコマンドを持つだけあって、パネルを挿げ替えても問題なく動いていました。折角なので、MMDVMHostのTFTSurenoo.cに手を入れて10-Dec-2019の時よりも大きな文字で表示できるようにしています。まだ試してはいないのですが、多分24-Dec-2023の実験も動くんじゃないかなあ。55.3kg(06:55)

07-Jan-2024補足:JYC024-QVGA、実は二枚買っているのですがリビジョンが若干違うんですよね。一枚目はJYC024-QVGA-YW-V2.2、二枚目はJYC024-QVGA-AT-V1.2となっていて、基板上の部品も異なっています。

timg_20240106_070014_694.jpg

tp1064580.jpg tp1064582.jpg

Winbond 25Q64は同じとして、AT-V1.2ではARTERY AT32F421F8P7(Cortex-M4@120MHz, FlashROM 64kB, SRAM 16kB, 20pin SSOP)が使われています。YW-V2.2、刻印のQ32B E9F974.1の素性は分からないのですが、おそらくこのチップのQFN32版か何かと思われます。

04-Jan-2024
[Vine 4.2仮想機の]

/usr/sbin/sshdがOpenSSH 4.5と非常に古く、イマドキのSSHとの鍵交換がうまくいかずtelnetログインすらできないのが面倒なので、Dropbearに替えてしまいます。

アーカイブはbzip2形式ですが、tar xpf dropbear-2022.83.tar.bz2で展開できます。make時に-Wextra, -Wdeclaration-after-statementなんてオプションは知らぬわとgcc-3.3.6の機嫌が悪くなるので、libtommath/makefile_include.mkからこの二つのオプションを削除しておきます。default_options.hを以下のように修正し、

X11 forwardingとsftpを利用可能にしておくことに加え、svr_main.c内で使われているO_CLOEXECなんて知らんぞというエラーを回避します。configure時にzlibがdeflateに対応しないと言われてしまうので、./configure --disable-zlibで回避します。あとはmake; make installで/usr/local/sbin, /usr/local/bin, /usr/local/share/manにファイルをインストールします。

/etc/sshにはssh_host_key(RSA1), ssh_host_rsa_key(RSA), ssh_host_dsa_key(DSA)がありますが、これは無視して/etc/dropbearに鍵を作ります。Ed25519鍵があれば十分なのでmkdir /etc/dropbear; cd /etc/dropbear; /usr/local/bin/dropbearkey -t ed25519 -f dropbear_ed25519_host_key | grep ssh-ed25519 > dropbear_ed25519_host_key.pubとして作成します(公開鍵は不要ですが念のため控えておきます)。もちろん、必要に応じECDSA鍵などを用意しても良いでしょう。

動いているsshdをkillで殺した後、/usr/local/sbin/dropbear -wでdropbearを起動し、外部からSSHログインが可能なことを確認しておきます。

sshdの起動は/etc/rc.d/init.d/sshdで行われているので(/etc/rc.d/rc?.d/{K25,S55}sshはこのファイルへのシンボリックリンクです)、chmod -x /etc/rc.d/init.d/sshdとでもして起動しないようにしておきます。本来ならきちんとした起動用スクリプトを書かないといけないのですが、今回はecho "/usr/local/sbin/dropbear -w" >> /etc/rc.localとしてお茶を濁します。流石にこの時代ともなるとデフォルトでtelnetdが上がっていることが無い以前に、/etc/inetd.confすらありません。

という訳で、VMware PlayerにVine Linux 4.2をインストールし(OSのインストールはVine Linux 2.5の時よりも手間はかからなかったのですが)、Dropbearのインストールをメモを参考に行ってみると…Vine 2.5の時よりも苦戦してしまったのでVine 4.2向けのメモを作ってしまいました。Vine 2.5向けのメモを改変しただけなので大体同じことを書いているんですけどね。55.0kg(18:45)

01-Jan-2024
[本年もよろしくお願いします]

一年の総括を書く暇もなく、終わってしまいました2023年。

という訳で今年も一年やってかないとねーということになる訳ですが、あんましやる気になれないんですよねえ。去年が去年だったので。とはいえ、黙っているままではやられていく一方なのできちんと出る所には出ていかないといけません。流石にやられっぱなしというのも面白くないですから。

まずはまとまった冬休みを頂けたので、その間に例の作業を…進めたくても他の件が忙しくて全然進んでいません。4月になると薬価も変わるのでそれに伴い作り直しも必要になってくるので、それについても考える必要があります(経過措置移行品目が増えているようなので、敢えて待つのも一案か?)。

Kanconvitのサイトは未だに落ちているようなので、kanji_chinese_converter/ja_zh_cn.rbを参考にテーブルを作るしかなさそうです。原典ではなく派生物から作るということの是非もありますが、原典のライセンスが明確でないようだというのも気になりますし。

とりあえず、やることだけは色々あるので踏ん張り所ってやつなんですかねえ。54.8kg(19:00)