Intelのスティックコンピュータを購入した: BOXSTCK1A8LFC

ネタの会場に、ロボット二台と、パソコンも運ぶというのがとても面倒だ。サリーとハルのときは、ハルにネタデータの作成機能が入っていたので、ロボット二台のことだけを考えればよかったが、サリーとマリーになってから、ネタ作りコンピュータを会場まで持ち込まなくてはならなくなった。とても面倒。

そこで、もっとシンプルなコンピュータはないかと探すと、スティック型コンピュータというのが安く手に入る。次のような代物を購入した。


インテルの「Intel Compute Stick スティック型コンピューター LinuxUBUNTU搭載モデル BOXSTCK1A8LFC」という名前で、アマゾンで売っているもので、7000円弱の値段だった。まあ、試してみようという意味もある。

もう少し値段が高くて性能のいいスティックコンピュータもあるが、ウィンドウズが入っているので、linuxに入れ替えなければならなくなる。購入したものは、ubuntu-14.04だいぶ古いが、linuxなので、入れ替えが不可欠というわけではないので、これにした。(というか、ネットワークに繋ぐと、400数十メガバイトのアップデートがあるというメッセージが出てくるが、何気にやってみたら、途中でフリーズして、工場出荷時に戻さなくてはならなくなった、笑)

なお、工場出荷時に戻すためには、説明文にもなかったが、電源切った状態で、電源ボタンを押したままで電源コンセントをつないで通電する。しばらくでubuntuの初期化用のページが表示される。

ちょっと動かしてみると、CPUはそれほど悪くはない。印象としては、raspberrypi よりも少しいい感じがする。微妙だが。ただ、ストレージが、ubuntuの工場出荷時のものをストレージの一部に保存していて、いつでも戻せるようになっているぶん、実際のシステムとして使えるのは、10Gもないような感じで、そのままでは使い物にならない。

メインメモリも1Gでは弱い。

マイクロSDカードがさせるので、それを使うことにした。64ギガのものを用意した。昔の癖みたいなもので、fdiskでパーティションを設定して、と思っていたら、partedを使えと言われてしまった。使ったことがないが、使うと、結構便利だった。まあ、それで、全体を一つのパーティションにした。

ここを /altでマウントしてとか思っていたのだが、何しろ、システムの余裕が殊の外なく。ちょっとしたアプリを入れても、容量がなくなり、システムダウンになってしまう。そのほかも含めて、トライアルエラーで、5,6回は、工場出荷時に戻した。その度に1時間以上時間をロスしている。

そこで、こんなことは今までやったことはないのだが、一番システム的に容量を取っている /usrをmicroSDに載せるしかないと思った。/usrを64Gにおけば、まあ、だいぶ余裕が出てくる。ただ、手続きが面倒だ。

まず、/usrにあるものを全部、 cp -rpfa /usr/* /alt でsdに移した。これで、完コピになっているかといえば、多分なっていないんじゃないかと思うが、まあ、他にやり方がわからないのでそうした。

さらにマウントテーブル /etc/fstab に partedで作成したパーティションを/usrにマウントする手続きを記載しなければならない。以下の通りだ。

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
#              
# / was on /dev/mmcblk0p3 during installation
UUID=a5973b07-3927-4d2c-8e88-da8c9f63f97d /               ext4    errors=remount-ro 0       0
# /boot/efi was on /dev/mmcblk0p1 during installation
UUID=59AE-C1C8  /boot/efi       vfat    defaults        0       1
# swap was on /dev/mmcblk0p4 during installation
UUID=b6e64128-dd57-461e-9904-43ac60967745 none            swap    sw              0       0
UUID=fb8aede3-36bd-4659-abb7-b7f8f03c7148 /usr ext4 defaults 0 0

最後の行が、付け加えたものだ。UUIDは、パーディションの固有IDだが、取得は次のようにする。/dev/mmcblk1p1と記載されているものは、今回作成したパーディションである。デバイスmmcblk1の第一パーティションの意味。

$ sudo blkid /dev/mmcblk1p1
/dev/mmcblk1p1: UUID="fb8aede3-36bd-4659-abb7-b7f8f03c7148" TYPE="ext4"

あっさり、現在の /usrは削除した。どうせ、何度も何度も工場出荷時に戻しているので、うまくいかなければまたそうすればいい。という、いい加減さ。

これで再起動したら、うまいこと/usrは、microSDにマウントされていた。現時点でのファイルシステムの使用状況は次のようになっている。/usrには、emacsやnetbeans、mariadbなど、apt-get install で重たいアプリをインストールしたが全然余裕である。

$ df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/mmcblk0p3   4954848 1992248   2687864  43% /
none                   4       0         4   0% /sys/fs/cgroup
udev              448532       8    448524   1% /dev
tmpfs              92712     732     91980   1% /run
none                5120       0      5120   0% /run/lock
none              463540      76    463464   1% /run/shm
none              102400      32    102368   1% /run/user
/dev/mmcblk0p1     48698    4546     44152  10% /boot/efi
/dev/mmcblk1p1  61256732 4974448  53147564   9% /usr

最後の行に、/usrの 使用状況が記載されている。圧倒的なストレージの余裕感がある。邪道だが /usrの下に、私が所有者になっているフォルダーも用意して、ストレージを使うようなファイルはそこに置いている。

ストレージは以上だが、アプリでも手間取った。何よりも、javaを入れなければならないのだが、まあ、netbeansを入れることによって全てクリアしようとしたが、これがなかなか入らない。まあ、java開発環境が有料化するという大きな変わり目ということもある。いや、関係ないか。古いjdkでもいいのだ。sudo apt-get install netbeansとしてもさっぱりうまくは入らない。(本来は、jdkそのものじゃなくて、実行環境のjreだけでいいのだが、もしものためにnetbeansも入れたという感じ)

jdkとnetbeansをそれぞれのダウンロードサイトから入れようとしたのだが、理由がわからないままにうまくいかない。結局、以下のサイトを参考にして、ほぼうまくいった。
https://websiteforstudents.com/how-to-install-netbeans-on-ubuntu-16-04-17-10-18-04/

ubuntuのバージョンが上記サイトが想定しているものより、一段も二段も古いのだが、ほぼ、そんな感じでインストールできた。

ぞれでも、エラーが発生したのは、netbeansの起動時にjdkのフォルダが見つからないことだった。そこで、

/usr/local/netbeans-8.2/bin/netbeans --jdkhome /usr/lib/jvm/java-8-oracle/

と--jdkhome を指定してやれば、全てうまくいった。これは、環境変数JAVA_HOMEを指定すればいいはずなのだが、なぜかうまくいかないので、これを書いたシェルスクリプトで起動させることにした。素人か!(笑)

あと、mariadbも入れて、ただ、データのフォルダが/var/lib/mysqlになっているので、それを/usr配下に変更する必要があった。これは、/etc/mysql/my.cnfの

datadir        = /var/lib/mysql

を変更し、そこに cp -rfp で元データを丸ごとコピーするだけで済んだ。他のところは、特に容量を取らないのでそのままにした。というよりも、socketの位置などを変えたら、なんだかおかしくなった。私の場合は必要ない。

(追記:実際使ってわかったことで、1ギガとかでっかいデータを入れると、ログもまたとてつもなくでかくなるので、/var/lib/mysql 以下のログフォルダも、新しいmicroSDの場所に移さなくてはならなかった!my.cnfの該当箇所を変更。そうしないとrootパーティションを使い切って動きが取れなくなる)

mariadbのインストールは以下のサイトを参考させてもらった。
https://qiita.com/cherubim1111/items/61cbc72673712431d06e

私のubuntuは14.04で上記のは、18.04で相当違うのだが、ほぼ、その通りにできた。