なんか、勧誘の若いにぃちゃんが、「子供産まれまして~」「お祝いと思って3か月だけでも取ってもらえませんか」みたいな感じでスマホで子供の写真見せながら攻めてきましたw
おめでたい話で攻めてくるのはずるいと思いましたが、最近自分の周りでは子供が出来たことで、または子供が産まれたことで不幸な結果となっているなぁ・・・なんて思ったら、本当にお祝いしたい気持ちが湧いてきてしまって3か月だけという約束で取り始めました。
家内開発用サーバーを新しく
さて、昨年作業用のノートPCであるLet'sNoteが壊れてMouseComputerのノートPCを買って、お外ではVAIO Type PにLinuxMint17.2を入れ弄っているうちにバッテリーが壊れ新しい巨大バッテリーを買ったらデザインを損ね、外は寒いしVAIOさん使わなくなり、かといって家中でMouseComputer使うかと言ったら、体調不良(主に花粉症)で、なんとなく趣味的プログラミングというかお勉強がのっぺりと停滞気味。
しかしね、春って季節は心を動かすんだよ。
なんか始めなくちゃ、ってそわそわするんだよ。
そんなわけで、手始めに家内サーバーを新しくしてみようかと。
そして俺の手元にあるのがRaspberryPi3!小せぇぇぇ!
今家内サーバーは超古いLet'sNoteです。PentiumMとか言うCPUです。古りぃぃぃ!
そしてこのLet'sNoteには32bitOSしか載せられないので、新しいCentOS7は導入できないんだって。なんだとぅ?!
というわけで、RaspberryPi3にCentOS7を導入してサーバー化してみます。
やりたいこと一覧
RaspberryPi3でやってみたいことは以下かな。
- GitとGitBucketを導入してソース管理
- Jenkins2を導入してCI
- テスト自動化にあたってはEtoE意識してSelenium導入したいね
- Redmine導入して、知見貯め込みや進捗・問題管理
う~ん、2番目と3番目がちょっと自信無いなぁ。
まずはOSのインストール
OSインストールにあたって、自分が用意したものは以下。
- RaspberryPi3とそれ用のACアダプター
- MicroSDカード32GB
- カードリーダー
- OSイメージ
- PC(Windows10)
- イメージ書き込みソフト「DD for Windows」
- イメージ解凍ソフト「7zip」
RaspberryPi3用のCentOS7のOSイメージを以下から取ってくる。
上記の「AltArch Release」の「armhfp」の一番右に「RaspberryPi3(img)」というリンクがあるので、それをクリックしてダウンロード。
続いて、そのイメージを7zip使って解凍。
いよいよ、MicroSDカードにイメージを焼く。
DD for Windowsの実行ファイルであるDDWin.exeを選択して右クリックして表示されるメニューの「プロパティ」を選択して開く画面の「互換性」タブで、「互換モード」というところを「Windows XP(Service Pack 3)」に変更して「OK」ボタンクリック。
これで、DD for Windowsを起動すると「対象ディスク」にMicroSDカードのドライブが現れる。
あとはDD for Windowsの右の「ファイル選択」ボタンクリックで、解凍したCentOS7のイメージを選択して「書込」ボタンクリックでOK。
なんか、「対象ディスクサイズより小さな~」「指定したディスクへイメージを書き込みます」とか「ディスクサイズが4GByteを超えています」の警告ダイアログ出るけど、すべて「はい」ボタンクリック。
ここまでがWindows10のPC上での作業。
いよいよ、RaspberryPi3にMicroSDカードをセット、HDMIケーブルでディスプレイ繋げて、USBキーボードも繋げて、有線LANケーブル繋げて、ACアダプター繋げてスイッチオン!
loginのプロンプトが表示されたら、root/centosでログイン。
有線LANの設定
最終的には無線LANで運用したいのだけれど、どうやらそのためにはGithubからそれ用のFirmwareをダウンロードしてくる必要がある。つまり、無線LANやるんだったら、まずは有線LANでネットにつなぐ必要があるのだ。
一時的とは言えどもIPは固定化したいので、以下のコマンドで設定ファイルを編集する。
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
変更前は以下。
TYPE="Ethernet"
BOOTPROTO="dhcp"
NM_CONTROLLED="yes"
DEFROUTE="yes"
NAME="eth0"
UUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
ONBOOT="yes"
そして変更後が以下。
TYPE="Ethernet"
BOOTPROTO="static"
NM_CONTROLLED="yes"
DEFROUTE="yes"
NAME="eth0"
UUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
ONBOOT="yes"
IPADDR="192.168.0.11"
NETWORK="255.255.255.0"
GATEWAY="192.168.0.1"
DNS1="192.168.0.1"
これでreboot
して、PCから192.168.0.11
へSSH出来ればOK。
無線LANの設定
まず、以下のコマンドを叩いてみると
# nmcli d
デバイス タイプ 状態 接続
eth0 ethernet 接続済み eth0
lo loopback 管理無し --
な感じで、やっぱりWiFiっぽい名前の接続が無い!つ~か、WiFiのデバイス自体内容に見える!
(これ見たとき、俺はRaspberryPi3ではなくRaspberryPi2掴まされたのでないか疑惑に襲われたwww)
これは、有線LANのところでも書いたけど、無線LANのデバイスを扱うためにFirmwareをダウンロードしてきてUpdateする必要があるのだ。つ~か、CentOS7イメージにこのFirmwareを含めてくれないものか。。。
つ~わけで、まずはFirmwareをダウンロード・・・の前に、そのFirmwareをGithubから持ってくるためにgitをインストール・・・の前にyumでシステムをupdateしとく。
# yum -y update
上記は多分30分くらいはかかると思う。
で、終わったらgitをインストール。
# yum -y install git
さて、お待ちかねのFirmwareを持ってきてゴニョゴニョやるのは、以下を参考にさせて頂いた。
一応書いておく。
# cd /root
# mkdir wifi
# cd wifi
# yum -y install git
# git clone https://github.com/RPi-Distro/firmware-nonfree.git
# mv /lib/firmware/brcm /lib/firmware/brcm.org
# cp -R firmware-nonfree/brcm80211/brcm /lib/firmware/brcm
次は、Firmwareをupdateするためのrpi-updateを取ってきて実行する。
# 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
上記のrpi-update
が結構時間長いのを追記しとく。
あとはreboot
してあげて、ログイン後に確認してみる。
# nmcli d
デバイス タイプ 状態 接続
wlan0 wifi 切断済み --
eth0 ethernet 接続済み eth0
lo loopback 管理無し --
wlan0が認識されてる!
やばい、まだWiFi接続してないけど感動して泣きそうになった。
俺が買ったの、ちゃんと3だったよ!wwwみたいな。
あとは接続設定。
以下のサイトの「Wifi接続設定」ってところを参考にさせて頂いた。
一応書いておくと以下の通り。
# nmcli d wifi
(wifiポイントが一覧表示される。この中に自分の家で使ってるものがある、はず!)
# nmcli d wifi connect <your_uuid> password <your_keyphrase>
# nmcli d
デバイス タイプ 状態 接続
wlan0 wifi 接続済み <your_uuid>
eth0 ethernet 接続済み eth0
lo loopback 管理無し --
# ifconfig
eth0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.0.11 netmask 255.255.255.0 broadcast 192.168.0.255
(中略)
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
(中略)
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255
(中略)
やばい、繋がった!
試しにPCから192.168.0.2へSSHすると・・・繋がらない!えwww
とりあえず、RaspberryPi3から有線LANケーブル引っこ抜いて再度PCから192.168.0.2へSSHすると・・・繋がった!あ、そうなの?
う~ん、しかしIPが192.168.0.2になってるのが気に入らん。
無線LANのIPアドレス固定化
サーバーは固定IPじゃないと何かとやりづらい。
というわけで、有線LANの時と同様に無線LAN使用時もIPアドレスを固定化してみる。
# vi /etc/sysconfig/network-scripts/ifcfg-<your_uuid>
変更前は以下。
HWADDR=XX:XX:XX:XX:XX:XX
ESSID="<your_uuid>"
MODE=Managed
KEY_MGMT=WPA-PSK
SECURITYMODE=open
MAC_ADDRESS_RANDOMIZATION=default
TYPE=Wireless
BOOTPROTO=dhcp
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=<your_uuid>
UUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
ONBOOT=yes
そして変更後が以下。
HWADDR=XX:XX:XX:XX:XX:XX
ESSID="<your_uuid>"
MODE=Managed
KEY_MGMT=WPA-PSK
SECURITYMODE=open
MAC_ADDRESS_RANDOMIZATION=default
TYPE=Wireless
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=<your_uuid>
UUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
ONBOOT=yes
IPADDR="192.168.0.101"
NETMASK="255.255.255.0"
GATEWAY="192.168.0.1"
DNS1="192.168.0.1"
変更したのはBOOTPROTOをdhcpからstaticへ。
追加したのが、IPADDRからDNS1までの4行。
これでreboot
して、PCから192.168.0.101
へSSH出来たよ。ひゃっほーぃ。
MicroSDカードの容量をフルに引き出す!
さて、このままだとSDカードの容量が枯渇する。なぜなら!
# df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/root 2.0G 658M 1.2G 36% /
devtmpfs 458M 0 458M 0% /dev
tmpfs 462M 0 462M 0% /dev/shm
tmpfs 462M 12M 450M 3% /run
tmpfs 462M 0 462M 0% /sys/fs/cgroup
/dev/mmcblk0p1 500M 53M 448M 11% /boot
tmpfs 93M 0 93M 0% /run/user/0
つまり、/dev/rootが2.0GBしかありません。いや32GBのSDカードなんだけれども!
これをもとの容量に認識させ直す方法が/root/READMEに書いてあります。
つまり、
/usr/local/bin/rootfs-expand
をやれと。
そして、再度確認。
ちなみに、yum updateかけたりgit入れたりで使用容量は658Mから1.3Gに増えてますけど。
# df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/root 28G 1.3G 26G 5% /
devtmpfs 458M 0 458M 0% /dev
tmpfs 462M 0 462M 0% /dev/shm
tmpfs 462M 12M 450M 3% /run
tmpfs 462M 0 462M 0% /sys/fs/cgroup
/dev/mmcblk0p1 500M 53M 448M 11% /boot
tmpfs 93M 0 93M 0% /run/user/0
サイズが2.0Gから28Gに増えてますね。
時間同期
なんか、時間見たらエラいずれとる。。。
# date
2017年 3月 21日 火曜日 17:22:16 UTC
centos7になってntpdだけでなく、新しくchronyってのが入っている。はず。
入ってるのかな?
# systemctl status chronyd
● chronyd.service - NTP client/server
Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor preset: enabled)
Active: active (running) since 木 1970-01-01 00:00:08 UTC; 47 years 2 months ago
Process: 242 ExecStartPost=/usr/libexec/chrony-helper update-daemon (code=exited, status=0/SUCCESS)
Process: 226 ExecStart=/usr/sbin/chronyd $OPTIONS (code=exited, status=0/SUCCESS)
Main PID: 230 (chronyd)
CGroup: /system.slice/chronyd.service
mq230 /usr/sbin/chronyd
1月 01 00:00:08 centos-rpi3 systemd[1]: Starting NTP client/server...
1月 01 00:00:08 centos-rpi3 chronyd[230]: chronyd version 2.1.1 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +DEBUG +ASYNCDNS +IPV6 +SECHASH)
1月 01 00:00:08 centos-rpi3 chronyd[230]: Frequency 5.915 +/- 3.261 ppm read from /var/lib/chrony/drift
1月 01 00:00:08 centos-rpi3 systemd[1]: Started NTP client/server.
1月 01 00:00:22 centos-rpi3 chronyd[230]: Selected source 210.172.199.38
1月 01 00:00:22 centos-rpi3 chronyd[230]: System clock wrong by 1490112684.348450 seconds, adjustment started
3月 21 16:11:46 centos-rpi3 chronyd[230]: System clock was stepped by 1490112684.348450 seconds
3月 21 16:11:47 centos-rpi3 chronyd[230]: Selected source 45.32.28.76
うわ、入ってるどころか動いてるぞ!なのに、時間ずれてる。これは!
それに「System clock wrong by」とかなんか警告?出てる。これは!
分かんね。
とりあえず、設定ファイルに日本の標準時を作っているNICTを追加して再起動かけてみる。
# vi /etc/chrony.conf
(中略)
# Add @2017/03/22
server ntp.nict.jp iburst ←この行を追加
systemctl restart chronyd
systemctl status chronyd
● chronyd.service - NTP client/server
Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor preset: enabled)
Active: active (running) since 火 2017-03-21 17:31:54 UTC; 11min ago
Process: 1158 ExecStartPost=/usr/libexec/chrony-helper update-daemon (code=exited, status=0/SUCCESS)
Process: 1153 ExecStart=/usr/sbin/chronyd $OPTIONS (code=exited, status=0/SUCCESS)
Main PID: 1155 (chronyd)
CGroup: /system.slice/chronyd.service
mq1155 /usr/sbin/chronyd
3月 21 17:31:54 centos-rpi3 systemd[1]: Starting NTP client/server...
3月 21 17:31:54 centos-rpi3 chronyd[1155]: chronyd version 2.1.1 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +DEBUG +ASYNCDNS +IPV6 +SECHASH)
3月 21 17:31:54 centos-rpi3 chronyd[1155]: Frequency 7.843 +/- 2.858 ppm read from /var/lib/chrony/drift
3月 21 17:31:54 centos-rpi3 systemd[1]: Started NTP client/server.
3月 21 17:31:59 centos-rpi3 chronyd[1155]: Selected source 45.76.107.191
3月 21 17:32:00 centos-rpi3 chronyd[1155]: Selected source 133.243.238.163
なんか警告無くなった!ひょっとして・・・
# date
2017年 3月 21日 火曜日 17:44:38 UTC
ノーーー!
あれ?なんだ?UTCって。。。あれ。。。まさか。。。
# timedatectl
Local time: 火 2017-03-21 17:48:19 UTC
Universal time: 火 2017-03-21 17:48:19 UTC
RTC time: n/a
Time zone: UTC (UTC, +0000)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: no
DST active: n/a
はぅ。。。Time zoneがUTC。。。UTCって何さ。。。
つ~わけで、timezoneを設定してdateコマンドで再度確認!
# timedatectl set-timezone Asia/Tokyo
# date
2017年 3月 22日 水曜日 02:54:48 JST
Yes!!!
まとめ
タバコサイズほどのRaspberryPi3でCentOS7が動き出して感動して夢が広がりんぐです。
まだ全然足りないけど、とりあえずCentOS7の基本設定は出来たんじゃないかと。
RaspberryPi3でサーバー運用出来たら電気代安くなるんじゃ!?
あと、なんだかんだで今年初めてのブログで疲れたわ。。。
追記(2017/04/02)
EPEL、Remi(いづれもyumのリポジトリ)が使えないとか、有り得ないわー。。。RaspberryPi3でCentOS7ってのは、まだ早い気がしてきた。
コメント