raspberry pi 4B raspbian buster 環境設定の備忘録

#raspberry pi 4B(4GB)を購入したので環境設定の備忘録

普段の環境がubuntuなのだけれど，raspberry pi 4に環境移行出来るか調査する．

特にinstallしたいアプリケーションは

* [Mathematica](#mathematica) 
* [python 3 (conda環境)](#python)
* [julia](#julia)
* [texlive](#texlive)
* [vscode](#vscode)
* [atom (断念)](#atom)
* [stress test tools](#stress-test-tools)
* [zotero (断念)](#zotero)
* [pcloud](#pcloud) 
* [aptでいれるやつ](#apt系のアプリケーション)



## インストール 

Raspbian Buster with desktopを

http://ftp.jaist.ac.jp/pub/raspberrypi/raspbian/images/

からダウンロードしてddで[インストール](https://www.raspberrypi.org/documentation/installation/installing-images/linux.md)


Raspbian Buster with desktop and recommended softwareのミラーは

http://ftp.jaist.ac.jp/pub/raspberrypi/raspbian_full/images/

## 初期設定

[ドキュメントは公式](https://www.raspberrypi.org/documentation/)が充実している．[セキュリティー](https://www.raspberrypi.org/documentation/configuration/security.md)を参考に設定にする．

/etc/apt/sources.listを日本のミラーに変えておく

```text
#deb http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
deb http://ftp.jaist.ac.jp/raspbian/ buster main contrib non-free rpi
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
#deb-src http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
```

リポジトリを更新してupdateしておく．

```bash
$ sudo apt update 
$ sudo apt upgrade
$ sudo apt dist-upgrade
```

ファームウェアをupdateする(非推奨)

```
$ sudo rpi-update
```

なおcurrentのファームウェアのversionの情報は次のコマンドで確認できる．

```
$ sudo rpi-eeprom-update 
[sudo] password for hanada: 
BCM2711 detected
BOOTLOADER: up-to-date
CURRENT: Tue 10 Sep 2019 10:41:50 AM UTC (1568112110)
 LATEST: Tue 10 Sep 2019 10:41:50 AM UTC (1568112110)
VL805: up-to-date
CURRENT: 000137ad
 LATEST: 000137ad
```


cpuの発熱量が増えているのヒートシンクを付けないとサーマルスロットリングが掛かるとのこと．

https://www.raspberrypi.org/blog/thermal-testing-raspberry-pi-4/

ちっこい[ヒートシンク](http://akizukidenshi.com/catalog/g/gP-12550/)だけだと，熱が逃げないので秋月電子で売っている[5VDCファン](http://akizukidenshi.com/catalog/g/gP-02480/)をヒートシンクの上にのせる(両面テープどめ)．ただし，GPIO2番や4番の5Vで給電するとファンが最大回転数で回り，小口径ファンなので結構うるさい．ファンコンをDIYしても良いが面倒なので，1番ピンの3Vで回す．このセッティングで無負荷30℃，5V，0.5A．ファンを止めて10分程度たつと45℃，5V, 0.4A．

[GPIOのピンレイアウト](https://www.raspberrypi.org/documentation/usage/gpio/)

電圧と電流値は[ルートアール RT-TC2VASV](https://www.amazon.co.jp/dp/B07NJ6CPMB/ref=dp_prsubs_1)で測定しているので，ACアダプターでの変換ロスは含まれず，ラズパイ+ファンが要求している電力．

無負荷で2.5[W]，後述するcpuburnで，電気量は5.04V，1.1A $\approx$ 5[W]なので極めて省電力だと思う．
3[A]も要求するのかと聞いておりビクビクしていたが，かなり優秀．



[オーバークロック](https://www.raspberrypi.org/documentation/configuration/config-txt/overclocking.md)するなら[ice tower](https://www.aliexpress.com/item/33062323316.html)とか[そのロープロファイル](https://www.aliexpress.com/item/4000288050448.html?spm=a2g0o.productlist.0.0.673c3f2eoY3mGS&algo_pvid=3fe8d958-cfa1-40f9-b8f2-1394ab5903c0&algo_expid=3fe8d958-cfa1-40f9-b8f2-1394ab5903c0-0&btsid=0ab6f83115826757802312689e8510&ws_ab_test=searchweb0_0,searchweb201602_,searchweb201603_)の方がよいかもしれない．

## Mathematica

Mathematicaのインストールは

```bash
$ sudo apt install wolfram-engine
```

でok．[スクリプト](https://www.wolfram.com/raspberry-pi/)を使用してインストールすることも出来る．がaptでinstallしているだけなので，debian系のosでないとinstallできない．おそらくubuntuでもインストール出来ると思う．
本当は[manjaro linux](https://manjaro.org/download/#raspberry-pi-4)を使ってみたくて，[Install Wolfram Engine On Any Distributions](https://github.com/your-diary/Install-Wolfram-Engine-on-Arch-Linux-ARM)をつかってインストールしようとしたが，何か問題があってrasbianにした(記録を取ってなかったので何が問題だったのかは覚えていない)．

```bash
$ Mathematica
```

でnotebookがたちあがり，

```bash
$ wolfram
Mathematica 12.0.1 Kernel for Linux ARM (32-bit)
Copyright 1988-2019 Wolfram Research, Inc.
```

でコンソール上でインタラクティブにmathematica(wolfram言語)を実行可能．

## python

デフォルトでpython3.7がinstallされているが，[anaconda](https://www.anaconda.com/distribution/)を普段使っているのでanacondaをinstallしたい(といっても普段使うのはipython, numpy, scipy, matplotlib, sympy, mpmathくらいだが)．だが，anacondaはarm版は無さそうである．一方，minicondaはarm版が[archive](https://repo.continuum.io/miniconda/)にあったのでインストールしてみる

```bash 
$ wget http://repo.continuum.io/miniconda/Miniconda3-latest-Linux-armv7l.sh
$ bash Miniconda3-latest-Linux-armv7l.sh
```

インストールされたpythonのversionは少し古い．

```bash
$ ./miniconda3/bin/python
Python 3.4.3 |Continuum Analytics, Inc.| (default, Aug 21 2015, 00:53:08) 
[GCC 4.6.3] on linux
```

残念な事に，早速numpyをインストールしようとしてみるもErrorとなる．

```bash
$ conda install numpy
Fetching package metadata: ....
Solving package specifications: 
Error: Could not find some dependencies for numpy: blas * openblas

You can search for this package on anaconda.org with

    anaconda search -t conda blas * openblas
```

ごオグル先生に聞いてみると[berryconda](https://github.com/jjhelmus/berryconda)を使えと啓示があったのでberrycondaをインストールしてみる．

```bash 
$ wget https://github.com/jjhelmus/berryconda/releases/download/v2.0.0/Berryconda3-2.0.0-Linux-armv7l.sh
$ bash Berryconda3-2.0.0-Linux-armv7l.sh
```

インストールされたpythonのversionは次の通り

```bash
$./berryconda3/bin/python
Python 3.6.1 | packaged by rpi | (default, Apr 20 2017, 19:35:19) 
[GCC 4.9.2] on linux
```

さっそくnumpy, scipy, matplotlib, sympy, mpmathを condaでインストールする

```bash
$ conda install <packagename>
```

全て問題なくinstallできたのでraspberry piではberrypiを使おう．
パスを通しておく

```bash
$ export PATH=/home/hanada/Applications/berryconda3/bin:$PATH
```

## julia

[julia](https://julialang.org/downloads/)は公式でarm版に対応しているのでそれを使う．ファイルを展開するだけ．
とは言ったもののいつもtar.gzの解凍オプションを覚えられないので記載しておく

```bash
$ tar zxvf julia-1.3.1-linux-armv7l.tar.gz
```

```bash 
$ ./julia-1.3.1/bin/julia 
               _
   _       _ _(_)_     |  Documentation: https://docs.julialang.org
  (_)     | (_) (_)    |
   _ _   _| |_  __ _   |  Type "?" for help, "]?" for Pkg help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 1.3.1 (2019-12-30)
 _/ |\__'_|_|_|\__'_|  |  Official https://julialang.org/ release
|__/                   |

julia> 
```

パスを通しておく．

```bash
$ export PATH=/home/hanada/Applications/julia-1.3.1/bin:$PATH 
```

## texlive

[texlive 2019](https://www.tug.org/texlive/acquire-netinstall.html)からinstall-tl-unx.tar.gzをダウンロード&展開してインストーラーを実行しフルインストールする．いつものことだが，クッソ時間が掛かる(といっても1時間程度)．

```bash
$ /usr/local/texlive/2019/bin/armhf-linux/platex
This is e-pTeX, Version 3.14159265-p3.8.2-190131-2.6 (utf8.euc) (TeX Live 2019) (preloaded format=platex)
 restricted \write18 enabled.
**\relax
entering extended mode
pLaTeX2e <2020-02-02>+2 (based on LaTeX2e <2020-02-02> patch level 3)
L3 programming layer <2020-02-21>
*
```

```bash
$ xelatex
This is XeTeX, Version 3.14159265-2.6-0.999991 (TeX Live 2019) (preloaded format=xelatex)
 restricted \write18 enabled.
**\relax
entering extended mode
LaTeX2e <2020-02-02> patch level 3
L3 programming layer <2020-02-21>
*
```

パスを通しておく

```bash
$ export PATH=/usr/local/texlive/2019/bin/armhf-linux:$PATH
```

[texを落ち着かせる](http://note.golden-lucky.net/2012/12/textex.html)

## vscode 

[vscode](https://code.headmelted.com/#linux-install-scripts)もarm版がある．
あまりつかっていないが，軽いと評判が良いらしいので触ってみたいのでとりあえず入れてみる．

```bash
# . <( wget -O - https://code.headmelted.com/installers/apt.sh )
(省略)
Installation complete!
You can start code at any time by calling "code-oss" within a terminal.
```

これもすんなり入り

```bash
code-oss
```

で起動できる．

## atom
(断念)
[公式](https://atom.io/)のdebはarm版ではないのでインストールできない．

https://discuss.atom.io/t/atom-on-the-raspberry-pi/33332

にrasberrypiにatomをインストールする手順が記載されているが，ちょっと面倒そうなので実行しない．

なお，atomはsnapでも配布されているが，
https://forum.snapcraft.io/t/raspberry-pi-3b-raspian-stretch-snap-not-working/3947/15
にあるように，atomはインストールできないようだ(未実行)

なおsnapはaptでinstall可能なようだ(未実行)

https://snapcraft.io/docs/installing-snap-on-raspbian

## build-essential

build-essentialはdefaultでinstallされており

```bash
$ gcc --version 
gcc (Raspbian 8.3.0-6+rpi1) 8.3.0
$ g++ --version
g++ (Raspbian 8.3.0-6+rpi1) 8.3.0
```

gfortranはaptでインストール可能で

```bash
$ sudo apt install gfortran
(省略)
$ gfortran --version 
GNU Fortran (Raspbian 8.3.0-6+rpi1) 8.3.0
```

## stress test tools

prime95はarm版がない．コンパイルするのは面倒なのでaptでstressとcpuburn-armを入れる．

参考：https://core-electronics.com.au/tutorials/stress-testing-your-raspberry-pi.html

ちっこいヒートシンクとファンの環境で，
stressだと40数度cpuburnで50度程度(電力は5.04V1.1A)まで上昇．

## zotero

### zotero 4
(断念)
zotero 4 はaptでinstallできる．ただ，起動しても使えない・・・．

```
$ apt show zotero-standalone 
Package: zotero-standalone
Version: 4.0.29.16+dfsg-1
$ sudo apt install zotero-standalone 
```

### zotero 5
(断念)
zotero のcurrent versionは

```bash
zotero --version
Zotero Zotero 5.0.83, Copyright (c) 2006-2018 Contributors
```

で結構頻繁にupdateがくる．公式のstandaloneはi686とx86_64のバイナリしか配布していないので，もちろんraspberry piでは動かない．

[Zotero stand aloneのソース](https://www.zotero.org/support/dev/client_coding/building_the_standalone_client)はgithubで公開されており，[ビルドする手順](https://www.zotero.org/support/dev/client_coding/building_the_standalone_client)も公開されている．手順通りに実行すればビルドには成功したが，そのままではi686とx86_64用にビルドされるのでarmでは使えない．

```
zotero-standalone-build$ ls staging/Zotero_linux-*
staging/Zotero_linux-i686:
application.ini     firefox-bin.sig	liblgpllibs.so	  libnssckbi.so    libsoftokn3.so     platform.ini	    zotero
chrome		    firefox.sig		libmozavcodec.so  libnssdbm3.chk   libssl3.so	      plugin-container	    zotero-bin
chrome.manifest     fonts		libmozavutil.so   libnssdbm3.so    libxul.so	      plugin-container.sig  zotero.desktop
components	    gmp-clearkey	libmozgtk.so	  libnssutil3.so   libxul.so.sig      poppler-data	    zotero.jar
defaults	    gtk2		libmozsandbox.so  libplc4.so	   minidump-analyzer  set_launcher_icon
dependentlibs.list  icons		libmozsqlite3.so  libplds4.so	   omni.ja	      Throbber-small.gif
dictionaries	    libfreeblpriv3.chk	libnspr4.so	  libsmime3.so	   pdfinfo	      updater
extensions	    libfreeblpriv3.so	libnss3.so	  libsoftokn3.chk  pdftotext	      updater.ini

staging/Zotero_linux-x86_64:
application.ini     firefox-bin.sig	liblgpllibs.so	  libnssckbi.so    libsoftokn3.so     platform.ini	    zotero
chrome		    firefox.sig		libmozavcodec.so  libnssdbm3.chk   libssl3.so	      plugin-container	    zotero-bin
chrome.manifest     fonts		libmozavutil.so   libnssdbm3.so    libxul.so	      plugin-container.sig  zotero.desktop
components	    gmp-clearkey	libmozgtk.so	  libnssutil3.so   libxul.so.sig      poppler-data	    zotero.jar
defaults	    gtk2		libmozsandbox.so  libplc4.so	   minidump-analyzer  set_launcher_icon
dependentlibs.list  icons		libmozsqlite3.so  libplds4.so	   omni.ja	      Throbber-small.gif
dictionaries	    libfreeblpriv3.chk	libnspr4.so	  libsmime3.so	   pdfinfo	      updater
extensions	    libfreeblpriv3.so	libnss3.so	  libsoftokn3.chk  pdftotext	      updater.ini
```

ビルドできるということは，armで動く様にコンパイル出来るような気もするが・・・，労力と能力を超えるのであきらめる．

挑戦している人もいるが
https://forums.zotero.org/discussion/80403/building-zotero-5-for-arm-raspberry
https://forums.zotero.org/discussion/72933/zotero-5-for-arm-raspberry-pi
成功者がいなさそうなので，やはり諦める．

ちなみに，wineはarmなので動かない．
zoteroは重宝しているだけに悔しい・・・．やはり課金して支援せねば．

## pcloud

zoteroでの経験から[公式](https://www.pcloud.com/download-free-online-cloud-file-storage.html
)が配布しているバイナリは

```
$ file ~/Applications/pcloud 
/home/hanada/Applications/pcloud: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/l, for GNU/Linux 2.6.18, BuildID[sha1]=79dcc4e55a61c293c5e19edbd8d65b202842579f, stripped
```

```
$ file pcloud 
pcloud: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, BuildID[sha1]=57454617d24d199c9ef48f139f5867f737b31aef, stripped
```

なのでraspberry pi では実行できない．がpCloud は CLI clinentもあるので今度こそビルドしてみる．

[pCloud Console Client](https://github.com/pcloudcom/console-client) ビルドの方法も極めてわかりやすく支持された手順でコンパイルして

```bash
$ pcloudcc -u username -p
```

を実行すればhomeにpCloudDriveがmountされている．


```bash
$ ls ~/
 Applications   Documents   mathematica   pCloudDrive   prime	 Templates  'Wolfram Mathematica'
 Desktop        Downloads   Music	  Pictures      Public	 Videos
```

おいおい，使いやすいように設定してゆこう．

## apt系のアプリケーション

以下のアプリケーションはaptからinstallする．

* libreoffice
* thunderbird + lightning
* texstudio
* emacs
* gnuplot

## 容量

これらを全部入れたあとで容量を調べると

```bash
$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root       118G   14G   99G  13% /
devtmpfs        1.8G     0  1.8G   0% /dev
tmpfs           2.0G     0  2.0G   0% /dev/shm
tmpfs           2.0G  8.5M  1.9G   1% /run
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/mmcblk0p1  253M   53M  200M  21% /boot
tmpfs           391M  4.0K  391M   1% /run/user/1001
```

初期状態が2G程度だった(と思う)ので，10GB強が追加分かな．