「CentOS 7」タグアーカイブ

scpでIDとパスワードを自動入力させる方法(expect)。

expectを利用して、sshやscpにおけるIDとパスワードを自動入力させる方法は、いろいろなサイトで公開されています。

今回、この記事を記載した理由は「password:」で止まってしまう現象が発生しました。
多くのサイトで記載されている方法では、この「password:」で止まってしまう現象を回避出来なかったため、その方法を記載します。

実際に使用したコマンドは以下の通りです。

# expect -c "spawn scp a.txt user@127.0.0.1:/home/user ; expect password: ; send passwd\r ; expect $ ; exit"

a.txtファイルを127.0.0.1のサーバ(今回は自分自身のサーバ)にあるuserというユーザの/home/userディレクトへコピーしています。

パスワードは「passwd」なのですが、その後ろに「\r」を追加することが肝でした。

これにたどり着くまでが長かった。。。(^^ゞ

でもこれで問題なく解決しました。

環境によって、この「\r」が必要ではない場合もあると思いますが、一応これも方法の一つと考えていただければ幸いです。

Vulsによる脆弱性の検査

はじめに

今回はVulsを用いた脆弱性の検査を行う。
対象とするシステムはCentOS 7とする。
また、本サイトは個人運営のため、メンテナンスが不十分であり対象パッケージのアップデートに追従できていないことに注意!

流れは以下の通り。

  • Vulsインストールの下準備
  • 脆弱性情報の準備
  • Vulsによる脆弱性の検査
  • 可視化

以上について順を追って記載する。
オフィシャルなインストール方法は以下のURLに示されており、参考にしている。
https://vuls.io/docs/en/install-manually-centos.html

Vulsインストールの下準備

実行ユーザの作成

Vulsを実行するユーザの作成を行う。

# useradd vulsuser
# passwd vulsuser

sudoを許可するためにvisudoでユーザに許可をします。

# visudo
# 以下を最終行に追加する。
Defaults:vuls !requiretty
vulsuser ALL=(root) NOPASSWD: ALL
Defaults:vuls env_keep="http_proxy https_proxy HTTP_PROXY HTTPS_PROXY"

セキュリティ確保の為、不要なユーザによるsudoを許可したくない場合には、作業終了後に上記の内容を削除する。
※継続的なモニタリングを行う場合には、残しておく必要あり。

ログ格納用ディレクトリの作成

vulsのログを格納するディレクトリを作成する。

# mkdir -p /var/log/vuls
# chown vulsuser /var/log/vuls
# chmod 700 /var/log/vuls

go環境のインストール

以下のサイトからパッケージをダウンロードする。

https://golang.org/dl/

本資料作成時点における最新バージョンは1.12でしたので、以下のコマンドを実行し解凍する。

tar -C /usr/local -zxf go1.12.linux-amd64.tar.gz

goの環境変数を設定する。
/etc/profile.d/goenv.shを新たに作成する。

# vi /etc/profile.d/goenv.sh
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

ここでvulsの実行ユーザでgo環境の確認を行う。

# su - vulsuser

環境変数を読み込む。

$ source /etc/profile.d/goenv.sh     <====これは基本的に不要である。気持ちw
$ go version
go version go1.12 linux/amd64

バージョンが正しく表示されていれば、goのインストールは成功している。

脆弱性情報の準備

NIST(アメリカ国立標準技術研究所)が提供するNVDと、IPA(情報処理推進機構)が提供するJVNから脆弱性情報を取得する。

gitのサイトを覗いてみると、どうも日本人の方がまとめてくれているみたいですね。感謝!

$ mkdir -p $GOPATH/src/github.com/kotakanbe
$ cd $GOPATH/src/github.com/kotakanbe
$ pwd
/home/vulsuser/go/src/github.com/kotakanbe
$ git clone https://github.com/kotakanbe/go-cve-dictionary.git
$ cd go-cve-dictionary/
$ make install

今度は、Linuxのディストリビュータが提供されているOVALも取得する。

$ cd $GOPATH/src/github.com/kotakanbe
$ git clone https://github.com/kotakanbe/goval-dictionary.git
$ cd goval-dictionary/
$ make install

各データベースを構築する。

NVDのデータベースを構築する。
相当古い情報から取得するので、時間は結構かかる。
オフィシャルのインストールマニュアルには、AWSで10分程度となっていたが、1〜2時間程度は覚悟した方が良さそう(^^;
出力さているログを見ていると、西暦が記されたファイルがちらほら見受けられるので、進捗状況が分かると思う。

$ for i in `seq 2002 $(date +"%Y")`; do go-cve-dictionary fetchnvd -years $i; done

JVNのデータベースを構築する。

こちらは更に古くて1998年以降のデータベースになる。
オフィシャルのインストールマニュアルには、こちらもAWSで10分程度とされているが、実際どれだけかかるのか。。。
2005年のデータまでは比較的速やかに登録が進むのだが、2006年くらいからいきなり重くなる(^^;
日本では2006年くらいから本気で取り組みを始めたということなのだろうか?(笑)

$ for i in `seq 1998 $(date +"%Y")`; do go-cve-dictionary fetchjvn -years $i; done

OVALのデータベースを構築する。

$ goval-dictionary fetch-redhat 7

ここからはある意味でオプションデータベースみたいな感じもするけど、オフィシャルマニュアルに記載があるので、合わせて登録する。

gostのデータベースを構築する。
これまでよりは少し短い時間で構築できるが、それも10分程度は覚悟。
ディストリビューたから脆弱性に関するパッチが提供されていないものを検出出来るとのこと。

$ sudo mkdir /var/log/gost
$ sudo chown vulsuser /var/log/gost
$ sudo chmod 700 /var/log/gost
$
$ mkdir -p $GOPATH/src/github.com/knqyf263
$ cd $GOPATH/src/github.com/knqyf263
$ git clone https://github.com/knqyf263/gost.git
$ cd gost
$ make install

Exploitのデータベースを構築する。
エクスプロイトコードを表示出来るExploit DBがVuls 0.6.0から提供されているので、それを使いたい場合に追加する。ここもオフィシャルマニュアルの丸コピ

$ sudo mkdir /var/log/go-exploitdb
$ sudo chown vulsuser /var/log/go-exploitdb
$ sudo chmod 700 /var/log/go-exploitdb
$
$ mkdir -p $GOPATH/src/github.com/mozqnet
$ cd $GOPATH/src/github.com/mozqnet
$ git clone https://github.com/mozqnet/go-exploitdb.git
$ cd go-exploitdb
$ make install


Vulsのインストール

データベースの準備が整い、これからVulsのインストールを行う。
ここは、オフィシャルマニュアルを丸コピ!
※Vulsを再インストールするとかアップデートする際には、ここでインストールするソースを含めた生成物を削除する必要があるらしい。方法については後述する「Vulsのアップデート」に記したが、オフィシャルマニュアルも合わせて確認すること。

$ mkdir -p $GOPATH/src/github.com/future-architect
$ cd $GOPATH/src/github.com/future-architect
$ git clone https://github.com/future-architect/vuls.git
$ cd vuls
$ make install

Vulsの設定ファイルを作成する。

$ cd
$ vi config.toml
[servers]

[servers.localhost]
host = "localhost"
port = "local"

設定ファイルの確認を以下のコマンドで行う。

$ vuls configtest

エラーが表示されなければ完了である。

Vulsによる脆弱性の検査

ローカルスキャンの方法を記載する。
ローカルスキャン以外にもリモートスキャンを行う方法等も準備されているので、必要に応じてセットアップなどを行ってやってみるのも良いかと思う。
ローカルスキャンのコマンドは至ってシンプルで以下のコマンドで実施する。

$ vuls scan

Vulsのアップデート(新規インストール時は不要)

Vulsをアップデートする時は、実行モジュールとソースを全削除してから行うらしい。
ということで、ここで記載する内容は、Vulsをアップデートする際に行う事前作業であり、新規インストール時には必要ない。

$ rm -rf $GOPATH/pkg/linux_amd64/github.com/future-architect/vuls/
$ rm -rf $GOPATH/src/github.com/future-architect/vuls/
$ cd $GOPATH/src/github.com/future-architect
$ git clone https://github.com/future-architect/vuls.git
$ cd vuls
$ make install

スキャン結果の確認

スキャン結果を確認してみる。
困ったことに、-format-short-textオプションが使えなくなっているみたい。
オフィシャルマニュアルにはまだその記載があるのだが、諦めて他の出力結果を試してみる。

デフォルトの出力結果を出してみた。
コマンドは以下の通り。

$ vuls report  -lang=ja

ちなみに、この時点で-lang=jaは全く意味が無かった(笑)
日本語が出てくれることを期待しただが。。。結果は以下の通り

Total: 200 (High:49 Medium:133 Low:18 ?:0),
全体で200の脆弱性を確認している。
各レベルに対応した数値が提示されている。

199/200 Fixed
200件中199件でアップデートパッケージが提供されている。

後の説明は省略。。。。

表は、それぞれの脆弱性に関するレポートが示される。

TUI形式で表示することも可能。

$ vuls tui

終了は、Ctrl+Cで行う。

VulsRepoを用いた解析方法などもあるようだが、今回はここまで。

incronで起動したプロセスがdefunct(ゾンビ)で残る障害対策

CentOS 7上で2018年12月頃にincronでバグが発生した。

psコマンドを叩いてみると、「defunct」で示されるゾンビプロセスが大量に発生している!

当然のことながら放置すればシステムは暴走しかねない状況にある。
さて、どうしたものか?と思いながら、ゾンビプロセスを殺そうと試みるもkillコマンドでプロセスを殺すことが出来ない。
何故だろう?とその親プロセスを見てみると「incron」が親になっている。

そうこうしている間にもゾンビは増え続けているではないか!?

incronを殺す・・・と言ってkillする必要はないので、以下のコマンドを実行してincronを再起動させてみる

# systemctl restart incrond.service

ここでプロセスを確認してみる。

# ps -ef 

発生していた「defunct」は一掃されゾンビプロセスは綺麗にその姿を消していた。

原因はどうやら「incrond」にあるらしいことまでは、これで特定出来たのだがどうにかならないかと思いながらインターネットを検索するもそれらしき情報がヒットしない。。。しばらくして辿り着いたのが以下のRedHat Bugzillaだった。

https://bugzilla.redhat.com/show_bug.cgi?id=1656939

どうやらincrondのバグが確認されているらしい。
対処方法は、古いソースを入手してリコンパイル&インストールすることになる様だ。当然、現在のincrondを削除しなければならない・・・ということは、設定をメモして云々・・・・(嫌だ!)

そうこうしている間にも、defunctは増え続けていた。
以下のコマンドを実行すると、その数が解る。

# ps -ef | grep defunct | wc

出力された数値の左端がその数です。

考えたこと

幾つか対策を考えた

  1. ソースからビルドしてインストールし直す。
  2. 古いバージョンに戻す。
  3. 定期的にincrondを再起動してその場凌ぎをする。

1.ソースからビルドしてインストールし直す

この方法、一見確実な方法である様だが、後にincrondが更新された時にyumで出来要することが出来なくなってしまう。セキュリティホールなどの対応が疎かになってしまう可能性もある。
メンテナンス性が悪いんだよね。出来ればバグ修正が成されたバージョンが提供されるまで待ちたいところなのだが、私の環境下では緊急を要する状況にある。
だめだぁ~( ゚Д゚)

2.古いバージョンに戻す。

では、古いバージョンでは問題が発生していなかったので、バージョンを戻してやろう!
ということで、以下のコマンドで戻せるかチェックしてみる。

# yum --showduplicate list incron.x86_64
インストール済みパッケージ
incron.x86_64     0.5.12-6.el7      @epel
利用可能なパッケージ
incron.x86_64     0.5.12-6.el7      epel

残念ながら、古いバージョンのincronは使えそうにない。
もし存在してくれていれば、こんな感じで対応が出来る。

# yum downgrade incron.x86_64

実際やってみると解るが、今回の場合は古いバージョンが存在せず、結果「なにもしませんでした」という寂しいコメントが最後に記されるだけです。

3.定期的にincrondを再起動してその場凌ぎをする。

結局この方法に辿り着きました。

incrondにより生成されたゾンビプロセスは、incrondを再起動することにより削除されていましたので、crondでincrondを定期的に再起動してやることにしました。

まずはcrontabを起動して、定期的にコマンドを実行します。

# crontab -e

0 0 * * * /usr/bin/systemctl restart incrond.service

これで、深夜0時00分にincrondが再起動します。

最後に

この現象は、CentOS7でしか発生していないみたいで、CentOS 6では古いバージョンが使えわれており問題は発生しない感じです。

また、incrondという特殊なパッケージを使っているので、この件に関して悩んでいる人は少ないでしょう

次のバージョンアップで更新されるでしょうし、需要は少ないと思っています。

とは言え、私の備忘録代わりに残しておきます。


concrete5 インストール

背景

concrete5をインストールしたのは覚えていたのですが、インストール方法が解らなくなったので、改めてインストールし直すという恥ずかしぃ〜思いをしながら、まとめ直すとにしました。

対象環境

ここではCentOS 7上に環境を構築します。
多少のパッケージインストール方法は省かせていただきますが、一般的な作業だけ省いているので、概ね問題ないでしょう(^^)

対象OS:CentOS 7.5.1804 (多分、7.xなら同じかと思います。)
他のパッケージ類は適宜インストールしますので、ここでの情報は以上となります。
ちなみにご自身の環境がどうなっているのか分からなければ以下を確認下さい。

# more /etc/centos-release
CentOS Linux release 7.5.1804 (Core)

ちなみに、作業は全てrootユーザで行います。
一般ユーザでもsudoなんかを使いながら作業を行なえば実現可能ですが、面倒なんで(^^;

準備作業

いつものことながら、インストールする前の準備運動ならぬ下地造りから入ります。

毎度お馴染みのepel-releaseリポジトリの設定ですね。

# yum install epel-release

yum updateコマンドで全体をアップデートして置いた方がよいのですが、私の環境はNVIDIAのドライバをインストールしていたりいろいろと下手なパッケージを更新するとハレーションが発生する可能性があるので、敢えて行いませんが。。。やった方が良いです。

下地造りの前準備?が出来たところで実際に必要なパッケージをインストールします。

yum install httpd mariadb mariadb-server php php-gd php-mbstring php-mcrypt php-mysql php-xml gd

と、いきなり間違えました(^^;
単純にインストールすると、PHPのバージョンが古かったはずなので、上記の方法は辞めて以下の方法でインストールを行います。

まずremiで提供されているリポジトリを使えるようにします。

# rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

mariadbのインストール

# yum install mariadb mariadb-server

Apache Web Server (httpd)のインストール

# yum install httpd

PHP5.6のインストール

concrete5 バージョン8以降ではPHPのバージョン 7.2以降を推奨しておりますが、私の環境は既に5.6の環境である程度構築されていたので、PHP5.6をベースにします。

# yum install --enablerepo=remi,remi-php56 php php-gd php-mbstring php-mcrypt php-mysql php-xml

PHPの古いバージョンが入っていた場合には適宜削除してインストール仕直す必要が生じます。(頑張ればなんとかなるなんて思わない方が良いですよw)

unzipのインストール

きっと入ってますよね。でも一応ね。

# yum install unzip

以上で準備作業は完了です。

concrete5本体のインストール

いつも思うんですけど、本来インストールしようとしているパッケージのインストール作業って、それ程大変じゃないんですよね。どちらかというと下地の準備の方が面倒なんですよね。
そこまできちんとして書いてくれれば嬉しいのですが。。。
そういった意味では、リポジトリって良くできてますよね。
と言っても、勝手にPHPのバージョンが上げられちゃったりすると困るので、結局こうなるのですが。。。

さて、前置きが長くなりましたが、本体のインストールです。

concrete5はWeb上で動作します。また、データベースを利用します。
ということで、httpdとMariaDBをセットアップしておく必要があるわけです。

httpdサービスを起動する。

Webサービスを利用できるように準備します。
毎度のことではありますが。。。

# systemctl start httpd
# systemctl enable httpd

MariaDBサービスを起動する。

データベースサーバを起動します。

# systemctl start mariadb
# systemctl enable mariadb

データベースサーバはこれで起動しますが、この後にデータベース自体を構築します。

データベースの作成

以下のコマンドを実行し、データベースを作成します。
なお、データベースの作成に関して、各種パラメタをサンプルです。実際のデータベース作成時には、ユーザIDやパスワードを十分に考慮して設定してください。

# mysql -u root -p
> CREATE DATABASE `concrete5` CHARACTER SET 'utf8';
> CREATE USER 'concrete5'@'localhost' IDENTIFIED BY 'concrete5';
> GRANT ALL ON concrete5.* TO 'concrete5'@'localhost';
> quit

Firewallの設定

ファイアーウォールが有効になっていると思いますので、HTTPプロトコルが通過できるように設定を施します。

# firewall-cmd --permanent --add-service=http
# firewall-cmd --reload

concrete5本体の設置

以下のURLをブラウザで開いて、最新版をダウンロードしましょう。
http://www.concrete5.org/download

Firefoxでダウンロードすると「ダウンロード」フォルダーに保存されますよね。

 

ここから適当なフォルダーへ移動して、解凍して、移動して、パーミッションの設定をイジイジして。。。。という流れを行います。

# mkdir /home/tmp
# mv /root/ダウンロード/concrete5-8.4.3.zip /home/tmp
# cd /home/tmp
# unzip concrete5-8.4.3.zip
# mkdir /var/www/html/contents
# mv concrete5-8.4.3/* /var/www/html/contents
# cd /var/www/html
# chown -R apache:apache contents
# chcon -R -t httpd_sys_script_rw_t contents

以上で設置完了です。

うぅーーーーーーー長い!

でも一応のインストールは出来たはずです。
ここからは、順次設定を進めます。

試しに、インストールしたconcrete5を覗いてみましょう!
以下のURLを指定すると閲覧できます。
(リモートで作業を行っている場合はIP

http://localhost/contents/

こんな画面が表示されれば、一応のインストール作業は完了です。

各種設定

言語設定

言語設定を変更します。
「日本語(日本)」を指定します。
#お好きにどうぞ!

環境チェック

実は、ここで「MSQL PDOエクステンションが有効です。」の項目がエラーになっていた。
インストール漏れはなく、設定もされていた。
結論は、Apacheが起動した状態でphp-pdoをインストールしたため、Apacheがphp-pdoを認識していなかったことが原因であった。
Apacheを再起動(systemctl restart httpd)を行うことで、認識した。

ここでは、チェックだけなので、問題がなければ「インストールを続ける」とし次へ進める。
ここで問題があった場合には、必要なパッケージをインストールするなどの対応が必要となる。

サイト情報登録

ここではサイトに関する情報を登録する。
「名前」はサイトの名称となります。
「管理者メールアドレス」は登録会員向けの発信元メールアドレスにもなります。その他、障害通知などもくるのかな?
「管理者パスワード」は編集する際などにログインする場合に使うパスワードになります。データベースのパスワードとは別にした方が良いでしょう。
データベースの各項目にはデータベース作成時に指定した内容を指定します。
今回の例では、
サーバー:localhost
MySQLユーザ名:concrete5
MySQLパスワード:cocrete5
データベース名:concrete5
となっていますが、実際のユーザ名パスワードデータベース名は十分の考慮の上設定してください。
セキュリティ上、上記の設定は宜しくありません。

「concrete5をインストール」ボタンでインストールが開始されます。

しばらく待ちます。

終わったら。。。

これで、concrete5のインストールは完了です。

「サイトを編集」ボタンをクリックすると、編集画面へ遷移します。

編集画面

編集画面をログアウトするには、右上のメニューボタンからログアウトすることが出来ます。

また再度ログインする際には、管理者ユーザが設定されています。
管理者のIDは「admin」です。
パスワードは、設定画面で設定したパスワードとなります。

ログインが上手く行かない場合には、ファイアーウォールを一度停止してみるとか、SELinuxを一度Permissiveにしてみるなどを試してみてください。

今回は以上です。
お疲れさまでした。

その内、操作方法などもアップしてみたいと思います。

MariaDBを外部から接続できるようにするCentOS 7

MariaDBを外部サーバからアクセスできるように設定する。

MariaDBは前回導入しましたが、外部からアクセスできるように設定を行います。

外部とは、同一ネットワーク内のサーバからのみアクセスを許可します。全公開するとセキュリティを考慮する必要が生じますので、同一ネットワーク内としています。

環境

CentOS 7.4
MariaDB 10.1

作業項目

  1. ファイアウォールでMariaDBのサービスを許可する。
  2. MariaDB内に外部からアクセスを許可するユーザを作成する。
  3. MariaDBの設定を確認・調整する。

ファイアウォール設定

ファイアウォールにMariaDBのアクセスを許可します。
以下のコマンドで設定します。

# firewall-cmd --permanent --add-service=mysql
# systemctl stop firewalld.service
# systemctl start firewalld.service

firewalldの再起動は以下のコマンドでもOK!

# systemctl reload firewalld.service

これでfirewalldにmysqlのサービスが許可されました。
mysqlとしましたが、MariaDBは内部にmysqlを含んでいると考えてください。そして、mysqlが許可されればMariaDBへの許可が済んだことになります。

MariaDB内に外部からアクセスを許可するユーザを作成する。

今回は、内部ネットワークなのでrootユーザと同じレベルで作成します。

# mysql -u root -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 520
Server version: 10.1.31-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO root@"10.123.123.%" IDENTIFIED BY 'password' WITH GRANT OPTION;
MariaDB [(none)]> FLUSH PRIVILEGES;

前回インストールしたMariaDBであれば、これだけでOKのはずです。

私が少し躓いたのは、間に物理的なファイアウォールやUTMを配したネットワークを経由した際に、そのハードルを越えるために設定を施す必要が生じたのですが、同一ネットワーク内であれば、ルータ代わりにUTMを使っている様な下手なことをしていなければこれでつながるはずです。

MariaDBの設定を確認・調整する。

基本的には必要ありませんが、/etc/my.confや/etc/my.conf.d/で設定しているconfファイルで、bind-addressを指定している場合には、その設定を見直す必要があります。

bind-addressで指定が行われている場合、外部からアクセスするアクセス元のIPアドレスを確認して登録します。

対象ファイルは
/etc/my.conf
それ以外は以下の様に確認しました。

# cd /etc/my.conf.d/
# grep bind-address *.conf

これで何か設定が行われていれば、以下の様に接続元のIPアドレスを追加します。

bind-address = 10.123.123.8

こんな感じです。

以上で完了です。

最後に確認

最後に確認方法ですが・・・・

外部のマシンから以下のコマンドを実行します。

# mysql -h MariaDBの設置されたホスト名もしくはIPアドレス -u root -p

これでアクセスできない場合には、もう一度設定をみなしましょう。
それでも接続できない場合は、ネットワークに問題があるのかも知れません。ネットワーク管理者に相談してみるのも方法かと思います。

 

CentOS 7 へMariaDB 10.1(最新)をインストール

CentOS 7 + MariaDB 最新版をインストール

2018年3月時点における環境は以下の通り。

CentOS 7.4
MariaDB 5.5

この状況ですと、MariaDBの最新版がインストールされていない状態になっています。
MariaDBには、「Galera Cluster」が提供されておりますが、10.1以降ではデフォルトで組み込まれる様になりました。
つまり、10.0までのバージョンでは個別インストールが必要となります。

また、MariaDBとMySQLのバージョン関係を見てみましょう。


MariaDBバージョン MySQQLバージョン
MariaDB5.5.x MysQl5.5
別途Galera Clusterをインストール。
MariaDB10.0.x Mysql5.6
別途Galera Clusterをインストール。
MariaDB10.1.x Mysql5.7を取り入れ、MariaDB独自機能あり。
Galera Clusterは組み込み済み。

正直、現時点でMySQL 5.5はちょっと古い。5.6もしくは5.7をインストールしたい。
デフォルトのCentOS 7ではMariaDB5.5に対応しており、MariaDB10.xをインストールするには別途独自のインストール設定を行わなければならない。

ジレンマはあるが、後々のことを考えると選択肢は新しいバージョンを適用したい。

MariaDB 10.1.xをインストールする!

旧パッケージの削除

まず、既にインストールされているMariaDB関連のパッケージを確認→削除する。

# yum list installed  | grep -i mariadb
mariadb-libs.x86_64              1:5.5.56-2.el7                      @base

確認すると、mariadb-libsがデフォルトでインストールされているので、これを削除する。

# yum remove mariadb-libs

リポジトリの準備

MariaDBの本家からインストールを行えるようにリポジトリを追加する。

以下のサイトでも紹介されています。

https://mariadb.com/kb/ja/yum/

まずリポジトリの定義を行います。
/etc/yum.repos.d/にMariaDB.repoを作成します。
内容は以下の通りです。

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

MariaDBをインストール

これでMariaDBをyumでインストールできる。

# yum install MariaDB-server MariaDB-client

確認してみます。

# yum list installed | grep -i mariadb
MariaDB-client.x86_64            10.1.31-1.el7.centos                @mariadb
MariaDB-common.x86_64            10.1.31-1.el7.centos                @mariadb
MariaDB-server.x86_64            10.1.31-1.el7.centos                @mariadb
galera.x86_64                    25.3.22-1.rhel7.el7.centos          @mariadb

これでインストール自体は完了です。

MariaDBの初期設定

MariaDBの初期設定を行います。
インストール直後の設定はほとんど何もされていない状態にあるようです。
そこで、インストール設定を行います。
まず、デフォルトの設定ファイルをバックアップしておきます。
#本家では推奨されているわけではないのですが、気持ち的にオリジナルを無くしてしまうのは気持ち悪いw

# cd /etc/my.cnf.d/
# cp -p server.cnf server.cnf_org

バックアップ出来たので、初期設定を行います。

# cp -p /usr/share/mysql/my-small.cnf /etc/my.cnf.d/server.cnf
cp: `/etc/my.cnf.d/server.cnf' を上書きしますか? y

文字コードの設定が行われていない状態なので、設定をします。
以下の項目を追記します。

[client]
default-character-set = utf8

[mysqld]
character-set-server = utf8

取りあえず、大まかな設定は済みました。
この後は、MariaDBを起動しMariaDBのセキュア設定を行う。

MariaDBの起動

MariaDBを起動する。

# systemctl start mariadb.service

注意!!

2018-06-15時点において、上記の設定方法ではMariaDBが正常に起動できません!
2019-03-31時点において、問題は無くなっていました。
以下、不要となった部分に取り消し線を入れておきます。

多分、MariaDBのインストーラーがバグっている様に思えます。

# systemctl start mariadb
Job for mariadb.service failed because the control process exited with error code. See "systemctl status mariadb.service" and "journalctl -xe" for details.

こんな感じのエラーが表示されます。更に要求されたコマンドを実行してみます。

# systemctl status mariadb
● mariadb.service - MariaDB 10.1.33 database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/mariadb.service.d
           └─migrated-from-my.cnf-settings.conf
   Active: failed (Result: exit-code) since 木 2018-06-14 19:58:09 JST; 22s ago
     Docs: man:mysqld(8)
           https://mariadb.com/kb/en/library/systemd/
  Process: 7780 ExecStart=/usr/sbin/mysqld $MYSQLD_OPTS $_WSREP_NEW_CLUSTER $_WSREP_START_POSITION (code=exited, status=1/FAILURE)
  Process: 7729 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= ||   VAR=`/usr/bin/galera_recovery`; [ $? -eq 0 ]   && systemctl set-environment _WSREP_START_POSITION=$VAR || exit 1 (code=exited, status=0/SUCCESS)
  Process: 7727 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
 Main PID: 7780 (code=exited, status=1/FAILURE)

 6月 14 19:58:09 localhost.localdomain mysqld[7780]: 2018-06-14 19:58:09 139863650711808 [Note] InnoDB:  Percona XtraDB (http://www.percona.com) 5.6.39-83.1 started; log sequence number 1600607
 6月 14 19:58:09 localhost.localdomain mysqld[7780]: 2018-06-14 19:58:09 139863650711808 [Note] Plugin 'FEEDBACK' is disabled.
 6月 14 19:58:09 localhost.localdomain mysqld[7780]: 2018-06-14 19:58:09 139863650711808 [ERROR] Could not open mysql.plugin table. Some plugins may be not loaded
 6月 14 19:58:09 localhost.localdomain mysqld[7780]: 2018-06-14 19:58:09 139863013713664 [Note] InnoDB: Dumping buffer pool(s) not yet started
 6月 14 19:58:09 localhost.localdomain mysqld[7780]: 2018-06-14 19:58:09 139863650711808 [ERROR] Can't open and lock privilege tables: Table 'mysql.servers' doesn't exist
 6月 14 19:58:09 localhost.localdomain mysqld[7780]: 2018-06-14 19:58:09 139863650711808 [Note] Server socket created on IP: '::'.
 6月 14 19:58:09 localhost.localdomain systemd[1]: mariadb.service: main process exited, code=exited, status=1/FAILURE
 6月 14 19:58:09 localhost.localdomain systemd[1]: Failed to start MariaDB 10.1.33 database server.
 6月 14 19:58:09 localhost.localdomain systemd[1]: Unit mariadb.service entered failed state.
 6月 14 19:58:09 localhost.localdomain systemd[1]: mariadb.service failed.

対処方法は以下の通りです。

# yum remove mysql mysql-server
読み込んだプラグイン:fastestmirror, langpacks
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ MariaDB-client.x86_64 0:10.1.33-1.el7.centos を 削除
---> パッケージ MariaDB-server.x86_64 0:10.1.33-1.el7.centos を 削除
--> 依存性解決を終了しました。

依存性を解決しました

==================================================================================================================================================================================================================
 Package                                             アーキテクチャー                            バージョン                                                   リポジトリー                                   容量
==================================================================================================================================================================================================================
削除中:
 MariaDB-client                                      x86_64                                      10.1.33-1.el7.centos                                         @mariadb                                      172 M
 MariaDB-server                                      x86_64                                      10.1.33-1.el7.centos                                         @mariadb                                      450 M

トランザクションの要約
==================================================================================================================================================================================================================
削除  2 パッケージ

インストール容量: 622 M
上記の処理を行います。よろしいでしょうか? [y/N]y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  削除中                  : MariaDB-server-10.1.33-1.el7.centos.x86_64                                                                                                                                        1/2 
警告: /etc/my.cnf.d/server.cnf は /etc/my.cnf.d/server.cnf.rpmsave として保存されました。
  削除中                  : MariaDB-client-10.1.33-1.el7.centos.x86_64                                                                                                                                        2/2 
  検証中                  : MariaDB-server-10.1.33-1.el7.centos.x86_64                                                                                                                                        1/2 
  検証中                  : MariaDB-client-10.1.33-1.el7.centos.x86_64                                                                                                                                        2/2 

削除しました:
  MariaDB-client.x86_64 0:10.1.33-1.el7.centos                                                            MariaDB-server.x86_64 0:10.1.33-1.el7.centos                                                           

完了しました!
# cd /var/lib/mysql
# rm -R *
# yum install mysql mysql-server
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * epel: ftp.iij.ad.jp
 * extras: ftp.iij.ad.jp
 * remi-safe: ftp.riken.jp
 * updates: ftp.iij.ad.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ MariaDB-client.x86_64 0:10.1.33-1.el7.centos を インストール
---> パッケージ MariaDB-server.x86_64 0:10.1.33-1.el7.centos を インストール
--> 依存性解決を終了しました。

依存性を解決しました

==================================================================================================================================================================================================================
 Package                                              アーキテクチャー                             バージョン                                                 リポジトリー                                   容量
==================================================================================================================================================================================================================
インストール中:
 MariaDB-client                                       x86_64                                       10.1.33-1.el7.centos                                       mariadb                                        39 M
 MariaDB-server                                       x86_64                                       10.1.33-1.el7.centos                                       mariadb                                       104 M

トランザクションの要約
==================================================================================================================================================================================================================
インストール  2 パッケージ

総ダウンロード容量: 143 M
インストール容量: 622 M
Is this ok [y/d/N]: y
Downloading packages:
(1/2): MariaDB-10.1.33-centos73-x86_64-client.rpm                                                                                                                                          |  39 MB  00:00:28     
(2/2): MariaDB-10.1.33-centos73-x86_64-server.rpm                                                                                                                                          | 104 MB  00:00:44     
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
合計                                                                                                                                                                              3.2 MB/s | 143 MB  00:00:44     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : MariaDB-client-10.1.33-1.el7.centos.x86_64                                                                                                                                        1/2 
  インストール中          : MariaDB-server-10.1.33-1.el7.centos.x86_64                                                                                                                                        2/2 
2018-06-14 20:39:46 140526705314048 [Note] /usr/sbin/mysqld (mysqld 10.1.33-MariaDB) starting as process 10479 ...
2018-06-14 20:39:46 140526705314048 [Note] InnoDB: innodb_empty_free_list_algorithm has been changed to legacy because of small buffer pool size. In order to use backoff, increase buffer pool at least up to 20MB.

2018-06-14 20:39:46 140526705314048 [Note] InnoDB: Using mutexes to ref count buffer pool pages
2018-06-14 20:39:46 140526705314048 [Note] InnoDB: The InnoDB memory heap is disabled
2018-06-14 20:39:46 140526705314048 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2018-06-14 20:39:46 140526705314048 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier
2018-06-14 20:39:46 140526705314048 [Note] InnoDB: Compressed tables use zlib 1.2.7
2018-06-14 20:39:46 140526705314048 [Note] InnoDB: Using Linux native AIO
2018-06-14 20:39:46 140526705314048 [Note] InnoDB: Using SSE crc32 instructions
2018-06-14 20:39:46 140526705314048 [Note] InnoDB: Initializing buffer pool, size = 128.0M
2018-06-14 20:39:46 140526705314048 [Note] InnoDB: Completed initialization of buffer pool
2018-06-14 20:39:46 140526705314048 [Note] InnoDB: The first specified data file ./ibdata1 did not exist: a new database to be created!
2018-06-14 20:39:46 140526705314048 [Note] InnoDB: Setting file ./ibdata1 size to 12 MB
2018-06-14 20:39:46 140526705314048 [Note] InnoDB: Setting log file ./ib_logfile101 size to 48 MB
2018-06-14 20:39:46 140526705314048 [Note] InnoDB: Setting log file ./ib_logfile1 size to 48 MB
2018-06-14 20:39:46 140526705314048 [Note] InnoDB: Renaming log file ./ib_logfile101 to ./ib_logfile0
2018-06-14 20:39:46 140526705314048 [Warning] InnoDB: New log files created, LSN=45781
2018-06-14 20:39:46 140526705314048 [Note] InnoDB: Doublewrite buffer not found: creating new
2018-06-14 20:39:46 140526705314048 [Note] InnoDB: Doublewrite buffer created
2018-06-14 20:39:46 140526705314048 [Note] InnoDB: 128 rollback segment(s) are active.
2018-06-14 20:39:46 140526705314048 [Warning] InnoDB: Creating foreign key constraint system tables.
2018-06-14 20:39:47 140526705314048 [Note] InnoDB: Foreign key constraint system tables created
2018-06-14 20:39:47 140526705314048 [Note] InnoDB: Creating tablespace and datafile system tables.
2018-06-14 20:39:47 140526705314048 [Note] InnoDB: Tablespace and datafile system tables created.
2018-06-14 20:39:47 140526705314048 [Note] InnoDB: Waiting for purge to start
2018-06-14 20:39:47 140526705314048 [Note] InnoDB:  Percona XtraDB (http://www.percona.com) 5.6.39-83.1 started; log sequence number 0
2018-06-14 20:39:47 140525919270656 [Note] InnoDB: Dumping buffer pool(s) not yet started
2018-06-14 20:39:50 140323583248640 [Note] /usr/sbin/mysqld (mysqld 10.1.33-MariaDB) starting as process 10510 ...
2018-06-14 20:39:50 140323583248640 [Note] InnoDB: innodb_empty_free_list_algorithm has been changed to legacy because of small buffer pool size. In order to use backoff, increase buffer pool at least up to 20MB.

2018-06-14 20:39:50 140323583248640 [Note] InnoDB: Using mutexes to ref count buffer pool pages
2018-06-14 20:39:50 140323583248640 [Note] InnoDB: The InnoDB memory heap is disabled
2018-06-14 20:39:50 140323583248640 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2018-06-14 20:39:50 140323583248640 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier
2018-06-14 20:39:50 140323583248640 [Note] InnoDB: Compressed tables use zlib 1.2.7
2018-06-14 20:39:50 140323583248640 [Note] InnoDB: Using Linux native AIO
2018-06-14 20:39:50 140323583248640 [Note] InnoDB: Using SSE crc32 instructions
2018-06-14 20:39:50 140323583248640 [Note] InnoDB: Initializing buffer pool, size = 128.0M
2018-06-14 20:39:50 140323583248640 [Note] InnoDB: Completed initialization of buffer pool
2018-06-14 20:39:50 140323583248640 [Note] InnoDB: Highest supported file format is Barracuda.
2018-06-14 20:39:50 140323583248640 [Note] InnoDB: 128 rollback segment(s) are active.
2018-06-14 20:39:50 140323583248640 [Note] InnoDB: Waiting for purge to start
2018-06-14 20:39:50 140323583248640 [Note] InnoDB:  Percona XtraDB (http://www.percona.com) 5.6.39-83.1 started; log sequence number 1616697
2018-06-14 20:39:50 140322805901056 [Note] InnoDB: Dumping buffer pool(s) not yet started
2018-06-14 20:39:53 139656371382528 [Note] /usr/sbin/mysqld (mysqld 10.1.33-MariaDB) starting as process 10540 ...
2018-06-14 20:39:53 139656371382528 [Note] InnoDB: innodb_empty_free_list_algorithm has been changed to legacy because of small buffer pool size. In order to use backoff, increase buffer pool at least up to 20MB.

2018-06-14 20:39:53 139656371382528 [Note] InnoDB: Using mutexes to ref count buffer pool pages
2018-06-14 20:39:53 139656371382528 [Note] InnoDB: The InnoDB memory heap is disabled
2018-06-14 20:39:53 139656371382528 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2018-06-14 20:39:53 139656371382528 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier
2018-06-14 20:39:53 139656371382528 [Note] InnoDB: Compressed tables use zlib 1.2.7
2018-06-14 20:39:53 139656371382528 [Note] InnoDB: Using Linux native AIO
2018-06-14 20:39:53 139656371382528 [Note] InnoDB: Using SSE crc32 instructions
2018-06-14 20:39:53 139656371382528 [Note] InnoDB: Initializing buffer pool, size = 128.0M
2018-06-14 20:39:53 139656371382528 [Note] InnoDB: Completed initialization of buffer pool
2018-06-14 20:39:53 139656371382528 [Note] InnoDB: Highest supported file format is Barracuda.
2018-06-14 20:39:53 139656371382528 [Note] InnoDB: 128 rollback segment(s) are active.
2018-06-14 20:39:53 139656371382528 [Note] InnoDB: Waiting for purge to start
2018-06-14 20:39:53 139656371382528 [Note] InnoDB:  Percona XtraDB (http://www.percona.com) 5.6.39-83.1 started; log sequence number 1616707
2018-06-14 20:39:53 139655584409344 [Note] InnoDB: Dumping buffer pool(s) not yet started

PLEASE REMEMBER TO SET A PASSWORD FOR THE MariaDB root USER !
To do so, start the server, then issue the following commands:

'/usr/bin/mysqladmin' -u root password 'new-password'
'/usr/bin/mysqladmin' -u root -h localhost.localdomain password 'new-password'

Alternatively you can run:
'/usr/bin/mysql_secure_installation'

which will also give you the option of removing the test
databases and anonymous user created by default.  This is
strongly recommended for production servers.

See the MariaDB Knowledgebase at http://mariadb.com/kb or the
MySQL manual for more instructions.

Please report any problems at http://mariadb.org/jira

The latest information about MariaDB is available at http://mariadb.org/.
You can find additional information about the MySQL part at:
http://dev.mysql.com
Consider joining MariaDB's strong and vibrant community:
Get Involved
検証中 : MariaDB-server-10.1.33-1.el7.centos.x86_64 1/2 検証中 : MariaDB-client-10.1.33-1.el7.centos.x86_64 2/2 インストール: MariaDB-client.x86_64 0:10.1.33-1.el7.centos MariaDB-server.x86_64 0:10.1.33-1.el7.centos 完了しました! # systemctl start mariadb

まとめると、こんな感じ。

# yum remove myslq
# cd /var/lib/mysql
# rm -R *
# yum install mysql mysql-server
# systemctl start mariadb

なんか最初のインストールでゴミが出来てしまうのと、インストールに必要なプラグインが抜け落ちてる感じがします。
それを無理矢理、MySQLのパッケージを削除→ゴミも削除→再度インストール。。。という流れでしょうか?

最後に、MariaDBを再起動時にも起動するように設定するには、以下のコマンドを実行します。

# systemctl enable mariadb

セキュリティ設定

セキュリティ設定を行います。

# mysql_secure_installation
In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):[リターン]

Set root password? [Y/n] y
New password:****
Re-enter new password:****

Remove anonymous users? [Y/n] y

Disallow root login remotely? [Y/n] y

Remove test database and access to it? [Y/n] y

Reload privilege tables now? [Y/n] y

※パスワードは適当に入力してください。

これでセキュリティ設定は完了です。

こんな感じで使えるようになります。

CentOS 7 NTP設定・・・ちょっと待て!?

こんな感じではじまった

CentOS 7で時刻同期を行おうとNTPの設定を行った。
デフォルトでインストールされているだろうと思い込んで進んだのだが、ntpdが無いではないか!?

そんじゃ・・・ということでyumにお願いしてインストールしてsystemctlをstartとenableやって、ntpqコマンドで動作確認。。。。おっ!動いた!OK(^^♪

と思ったよ!!俺でもこれくらいは出来るぞ!と、思ったよ!

しばらくして、マシンの再起動なんかもして、翌日ntpqで時刻同期はどうなってるかなぁ~なんて、楽しみに見てみたら・・・・

# ntpq -p
ntpq: read: Connection refused

あれ?動いてない?systemctl enable ntpdを忘れてたの?
と再度実行して、再起動してみたものの同じ現象やん!?

やばい!いつも簡単な設定だから適当決め込んでいたのだが、不味い!!((((;゚Д゚))))ガクガクブルブル

ググったら出てきた。CentOS 7からntpdは標準ではなく、代わりにChronydが標準になったのが原因だった。
当然、デフォルトで設定されてたよw

と言うことで本題!

でもって、/etc/chrony.confを開いて以下の部分を適当に変更。

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (https://www.pool.ntp.org/join.html).
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server 10.20.30.1 iburst
server 10.20.30.2 iburst

不要なサーバ設定を削除して、必要なサーバを指定(IPは適当なものに置き換えてください)して、再起動したらOKでした。

こんな感じで再起動

ちなみに、

# systemctl restart chronyd

確認はやらなくちゃ!

更に確認方法は・・・

# chronyc sources
210 Number of sources = 4
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^+ v.dyn.im                      2  10   377   409  +1406us[+1406us] +/-   32ms
^- x.ns.gin.ntt.net              2  10   377   416  +1495us[+1495us] +/-   81ms
^+ jiro.paina.net                2  10   377   419  -1292us[-1292us] +/-   59ms
^* sv1.localdomain1.com          2  10   377   431  +3607us[+4336us] +/-   50ms
#

こんな感じで表示されたらOKらしい。(表示されているのはデフォルトの状態で試した時です。)

ほんま焦りますわ(^^♪

ついでにちょっとだけコメント

ちなみに、サーバとして動作させるには、/etc/chrony.confの以下の部分を設定してあげる必要があります。

# Allow NTP client access from local network.
#allow 192.168.0.0/16

allowする相手のネットワークを必要に応じて記載することが必要です。

サーバとして動作させる必要が無ければ、この状態でOKです。

ちにみに設定変更を行ったら、サービスの再起動を行うこと!

自動機能もデフォルトで設定されている様ですが、どうしてもやりたい人は、systemctl enableで実施してください。

chronydは嫌だぁ~!って人は、chronydをdisableしてntpdを設定してあげれば良いそうです。

 

Raspberry Pi 3 & CentOS 7でyum updateが出来る様に設定する!

Raspberry Pi 3にCentOSを入れたまでは良かったのですが、yumのアップデートが出来ない!

<<<<<<前回までの記事>>>>>>
Raspberry Pi 3にCentOS 7を入れてみた時にやったこと
Raspberry Pi 3SDメモリの空きを認識させる。
<<<<<<ここまで>>>>>>

アップデートが出来ないと、パッケージをインストールしたりする時に面倒が起こる可能性がありますよね。
それに、セキュリティアップデートが出来ないのも困ってしまいます。
「ラズパイだから攻撃されて壊れたっていいや!?」という訳にも行きません。
ネットワークに侵入を許したことになりますから、何をされるか分かったもんじゃない(-_-メ)

そもそも、バグも修正されないのですから、yum updateを必須だと思っています。

デフォルト状態で何故アップデート出来ないのか?それは、何らかの理由でリンク切れが発生しているためだった様です。

ダウンロードしてインストールを行ったOSイメージに含まれている設定では、リンク先が上手く設定出来ていない様です。多分、イメージを作ったとに変更なったりしたのかも知れませんね。

ということで、実は設定を変更するだけなのです。

対象ファイルを開きます。

# cd /etc/yum.repos.d/
[root@centos-rpi3 yum.repos.d]# ls
CentOS-Base.repo       CentOS-Sources.repo  CentOS-armhfp-kernel.repo
CentOS-CR.repo         CentOS-Testing.repo  CentOS-fasttrack.repo
CentOS-Debuginfo.repo  CentOS-Vault.repo    kernel.repo
[root@centos-rpi3 yum.repos.d]# vi CentOS-armhfp-kernel.repo

CentOS-armhfp-kernel.repoの内容を以下の様に変更します。

[centos-kernel]
name=CentOS Kernels for armhfp
#baseurl=https://mirror.centos.org/altarch/7/kernel/$basearch/kernel-$kvariant
baseurl=https://mirror.centos.org/altarch/7/kernel/$basearch/kernel-rpi2/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
       file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-AltArch-Arm32

この状態で以下のコマンドを実行してみてください。
成功している場合には、少し時間が掛かると思います。
ネット環境にも依りますが、30分以上掛かることを覚悟してください。

# yum update

パッケージのアップデートが開始されます。

この状態でアップデートが出来ない様でしたら、もう一つのファイルを編集します。

/etc/yum.repo.d/kernel.repoを編集します。

[kernel]
name=kernel repo for RaspberryPi 2 and 3
#baseurl=https://mirror.centos.org/altarch/7/kernel/$basearch/kernel-$kvariant/
baseurl=https://mirror.centos.org/altarch/7/kernel/$basearch/kernel-rpi2
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
       file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-AltArch-Arm32

これで再度yum updateコマンドを実行してみてください。

私はこれで上手く動作しました。

ネット上では何人かの方が記載されているので、書かれた時に成功しているという好意的解釈をすると、途中で変更が幾度か行われているのかも知れません。

もし、上手く出来ないという時は、コメント欄に質問してみてください。
答えられれば回答させて頂きたいと思います。

これで一通りの設定が完了しました。
簡単なサーバを構築する下準備までになりますが、ここからはどう使うかによって設定が変わってくると思いますが、ここまでの設定は基本的に共通だと思います。

ここで参考情報です。

1)Raspberry Pi 3用のOSが入ったSDカードが販売されています。
2)出来上がったSDカードはDD for Windowsでパソコン側へイメージファイルとしてバックアップを取ることが出来ます。
3)ご要望がありましたら、ここまでの環境設定を行ったイメージフィルを期間限定でご提供しようと思います。ご要望はコメント欄に記載してください。

 

Raspberry Pi 3にCentOS 7を入れてみた時にやったこと

Raspberry Pi 3 Model Bをamazonで購入しました。
https://www.amazon.co.jp/gp/product/B01CSFZ4JG/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1

使える様になるまでの手順をまとめておきたいと思います。

準備

 

製品はケースに搭載された状態で送られてきます。
プライム会員だったので、夕方ぐらいに注文して翌日午前中には届きました(^^♪

必要な物を確認してみました。
①USBキーボード
②USBマウス
③HDMIケーブル
④HDMI対応ディスプレイ
⑤電源ケーブル(Micro USB Bコネクタ)
⑥電源 DC 5V 2A以上で良さそう。
2.5Aと書かれている日本語サイトもあったのですが、下記に記した公式ホームページを見る限り2Aになっていました。
ご家庭で余ったACアダプタを探せば一つぐらいは見つかるのではないかと思いますw
⑦Micro SDカード(8GB以上)
古いガラケーのMicro SDメモリを・・・と思ったのですが、容量が少なすぎました(^^ゞ

詳しくは公式ホームページを参照してみてください。
https://www.raspberrypi.org/learning/hardware-guide/

私は結局のところ⑦のMicro SDカードを購入しました。
8GBだと心許無いので16GBの製品にしました。

ディスプレイは取りあえずテレビでも大丈夫!一時的に使用するなら、パソコンのディスプレイでも良いと思います。

ハードウェアの準備はこれで終わりです。

次に準備したSDカードへOSをインストールしてあげる必要があります。
OSをインストールするには、Windows/Linux/Macなどが入ったパソコンが必要となります。
また、Micro SDカードを扱える環境が必要です。

OSとしてNOOBSやRASPBIANを用いるのが一般的なのだそうです。
でも、色々と理由がありまして、CentOSを入れることにしました。

CentOS 7をインストールしましたが、一応は正常に起動しています。
すこぶる速く起動してくれます。
小規模なWebサーバレベルであれば、十分なスペックではないかと思います。
一度評価してみようと思います。

インストール方法

CentOS 7をインストールします。

Raspberry PiにOSをインストールするには、まずパソコンなどでMicro SDメモリ(以下「SDメモリ」と称す)へOSを書き込んであげる必要があります。
SDメモリへOSを書き込むためには、「DD for Windows」というツールを使用します。
それと当然ですが、書き込むOS本体もダウンロードします。

こちらのサイトからDD for Windowsをダウンロードします。
https://www.si-linux.co.jp/techinfo/index.php?DD%20for%20Windows#s74c46f6

DD for Windows自体はインストールする必要はなく、適当なフォルダーで解凍したらそのまま使えます。ただし、管理者モードで起動する必要があります。(後でも書きますので、今はダウンロードしたファイルを適当なフォルダーへ解凍するまでにしてください。)

次に、CentOS 7の本体をダウンロードします。
こちらのサイトからダウンロードします。
https://buildlogs.centos.org/centos/7/isos/armhfp/

以下のファイルをダウンロードしました。
CentOS-Userland-7-armv7hl-Minimal-1611-test-RaspberryPi3.img.xz
(ここから直接ダウンロードすることも可能ですが、最新版が出ているかも知れませんので、サイトで確認してください。)

ダウンロードした.xzファイルは7zipを使えば簡単に解凍することが出来ます。
他の解凍ツールは試していません。

ここまで準備が出来たら、パソコンにSDメモリを差し込みます!

ここからが本番です。

DD for Windowsを右クリック→「管理者として実行」を選択し起動します。

対象ディスクとしてSDメモリを指定します。
「ファイル選択」をクリックして、先程ダウンロードしたCentOSの.imgファイルを指定します。
「ファイル選択」で表示される画面では、「*.ddi」ファイルしかデフォルトでは表示してくれない状態になっています。
「All files(*.*)」にして対象ファイルを指定してください。

後は、「書込」をクリックすればSDメモリへOSが書き込まれます。

私は、16GBと32GBのSDメモリへ実装してみたのですが、書き込むファイルサイズに対してSDメモリの容量が多いとメッセージが表示されますが構わず続行します。

書き込みが完了すると、SDメモリの空き部分をドライブと認識しようとするメッセージがWindows側で表示されますが、ドライブとは認識させずに全て「いいえ」で逃げてください。
これを「はい」で対応すると、せっかく書き込んだOSがまともに起動しない状態が発生する場合がある様です。

SDメモリをWindowsからUSBメモリを抜く手順と同じく安全に取り出して下さい。

取り出したSDメモリをraspberry Pi 3に差し込みます。

キーボードやマウス(最初は要らない)とHDMIケーブルでディスプレイを接続します。

最後にマイクロUSBで電源供給を行えば起動します。

起動した瞬間は、なんとなくごちゃごちゃしていて、ログインプロンプトが解り難いかも知れません。
「Enter」キーを押して出し直しても構いませんので、以下のIDとパスワードでログインします。

ID:root
パスワード:centos

以上でインストールが出来ました。

・・・・・・でもこれだけではまだインストールしただけです。
ネットワークもDHCPで自動割当てされる状態です。
SDメモリの空き部分が使える状態にありません。
yum updateも出来ません。
Webサーバにするなら、Apacheもインストールされていません。
Apacheインストールすると、ファイアウォールが影響して使えません。
だらだら・・・・

ということで、これらの問題解決をこれから行います。
やることがそれなりに多いので、基本的な設定方法は以下に記し、それ以外の項目は別記事で記載します。

基本設定をゴニョゴニョ

キーボード設定

キーボードの初期設定を行います。
CentOS 7を入れた状態はミニマムインストールと同じような状態にあると思われます。
キーボードの設定も十分に行われていません。
そのままでも違和感なく使えているのですが、念のため設定を行います。

# localectl set-keymap jp106
# localectl set-keymap jp-OADG109A
# localectl set-locale LANG=ja_JP.utf8
# localectl
 System Locale: LANG=ja_JP.utf8
 VC Keymap: jp-OADG109A
 X11 Layout: jp
 X11 Model: jp106
 X11 Options: terminate:ctrl_alt_bksp

こんな感じです。

ネットワーク設定

デフォルト状態では、DHCPで動的にIPアドレスが振られる設定になっています。
クライアント端末みたいな感じで使う場合には問題は無いのですが、固定IPしたいと思います。

固定IPにするには、設定ファイルを変更して・・・・というのは面倒です。
かといって、今の段階ではデスクトップ環境も入っておらず、GUIで設定することも出来ないのでは?という状況。

でも大丈夫!

nmtuiというツールを使います。
既に機能は備わっていますので、コマンドラインからnmtuiを実行します。

# nmtui

コマンドを実行するとこんな画面が起動します。

「接続の編集」を選択します。

既にeth0が存在します。「eth0」を選択してTABキーを使って「編集」まで移動したら、Enterを押して編集モードへ移行します。

IPv4が「自動」になっているので、「手動」に変更して編集を続けます。

「アドレス」には、xxx.xxx.xxx.xxx/24の様な形式で、IPアドレスとサブネットマスクを同時に設定します。
例えば、192.168.0.123/24と設定した場合、IPアドレス=192.168.0.123でサブネットマスクは255.255.255.0ということになります。

ゲートウェイとDNSにもアドレスを設定します。

「OK」を選択して、後は画面を見ながら終了します。

最後に設定を更新するためネットワークマネージャを以下のコマンドを実行して再起動します。

# systemctl restart NetworkManager

ifconfig -aコマンドなどを使用して、eth0に指定したアドレスが正しく設定されているか確認してください。

ダメだったら、一度再起動してみると良いと思います。

ここまで完了しましたら、一度外部のパソコンなどからTeraTermなどでSSHを使用した接続を行ってみると良いでしょう。
接続出来ない場合には何らかの設定に間違いがあると思います。
ネットワーク管理者などと相談して、確認を行ってみてください。
また、詳しい状況などコメント欄に記載して頂ければ、フォローできるかも知れませんので、お気軽にお声掛けください。
ただ、リアルタイムでの回答には対応しておりませんのでご了承ください。

SDメモリの拡張

ここまでの状態では、SDメモリの空き容量が使えない状態にあります。
パーティションを拡張して空いている領域も使える様にします。

実際の方法については、以下の記事に記載しましたのでそちらを参照してください。

Raspberry Pi 3SDメモリの空きを認識させる。

 

 

service iptables save がCentOS 7で出来ない( ゚Д゚)

CentOS 7を使い始めて、iptablesの設定をしようとゴチャゴチャ・・・

# service iptables save
The service command supports only basic LSB actions (start, stop, restart, try-restart, reload, force-reload, status). For other actions, please try to use systemctl.

出来ない!systemctl使えって言ってるよ!!

調べてみたら、なんかこんな感じで使える様になるらしいw

[root@localhost ~]# yum install iptables-services
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: ftp.riken.jp
 * epel: ftp.riken.jp
 * extras: ftp.riken.jp
 * updates: ftp.riken.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ iptables-services.x86_64 0:1.4.21-16.el7 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

================================================================================
 Package                  アーキテクチャー
                                        バージョン            リポジトリー
                                                                           容量
================================================================================
インストール中:
 iptables-services        x86_64        1.4.21-16.el7         base         50 k

トランザクションの要約
================================================================================
インストール  1 パッケージ

総ダウンロード容量: 50 k
インストール容量: 24 k
Is this ok [y/d/N]: y
Downloading packages:
iptables-services-1.4.21-16.el7.x86_64.rpm                 |  50 kB   00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : iptables-services-1.4.21-16.el7.x86_64          1/1
  検証中                  : iptables-services-1.4.21-16.el7.x86_64          1/1

インストール:
  iptables-services.x86_64 0:1.4.21-16.el7

完了しました!
[root@localhost ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]
[root@localhost ~]#

無事完了!
結局、コマンドをそのまま使える様に、以下をインストールするだけということですね。

yum install iptables-services

それもあるのですが、centOS 7からfirewalldに移行していますので、なるべくそちらへ移行することが望ましいです。