Raspberry Pi 3 へCentOS7導入からWifi無線LAN接続まで設定メモ

Raspberry Piに無線LANが搭載されたということで、部屋に一台置きたいと思い衝動買いしました。

こちらの記事をとっかかりにRaspberry Pi 3にCentOS7を入れて動かしたいと思ったのですが、どうやら無線LANはそのままでは使えないよう。 Raspberry Pi 3でCentOS | Japanese Raspberry Pi Users Group

ということでCentOS7をインストールして無線LANのドライバ読み込んでWifi接続できるところまで設定してみました。

なお、手元のマシンはMac Book Airです。

開封

Amazonプライムで注文当日に届きました。思ったより小さくて軽いというのが第一印象です。

iPhone6との比較

f:id:yomon8:20160417142239j:plain

内容物(箱出しの時点でケースに格納された状態でした)

f:id:yomon8:20160417142245j:plain

OSイメージの準備

OSイメージのダウンロード

事前準備として以下のURLからOSイメージをダウンロードします。

http://buildlogs.centos.org/centos/7/isos/armhfp/

OSイメージの展開

ダウンロードしたOSイメージを展開します。解答にはxzコマンドが必要なのでHomebrewでインストールしておきます。

$ brew install xz
$ xz -d CentOS-Userland-7-armv7hl-Minimal-1602-RaspberryPi3.img.xz

SDカードに書き込み

SDカードをMacに差して、FATでフォーマットして、アンマウントしておきます。

$ df
#----中略
/dev/disk3s2   120503488      4928 120498560     1%        0       0  100%   /Volumes/CENTOS7  100%   /Volumes/CENTOS7
$ diskutil umount /dev/disk3s2

SDカードにOSイメージをSDカードに書き込みます。

$ sudo dd if=CentOS-Userland-7-armv7hl-Minimal-1602-RaspberryPi3.img of=/dev/disk3  bs=8192
$ sync
393216+0 records in
393216+0 records out
3221225472 bytes transferred in 492.534314 secs (6540104 bytes/sec)

CentOS起動+ログイン

SDカードをRaspberry Pi 3に差し込んで起動します。私の場合はHDMIのモニタを持っていなかったのでテレビに接続して作業しました。

しかし、後述の通りSSH設定無しでも使える状態になっているので、ルーターからIPアドレスを確認できるのならモニタ無くても作業可能です。

CentOS Linux 7 (Core)
centos-rpi3 login: root
Password: centos

SSH設定

有線LANで繋いだら問題無く認識DHCPでインターネット接続できるようになったのでとりあえずSSH設定からと思ったら、設定無しでも接続できます。

IPアドレスだけ確認しておきます。

# nmcli d show eth0
IP4.ADDRESS[1]:    192.168.x.x

手持ちのMacから接続します。

$ ssh root@192.168.x.x

Rootパーティションのサイズ拡張

今回SDカードは64GBあるのに、dfで見たところRootパーティションが2GBしか取られていませんでした。

# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root       2.0G  682M  1.2G  38% /
devtmpfs        459M     0  459M   0% /dev
tmpfs           463M     0  463M   0% /dev/shm
tmpfs           463M  6.2M  457M   2% /run
tmpfs           463M     0  463M   0% /sys/fs/cgroup
/dev/mmcblk0p1  300M   66M  235M  22% /boot
tmpfs            93M     0   93M   0% /run/user/0

READMEにはこう書いてあります。

== CentOS 7 userland ==

If you want to automatically resize your / partition, just type the following (as root user):
touch /.rootfs-repartition
systemctl reboot

しかしこの方法したらKernel Panicで起動しなくなってしまいました。

なので、parted使ってrootパーティション拡張します。

# parted /dev/mmcblk0
GNU Parted 3.1
Using /dev/mmcblk0
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) p                                                                
Model: SD SA64G (sd/mmc)
Disk /dev/mmcblk0: 61.9GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type     File system     Flags
 1      1049kB  316MB   315MB   primary  fat16           lba
 2      316MB   852MB   537MB   primary  linux-swap(v1)
 3      852MB   3000MB  2147MB  primary  ext4

(parted) rm 3                                                             
Error: Partition(s) 3 on /dev/mmcblk0 have been written, but we have been unable to inform the kernel of the change,
probably because it/they are in use.  As a result, the old partition(s) will remain in use.  You should reboot now
before making further changes.
Ignore/Cancel? i                                                          
(parted) p                                                                
Model: SD SA64G (sd/mmc)
Disk /dev/mmcblk0: 61.9GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End    Size   Type     File system     Flags
 1      1049kB  316MB  315MB  primary  fat16           lba
 2      316MB   852MB  537MB  primary  linux-swap(v1)
(parted) mkpart primary 852M 61.9G                                             
Error: Partition(s) 3 on /dev/mmcblk0 have been written, but we have been unable to inform the kernel of the change,
probably because it/they are in use.  As a result, the old partition(s) will remain in use.  You should reboot now
before making further changes.
Ignore/Cancel? i                                                          
(parted) p                                                                
Model: SD SA64G (sd/mmc)
Disk /dev/mmcblk0: 61.9GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type     File system     Flags
 1      1049kB  316MB   315MB   primary  fat16           lba
 2      316MB   852MB   537MB   primary  linux-swap(v1)
 3      852MB   61.9GB  61.1GB  primary  ext4

(parted) quit                                                             
Information: You may need to update /etc/fstab.
# reboot

この時点ではまだファイルシステムは拡張されていません。

# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        2.0G  682M  1.2G   38% /
devtmpfs         459M     0  459M    0% /dev
tmpfs            463M     0  463M    0% /dev/shm
tmpfs            463M  6.1M  457M    2% /run
tmpfs            463M     0  463M    0% /sys/fs/cgroup
/dev/mmcblk0p1   300M   66M  234M   22% /boot
tmpfs             93M     0   93M    0% /run/user/0

fdiskで見るとパーティションテーブルは書き換わっています。

# fdisk -l /dev/mmcblk0

Disk /dev/mmcblk0: 61.9 GB, 61924704256 bytes, 120946688 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
Disk label type: dos
Disk identifier: 0x000703bf

        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1            2048      616447      307200    c  W95 FAT32 (LBA)
/dev/mmcblk0p2          616448     1665023      524288   82  Linux swap / Solaris
/dev/mmcblk0p3         1665024   120946687    59640832   83  Linux

あとはresize2fsでファイルシステムを拡張します。

# resize2fs /dev/mmcblk0p3
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/mmcblk0p3 is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 8
The filesystem on /dev/mmcblk0p3 is now 14910208 blocks long.

これでrootパーティションが大きくなりました。

# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        56G  689M   53G   2% /
devtmpfs        459M     0  459M   0% /dev
tmpfs           463M     0  463M   0% /dev/shm
tmpfs           463M  6.1M  457M   2% /run
tmpfs           463M     0  463M   0% /sys/fs/cgroup
/dev/mmcblk0p1  300M   66M  234M  22% /boot
tmpfs            93M     0   93M   0% /run/user/0

NTP設定

時間も調整しておきます。時間調整を行わないと後述の作業でcurlコマンドがSSL接続できなくてエラーになります。

NTPをインスト−ルします。

# yum install -y ntp

viでntp.confを調整します。

# vi /etc/ntp.conf 

既存のエントリコメントアウトしてntpサーバ追加します。

#server 0.centos.pool.ntp.org
#server 1.centos.pool.ntp.org
#server 2.centos.pool.ntp.org
server -4 ntp.nict.jp
server -4 ntp1.jst.mfeed.ad.jp
server -4 ntp2.jst.mfeed.ad.jp
server -4 ntp3.jst.mfeed.ad.jp

ntpdを有効化して、タイムゾーン変更します。

# systemctl enable ntpd
# systemctl start ntpd
# cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
cp: overwrite '/etc/localtime'? y
# date
→時間設定の確認

Wifi接続

この時点ではwlan0が認識されていないので無線LAN用が利用できません。

# nmcli d
DEVICE  TYPE      STATE         CONNECTION 
eth0    ethernet  connected     eth0       
lo      loopback  unmanaged     -- 

githubから必要なFirmwareをダウンロードして配置します。

# yum -y install git
# git clone https://github.com/RPi-Distro/firmware-nonfree.git
# mv /lib/firmware/brcm{,.org}
# cp -R firmware-nonfree/brcm80211/brcm /lib/firmware/brcm

rpi-updateをダウンロードして実行します。この中でFirmwareのアップデートなどが行われます。アップデート後は再起動します。

# curl -L --output /usr/bin/rpi-update https://raw.githubusercontent.com/Hexxeh/rpi-update/master/rpi-update
# chmod +x /usr/bin/rpi-update
# rpi-update
# reboot

再起動後、見てみるとwlan0が認識されているのがわかります。

# nmcli d
DEVICE  TYPE      STATE         CONNECTION 
eth0    ethernet  connected     eth0       
wlan0   wifi      disconnected  --         
lo      loopback  unmanaged     -- 

後はPCなどと同じように接続設定をしていきます。

# nmcli d wifi
-> Wifiアクセスポイントのリストが一覧されます
# nmcli d wifi connect <your_uuid> password <your_keyphrase>
# nmcli d
DEVICE  TYPE      STATE      CONNECTION 
eth0    ethernet  connected  eth0       
wlan0   wifi      connected  <your_uuid>    
lo      loopback  unmanaged  --  

最後にwlan0に割り当てられたIPを確認します。

# nmcli d show wlan0

所感

yumでパッケージインストールするのに時間凄いかかります。見た感じはI/Oバウンド。もっと良いSDカード買えば解消するのかな。まぁ、I/O沢山でるような用途で使うのでは無いのでしょうが。

発熱少ないのはとても嬉しいです。部屋の机の片隅のコンセントから電源引いて無線LAN接続で起きっぱなしにしてます。

完全に衝動買いなので、何に使うかを考えないといけないのですが、まずはLチカからやってみました。

yomon.hatenablog.com

参考URL

SpecialInterestGroup/AltArch/Arm32/RaspberryPi3 - CentOS Wiki

Installing Fedora on the Raspberry Pi 3 | hobo.house

CentOSにntpサーバを入れて、日本標準時刻に自動的に合わせるためのメモ - Qiita