90年代にはシスコやアライドテレシスなんかの製品を個人で使う機会もあったもんだけど、最近はもうすっかり業務用の製品ばかりになってしまった。
それが、中古だけどネットで見かけてひとつ買ってみたのだった。
シンクライアント端末ですね。VXC-2212というらしい。
一時期流行った、セキュリティとかを目的として、データもアプリケーションもみんなサーバー側に置いて、端末側を空にしたまま運用するっていうやつ。
今でもあるんだけれど、そんなシステムを導入して運用できるような会社で働いたことないなあ。
スペックなど
こういう変なものの情報を集めるサイトはあるもので、スペックその他の情報があった。
VXC-2212自体は2010年ごろのものだったらしいけど、それでCPUはVIA Eden。CPUコアは32bitのC7だから、なんか時代が合わんような……?
確認するとEdenは2005年ごろスタートで、まあ組み込みや小型サーバー用途にけっこう息長く使われてはいたけれど、それにしても2010年はかなり末期と思う。
グラフィックがChrome9になってるということは、Edenとしては後の方の型のやつだと思う。Chrome9は名前通りにDirectX 9に対応する、つまりWindows 7が動く。
起動してから確認すると、CPUコアも後期型のC7-Dだった。
メモリーは512MB。
DDR2のSo-DIMMで乗ってるから増設はできそうなんだけど、かなりめんどくさい位置みたいなのでとりあえずパス。
それ以上にタイトなのがストレージで、まさかの128MBしかない。おっとお……。GBでも狭いなあと思うところをMB。
しかも、IDEのDisk on Moduleで搭載されている。組み込み用に、2.5型用の小さい方のIDEピンヘッダに直接ぶっ指せるようになってるSSDみたいなものがあったの。
AliExpressとか探せばDoM自体は発見できるんだけど、物理的に収まるかどうかわからなくて買い難い。
キーボードなんかはUSBで接続できる。4ポートある。
ディスプレイはDVIとD-sub15ピンが出てる。フルHDくらいは出せるらしい。
起動してみた
早速キーボード・マウスとモニター繋いで起動してみた。
普通にシスコのOS起動してきたけれど、もちろんシンクライアントなんて初期化してなくても情報なんか残ってないだろう。
で、USBメモリー入れてもそっちからじゃなく内蔵ドライブから起動しちゃうので、BIOS起動して設定変更したい……と思ったらパスワードかかってやがんの。
これはシスコがデフォルトパスワードを「Fireport」にしてるだけで、それで通った。助かった。これ解除できなかったら終わってたぞ。
ブートオーダーも変更できて、無事USBメモリーに入ってるOSを起動できた。
それから、ディスプレイやキーボードが接続されてなくても気にせず起動する、という設定もあるので、それもやっておく。
Tiny Core Linuxを入れてみる
VIA C7はPAEには対応するので、32bit Linuxなら使えるはず。
だけど、128MBというストレージの制限がきっつい。いやまあUSBストレージで運用すればいいんだけど。
どうせなら、ちゃんと内蔵ストレージにインストールできる、最小級のLinuxたるTiny Core Linuxを使ってみようと思う。
で、この作業を、いきなり腰痛が発動してゆっくりしか歩けなくなった日に、仕事休んで休息しつつにセットアップしてたのだった。
Ubuntuほど簡単に使い始められるものじゃなかったけれど、幸いネット情報に恵まれ、インストールしてOpenSSHを動かしてリモートでログオンできるようにまでできた。
セットアップ手順
自分の備忘録を兼ねてやったことメモ。
参考にしたリソースは以下のふたつで、およそ書いてるままやっただけ。多分Tiny Core Linuxのバージョン違いでちょっとズレたかなというとこは直した。
まずは、Downloads Tiny Core Linux のページから、「CorePlus」をダウンロードする。他のやつだと手順が増えちゃう。
で、定番の起動USBメモリー作成ツール rufus でUSBメモリーに書き込む。
VXC-2212にこのUSBメモリーを挿してブート。(BIOSの設定は先に書いたようにやっておく)
起動オプションを選択できるけど、ハードウェアが小さいのも踏まえて、真ん中ちょい下にある「Boot Core with X/GUI (TinyCore) + Installation Extension.」を選ぶ。
tc-install
ここから公式サイトのインストール手順を見て実施。
デスクトップにtc-installというのがいるので、これを実行。
最初の Path to core.gz のところは、LANケーブルを挿していたら Download From Internet が選べる。
多分IDE DoMは内蔵HDD扱いだと思うので、Frugal にチェック。
全く新たにインストールするので、 Whole Disk にチェック。
そうすると、Select disk for core に選択肢が出てくる。
ここは環境によって変わるはずだけど、VXC-2212では sda が内蔵ドライブだった。
下のInstall boot loaderもチェックしておく。
次のページ、 Formatting Options は、まあよほど事情でもなければext4になる。
次のページ、 Boot Options は、画面に出ている解説を見ながら必要なものがあれば追加するといいと思うけど、とりあえずそのまますすめてよし。
公式のインストール手順の 5. CorePlus installation optionsは、出ないので次。
次のページ、Extensions Installation は、今回最小インストールしたいので、下の Don't install Extensions (Core Only, Text Based Install)を選ぶ。
なおTiny Core Linux用語では、いわゆるアプリケーションがExtensionと呼ばれる。
最後のページで、Proceed ボタンをクリックするとインストールが始まる。
終わったらUSBメモリーから起動してるTCLをシャットダウンして、USBメモリーを抜く。
インストール後の設定
でもってここからは、TinyCore linuxを試してみる(1)~インストール・SSH接続 – PCオーディオ実験室を見ながら。大体ここに書いてることをそのままやる感じ。
改めて内蔵DoMから起動したTCLは、いきなり tc というユーザー名でログインした状態になる。
tc はパスワードなしになってるので、 sudo passwd tc で何かパスワード設定。8文字ランダム文字列でもtoo weakっていわれるけど気にしない。
どうもrootのパスワードもないように見えたので、設定してみたつもりなんだけど、なんかsudoしてもパスワード聞かれない。あれ? tcと同じパスワードだとそうなっちゃうのかな。
opensshのインストール
まあおいといて、tce コマンドでopensshをインストールする。
tceは、Ubuntuでいうところのaptみたいなやつにあたるだろうか。
プロンプトでsudoせずに tce で起動。sudoすると起動しない。
S)earch, P)rovides, K)eywords or Q)uit: とプロンプトが出てるので、Sでサーチモードに。
そこでopensshと検索。
すると、opensshの解説が出ている。よく見ると自動起動するために /opt/bootlocal.shを編集しとけとか書いてるから、できれば控えておく。
解説画面は q で抜けられる。
次のプロンプトで I)nstall を選べばインストールされる。
sshのコンフィグファイルは、とりあえずオリジナルのものをそのまま使う。ファイル名を変えてコピーする。
sudo cp /usr/local/etc/ssh/sshd_config.orig /usr/local/etc/ssh/sshd_config
ファイル名に _ が含まれるけど、キーバインドが英語になってる。日本語キーボードだと SHIFT + - で入力できる。
それから起動コマンドで立ち上がる。
sudo /usr/local/etc/init.d/openssh start
これでアクセスできるようになるけど、IPアドレスがわかんないんじゃ仕方ない。
ifconfig コマンドでIPアドレスを確認しておく。
MACアドレスも見られるので、私はルーターの方にDHCP固定払い出しを設定しておいた。
初回は公開鍵・秘密鍵の生成とかで少し時間がかかるみたい。
他のWindowsなりLinuxの端末から、ssh -l tc 192.168.xxx.xxx とアクセスすれば、パスワード聞かれてログインできるはず。できなきゃ何か間違えてる。
毎回手動でopensshを立ち上げるんじゃ面倒だから、自動起動を設定する。
sudo vi /opt/bootlocal.sh
sudoしておかないと保存できないから注意。
viは……私も全然使えないけれど、aキーを押すと編集できるようになる。ESCキーで編集状態を抜けて、そこから:wで保存、:qで終了。
:は、日本語キーボードだと SHIFT + ; で出る。
/usr/local/etc/initd.d/openssh start
と追記して保存して終了。
設定の書き出し
で、TCLってオンメモリで動作していて、設定変更などをしたあとはディスクに書き出さないと消える。
まず、その書き出し対象になるフォルダを指定したファイルがあるので、それを編集。
vi /opt/.filetool.lst
ここにずらずら書き出し対象を書いておく。
etc/shadow
etc/passwd
usr/local/etc/ssh
上3行を追記。パスワードと、opensshの設定ファイルがあるフォルダ。
ファイル単位で設定もできるけど、/usr/local/etc/ssh フォルダにはopensshの公開鍵とかも入ってるので、フォルダごと指定しておいた。
そして最後に、
filetool.sh -b
とシェルスクリプトを実行してやると、ファイルがディスクに書き出される。
この手順は今後よく使うことになりそうだ。
再起動は sudo reboot で。
シャットダウンは /opt/shutdown.sh を呼び出すっぽい。(試してないけど)
遊んでみる
VXC-2212の場合は、もうこれでSSHから叩ける端末になったので、キーボードもディスプレイも取っ払って適当なところに置いた。
私はLinuxをコマンドラインでやるのはほぼ初めてだから、あれこれ調べながらやってみる。
メモリ・ディスク使用量を見てみる
SSHでWindows PCからログインしてる状態で free -h コマンドを叩いてみると、total 432.2MBに対してused 11.2MBだった。
まあopensshしか動いてないんだからそりゃ軽くもあろうけど、512MBあれば余裕あるな。46MB(GUI使用時)とか28MB(最小構成のCUIのみ)で動くらしいから、余裕たっぷり。
df -h コマンドでディスク容量を調べると、108.9MB中35.9MB使っていた。
これは ntpclient コマンドもインストールした状態での数字。こっちはやっぱり多少タイトか。
とはいえ、最小動作要件は486DXというとおりで、これなら本当にそんな30年前のPCでもいけそうだなあ。
ntpclientと日時
ntpデーモンを動かして家庭内NTPサーバーにしてみるか、と思ったんだけど、あいにくtceを「ntp」と検索してもntpclientしか出なかった。とりあえずインストールしてみよう。
ntpclient -h ntp.nict.jp -s
とやれば時計が合わされるはず。
日付は date コマンドで、「Wed Nov 29 07:42:42 UTC 2023」と出た。正しい日付。JSTじゃなくGMTで出ちゃってるが、まあ仕方ない。
hwclock コマンドだと、なぜか2001年のよくわからない数字が出た。
USBメモリーを使う
PCとのデータやりとりもしたいので、さしあたり、TCLのインストールに使ったUSBメモリーを再度VXC-2212に挿してみる。
USBに挿して、fdisk -l で、どこに認識されてるか見れる。
今回は /dev/sdb1 にいるようだった。
あとは単に sudo mount -t /dev/sdb1 /mnt/sdb1 でマウントされる。
(-t を付け忘れるとリードオンリーでマウントされてしまった)
dnetcを走らせてみる
Windows PCで、distributed.net: Client Downloads から16番の[x86/ELF/uclibc]をダウンロードして、アーカイブを展開してUSBメモリーに保存。VXC-2212に挿してマウント。
cp -a コピー元 コピー先でホームフォルダ内にコピーして(実行ファイル置くところじゃないかもだけど)、dnetcのバイナリを実行すれば動いた。
ベンチマークは以下。
dnetc v2.9112-521-CFR-16020313 for Linux (Linux 6.1.2-tinycore).
Please provide the *entire* version descriptor when submitting bug reports.
The distributed.net bug report pages are at http://bugs.distributed.net/[Nov 29 08:30:54 UTC] Automatic processor type detection found
a VIA C7-D/M (Model D) processor.
[Nov 29 08:30:54 UTC] OGR-NG: using core #0 (FLEGE 2.0).
[Nov 29 08:31:13 UTC] OGR-NG: Benchmark for core #0 (FLEGE 2.0)
0.00:00:16.29 [3,069,440 nodes/sec]
[Nov 29 08:31:13 UTC] OGR-NG: using core #1 (rt-asm-generic).
[Nov 29 08:31:33 UTC] OGR-NG: Benchmark for core #1 (rt-asm-generic)
0.00:00:16.28 [3,538,944 nodes/sec]
[Nov 29 08:31:33 UTC] OGR-NG: using core #2 (rt-asm-mmx).
[Nov 29 08:31:51 UTC] OGR-NG: Benchmark for core #2 (rt-asm-mmx)
0.00:00:16.39 [5,675,885 nodes/sec]
[Nov 29 08:31:51 UTC] OGR-NG: using core #3 (cj-asm-sse2).
[Nov 29 08:32:11 UTC] OGR-NG: Benchmark for core #3 (cj-asm-sse2)
0.00:00:16.32 [5,196,723 nodes/sec]
[Nov 29 08:32:11 UTC] OGR-NG: using core #4 (cj-asm-sse-p4).
[Nov 29 08:32:29 UTC] OGR-NG: Benchmark for core #4 (cj-asm-sse-p4)
0.00:00:16.31 [5,022,087 nodes/sec]
[Nov 29 08:32:29 UTC] OGR-NG: using core #5 (cj-asm-sse-k8).
[Nov 29 08:32:48 UTC] OGR-NG: Benchmark for core #5 (cj-asm-sse-k8)
0.00:00:16.34 [5,289,510 nodes/sec]
[Nov 29 08:32:48 UTC] OGR-NG benchmark summary :
Default core : #2 (rt-asm-mmx) 5,675,885 nodes/sec
Fastest core : #2 (rt-asm-mmx) 5,675,885 nodes/sec
[Nov 29 08:32:48 UTC] RC5-72: using core #0 (SES 1-pipe).
[Nov 29 08:33:06 UTC] RC5-72: Benchmark for core #0 (SES 1-pipe)
0.00:00:16.08 [786,038 keys/sec]
[Nov 29 08:33:06 UTC] RC5-72: using core #1 (SES 2-pipe).
[Nov 29 08:33:24 UTC] RC5-72: Benchmark for core #1 (SES 2-pipe)
0.00:00:16.19 [882,028 keys/sec]
[Nov 29 08:33:24 UTC] RC5-72: using core #2 (DG 2-pipe).
[Nov 29 08:33:43 UTC] RC5-72: Benchmark for core #2 (DG 2-pipe)
0.00:00:16.93 [1,196,381 keys/sec]
[Nov 29 08:33:43 UTC] RC5-72: using core #3 (DG 3-pipe).
[Nov 29 08:34:02 UTC] RC5-72: Benchmark for core #3 (DG 3-pipe)
0.00:00:16.18 [1,020,263 keys/sec]
[Nov 29 08:34:02 UTC] RC5-72: using core #4 (DG 3-pipe alt).
[Nov 29 08:34:20 UTC] RC5-72: Benchmark for core #4 (DG 3-pipe alt)
0.00:00:16.10 [1,237,375 keys/sec]
[Nov 29 08:34:20 UTC] RC5-72: using core #5 (SS 2-pipe).
[Nov 29 08:34:38 UTC] RC5-72: Benchmark for core #5 (SS 2-pipe)
0.00:00:16.08 [1,267,890 keys/sec]
[Nov 29 08:34:38 UTC] RC5-72: using core #6 (GO 2-pipe).
[Nov 29 08:34:56 UTC] RC5-72: Benchmark for core #6 (GO 2-pipe)
0.00:00:16.12 [1,146,977 keys/sec]
[Nov 29 08:34:56 UTC] RC5-72: using core #7 (SGP 3-pipe).
[Nov 29 08:35:14 UTC] RC5-72: Benchmark for core #7 (SGP 3-pipe)
0.00:00:16.08 [1,242,937 keys/sec]
[Nov 29 08:35:14 UTC] RC5-72: using core #8 (MA 4-pipe).
[Nov 29 08:35:33 UTC] RC5-72: Benchmark for core #8 (MA 4-pipe)
0.00:00:16.13 [774,840 keys/sec]
[Nov 29 08:35:33 UTC] RC5-72: using core #9 (MMX 4-pipe).
[Nov 29 08:35:51 UTC] RC5-72: Benchmark for core #9 (MMX 4-pipe)
0.00:00:16.11 [1,032,705 keys/sec]
[Nov 29 08:35:51 UTC] RC5-72: using core #10 (GO 2-pipe alt).
[Nov 29 08:36:09 UTC] RC5-72: Benchmark for core #10 (GO 2-pipe alt)
0.00:00:16.06 [925,728 keys/sec]
[Nov 29 08:36:09 UTC] RC5-72: using core #11 (GO 2-pipe b).
[Nov 29 08:36:27 UTC] RC5-72: Benchmark for core #11 (GO 2-pipe b)
0.00:00:16.08 [1,137,079 keys/sec]
[Nov 29 08:36:27 UTC] RC5-72 benchmark summary :
Default core : #5 (SS 2-pipe) 1,267,890 keys/sec
Fastest core : #5 (SS 2-pipe) 1,267,890 keys/sec
[Nov 29 08:36:27 UTC] Compare and share your rates in the speeds database at
http://www.distributed.net/speed/
(benchmark rates are for a single processor core)
まあ見たってどの程度かわからんと思うけど、この数字で言えばCeleron 566MHzと大体同じくらいか。かなり遅い。実際使う上での速さはまた別になるけどね。