MongoDB
fedora
docker
docker-compose
Raspberrypi3

Raspberry Pi3にFedora28を入れる

概要

RaspberryPi3B+にFedora28をインストールします。
RaspberryPi3のCPUは64bitサポートしているが、Raspbianは32bitOSしかないので、ラズパイを公式サポートしているFedora28をインストールしてみました。一通りの環境構築までのメモです。
Fedora公式WiKi

前提

  • Raspberry Pi3B+ (たぶんRPi3Bでも同じ)
  • Fedora Server28 (aarch64 supported images for Raspberry Pi 3)

注意点

  • GPIOやカメラは未サポート (次期バージョンまでに対応という話)
  • SDカードのACT LEDも動作しない
  • Wi-Fiはサポートされているが、ドライバの追加インストールが必要(今回は未実施。公式Q&A参照)

結局、ラズパイとして使うにはあまりお勧めできません。

OSのインストール

最初だけはLCDとキーボード接続して作業します。初期設定以降はSSHで作業しています。

SDカードの準備

OSのイメージをダウンロードし、SDカードに書き込みます。
aarch64 supported images for Raspberry Pi 3のFedora Server28を使用しました。ダウンロードし、7zなどで解凍し、rawファイルをイメージライティングソフトで書きこみます。ソフトは何でもいいですが、Etcherがシンプルで気に入っています。

インストール

SDカードを挿入し、電源を入れると最初文字が出た後、画面が消えて1分くらい何も表示されないが動いているので待ちます。SDカードのACT LEDも点滅しないので全く反応がない感じになります(^^;

しばらくすると、メニューが出ます。
(※起動しない場合の対処について、末尾に記載)

  • 言語設定 (39:Japanese → "c"ではなく"1"を入力)
  • ロケーション設定 (2:Asia、72:Tokyo)
  • IPアドレス設定 (1:IPアドレス、2:マスク、3:ゲートウエイ、6:DNS、8:設定反映)
  • rootパスワード設定
  • ユーザー追加

rootパスワードだけは必ず設定してください。デフォルトでrootログイン無効、ユーザーなしなのでrootパスワード設定しないとログインできず、詰みます。(何度か・・・:weary:)
ユーザー追加もできるが、ログインしてからでいいと思います。(フリーズ怖いし…)
たまに、フリーズするので、その時はSDカードフォーマットしてやり直すしかないと思います。
設定したら"c"で抜けると、ログイン画面が表示されます。
DHCPのままの場合は、ここで設定したrootでログインし、ifconfigでIPアドレス確認します。

以降、SSH接続可能。

初期設定

とりあえずrootでログインします。

ユーザーの追加(piとしました)

fedora
# useradd pi
# passwd pi

sudo設定
パスワード不要にする場合、以下のようにします。

# visudo
  %wheel        ALL=(ALL)       ALL  の行をコメントアウト
 %wheel  ALL=(ALL)       NOPASSWD: ALL の行を有効化

sudoが使えるようにwheelグループにユーザーを追加する

# groupadd wheel
# usermod -aG wheel pi

キーボード設定
いったん、jp106を設定し、さらに109に再設定します。

# localectl set-keymap jp106
# localectl set-keymap jp-OADG109A
# localectl set-locale LANG=ja_JP.utf8
# localectl  (確認)

ネットワーク設定の追加(DNS設定しておかないとインターネットに接続できない)

# nmcli device  (IFの確認)
# nmcli connection mod eth0 ipv4.dns 8.8.8.8
# nmcli device show eth0  (設定の確認)

DHCPから固定IPに変える場合、以下の項目を変える(DNSは例)

# vi /etc/sysconfig/network-scripts/ifcfg-eth0
    BOOTPROTO=static
    IPADDR=192.168.10.37
    PREFIX=24
    GATEWAY=192.168.10.1
    DNS1=8.8.8.8
    DNS2=4.4.4.4

いったん再起動する(# reboot)
以降、ユーザーで作業します。

設定の確認(任意)

$ uname -a
Linux localhost.localdomain 4.16.3-301.fc28.aarch64 #1 SMP Mon Apr 23 21:45:59 UTC 2018 aarch64 aarch64 aarch64 GNU/Linux
$ uname -r または 
$ cat /proc/version
4.16.3-301.fc28.aarch64
$ cat /etc/fedora-release
Fedora release 28 (Twenty Eight)

インターネット接続の確認。(DNSレコードが取得できればよい)

$ dig google.co.jp

SDカードサイズについて

配布されたイメージからインストールした場合、SDカードの全容量は認識されていないため、拡張するのであれば早めにしておいた方が(失敗したときの被害が少なく)よいと思います。
拡張方法は、こちらに記載しました。

アップデート

最初にfastestmirrorを指定する。

dnf.conf
$ sudo vi /etc/dnf/dnf.conf
  fastestmirror=true  を追記

アップデートする。初回は2時間くらいはかかります。
fedoraはyumではなくdnfを使用します。yumも使用できるようですが、python3に対応していないとのこと。
dnfはyumのエイリアスで内部的にはyumが動いているような形(正確な表現ではない)。
リポジトリ設定は/etc/yum.repos.dが使用されている。
正確な情報は公式等を確認してください!

$ sudo dnf -y update

時刻同期(crony)

$ sudo dnf install -y chrony
$ sudo systemctl start chronyd
$ sudo timedatectl status

開発環境等

vim

$ sudo dnf install -y vim
$ vim .bashrc
    alias vi='vim'
    alias sudo='sudo -E'  (sudo時もユーザーの設定を引き継ぐ)
$ source .bashrc

設定は~/.vimrcにします。詳細は割愛します。

gccなどまとめて入れる

$ sudo dnf groupinstall -y "Development Tools"
$ sudo dnf groupinstall -y "C Development Tools and Libraries"

トータルで30分くらいかかります。

python

最初から入っている。

$ python --version
$ python3 --version

git

$ sudo dnf install -y git

docker

最初から入っているものは古いので、いったん削除し、入れなおす。
手順は公式に従います。

$ sudo dnf remove -y docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine

インストールは1行で完了
$ curl -sSL https://get.docker.com | sh

ユーザー権限で起動できるようにする
$ sudo groupadd docker  (念のため)
$ sudo usermod -aG docker pi

サービス開始
$ sudo systemctl start docker
$ sudo systemctl enable docker

グループ設定反映のためターミナルを一度抜けて、再ログインする。

docker-compose

公式にはARM64用のイメージがないので、以下の手順でインストールします。
参考にしたサイト

$ sudo dnf install -y python-pip
$ sudo pip install pip --upgrade
$ sudo pip install docker-compose
$ vi .bash_profile
    export PATH=$PATH:/usr/bin
$ source .bash_profile

$ docker-compose version  (確認)

dockerやcompose使用時は、イメージがaarch64用じゃないと動かないので注意。
aarch64のtagを探すとよいです。

Node.js

公式手順に従います。

$ sudo dnf install -y nodejs
$ sudo npm install -g yarn

mongodb

$ sudo dnf install -y mongodb mongodb-server
$ sudo systemctl start mongod
$ sudo systemctl enable mongod
$ sudo systemctl status mongod

$ mongo  (確認)
>exit

起動しない場合

私がはまったことのメモ。参考になればという程度です。
・最初のブートログが以下で止まる場合、電源の容量が足りない可能性があります。

fb: switching to vc4drmfb from EFI VGA

右上に稲妻のマークが点滅していると、電圧低下のマークだそうです。わかるか!
電源を変えるか、HUBの場合はUSBケーブルを変えると改善する可能性があります。
私も接続機器によって電流可変する高性能HUBに安物のケーブルつけていて嵌りました。
※このログで調べると、Fedora26からスルーされているバグのようですが、本当にバグが原因の場合はあきらめるしかないかも。

・LANがつながらない場合
ifconfigでeth0は認識しているが、inet 192.168.xxx.xxxが出てこない場合、やはり電源を変えると動く可能性があります。初回ブート時にうまく認識できないと、その後何してもダメかもしれない。
ドライバ入れるとか頑張るより、電源変えて、SDフォーマットしてセットアップしなおすほうが早いかもしれません。

参考