概要
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パスワード設定しないとログインできず、詰みます。(何度か・・・)
ユーザー追加もできるが、ログインしてからでいいと思います。(フリーズ怖いし…)
たまに、フリーズするので、その時はSDカードフォーマットしてやり直すしかないと思います。
設定したら"c"で抜けると、ログイン画面が表示されます。
DHCPのままの場合は、ここで設定したrootでログインし、ifconfigでIPアドレス確認します。
以降、SSH接続可能。
初期設定
とりあえずrootでログインします。
ユーザーの追加(piとしました)
# 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を指定する。
$ 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フォーマットしてセットアップしなおすほうが早いかもしれません。