Raspberry Pi3にopenSUSEを入れる

# 概要
Raspberry Pi3は64bitOSが動くということで、ラズパイを公式サポートしているopenSUSEを入れてみました。
ただ、色々といまいちでした。中途半端な記事になりますが、メモとして残します。
動けばFedoraより軽くてよさそうな気はします。

# 前提・注意点
- Raspberry Pi3B を推奨 
    - TumbleweedはRaspberry Pi3B+はeth0認識できずインストールできない
    - Leap15はRaspberry Pi3B+でもインストールできた
- 基本的にSSHで操作しています。GUIは使用しない
    - GUI使う場合、超重いので注意(^^;
- LANは有線か、無線のどちらかしか使えない
    - 正確には、無線を有効化すると有線も認識はしているがつながらない。ネットワークを分けたりすれば使えるのかもしれません。

結局、現状メリットはなさそうです。

# セットアップ
### OSの種類について
[ラズパイ用の公式Wikiはこちら](https://en.opensuse.org/HCL:Raspberry_Pi3#Installing_the_64-bit_openSUSE_Leap_image)

下記2種類があります。

- Leap
- Tumbleweed

Leapが通常のバージョンごとのリリースで、最新がLeap15、ひとつ前はなぜかLeap42.3。
Tumbleweedはローリングリリース版という、常時最新にアップデートされていく形式。バージョンはありません。Leapの最新版=Tumbleweedになるのかな。(動作が違う気がするけども・・・)

それぞれに対し、以下のパッケージがあります。(説明は正確ではないかもしれません)

- JeOS : 仮想環境向けの最小構成版(GUIなし)。(Just Enough Operating System)
- E20 : Enlightenment のE20を採用したもの(?)
- XFce : 軽量デスクトップ環境
- LXQT : Tumbleweed 版のみ
- X11 : 統合デスクトップ環境なし(?)

JeOSとE20の2つを試しましたが、GUIは非常に重いのでラズパイでは無理ではないかと思います。JeOSは基本的に何も入っていないので不便。E20をCUIで使うのが無難。
でもたぶんSUSEはWindowsライクのGUIが売りなのでメリットないかな。

E20はTumbleweedを使用しています。JeOSはLeap15を使用しています。(ほかの組み合わせは試していません)
基本的な操作方法は同じです。

### インストール
インストールは、LCDとキーボードを接続して行います。
[公式Wiki](https://en.opensuse.org/HCL:Raspberry_Pi3#Installing_the_64-bit_openSUSE_Leap_image)からOSイメージをダウンロードし、7z等で解凍して、rawファイルをSDカードに書き込みます。

電源入れると、メニューが表示され、Enterを押すか、そのまま待つと、数分でログイン画面まで進みます。
初期状態では、ID：root、パスワード：linuxでログイン可能。

### 初期設定
E20の場合、WindowsライクのGUIになっていて、メニューから「Preferences」を選ぶと各種設定が可能です。ターミナルもメニューから起動できます。日本語設定をするとフォント等をダウンロードするため非常に時間がかかります。~~フォントなんてどうせ1つしか使わないんだから全部入れる必要ないのに。~~しかも大して日本語化されない。

JeOSの場合、とりあえずログイン後、ifconfigでIPアドレス確認し、SSHでログイン可能。
yastで簡易GUI画面が出ます。パッケージ管理コマンドはzypper。その他、Linuxなのでコマンドはほぼ同じ。

yastで初期設定を行います。

```
# yast
```
以下のような画面になるので、項目を選んでいきます。基本的に、TABキーでブロックの移動、ブロック内は十字キーで移動します。削除はBackSpaceが使えたり使えなかったり。使えないときはDeleteで消せます。
テンキーも使える画面と使えない画面がある。
以下画像では日本語になっていますが、初期状態では英語です。
![キャプチャ.JPG](https://qiita-image-store.s3.amazonaws.com/0/276188/4a05be43-58cd-8a75-292e-00c03d4a36cb.jpeg)


- SystemのDate and Timeでロケーションの設定。Asia、Japanを選択し、OK。
- SystemのLanguagesで言語設定。Japaneseを選び"Adapt Keyboard Layout to Japanese"にチェック(Enter)し、OK。
    - フォントの追加ダウンロードが走る。
    - 最初に5分くらい何も起こらず、フリーズしたように感じるが動いているはず。
    - インストールは結構時間かかる。完了後、F9で抜けて、再度入ると日本語化されている。
- SystemのNetworkでネットワーク設定。wi-fiの設定も可能ですが、有効化すると・・・
    - ネットワーク設定は完了後、自動でIF再起動するので接続切れます。

設定終わったら、F9で抜ける。

ユーザーを追加する(piとした)。-mをつけないとユーザーディレクトリが追加されないので注意。

```
useradd -m pi
passwd pi
```
sudoを使えるようにする。パスワード不要にする場合は、以下のようにする。

```
visudo
    %wheel ALL=(ALL) ALL  をコメントアウトし
    %wheel ALL=(ALL) NOPASSWD: ALL  を有効化する
```
wheelにユーザーを追加

```
groupadd wheel
usermod -aG wheel pi
```
ネットワークの追加設定。
デフォルトゲートウエイとDNSを設定する。(無線使用時は、eth0をwlan0にする)

```
vi /etc/sysconfig/network/ifroute-eth0  (新規作成)
    default 192.168.10.1 - eth0

vi /etc/sysconfig/network/config
    NETCONFIG_DNS_STATIC_SERVERS="8.8.8.8 4.4.4.4"
```

再起動し、以降ユーザーでログイン。

### アップデート

```
sudo zypper refresh
sudo zypper -n update
```
初回は20分くらいかかる。完了後、一度再起動する。
カーネルアップデート

```
sudo zypper -n dup
```
10分くらいで終わる。

### 確認

```
uname -a
cat /etc/os-release
```

## 開発環境等
### vim

```
sudo zypper -n in vim
```

### git

```
sudo zypper -n in git
```
### Node.js

```
sudo zypper -n in nodejs8  (バージョン8の場合)
node -v
npm -v
```
### yarn 
[公式手順](https://yarnpkg.com/en/docs/install#alternatives-stable)

```
sudo curl -o- -L https://yarnpkg.com/install.sh | bash
source .bashrc  (PATHの設定まではされるが、読み込まれない)
yarn --version
```
### mongodb
JeOSだとインストールできない(パッケージが見つからない)。E20では問題なかった。

```
sudo zypper -n in mongodb
```

### docker
[公式アナウンス](http://docs.docker.jp/engine/installation/index.html#platform-support-matrix)ではdocker-eeのみサポートとなっているが、docker-ceも普通にいれられる。
[手順は公式ドキュメント通り](http://docs.docker.jp/engine/installation/linux/SUSE.html)

```
sudo zypper -n in docker
sudo systemctl start docker
sudo systemctl enable docker

ユーザー権限で使えるようにする
sudo gpasswd -a pi docker
sudo reboot
```
コンテナから外部ネットワークに接続できるようにするため、ファイアーウォールの設定を変更する

```
sudo vi /etc/sysconfig/SuSEfirewall2
    FW_ROUTE="yes"
```

### docker-compose
どうやっても無理なもよう。
[公式にはサポートされている](https://software.opensuse.org/package/docker-compose)
入れるとエラーになる。

TumbleweedのE20の場合で、一応動いた(と思われる)メモを残します。
超初心者で申し訳ないです:sweat:
[公式ページ](https://software.opensuse.org/package/docker-compose)でダウンロードからソースを取得しビルドします。ものすごい時間かかる。

```
sudo zypper -n in rpm-build
wget http://download.opensuse.org/repositories/openSUSE:/Factory/standard/src/docker-compose-1.21.2-2.1.src.rpm
rpmbuild --rebuild docker-compose-1.21.2-2.1.src.rpm

依存関係のエラーが出るので、全部入れる(^^;
sudo zypper -n in python2-PyYAML python2-backports.ssl_match_hostname \
python2-dockerpty python2-cached-property python2-docopt python2-enum34 \
python2-ipaddress python2-jsonschema python2-mock python2-pytest \
python2-texttable python3-PyYAML python3-cached-property \
python3-dockerpty python3-docopt python3-jsonschema python3-pytest \
python3-setuptools python3-texttable

rpmbuild --rebuild docker-compose-1.21.2-2.1.src.rpm
build完了時に、出力先が表示される。デフォルトでは~/rpmbuild/RPMS/noarch/ に入るはず。

cd rpmbuild/RPMS/noarch
python2とpython3の2つのパッケージができているが、python2のほうは動かなかった。
sudo rpm -ivh python3-docker-compose-1.21.2-2.1.noarch.rpm

依存関係解消
sudo zepper -n in python3-PySocks

sudo rpm -ivh python3-docker-compose-1.21.2-2.1.noarch.rpm

インストールの確認
rpm -qi python3-docker-compose
rpm -ql python3-docker-compose

バージョン確認
docker-compose --version
```

# 参考

- [公式サイト](https://www.opensuse.org/)
- [公式日本語ポータル](https://ja.opensuse.org/Portal:Japanese)
- [Narrow Escape](https://www.hiroom2.com/opensuse/opensuse-leap-15-ja/)