MoodleBoxをRaspberryPiに入れた話(備忘録)
- 0.はじめの動機
- 1.作り方
- 2.繋ぎ方
- 3.とにかくSSH
- 4.インターネットに繋ぎたい
- 5.トラブル MoodleBox Wifiが居なくなる
- だめだったやり方
- 6.iPhoneテザリングを有線接続してインターネット側につなぐ
- 7.最後に
*間違いを発見したので、修正しました。
Moodleはウェブサーバは要件ではなく、NginxはMoodleboxで使用されているウェブサーバです。
0.はじめの動機
Learning Management Systemで研修コースを作るのを試してみたい。
でも、ある程度クローズドなネットワークで試してからにしたい。
と考えて、CanvasとMoodleを比較していいたところ、MoodleはRaspberryPi用のRasbianベースのディストリビューション(?)があるというので、なにをするものだかよくわからないけれど、体当たり的に試してみることにしました。
ちなみにCanvasはDockerが動かないとだめで、開発言語がRuby、データベースがPostgreSQLです。
公式サイトはこちら。
ざっくり説明すると、MoodleはPHP+MySQLで構築されているLMSです。MoodleboxはWeb サーバにNginxを使っています。
MoodleboxはAPになって、無線LANを提供してくれる機能がついているラズパイ用のMoodleプラットフォームです。OSは、Rasbianをベースにしているので、ほとんどDebianです。
最終的な設定はこのネットワーク図がわかりやすいです。
手元には、買ったきり元気がなくて電源も入れてないRaspberryPi3B+と、先週ちょっとRaspbianを入れてssh使えるぐらいまでにしたRaspberryPi4(8Gメモリ)がありました。
マイクロSDカードはScanDiskの128GBとSAMSUNGの128GBを使いました。(どっちでも特に変わりないです。)
1.作り方
まず、下記から必要なイメージファイルをダウンロードします。
MoodleBox | Download the disk image
「俺はCUIで戦う、ddするんじゃ」というこだわりがなければ、ラズパイ側には公式でRaspbery Pi ImagerというSDカードにイメージをそのまま書き込んでくれるソフトウエアがあるので、こちらをダウンロードして使うのをおすすめします。
Raspberry Pi OS – Raspberry Pi
まず、マイクロSDカードをPCから書き込めるように挿入します。
「Choose OS」で「Use Custom」を選択して、先程ダウンロードしたMoodleBoxを選択しておきます。
「SD Card」は挿入したSDカードを選択します。
ここで、すでに書き込み先が「SD Card」と限定されているので、超うっかりしている私のようなものでも安心なのが、本当に素晴らしいところです。
書き込みが終わったら、ラズパイに刺します。
終了。
2.繋ぎ方
MoodleBox | How can I connect to the MoodleBox via Wi-Fi
SDカード挿入して、電源入れたら、Moodleとして最初から使うことができます。
ここで、MoodleBox | MoodleBox network topologyに戻って確認してみましょう。
電源を入れた時点で、このMoodleBoxというWifiネットワークがすでに構築され
wlan0はstaticで10.0.0.1に設定されています。
そこで、まず、PCのWifiをこのネットワークに無線接続します。
SSID:MoodleBox
初期パスワード:moodlebox
それから、ブラウザを開き、”moodlebox.home"あるいは”10.0.0.1"と入力します。
すると、ホーム画面が開きます。
初期の管理者ログインのユーザ名とパスワードは以下です。
username: moodlebox
Password: Moodlebox4$
3.とにかくSSH
MoodleBoxは最初からSSHで繋がります。そのため、PCがあれば、(トラブルがなければ)ディスプレイなしで使いはじめることができます。
ssh moodlebox@10.0.0.1
パスワードは
Password: Moodlebox4$
で、パスワードは変更しておくのが良いと思いますが、面倒なので、私はこの時点で公開鍵認証に変更しています。
sshの公開鍵認証については、記事を書いている方がたくさんいらっしゃるので、
"SSH 公開鍵認証 Raspberry pi"とかで検索してください。
設定したら、
PasswordAuthentication no #パスワード認証しない
PermitRootLogin no #ルートログイン許可しない
PubkeyAuthentication yes #公開鍵認証を使用する
にしました。
sudo service sshd restart
もう一個、端末(ターミナル)を開いて、パスワードを聞かれずにsshログインできれば、OKです。ログイン出来なかった場合に設定し直すことができるように、端末は複数開いておきます。
4.インターネットに繋ぎたい
イーサケーブルがお手元にあり、DHCPなルーターが近くにあったりして、すぐにNetwork Topology図にあるようにインターネット側に有線接続できる方はそのようにするのが簡単です。
インターネットに繋いでやりたいことは、全体的なアップグレードと日本語パックのインストールです。
5.トラブル MoodleBox Wifiが居なくなる
インターネット接続は後述するとして、この件はインターネットに繋がっている前提で記載します。apt-get upgradeしたら起きたものです。
以下の手順で、起きなくなると思われます。
/etc/dnsmasq.confを開いて bind-interfaces の行を#でコメントアウト
sudo apt-get update
sudo apt-get upgrade
続きを読む
論文リンク備忘録 : テキスト分類系
ざっくり時系列。
[1810.04805] BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
参考にしたいブログ。
[1812.01207] Practical Text Classification With Large Pre-Trained Language Models
[1801.06146] Universal Language Model Fine-tuning for Text Classification
[1607.04606] Enriching Word Vectors with Subword Information
[1606.01781] Very Deep Convolutional Networks for Text Classification
Facebook fastTextの論文
[1607.01759] Bag of Tricks for Efficient Text Classification
[1408.5882] Convolutional Neural Networks for Sentence Classification
一年が経過しました
半年後の自分の状況がまったく想像できない形で書き始めたので
冬眠からたたき起こされて
途中で放置することとなってしまったうえに、
chainerのページのほうのアクセスが日に日に増えてしまい
申し訳ない気持ち。
Chainerリファレンスその後
Chainerドキュメント日本語化について
ブログでリファレンス翻訳ということに色々問題を感じたので、別途ウェブサイト作成しました。
まだ、こちらで書いた記事の移行作業中です。
https://chainerfan.jimdo.com/chainer-reference/
これ以上の翻訳コンテンツについては、上記サイトのみで更新し、こちらでは文字どおりブログを書いていくつもりです。
Chainer v3.0.0リファレンスマニュアル(日本語) /Utilities
この記事については、下記サイトにまとまっています。
また、他の項目についても追記中です。
勉強のために訳している記事です。翻訳や技術的な理解について、間違いを発見した場合は、コメントなどでお知らせいただければ私の理解も進み、非常にありがたいです。
*2017/10/09現在で、文章中にリンクがある場合、目次以外のリンク先は、全てオリジナルの英語サイトです。各オブジェクトの詳細は未着手です。
Chainer Reference Manual(公式ドキュメント)
http://docs.chainer.org/en/stable/reference/index.html
Chainer v3.0.0リファレンスマニュアル(日本語非公式)
Utilities
CUDA utilities
CuPyでのデバイス、コンテクスト、メモリマネージメント。
ChainerはCuPyをGPU計算のスピードを利用するために(非常に薄いラッパーとともに)使用している。 以下のモジュールとクラスは、CuPyで定義され、Chainerへは便宜上、chainer.cudaモジュールでインポートされる。(Chainerのソースコードを読む際は、下記テーブル参照)
imported name | original name |
---|---|
chainer.cuda.cupy | cupy |
chainer.cuda.ndarray | cupy.ndarray |
chainer.cuda.cupy.cuda | cupy.cuda |
chainer.cuda.Device | cupy.cuda.Device |
chainer.cuda.Event | cupy.cuda.Event |
chainer.cuda.Stream | cupy.cuda.Stream |
ChainerはCuPyのデフォルトのアロケータをメモリ確保プールの実装によって置き換えています。 このため、forward/backward演算時の複数のデバイスメモリや、連続する要素ごとの操作のための一時的な配列、を再利用することが可能になっています。
Devices
chainer.cuda.get_device | デバイスオブジェクト、数値ID、配列オブジェクトからデバイスを取得する関数 |
chainer.cuda.get_device_from_id | 数値IDによりデバイスを取得する関数 |
chainer.cuda.get_device_from_array | CuPy array.CuPy配列、もしくはCuPy配列のリストからデバイスを取得する関数 |
CuPy array allocation and copy
chainer.cuda.copy | Copies a cupy.ndarray オブジェクトをデフォルトストリームを使用してコピーする関数 |
chainer.cuda.to_cpu | ホストCPUへ与えられtGPU配列をコピーする関数 |
chainer.cuda.to_gpu | 与えられたCPU配列を特定のデバイスへコピーする関数 |
Kernel definition utilities
chainer.cuda.memoize | 各属性とデバイスの結果を記憶するFunctionを作成する。 |
chainer.cuda.clear_memo | "memorize"によってデコレートされた全ての関数の"memorize"の結果をクリアする。 |
chainer.cuda.elementwise | elementwiseのkernel functionを作成する。 |
chainer.cuda.reduce | global reduction kernel functionを作成する。 |
CPU/GPU generic code support
chainer.cuda.get_array_module | または cupyから適切なモジュールを取得する。 |
cuDNN support
chainer.cuda.set_max_workspace_size | cuDNNのワークスペースサイズを設定する |
chainer.cuda.get_max_workspace_size | cuDNNのワークスペースサイズを取得する |
Common algorithms
chainer.utils.WalkerAlias
chainer.utils.WalkerAlias | Walker’s alias method(Walkerのエイリアス法/重み付きランダム抽出)の実装. |
Reporter
Reporter
chainer.Reporter | 収集された値を観察するためのオブジェクト |
chainer.get_current_reporter | カレントReporterを返す |
chainer.report | カレントReporerで値をreportする |
chainer.report_scope | カレントReporterのreportスコープを返す |
Summary and DictSummary
chainer.Summary | オンライン数値要約のためのオブジェクト. |
chainer.DictSummary | オンラインDictionary要約のためのオブジェクト |
Experimental feature annotation
chainer.utils.experimental
cchainer.utils.experimental | Experimental featureを使用する宣言 |