現在使っている教育用コンピュータが更新されることになって,これまでのmacOSが廃され,Windowsだけしか使えなくなるということでした。Windows上でプログラミングをして走らせる,ということはもちろん可能ですが,Windowsならではのよくわからない挙動に振り回されるため,あまり教育的ではないと考えています。
新しいシステムにはVirtualBoxはインストールされる,ということなので,そこにLinuxをインストールして使おう,ということを考えています。しかし,一人が使えるディスク容量が25GBということなのであまり大きなシステムをインストールすることができません。軽量Linuxをインストールせねばなりませんが,あまりにも多くの選択肢があってよくわかりません。そのためいろいろテストをしてみる必要があります。とりあえず手元のmacOSの環境にVirtualBoxをインストールして試してみました。
VirturalBoxはOracleのサイトからもらってきます。MacOS X用とOravle VM VirtualBox Extension Packをダウンロードします。まず,VirtualBoxの本体のdmgファイルをマウントして指示に従ってインストールします。インストールできたら後者をダブルクリックして起動してインストールします。
個人的にはUbuntu系は得意ではないのでDebian系ということで,bunsenlabsというのを試してみることにしました。
VirtualBoxを立ち上げたら,「新規」を押して新しい仮想PCを作ります。メモリは2GB,ディスクは20GB,グラフィック用のビデオメモリには128MBくらいを割り当てておきます。グラフィックスコントローラーはVMSVGA,3Dアクセラレーションにチェックをいれておきます。仮想PCができたら,Linuxのisoイメージを「ストレージ」のなかの「[光学ドライブ]空」と書かれているところをクリックしてイメージファイルを指定します。この状態で「起動」させると,光学ドライブのディスクイメージから勝手に起動します。インストールの手順はここに書かれている通りです。ただ,現時点ではバージョンがあがってBeryllium-1になっていました。特にインストールで悩むところはありませんが,VirtualBoxでゲストOSのタイプをLinuxとしてその具体的なディストリビューションの名前はDebian 11としておきました。
インストールが終わって再起動すれば勝手に仮想PCのHDDから起動します。日本語化もそれほどたいへんではなく,
$ sudo apt-get update
$ sudo apt install task-japanese task-japanese-desktop
$ sudo apt install fcitx-mozc
とやれば日本語環境もインストールされます。再起動すれば環境が有効になります。
インストール時に設定したユーザーでログインすれば普通に使えます。しかし,グラフィックスドライバがないので,SVGA (たぶん800x600)でしか表示できません。そこで,Guest Additionをインストールします。これがどこにあるのかわからなくて悩みましたが,起動中の仮想PCのVirtualBoxのメニューのなかに
Devices -> Insert Guest Additions CD image...
というメニューがあるのでこれを選択します。そのあたりの手順はこことかここにあるものを見るとわかります。
Guest Additions CD imageをインサートすると勝手にautorunが走る場合があるようですが,私の環境ではなにもおこりませんでした。勝手にCD-ROMとして/media/cdrom0/にマウントされるので,ターミナルから
cd /media/cdrom0/
ls
とやるとVBoxLinuxAdditions.runというスクリプトがあることがわかります。このスクリプトを走らせる前に
sudo apt install gcc make linux-headers-amd64
とやってコンパイルできる環境をインストールしておきます。これができたら,
cd /media/cdrom0/
sudo sh ./VBoxLinuxAdditions.run
として,カーネが再構築されてインストールされます。インストールが終わったら再起動すれば,新しいカーネルで起動し,諸々のドライバが使える状態になっています。仮想PCのウィンドウ枠をドラッグすればそれにあわせて,仮想PCの画面サイズも大きくなったり小さくなったりしますので,macOSのひとつのアプリケーションのようにに使えます。
計算機の教育用環境として考えると,コンパイラなどの環境が必要です。最低限必要なのは,FortranとVisual Studio Codeとgnuplotです。
sudo apt install gfortran
sudo apt install gnuplot
としてFortranとgnuplotをインストールします。VScodeはマイクロソフトのサイトにいってLinuxのDebian用(.deb)をもらってきます。Linux用には32ビット版は用意されていないようですが64ヒット版で大丈夫です。
ダウンロードしたらダウンロードされたディレクトリへ移動して
sudo apt install ./code_1.80.1-11689183569_amd64.deb
としてインストールするか,File Manegerで該当ファイルをクリックするとインストーラが立ち上がるのでインストールするというボタンを押せばOKです。ターミナルから
code
と叩けば起動します。あるいは,メニューからApplications --> 開発とたどるとVisual Studio Codeが追加されているのでこれをクリックすれば立ち上がります。
VScodeが起動したら,VScodeの左に並んでいるアイコンの「田」の字を押して検索窓にfortranと入れるとModern Fortran拡張がリストに表示されるのでinstallというボタンを押してインストールします。これで最低限の環境は整ったことになります。これで演習ができるのか,ってのはもう少しテストをしてみないとわかりません。
あと個人的にはエディタがないと生きていけないので
sudo apt install emacs
sudo apt install neovim
も入れました。
いずれにしてもWindows環境を手元に置いてテストできるようにしないと何かトラブルがあったときに再現ができなくてハマりそうです。なんか先は長いです。
SLIP (serial line internet protocol)による地震計への接続(3)
USBスティックからSLIPアプライアンスを起動することができるようになって,当初の目標である,Titan加速度計のオフセット調整をすることができるようになりました。これで満足すればよいのですが,欲深な私は,PCに挿しているUSBスティックが邪魔なのでできれば内蔵のHDDから起動できないものか,と考えました。
どうやらSLIPアプライアンスはSLAXというLinuxディストリビューションがベースのようなので,SLAXのwebページでインストール方法を調べてみたところ,USBであろうが内蔵HDDであろうが同じ様にディストリビューションをコピーすればそれでOKであるようでした。
そこで,まず,ThinkPad X240のHDDにインストールしてみることにしました。さすがに動いているOSを消してインストールするのは恐ろしいので,手元に転がっている250GBの2.5inch SATA HDDをSATAをUSBに変換するサンワサプライのUSB-CVIDE5を使ってUSB接続してインストールしてみました。Windowsでもよいはずですが,250GBのディスクをFAT32でフォーマットするのはあまりうれしくないのでLinuxマシンでext4でフォーマットして使うことにしました。
手元に適当なLinuxマシンがなかったのでSLIPアプライアンスのUSBスティックをX240に挿してUSBから起動し,別のUSBメディアを使って,slipapppliance-x86_64_1.0.zipをSLIPアプライアンスの/root/の下にコピーします。SLAXというディストリビューションはどうも,OSに必要なファイルはUSBスティックのなかにイメージファイルとして保存していて起動時にメモリーディスク上にそれを展開した上で/にマウントする,という方式をとっている様です。USBスティックの下のファイルの実体は/run/initramfs以下にマウントされています。スーパーユーザーのホームディレクトリは/rootですがここに書きこんだファイルは/run/initfamfs/memory/chages/root/以下にファイルの実体が保存されて,システムを落としたあとでも失われない様になっています。
SLIPアプライアンスのzipファイルを/root/にコピーしたら2.5inch HDDを上記ケーブルを使ってUSB接続します。このときは/dev/sdcとして認識されたので(普通はそうなるはずです。内蔵のHDDがsda,SLIPアプライアンスを入れたUSBスティックがsdbとなるからです),HDDにパーティションを切ってext4でフォーマットします。パーティションはDOSでプライマリーパーティションとします。GPTパーティションからはブートできないようです。
fdisk /dev/sdc
とすればfdiskのプロンプトがでてきます。mを叩けばコマンド一覧が表示されます。pを叩くとパーティションの一覧が表示されます。oを叩いてdosパーティションとして,dを叩いてパーティションを全て消去し,nを叩いて新たにパーティションを作成します。1つのパーティションで全ディスクを使えばよいのでデフォルトのままリターンだけ叩けばOKです。pでパーティションを確認したあと,wでパーティションテーブルを書き込みます。勝手にfdiskから抜けますので,次はフォーマットをします。
mkfs -t ext4 /dev/sdc1
とするとext4でフォーマットされます。このディスクをマウントしてzipファイルを展開します。
mount /dev/sdc1 /mnt
cd /mnt
unzip /root/slipappliance-x86_64_1.0.zip
slipapplianceというディレクトリができています。
cd slipappliance/boot/
sh bootinst.sh
とするとブートローダーをインストールしてブートできるようになるはずです。Boot installation finished.と表示されればOKです。
インストールは完了したので,USBスティックのSLIPアプライアンスをシャットダウンします。電源を落としたらUSBスティックを抜いてX240を起動します。F12を叩いてブートメディアを選ぶメニューを立ち上げます。ここで先ほどのUSB接続している2.5inch HDDを選択すると,インストールしたブートローダーがちゃんと起動するのですが,途中でslipapplianceのデータを探すというというところでデータがみつからない,といってブートに失敗し,シェルに落ちます。
シェルが立ち上がるということはLinuxカーネルはちゃんと立ち上がっているのですが,なぜか,HDDのデバイスが見つかりません。
どうやら,お手軽にできるように,ということからか,いろいろなことが決め打ちになっているようです。SLIPアプライアンスをインストールしたHDDはUSB接続していますが,HDDは/dev/sda1でなくてはならない,というようなことになっているようです。おそらくUSBスティックは/dev/sdb1だと決め打ちされているのでしょう(これは確認していない)。というわけで,HDDをUSB接続した状態ではブートできないため,X240をバラして,HDDを交換します。USB接続していたHDDをもともとの内蔵HDDと交換し,USBには何も接続しないでX241を起動すると,ちゃんと最後までブートしました。
これでUSBスティックを挿さなくてもX240単体でSLIPアプライアンスが使えます。完璧です。
予備にもう一台作っておくことにします。DellのLatitude E7240という薄型のステキなPCがあるのですが,長らく放置していたら電源をつないでも起動しなくなっていました。おそらくCMOSバッテリーが死んだために起動できないのだろう,と考えてバッテリーをはずして,バッテリーしたにある黒いシートを左端からバリバリはがすとCMOSバッテリーがでてきます。コネクタはパームレストの下にあるためこれをはずして交換するためには本体をバラバラにしないとできません。しかし,コネクタとケーブルはそのまま使うことにすれば,バッテリだけ交換すればOKなので分解する必要がありません。
CMOSバッテリを保護しているビニールをベリベリとやぶくとコネクタが正負の面に固定してあるのでマイナスドライバでコネクタを電池から引っぺがしてしまいます。新しいCR2023を用意して,このコネクタを正負を間違わないように手で押さえながら,上から自己融着テープ(ブチルテープ)でぎゅうぎゅうまきつけて固定してしまいます。ブチルテープならたぶんショートする心配はないので,金属部分が見えなくなる様にきっちり巻いておきます。
これで,E7240は起動できる様になりました。しかし,リチウムイオン電池は死んでいる様で,BIOSからも認識できません。まぁ,これはあとでジャンクをいくつか買えばよいだろう,ということで,とりあえず,SLIPアプライアンスをインストールしてしまいます。E7240はHHDではなくmSATAのSSDという微妙な仕様ですので,外付けしたHDDにインストールして交換するという技は使えません。直接,SSDにインストールするしかありません。
改めてUSBスティックからE7240を起動すると,内蔵SSDはsdaとして認識されています。
fdisk /dev/sda
としたあと,パーティションを全部消し,パーティションをDOSとして,新たにプライマリパーティションでディスク全体を使うようにパーティションテーブルを書き換えます。その後,
mkfs -t ext4 /dev/sda1
としてフォーマットし,マウントしたあと,SLIPアプライアンスのzipファイルを展開してインストールスクリプトを走らせればインストール完了です。シャットダウンしてUSBスティックを抜いて起動すれば,内蔵SSDから勝手にSLIPアプライアンスが起動します。これで完璧です。
これまで出番がなかったE7240ですが,あとは電池を調達すれば当分の間は仕事に持っていけそうです。
けっこう,手間暇かかりましたが,なんとか普通に使えるようになってよかったです。
どうやらSLIPアプライアンスはSLAXというLinuxディストリビューションがベースのようなので,SLAXのwebページでインストール方法を調べてみたところ,USBであろうが内蔵HDDであろうが同じ様にディストリビューションをコピーすればそれでOKであるようでした。
そこで,まず,ThinkPad X240のHDDにインストールしてみることにしました。さすがに動いているOSを消してインストールするのは恐ろしいので,手元に転がっている250GBの2.5inch SATA HDDをSATAをUSBに変換するサンワサプライのUSB-CVIDE5を使ってUSB接続してインストールしてみました。Windowsでもよいはずですが,250GBのディスクをFAT32でフォーマットするのはあまりうれしくないのでLinuxマシンでext4でフォーマットして使うことにしました。
手元に適当なLinuxマシンがなかったのでSLIPアプライアンスのUSBスティックをX240に挿してUSBから起動し,別のUSBメディアを使って,slipapppliance-x86_64_1.0.zipをSLIPアプライアンスの/root/の下にコピーします。SLAXというディストリビューションはどうも,OSに必要なファイルはUSBスティックのなかにイメージファイルとして保存していて起動時にメモリーディスク上にそれを展開した上で/にマウントする,という方式をとっている様です。USBスティックの下のファイルの実体は/run/initramfs以下にマウントされています。スーパーユーザーのホームディレクトリは/rootですがここに書きこんだファイルは/run/initfamfs/memory/chages/root/以下にファイルの実体が保存されて,システムを落としたあとでも失われない様になっています。
SLIPアプライアンスのzipファイルを/root/にコピーしたら2.5inch HDDを上記ケーブルを使ってUSB接続します。このときは/dev/sdcとして認識されたので(普通はそうなるはずです。内蔵のHDDがsda,SLIPアプライアンスを入れたUSBスティックがsdbとなるからです),HDDにパーティションを切ってext4でフォーマットします。パーティションはDOSでプライマリーパーティションとします。GPTパーティションからはブートできないようです。
fdisk /dev/sdc
とすればfdiskのプロンプトがでてきます。mを叩けばコマンド一覧が表示されます。pを叩くとパーティションの一覧が表示されます。oを叩いてdosパーティションとして,dを叩いてパーティションを全て消去し,nを叩いて新たにパーティションを作成します。1つのパーティションで全ディスクを使えばよいのでデフォルトのままリターンだけ叩けばOKです。pでパーティションを確認したあと,wでパーティションテーブルを書き込みます。勝手にfdiskから抜けますので,次はフォーマットをします。
mkfs -t ext4 /dev/sdc1
とするとext4でフォーマットされます。このディスクをマウントしてzipファイルを展開します。
mount /dev/sdc1 /mnt
cd /mnt
unzip /root/slipappliance-x86_64_1.0.zip
slipapplianceというディレクトリができています。
cd slipappliance/boot/
sh bootinst.sh
とするとブートローダーをインストールしてブートできるようになるはずです。Boot installation finished.と表示されればOKです。
インストールは完了したので,USBスティックのSLIPアプライアンスをシャットダウンします。電源を落としたらUSBスティックを抜いてX240を起動します。F12を叩いてブートメディアを選ぶメニューを立ち上げます。ここで先ほどのUSB接続している2.5inch HDDを選択すると,インストールしたブートローダーがちゃんと起動するのですが,途中でslipapplianceのデータを探すというというところでデータがみつからない,といってブートに失敗し,シェルに落ちます。
シェルが立ち上がるということはLinuxカーネルはちゃんと立ち上がっているのですが,なぜか,HDDのデバイスが見つかりません。
どうやら,お手軽にできるように,ということからか,いろいろなことが決め打ちになっているようです。SLIPアプライアンスをインストールしたHDDはUSB接続していますが,HDDは/dev/sda1でなくてはならない,というようなことになっているようです。おそらくUSBスティックは/dev/sdb1だと決め打ちされているのでしょう(これは確認していない)。というわけで,HDDをUSB接続した状態ではブートできないため,X240をバラして,HDDを交換します。USB接続していたHDDをもともとの内蔵HDDと交換し,USBには何も接続しないでX241を起動すると,ちゃんと最後までブートしました。
これでUSBスティックを挿さなくてもX240単体でSLIPアプライアンスが使えます。完璧です。
予備にもう一台作っておくことにします。DellのLatitude E7240という薄型のステキなPCがあるのですが,長らく放置していたら電源をつないでも起動しなくなっていました。おそらくCMOSバッテリーが死んだために起動できないのだろう,と考えてバッテリーをはずして,バッテリーしたにある黒いシートを左端からバリバリはがすとCMOSバッテリーがでてきます。コネクタはパームレストの下にあるためこれをはずして交換するためには本体をバラバラにしないとできません。しかし,コネクタとケーブルはそのまま使うことにすれば,バッテリだけ交換すればOKなので分解する必要がありません。
CMOSバッテリを保護しているビニールをベリベリとやぶくとコネクタが正負の面に固定してあるのでマイナスドライバでコネクタを電池から引っぺがしてしまいます。新しいCR2023を用意して,このコネクタを正負を間違わないように手で押さえながら,上から自己融着テープ(ブチルテープ)でぎゅうぎゅうまきつけて固定してしまいます。ブチルテープならたぶんショートする心配はないので,金属部分が見えなくなる様にきっちり巻いておきます。
これで,E7240は起動できる様になりました。しかし,リチウムイオン電池は死んでいる様で,BIOSからも認識できません。まぁ,これはあとでジャンクをいくつか買えばよいだろう,ということで,とりあえず,SLIPアプライアンスをインストールしてしまいます。E7240はHHDではなくmSATAのSSDという微妙な仕様ですので,外付けしたHDDにインストールして交換するという技は使えません。直接,SSDにインストールするしかありません。
改めてUSBスティックからE7240を起動すると,内蔵SSDはsdaとして認識されています。
fdisk /dev/sda
としたあと,パーティションを全部消し,パーティションをDOSとして,新たにプライマリパーティションでディスク全体を使うようにパーティションテーブルを書き換えます。その後,
mkfs -t ext4 /dev/sda1
としてフォーマットし,マウントしたあと,SLIPアプライアンスのzipファイルを展開してインストールスクリプトを走らせればインストール完了です。シャットダウンしてUSBスティックを抜いて起動すれば,内蔵SSDから勝手にSLIPアプライアンスが起動します。これで完璧です。
これまで出番がなかったE7240ですが,あとは電池を調達すれば当分の間は仕事に持っていけそうです。
けっこう,手間暇かかりましたが,なんとか普通に使えるようになってよかったです。
SLIP (serial line internet protocol)による地震計への接続(2)
前回はWindows XPでSLIP接続によってTitan加速度計とのIP接続に成功したものの,まさかのInternet Exprolarのワナにはまってオフセット調整をする,という目標に到達できなかった,という話でした。
この失敗にショックをうけて,速攻でDell Inspiron mini 10というネットブックのジャンクを1,100円でヤフオクで調達し(送料が1,350円もかかった...),早速XPで設定しようと思ったら,ジャンクだけに,OSの起動中にunknown hardware errorでブルースクリーンがでて死にます。unknownってなんだよ。こっちはもっとわからんだろうが,と叫びそうになるのを堪えて,速攻で捨てました。32bit版のScientific Linuxは普通にDVDから起動したので,ハードウェアよりもOSの問題のような気がします。外見は綺麗だったのでなんとかなるんじゃないか,と思って調達しましたが,外見が綺麗なのは,きっと,前のオーナーのもとでは買ってすぐに壊れて使わなかったからだと理解しました。さすがDell,さすがマイクロソフト。このコンビは最強です。
失敗2連発でちょっと凹んだものの,新しい方法があることを教えてもらいましたので試しました。
NanometricsはSLIPアプライアンスの作り方についての情報を提供しています。当初はRaspberry pi 3BのSDイメージを配布していて,これを入れたラズパイにUSBシリアル変換ケーブルを挿して,一方でイーサネットポートには別のPCを接続して一種のルーターとして機能させる方法をマニュアルに記載しています。しかし,フィールドでラズパイをモバイルバッテリで動かしてさらにノートPCをネットワーク接続して設定するとか考えただけでも嫌になります。雨でも降ったらどうするんだ,って話もあります。ラズパイなんてほとんどハダカ同然ですから水をかぶったら一瞬で死にます。いくらTitan加速度計が完全防水仕様でもラズパイが死んだら設定できません。だめじゃん。
さらにNanometricsはUSBスティックにLinuxをインストールしてUSBから起動するSLIPに対応したカーネルをインストールしたLinuxのイメージを配布しています。素晴らしい。
これです。欲しかったのはこれなのです。最初に教えてくれぇ,と言いそうになるのを堪えて感謝の気持ちで準備します。
これもマニュアルがあれば簡単です。
0. USBスティックをFAT32でフォーマットする。
1. SLIPアプライアンスのUSBイメージをもらってくる。
2. 適当なwindowsマシンでzipを展開する。
3. 展開したらslipapplianceというディレクトリをUSBのルートにコピーする。
4. USBスティックのなかのslipappliance\boot\のなかのbootinst.batをダブルクリックして実行する。
5. 64bit CPUを積んだ適当なPCのUSBコネクタにUSBスティックを挿してUSBスティックから起動する。
64bitのPCならそこらへんに転がってます。さっき,調達したDell Inspiron mini 10は残念ながら32bit CPUなので,使えません。ジャンクだからしょうがないけど動くくせに使えないヤツです。うーむ。
気を取り直して,あまりにもとろくて使い物にならないThinkPad X240をターゲットにします。X230が非常に使いやすいのにその後継機のX240の出来の悪さは驚きを通り越して腹たつレベルです。どっちも2万円でショップインバースで調達したものですが,X230はいつも観測には持っていくのにX240はまったく出番がありません。ここでSLIPアプライアンスとしてリベンジしてもらいましょう。
ThinkPadのブート中にBIOSに入る方法がわかりにくいのですが,X230は起動したらすぐにEnterキーを連打するとなんだかメニューがでるのでF1を叩くとBIOSに入れます。メニューがでて安心してぼーっとしているとさっさと起動シーケンスに入ってしまいますので,メニューの文字を読んでいる暇はありません。すぐにF1を叩かねば間に合いません。そもそも,起動j時のEnterを叩くタイミングも難しく,最初の電源投入時はたいてい失敗するので,OSの起動シーケンスに入りそうになったらCtrl+Alt+Delで再起動かけて,すぐにEnterを叩きます。なんてせわしいのでしょう。
X240は起動時にF1連打です。これでBIOSに入れるのですが,それよりも起動時にF12を連打してブートデバイスのメニューを表示させる方がわかりやすいです。電源投入前にUSBスティックを挿しておき,電源を投入したらF12連打。
運がよければ,起動デバイスのメニューが表示されるのでUSBスティックを選択して起動させます。ブートデバイスさえちゃんと選択できればLinuxのブートは問題ありませんでした。Linux万歳。どのようなディストリビューションがベースになっているのかよくわかりませんが,かなり軽量な印象であっという間に起動します。Windows10ではとても耐えられないもっさりのX240でもキビキビ動きます。
X240はX61と違ってシリアルポートはありません。といってもX61だってシリアルポートはないのですが,ドッキングステーションをつけて無理やりシリアルポート付きとして使っているのです。それはともかく,X240はドッキングステーションがあったとしてもシリアルポートはついてませんから,USB-シリアル変換ケーブルを使います。
手元に転がっているのは昔,秋月電子で売っていたProlific PL2303 chipsetベースの古い変換ケーブルです。新しいOS用のドライバがあるのかないのかわからんような感じですが,有名なチップセットですからLinuxで使えないはずはないだろうと思って何も考えずに挿します。
dmesgするとちゃんと認識して/dev/ttyUSB0が割り当てられていました。さすがLinuxです。古いものにもちゃんと対応しているのが立派です。
こうなればあとは簡単です。
SLIPアプライアンスが起動するとちゃんとXも立ち上がって,デスクトップにはNanometricsとデカデカと書かれています。まぁ,いいんだけど。それに比べるとやたらと小さなスタートボタンが左下にあるのでこれをクリックしてコンソールを起動します。もう有無を言わさずrootで動いてますから何も恐ろしいものはありません。だいたいネットワークにつなぐ様な使い方は想定されてませんから,起動したら最初からパスワードなしでrootでログインされていたって平気です。
コンソールで以下のコマンドを叩きます。もうおまじないです。
stty -F /dev/ttyUSB0 raw -crtscts
slattach -mL -p slip -s 9600 /dev/ttyUSB0 &
ifconfig sl0 2.1.0.0 pointopoint 2.24.xxx.yyy mtu 1500 up
sttyコマンドは何をしているのか知りません。もう面倒なので調べてもいません。slattachはシリアルポートをSLIPに接続して,/dev/sl0というデバイスを作ります。このsl0というデバイスをifconfigで設定する,というものです。pointopointの綴りが微妙にハマりそうだったりしますし,slattachは&をつけて明示的にバックグラウンドで走らせなければいけないようです。いや,もう一つコンソールを立ち上げればよいだけですが,それも面倒だし。
これで,
ping 2.24.xxx.yyy
とやってちゃんと繋がっていればOKです。このUSBスティックにはご丁寧にもFireFoxも入れてくれているので,スタートボタンからFireFoxを起動します。FireFoxが起動したら,アドレスバーに2.24.xxx.yyyと入れて叩けばTitanにつながります。素晴らしい。完璧です。でも,その先の重要ミッションがあります。ちゃんとオフセットキャンセルができるか,が重要なのです。こんなところで喜んでいてはいけません。ここまでならWinXPでもできたのですから。
Offset TrimmingからAuto-Zeroボタンを押します。
せっかくなのでTitanの出力を別のロガーでモニターしながらどういうことが起こるのかを見てみます。
Auto-Zeroボタンを押すとオフセット電圧が上下に動いてなんだかゼロ値を探している雰囲気をだしてます。でも,たぶん過去何秒かの値を積分して平均を取っているだけだと思うのですが,まぁ,頑張ってる感があるのでよいと思います。思いのほか時間がかかって,10秒くらいかかる感じです。オフセットを調整すると出力電圧の欄は数mVの値になります。実際に,モニターしているロガーのほうでも平均値を表示させるとTitanが自己申告しているオフセット電圧値と大きくかわらない値になっています。
立派です。もうこれで怖いものはありません。
オフセット電圧が10mVを切るのであれば,8倍ゲインとかケチなことをいわずに128倍ゲインでも楽勝です。いや,256倍だって大丈夫です。入力換算でいえば驚異的なS/Nが確保できます。これなら丹沢の山奥の露岩の上にTitan加速度計を置いて微動観測をやっても楽勝です。まぁ,オフセット調整という一手間がかかるのですが,それでもS/Nの向上のためならなんでもするのです。しかし,温度が一定ならよいですが,真夏の炎天下で観測なんてやっていたらTitan加速度計がどんどん熱くなるため,温度ドリフトがすごいことになるので,いつまでたってもオフセット調整ができない,ってことになりそうです。ガンガン観測して観測点数を稼ぎたいようなときにはとてもやってられないことになりそうです。下手をすると,キャリブレーションが必要な速度計のほうが観測効率がよいということになってしまうかもしれません。でも,それはそのときの天気をみて考えればよいということにしておきます。
「TitanにSLIPで接続する」だけの簡単な話だったはずなのですが,ハマりにハマりました。それでも,こういうことができるようにちゃんとメーカーがいろいろなものを用意してくれているというのは助かりました。SLIPをカーネルに入れてカーネルの再構築をするなんてのはちょっとした悪夢ですから。もうカーネルの再構築なんて,FreeBSDもLinuxもここ10年くらいやってませんからやり方を思い出すだけでも大変で,そのうえ,SLIPのドライバのソースを探してきてカーネルに組み込まねばならないのですからおおごとです。あと,slattachコマンドもインストールせねばなりません。./configure && makeで一発ならよいですが,なんかそんな雰囲気じゃなさそうなのでコンパイルするだけでハマりそうな気配がぷんぷんしています。
いずれにしても,おかげさまで(ここのところはNanometricsの代理店へのお礼です),無事にオフセット調整ができるようになりました。
この失敗にショックをうけて,速攻でDell Inspiron mini 10というネットブックのジャンクを1,100円でヤフオクで調達し(送料が1,350円もかかった...),早速XPで設定しようと思ったら,ジャンクだけに,OSの起動中にunknown hardware errorでブルースクリーンがでて死にます。unknownってなんだよ。こっちはもっとわからんだろうが,と叫びそうになるのを堪えて,速攻で捨てました。32bit版のScientific Linuxは普通にDVDから起動したので,ハードウェアよりもOSの問題のような気がします。外見は綺麗だったのでなんとかなるんじゃないか,と思って調達しましたが,外見が綺麗なのは,きっと,前のオーナーのもとでは買ってすぐに壊れて使わなかったからだと理解しました。さすがDell,さすがマイクロソフト。このコンビは最強です。
失敗2連発でちょっと凹んだものの,新しい方法があることを教えてもらいましたので試しました。
NanometricsはSLIPアプライアンスの作り方についての情報を提供しています。当初はRaspberry pi 3BのSDイメージを配布していて,これを入れたラズパイにUSBシリアル変換ケーブルを挿して,一方でイーサネットポートには別のPCを接続して一種のルーターとして機能させる方法をマニュアルに記載しています。しかし,フィールドでラズパイをモバイルバッテリで動かしてさらにノートPCをネットワーク接続して設定するとか考えただけでも嫌になります。雨でも降ったらどうするんだ,って話もあります。ラズパイなんてほとんどハダカ同然ですから水をかぶったら一瞬で死にます。いくらTitan加速度計が完全防水仕様でもラズパイが死んだら設定できません。だめじゃん。
さらにNanometricsはUSBスティックにLinuxをインストールしてUSBから起動するSLIPに対応したカーネルをインストールしたLinuxのイメージを配布しています。素晴らしい。
これです。欲しかったのはこれなのです。最初に教えてくれぇ,と言いそうになるのを堪えて感謝の気持ちで準備します。
これもマニュアルがあれば簡単です。
0. USBスティックをFAT32でフォーマットする。
1. SLIPアプライアンスのUSBイメージをもらってくる。
2. 適当なwindowsマシンでzipを展開する。
3. 展開したらslipapplianceというディレクトリをUSBのルートにコピーする。
4. USBスティックのなかのslipappliance\boot\のなかのbootinst.batをダブルクリックして実行する。
5. 64bit CPUを積んだ適当なPCのUSBコネクタにUSBスティックを挿してUSBスティックから起動する。
64bitのPCならそこらへんに転がってます。さっき,調達したDell Inspiron mini 10は残念ながら32bit CPUなので,使えません。ジャンクだからしょうがないけど動くくせに使えないヤツです。うーむ。
気を取り直して,あまりにもとろくて使い物にならないThinkPad X240をターゲットにします。X230が非常に使いやすいのにその後継機のX240の出来の悪さは驚きを通り越して腹たつレベルです。どっちも2万円でショップインバースで調達したものですが,X230はいつも観測には持っていくのにX240はまったく出番がありません。ここでSLIPアプライアンスとしてリベンジしてもらいましょう。
ThinkPadのブート中にBIOSに入る方法がわかりにくいのですが,X230は起動したらすぐにEnterキーを連打するとなんだかメニューがでるのでF1を叩くとBIOSに入れます。メニューがでて安心してぼーっとしているとさっさと起動シーケンスに入ってしまいますので,メニューの文字を読んでいる暇はありません。すぐにF1を叩かねば間に合いません。そもそも,起動j時のEnterを叩くタイミングも難しく,最初の電源投入時はたいてい失敗するので,OSの起動シーケンスに入りそうになったらCtrl+Alt+Delで再起動かけて,すぐにEnterを叩きます。なんてせわしいのでしょう。
X240は起動時にF1連打です。これでBIOSに入れるのですが,それよりも起動時にF12を連打してブートデバイスのメニューを表示させる方がわかりやすいです。電源投入前にUSBスティックを挿しておき,電源を投入したらF12連打。
運がよければ,起動デバイスのメニューが表示されるのでUSBスティックを選択して起動させます。ブートデバイスさえちゃんと選択できればLinuxのブートは問題ありませんでした。Linux万歳。どのようなディストリビューションがベースになっているのかよくわかりませんが,かなり軽量な印象であっという間に起動します。Windows10ではとても耐えられないもっさりのX240でもキビキビ動きます。
X240はX61と違ってシリアルポートはありません。といってもX61だってシリアルポートはないのですが,ドッキングステーションをつけて無理やりシリアルポート付きとして使っているのです。それはともかく,X240はドッキングステーションがあったとしてもシリアルポートはついてませんから,USB-シリアル変換ケーブルを使います。
手元に転がっているのは昔,秋月電子で売っていたProlific PL2303 chipsetベースの古い変換ケーブルです。新しいOS用のドライバがあるのかないのかわからんような感じですが,有名なチップセットですからLinuxで使えないはずはないだろうと思って何も考えずに挿します。
dmesgするとちゃんと認識して/dev/ttyUSB0が割り当てられていました。さすがLinuxです。古いものにもちゃんと対応しているのが立派です。
こうなればあとは簡単です。
SLIPアプライアンスが起動するとちゃんとXも立ち上がって,デスクトップにはNanometricsとデカデカと書かれています。まぁ,いいんだけど。それに比べるとやたらと小さなスタートボタンが左下にあるのでこれをクリックしてコンソールを起動します。もう有無を言わさずrootで動いてますから何も恐ろしいものはありません。だいたいネットワークにつなぐ様な使い方は想定されてませんから,起動したら最初からパスワードなしでrootでログインされていたって平気です。
コンソールで以下のコマンドを叩きます。もうおまじないです。
stty -F /dev/ttyUSB0 raw -crtscts
slattach -mL -p slip -s 9600 /dev/ttyUSB0 &
ifconfig sl0 2.1.0.0 pointopoint 2.24.xxx.yyy mtu 1500 up
sttyコマンドは何をしているのか知りません。もう面倒なので調べてもいません。slattachはシリアルポートをSLIPに接続して,/dev/sl0というデバイスを作ります。このsl0というデバイスをifconfigで設定する,というものです。pointopointの綴りが微妙にハマりそうだったりしますし,slattachは&をつけて明示的にバックグラウンドで走らせなければいけないようです。いや,もう一つコンソールを立ち上げればよいだけですが,それも面倒だし。
これで,
ping 2.24.xxx.yyy
とやってちゃんと繋がっていればOKです。このUSBスティックにはご丁寧にもFireFoxも入れてくれているので,スタートボタンからFireFoxを起動します。FireFoxが起動したら,アドレスバーに2.24.xxx.yyyと入れて叩けばTitanにつながります。素晴らしい。完璧です。でも,その先の重要ミッションがあります。ちゃんとオフセットキャンセルができるか,が重要なのです。こんなところで喜んでいてはいけません。ここまでならWinXPでもできたのですから。
Offset TrimmingからAuto-Zeroボタンを押します。
せっかくなのでTitanの出力を別のロガーでモニターしながらどういうことが起こるのかを見てみます。
Auto-Zeroボタンを押すとオフセット電圧が上下に動いてなんだかゼロ値を探している雰囲気をだしてます。でも,たぶん過去何秒かの値を積分して平均を取っているだけだと思うのですが,まぁ,頑張ってる感があるのでよいと思います。思いのほか時間がかかって,10秒くらいかかる感じです。オフセットを調整すると出力電圧の欄は数mVの値になります。実際に,モニターしているロガーのほうでも平均値を表示させるとTitanが自己申告しているオフセット電圧値と大きくかわらない値になっています。
立派です。もうこれで怖いものはありません。
オフセット電圧が10mVを切るのであれば,8倍ゲインとかケチなことをいわずに128倍ゲインでも楽勝です。いや,256倍だって大丈夫です。入力換算でいえば驚異的なS/Nが確保できます。これなら丹沢の山奥の露岩の上にTitan加速度計を置いて微動観測をやっても楽勝です。まぁ,オフセット調整という一手間がかかるのですが,それでもS/Nの向上のためならなんでもするのです。しかし,温度が一定ならよいですが,真夏の炎天下で観測なんてやっていたらTitan加速度計がどんどん熱くなるため,温度ドリフトがすごいことになるので,いつまでたってもオフセット調整ができない,ってことになりそうです。ガンガン観測して観測点数を稼ぎたいようなときにはとてもやってられないことになりそうです。下手をすると,キャリブレーションが必要な速度計のほうが観測効率がよいということになってしまうかもしれません。でも,それはそのときの天気をみて考えればよいということにしておきます。
「TitanにSLIPで接続する」だけの簡単な話だったはずなのですが,ハマりにハマりました。それでも,こういうことができるようにちゃんとメーカーがいろいろなものを用意してくれているというのは助かりました。SLIPをカーネルに入れてカーネルの再構築をするなんてのはちょっとした悪夢ですから。もうカーネルの再構築なんて,FreeBSDもLinuxもここ10年くらいやってませんからやり方を思い出すだけでも大変で,そのうえ,SLIPのドライバのソースを探してきてカーネルに組み込まねばならないのですからおおごとです。あと,slattachコマンドもインストールせねばなりません。./configure && makeで一発ならよいですが,なんかそんな雰囲気じゃなさそうなのでコンパイルするだけでハマりそうな気配がぷんぷんしています。
いずれにしても,おかげさまで(ここのところはNanometricsの代理店へのお礼です),無事にオフセット調整ができるようになりました。