Raspberry Pi2/ラズベリーパイ2にFedoraをインストール

Raspberry pi2にFedoraがインストールできるという情報を入手したので2台目を購入してインストールを行いました。

以前はpidoraというものがありましたが、こちらの更新は停止していてraspberry pi2には対応していません。
しかしその間にfedoraそのものがraspberry pi2にインストールできるようになっていたのです。
嬉しい限りです。

今回はraspberry pi2にfedoraをインストールして基本設定を行うところまでを行います。

インストール用イメージの作成

まずはディスクイメージを作成します。
今回はFedora Image Builder for Raspberry Pi 2というスクリプトを利用してイメージを作成します。

このスクリプトを実行するにはdebian系のOSが必要になります。
中で利用しているコマンドに依存しているようです。
手順はこちらのサイトが参考になります。

私はVirtual Boxにubuntuをインストールして実行しました。
いくつかパッケージが必要なので以下のコマンドで必要なパッケージのインストールを行ってください。

# apt-get xzdec git kpartx  

Linuxに慣れている方には問題とならない箇所かもしれませんが、一点注意。
settings.confファイルにある容量の設定には気をつけてください。

利用しているmicro sdにもよりますが、32GBのmicro sdを利用する場合には概ね以下のように設定すると良いと思います。

BOOTSIZE=200  
ROOTSIZE=29500  
COMPRESS=0  

私は嫌な予感がするなぁ〜と何も考えずに設定を行ったために、/以下の容量が3.6GBになり、追加でパーティションを切ることになりました。

パーティションサイズを指定するところで気づく方もいると思いますが、イメージの作成に結構容量を食います。
仮想マシン上にも領域を確保するとディスクがしんどいので共有フォルダを利用して、ホストマシン側の領域でスクリプトを実行することをお勧めします。

またもしCentOS等のRedhat系のOSからスクリプトを実行したい場合には以下のサイトを参考にしてください。
Linux Install Memo

中を開いて自分で修正するという、これこそインフラ屋さんという感じです。すごい。

Raspberry PIの起動

ディスクイメージを作成したら、SDへ書き込みraspberry piにセットします。
ここで、一つ注意点。

Micro SDへの書き込みはWindowsマシンから行うことをお勧めします。
私はMac Book Proから書き込みを行ったところraspberry piがディスクを上手く認識してくれずに起動しませんでした。

基本的には以下のページと同様の手順で起動までを行うと良いです。
Raspberry Pi/ラズベリーパイ にFedora(Pidora)をインストール

Fedora初期設定

マシンを起動したら初期設定を行っていきます。
最初に何点かインストール時の設定が聞かれますが、見てわかると思うので割愛します。
raspbianと違ってキーボードの認識も正しく行われるのでストレスが溜まらないのは個人的に評価高いです。

あとは通常のredhat系OSと同じように設定を行っていきます。

ネットワーク設定

最初にネットワーク設定を行い、固定IPを降りつつDNSgoogleDNSを指定します。

[root@localhost ~]# nmcli c add type ethernet ifname eth0 con-name eth0  
[root@localhost ~]# nmcli connection mod eth0 ipv4.method manual ipv4.addresses 192.168.1.12/24 ipv4.gateway 192.168.11.1 ipv4.dns 8.8.8.8  
[root@localhost ~]# nmcli c up eth0  
[root@localhost ~]# systemctl restart NetworkManager  
[root@localhost ~]# systemctl restart network  

nmcli cになっていたりconnectionになっていたりしますが、意味は同じです。
modと書いてある部分もmodifyでもmでも良いです。

最後のrestartは不要かもしれませんが、不安なので行っています。

ホスト名設定

ホスト名の設定を行います。

[root@localhost ~]# nmcli g hostname fedora-pi  
[root@localhost ~]# hostname  
fedora-pi  

パッケージ更新とインストール

パッケージの更新とよく使うパッケージのインストールを行います。

[root@localhost ~]# vi /etc/dnf/dnf.conf  
[root@localhost ~]# cat /etc/dnf/dnf.conf   
[main]  
gpgcheck=1  
installonly_limit=3  
clean_requirements_on_remove=true  
fastestmirror=true  
[root@localhost ~]# dnf upgrade  
[root@localhost ~]# dnf install wget tar less  

なんとFedora22からはyumではなくdnfというものを利用するようになっています。
これはkernelが4になったことによるものだそうです。

最初に設定しているのはfastestmirror=trueの追加です。
これによりfastestmirrorが有効になります。

dnf upgradeはyum updateと同じです。
fedora22のminimalではtarもlessも入っていなかったためインストールしています。
lessがないのには驚きました。

そのうちCentOSもdnfというものになるんでしょうかね。

ユーザ追加

管理用ユーザの追加を行います。

[root@localhost ~]# useradd raru  
[root@localhost ~]# passwd raru  
ユーザー raru のパスワードを変更。  
新しいパスワード:  
新しいパスワードを再入力してください:  
passwd: すべての認証トークンが正しく更新できました。  
[root@localhost ~]# usermod -G wheel raru  

wheelがredhat系の管理ユーザ用グループです。
raspbianではadmというグループでしたね。

root設定

wheelグループのものだけがroot化できるように設定します。

[root@localhost ~]# cp /etc/pam.d/su/etc/pam.d/su.org  
[root@localhost ~]# vi /etc/pam.d/su  
[root@localhost ~]# diff /etc/pam.d/su.org /etc/pam.d/su  
6c6  
< #auth       required    pam_wheel.so use_uid  
---  
> auth     required    pam_wheel.so use_uid  

ssh設定

鍵認証のみを許すように設定します。

[root@localhost ~]# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.org  
[root@localhost ~]# vi /etc/ssh/sshd_config  
[root@localhost ~]# diff /etc/ssh/sshd_config.org /etc/ssh/sshd_config  
49a50  
> PermitRootLogin no  
79c80,81  
< PasswordAuthentication yes  
---  
> PasswordAuthentication no  
> PermitEmptyPasswords no  
[root@localhost ~]# systemctl restart sshd  

このあたりはもう毎度おなじみですね。

ssh用鍵の作成

先ほど作成したユーザの鍵を作成します。

[root@localhost ~]# su - raru  
[raru@fedora-pi ~]$ ssh-keygen -t rsa  
Generating public/private rsa key pair.  
....  
[raru@fedora-pi ~]$ mv ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys  
[raru@fedora-pi ~]$ chmod 600 ~/.ssh/authorized_keys  
[raru@fedora-pi ~]$ cat ~/.ssh/id_rsa  

cronの設定

最新のredhat系OSではcronがanaconになっているので使い慣れているnoanacronにもどします。

[root@localhost ~]# dnf remove cronie-anacron  
[root@localhost ~]# dnf install cronie-noanacron  

これで基本的な設定は完了です。

OverClockテスト

今回購入したraspberry piのケースにはファンが付いているので、せっかくだからover clockを試してみたいと思います。
これも先ほど参考にさせていただいたサイトのpi2 fedora22 でOCという記事を参考にしました。

まずはover clock前の計測です。

[root@localhost ~]# dnf install gcc perl-Time-HiRes  
[root@localhost ~]# cd /usr/local/src  
[root@localhost src]# wget https://byte-unixbench.googlecode.com/files/UnixBench5.1.3.tgz  
[root@localhost src]# tar xvzf UnixBench5.1.3.tgz  
[root@localhost UnixBench]# cd UnixBench  
[root@localhost UnixBench]# ./Run  

それぞれCPU1つと全部合わせてのスコアです。
System Benchmarks Index Score 115.4
System Benchmarks Index Score 285.

当たり前ですがコア数が4でも単純に4倍にはならないのですね。
続いてover clockの設定と計測です。

[root@localhost UnixBench]# dnf install cpufrequtils  
[root@localhost UnixBench]# cpupower frequency-info  
...  
  current policy: frequency should be within 600 MHz and 900 MHz.  
                  The governor "powersave" may decide which speed to use  
...  
[root@localhost UnixBench]# cpupower frequency-set -g ondemand  
Setting cpu: 0  
Setting cpu: 1  
Setting cpu: 2  
Setting cpu: 3  
[root@localhost UnixBench]# cpupower frequency-info  
...  
  current policy: frequency should be within 600 MHz and 900 MHz.  
                  The governor "ondemand" may decide which speed to use  
...  
[root@localhost UnixBench]# ./Run  

System Benchmarks Index Score 159.3
System Benchmarks Index Score 397.7

性能は1.4倍くらいにあがっている感じですかね。
CPUの温度は最大で47度まで上昇しました。
通常時が33度くらいなので、そこそこ温まったようです。

ただ参考サイトの方の実験では64度まで上昇しているようでしたので、ファンの効果はなかなかたかそうですね。
ひとまずはこのover clockさせた設定のまま稼働させてみようと思います。

パーティションの拡張

こちらはディスクイメージ作成を正しく行った方には不要です。
私は正しく行わなかった方なので必要でした。

microsdが32GBあるのに、システム全体で4GBくらいしか容量を使用しておらず残りが無駄になってしまっていたので、パーティションを追加していきます。
ルートのパーティションを拡張することも考えたのですが、インストールCDをブートしてどうこう書いてあったので、raspberry piのブートCDってなんだよ。。。ってことになり諦めました。

# ディスクのデバイス名を確認  
[root@localhost ~]# fdisk -l  
...  
Device         Boot   Start      End  Sectors  Size Id Type  
/dev/mmcblk0p1         2048   411647   409600  200M  e W95 FAT16 (LBA)  
/dev/mmcblk0p2       411648  7784447  7372800  3.5G 83 Linux  
[root@localhost ~]# fdisk /dev/mmcblk0  
  
fdisk (util-linux 2.26.2) へようこそ。  
ここで設定した内容は、書き込みコマンドを実行するまでメモリのみに保持されます。  
書き込みコマンドを使用する際は、注意して実行してください。  
  
  
コマンド (m でヘルプ): n  
パーティションタイプ  
   p   基本パーティション (2 プライマリ, 0 拡張, 2 空き)  
   e   拡張領域 (論理パーティションが入ります)  
選択 (既定値 p): p  
パーティション番号 (3,4, 既定値 3): 3  
最初のセクタ (7784448-62333951, 既定値 7784448):   
最終セクタ, +セクタ番号 または +サイズ{K,M,G,T,P} (7784448-62333951, 既定値 62333951): +26624M  
  
新しいパーティション 3 をタイプ Linux、サイズ 26 GiB で作成しました。  
  
コマンド (m でヘルプ): p  
ディスク /dev/mmcblk0: 29.7 GiB, 31914983424 バイト, 62333952 セクタ  
単位: セクタ (1 * 512 = 512 バイト)  
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト  
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト  
ディスクラベルのタイプ: dos  
ディスク識別子: 0x000611c3  
  
デバイス       起動 開始位置 最後から セクタ サイズ Id タイプ  
/dev/mmcblk0p1          2048   411647   409600   200M  e W95 FAT16 (LBA)  
/dev/mmcblk0p2        411648  7784447  7372800   3.5G 83 Linux  
/dev/mmcblk0p3       7784448 62310399 54525952    26G 83 Linux  
  
コマンド (m でヘルプ): w  
パーティション情報が変更されました。  
ioctl() を呼び出してパーティション情報を再読み込みします。  
パーティション情報の再読み込みに失敗しました。: デバイスもしくはリソースがビジー状態です  
  
カーネルは古い情報を使用しています。新しい情報を利用するには、システムを再起動するか、もしくは partprobe(8) または kpartx(8) を実行してください。  
  
[root@localhost ~]# reboot  
  
# パーティションが増えていることを確認  
[root@fedora-pi ~]# fdisk -l /dev/mmcblk0  
Disk /dev/mmcblk0: 29.7 GiB, 31914983424 bytes, 62333952 sectors  
Units: sectors of 1 * 512 = 512 bytes  
Sector size (logical/physical): 512 bytes / 512 bytes  
I/O size (minimum/optimal): 512 bytes / 512 bytes  
Disklabel type: dos  
Disk identifier: 0x000611c3  
  
Device         Boot   Start      End  Sectors  Size Id Type  
/dev/mmcblk0p1         2048   411647   409600  200M  e W95 FAT16 (LBA)  
/dev/mmcblk0p2       411648  7784447  7372800  3.5G 83 Linux  
/dev/mmcblk0p3      7784448 62310399 54525952   26G 83 Linux  
  
# 作成したパーティションext4としてファイルシステムを作成  
[root@fedora-pi ~]# /sbin/mkfs.ext4 /dev/mmcblk0p3   
mke2fs 1.42.12 (29-Aug-2014)  
Discarding device blocks: done                              
Creating filesystem with 6815744 4k blocks and 1703936 inodes  
Filesystem UUID: 07b79748-2a1b-4c02-8c8a-ba999c85cfa6  
Superblock backups stored on blocks:   
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,   
    4096000  
  
Allocating group tables: done                              
Writing inode tables: done                              
Creating journal (32768 blocks): done  
Writing superblocks and filesystem accounting information: done    
  
# 作成したパーティションをマウント  
[root@fedora-pi ~]# mkdir /data  
[root@fedora-pi ~]# vi /etc/fstab  
[root@fedora-pi ~]# cat /etc/fstab   
UUID=7c321d6b-f2b0-4783-9576-e3dfe657f9b3 / ext4 defaults,noatime 0 0  
/dev/mmcblk0p1 /boot vfat defaults 0 0  
/dev/mmcblk0p3 /data ext4 defaults,noatime 0 0  
[root@fedora-pi ~]# mount -a  

ちょっと長くなったのでコードにコメントを追加しました。
まずはデバイス名を取得して、パーティションを作成しています。
このときに +****Mという形でサイズを直接指定していますが、ここは空欄のままの方が良さそうです。
そうすると自動的に残りの容量全てを利用してパーティションを作成してくれます。

私はセレクタの容量への変換の仕方がよくわからず62333951というセレクタが、どれくらいの容量の拡張なのかわからなかったので指定しました。

あとはリブートしてから、先ほど作成したパーティションを初期化してマウントです。
ここでmkfsを実行し忘れるとエラーが発生してマウントできないので注意です。

今回の購入物

[amazonjs asin="B00T356SFO" locale="JP" title="Raspberry Pi 2 Model B (1)"]

[amazonjs asin="B011BWXGN8" locale="JP" title="Eleduino Raspberry Pi 2 Model B アクリル ケース ブラック Black +MINI ファン パッケージ"]

[amazonjs asin="B00YM3OOKS" locale="JP" title="Raspberry Piラズベリーパイ)用 1ポート USB 電源アダプター"]

[amazonjs asin="B00CES44EO" locale="JP" title="【Amazon.co.jp限定】Transcend microSDHCカード 32GB Class10 UHS-I対応 (無期限保証) Newニンテンドー3DS 動作確認済み TS32GUSDU1E (FFP)"]

今回はこの4つを購入して組み立てました。
アクリルケースは細くなっている部分が折れやすいので気をつけて下さい。

前回購入したものと違ってファンが付いていたり、固定用のゴム製の足がシールで同梱されていました。
ファンの性能はUnix Benchで試した通り、15度くらいは温度を下げてくれるみたいです。
また気になる音の方は非常に静音で、耳を近づけても音が聞こえないレベルです。

個人的には非常に満足しています。

ちなみ完成するとこんな感じ。
raspberrypi2_ファン

あとがき

Fedoraは普段使っていませんが、redhat系のOSなのでRaspbianと違って設定が非常にスムーズに進みます。
今回パーティション設定をミスしていしまったので、今後拡張した領域にいろいろとデータを保存していくことになりそうなのでSELinuxの設定が大変になりそうだなぁと今から少し憂鬱。

ですが、ついにRaspberry piでもfedoraが利用できるということで非常にサーバ用途として使いやすくなりました。
CentOSの対応が早く来てくれたらいいのになぁ、と思っております。

なんだかんだでfedoraは安定長期運用が用途ではないでしょうからねぇ。

参考サイト一覧

今回参考にさせていただいたサイト。
JUNKHACK
Linux Install Memo

両サイトとも非常に経験と知識を感じる内容でした。