Edited at

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フォーマットしてセットアップしなおすほうが早いかもしれません。


参考