まだプログラマーですが何か?

プログラマーネタとアスリートネタ中心。たまに作成したウェブサービス関連の話も http://twitter.com/dotnsf

タグ:pi

小型コンピュータのラズベリーパイ、一般的には Raspbian OS で使われることが多いと思っています(自分も特別な理由がなければ Raspbian OS か、または Raspbian の派生 OS で使います)。

が、Raspbian OS って 32bit OS なんですよね。ラズベリーパイ自体は 64bit CPU である arm64 を搭載していることを考えると、「せっかくなので 64bit で使いたい」ともなるわけです。

ラズベリーパイ上で動く 64bit OS はいくつかあるようです。ただリストを見ると「64bit 機能の一部が動かない」という注釈もあったりして、全てが期待通りの挙動をするかというと、そうでもなさそう・・・

というわけで、ラズベリーパイに 64bit Linux である openSUSE を導入する方法を紹介します。といっても導入だけなら Raspbian OS と特別に違うことはなく、どこからイメージをダウンロードするか、程度の違いですけどね。


ラズベリーパイ向けの openSUSE イメージをダウンロードするには、SuSE のラズベリーパイ用ページを参照します:
2019040202


下にスクロールすると、ダウンロードイメージへのリンクが現れます。いくつか種類がありますが、Tumbleweed(開発版)か Leap(安定版)を選び、デスクトップの種類を選択してイメージをダウンロードします。ちなみに僕は Tumbleweed の E20 image を選びました:
2019040201


後は Raspbian OS と同様でダウンロードしたイメージを展開し、(DDWin などのツールを使って)MicroSD カードに書き込み、そのカードをラズベリーパイに差し込んで起動します。

デフォルトのままであれば ID: root, PW: linux でログインできます:
shot-2019-04-02_23-08-13




Windows 3.x 時代の標準ファイラー(もう「ファイラー」という用語すら耳にしなくなったけど・・)だった File Manager が Windows 10 向けに Microsoft Store からダウンロード可能になった、というニュースがありました:
2019021101


まあエクスプローラーを使っている人にその前身とも言える File Manager が使いやすいかどうかは??? ですが、マルチウィンドウ間でファイルをコピーしたり、それなりに便利だった記憶はあります。

が、自分にとって「ファイラー」と言えばやはり「FD」です:
2019021102


Microsoft Windows がまだ広まる前、MS-DOS/PC-DOS 全盛だった平成初期において、ファイルのコピーや閲覧/編集、圧縮/解凍、ディレクトリ操作、そしてコマンド実行といった基本操作を(GUI と呼ぶのは違う気がするけど)視覚的にわかりやすく操作できるフリーソフトのツールで、やはり当時全盛だったパソコン通信や雑誌の付録を中心に広まり、「ほぼ OS の一部」と思えるくらいみんなが使っていたツールとなりました。ちなみに DOS 版はバージョン 3.13 まで開発が続けられ、作者の A.Idei(出射厚)氏は 2004 年に逝去されました。

この FD は DOS 以外の環境でも動作するよう多くの移植が行われています。例えば 32bit Windows アプリケーションとして動く WinFD や、Java 環境下で動作する jFD2 などがあります。そして Linux/UNIX 環境向けに移植されたのが今回紹介する fdclone です:
2019021103


この fdclone はラズベリーパイ向けにも移植されており、以下のコマンドでインストールできます:
$ sudo apt-get install fdclone

fdclone を実行するにはコマンドラインから "fd" で実行できます:
$ fd

オリジナル FD のショートカットキーはほぼ全て移植されているようで指が覚えている人はそのまま使えます。例えば終了は "q" です。


FD を使っていたおじさんと、コマンドラインからのファイル操作に慣れていない人は入れておくのがいいと思います。


ラズベリーパイ(以下「ラズパイ」)で遊べるゲームも珍しくなくなってきていますが、ラズパイのテキストコンソールでも遊べるゲームを探してみました。


(1) BSD Games

まずは BSD Games です。FreeBSD など BSD ベースの UNIX に搭載されたテキストベースのゲームが元で、今では多くの UNIX ベースの OS に移植され、遊べるようになっています。個人的にもおそらく人生で最初に遊んだ UNIX のゲームがこの中に含まれている worm でした。

ラズパイにインストールする場合は以下のコマンドで導入できます:
$ sudo apt-get install bsdgames

導入が成功すると /usr/games/ 以下に多くのゲームが確認できるようになります:
2019020201


この中のファイルを指定してゲームを遊ぶことができます。例えば上記の worm も含まれていますが、コンソールから worm と入力することで worm を起動して遊ぶことができます:
2019020202
↑ vi のキーを覚える目的で使ってました・・


(2) CGames

CGames は Linux テキストコンソール向けに比較的メジャーな3つのゲーム(倉庫番、マインスイーパー、スライディングブロック)を提供するパッケージです。ラズパイの場合、apt-get install では導入できないのですが、ソースコードからビルドすることで導入できます。

ソースコードを入手して、ビルド、インストールするまでの操作コマンドは以下になります:
$ sudo apt-get install libgmp-dev libncurses5-dev

$ wget http://www.muppetlabs.com/~breadbox/pub/software/cgames-2.2a.tar.gz

$ tar xf cgames-2.2a.tar.gz

$ cd cgames-2.2a

$ ./configure --disable-mouse --with-ncurses

$ make

$ sudo make install

最後まで完了すると、/usr/local/games 以下に3つのゲームが導入されます。なお、このフォルダにはパスが通っていないので、必要に応じて環境変数を書き換えてください:
2019020203


csokoban(倉庫番)を起動するとこんな感じ。矢印キーで操作できます。これは持論なのですが、パズルゲームは1人で時間制限なしに遊べるのがいいと思っています。そして倉庫番やマインスイーパーはその条件を満たしていて、そんなゲームがラズパイのコンソールでも遊べる、というのはいいですよね:
2019020204


ラズパイ操作中の気分転換にいい感じです。


ラズベリーパイ(Raspbian OS)に NoSQL 型のデータベースである Apache CouchDB を導入する手順を紹介します:
2019011402


Apache CouchDB (以下、"CouchDB")はオープンソースで提供されている NoSQL データベースです。IBM Cloud の IBM Cloudant はこの CouchDB をベースに提供されているマネージド DBaaS です:
2019011401


なお、IBM Cloudant は分散データベース環境がはじめから提供されていますが、以下で紹介する例では CouchDB を1インスタンスで運用する前提での導入方法とさせていただきます。また導入する CouchDB のバージョンは 2019/01/14 時点での最新版である 2.3.0 を対象としています。

まずは準備作業としてリポジトリをアップデートしておきます:
$ sudo apt-get update -y

$ sudo apt-get dist-upgrade -y

続いて Erlang Solutions のリポジトリを追加し、再度アップデートします:
$ wget http://packages.erlang-solutions.com/debian/erlang_solutions.asc

$ sudo apt-key add erlang_solutions.asc

$ sudo apt-get update

追加したリポジトリを使って、ビルドに必要なライブラリ等を導入します:
$ sudo apt-get --no-install-recommends -y install build-essential pkg-config erlang libicu-dev libmozjs185-dev libcurl4-openssl-dev

またビルドしたバイナリを実行するユーザー(couchdb)と、そのホームディレクトリ(/home/couchdb/)をこの段階で作成しておきます:
$ sudo useradd -d /home/couchdb couchdb

$ sudo mkdir /home/couchdb

$ sudo chown couchdb:couchdb /home/couchdb

ではいよいよ CouchDB のビルドを行います。2.3.0 のソースコードをダウンロード&展開して、ビルドします:
$ cd

$ wget http://mirror.ibcp.fr/pub/apache/couchdb/source/2.3.0/apache-couchdb-2.3.0.tar.gz

$ tar -zxvf apache-couchdb-2.3.0.tar.gz

$ cd apache-couchdb-2.3.0/

$ ./configure

$ make release

ビルドが成功すると、完成したバイナリが ./rel/couchdb/ 以下に作成されています。このフォルダ以下を /home/couchdb/ 以下にコピーし、couchdb ユーザー向けに実行権限を変更します:
$ cd ./rel/couchdb/

$ sudo cp -Rp * /home/couchdb

$ sudo chown -R couchdb:couchdb /home/couchdb

これでビルドは完了です。不要であればソースコードやリポジトリのファイルは削除しても構いません(残しておいても構いません):
$ cd

$ rm -R apache-couchdb-2.3.0/

$ rm apache-couchdb-2.3.0.tar.gz

$ rm erlang_solutoins.asc

この段階で CouchDB を起動することは可能ですが、デフォルト設定のままだと CouchDB はローカルホストからのリクエストのみ受け付ける設定になっています。CouchDB を外部ホストから利用する場合や、管理者向けコンソールに外部ホストからアクセスする場合は外部アクセスを許可するよう、起動前に設定を変更しておく必要があります。

外部ホストからのアクセスを許可するには、/home/couchdb/etc/local.ini ファイルをテキストエディタで開き、
#bind_address = 127.0.0.1

となっている箇所を、以下のように書き換えて保存します:
bind_address = 0.0.0.0

そして couchdb ユーザーの権限で CouchDB を起動します:
$ sudo -i -u couchdb /home/couchdb/bin/couchdb

起動後、別のターミナルから以下の curl コマンドを実行して動作を確認します:
$ curl http://localhost:5984/

{"couchdb":"Welcome","version":"2.3.0","git_sha":"07ea0c7","uuid":"48b039b37b2b29236f33806d9a96c248","features":["pluggable-storage-engines","scheduler"],"vendor":{"name":"The Apache Software Foundation"}}


私自身はラズパイ3とラズパイゼロで動作を確認しましたが、ラズパイゼロでも CouchDB 程度であれば大した負荷にはならずに実行できました。




(参考)
https://www.hackster.io/mehealth-ch/installing-couchdb-on-raspbian-stretch-ccb2a7



ラズベリーパイをデスクトップ用途で使う場合のテキストエディタとしては現時点でこれが最適かなあ、と思うのが Visual Studio Code です。ラズベリーパイ環境にもインストールできるようになっていました。


導入にあたり、まずは GPG Key をインストールしておく必要があります:
$ wget -qO - https://packagecloud.io/headmelted/codebuilds/gpgkey | sudo apt-key add -

その後、root で Visual Studio Code の Community Build をインストールします:
$ sudo su
# . <( wget -O - https://code.headmelted.com/installers/apt.sh )
# exit

導入後はメニューから code-oss を選択するか、コマンドラインから以下を実行して起動します:
$ code-oss

2019-01-13-093932_1184x624_scrot
 

普段が vi 使いなので比較の対象としてアレですが、複数ファイルを開いて切り替える使いやすさとか、補完機能とか、いわゆる「モダンな」機能が満載で、それでいてそんなに重いわけでもなく、いい感じ。


このページのトップヘ