PCで遊んだ日々の備忘録

Making PC and Customization PC

NAS|自作機 « システムセットアップ »

下記は先般ついに寿命を迎えた NAS(市販品)に代わって 前ページ で組立てた自作パソコンのシステムセットアップの内容です。(2015/09)

使用目的は NAS(Network Attached Storage)ですが公開サーバー機やデスクトップ機にも転用出来ます。

OSは CentOS 6.7 64bit を使用し Windows共有は Sambaにて行い NASのコントロールは自宅サブネット内のホスト機からリモートにて行います。

したがってSSH、FTP、Sambaサーバーの構築とSamba-SWATのインストールが必須となります。

OSに CentOS 6.7を選んだ理由は手持ちの UPS(無停電電源装置)と連携する「停電時自動シャットダウンアプリ」を使用するためです。


UEFI BIOSの設定|ASUS J1800I-C

今回自作した NAS機 のマザーボードは ASUS製の J1800I-CでサポートしているOSは Windows8/8.1 64bitと仕様書に記載されています。

つまり Secure Bootがデフォルトとなっているため Windows8/8.1 64bit 以外のOSはインストール出来ない(させない)どころかLinuxなどのライブDVDも起動出来ないと言う訳です。

このままでは CentOSをインストール出来ないので UEFI BIOSの設定を変更します。変更するのは下記の 1ヶ所だけです。

  1. UEFI BIOSの設定画面から [Advanced Mode]に入る
  2. Secure Boot メニューを開く
  3. OS Type [ Windows UEFI mode ] → OS Type [ Other OS ]に変更
  4. 保存してパソコン再起動

これでWindows8/8.1以外の OSもインストール出来るようになりました。

HDDのパーティショニングとフォーマット

今回使用する HDDのパーティションテーブルは GPT(GUID Partition Table)とし 2台の内1台を

HDDのパーティション構成 EFIシステム領域 OSシステム領域 SWAP データ保存領域

の4つのパーティションに分割します。

パーティションは GPTをサポートしている最新バージョンの GParted(GNOME Partition Editor)のライブCDで作成しました。

(下の画像は説明用の Virtual Box上のスクリーンショットです)

OSのインストール中にもパーティション作成やフォーマットは出来るのでどちらか好きな方、やり易い方を選べばよいと思います。

残りの1台は全てデータ保存領域なので GPTを設定してファイルシステムext4でフォーマットします。またこれから先の作業を効率よく進めるために各パーティションにはラベル名を設定しておきます。

ァイルシステムについて市販の NASは XFSでフォーマットされていますがこれは ファイル転送速度の高速化やフラグメンテーション(断片化)を抑制する等の目的のためと思われます。

今回の NAS機もXFSでフォーマットしたいところなのですが残念ながら CentOS 6のデフォルトのファイルシステムは ext4なのでここは素直に ext4でフォーマットしておきます。

ちなみにデフォルトのファイルシステムが XFSとなるのは CentOS 7からです。

下記は今回作成した各HDDのパーティションの状態です。

HDD 1|セクターサイズ(論理 / 物理)512bytes / 4096bytes

パーティションテーブル:GPT システム ファイルシステム マウントポイント
第1パーティション|100 MB EFI fat16 ★1 /boot/efi
第2パーティション|30 GB CentOS 6.7 ext4 /
第3パーティション|1 GB スワップ linux-swap swap
第4パーティション|969 GB データ保存域 ext4 /media/DATA/data1

HDD 2|セクターサイズ(論理 / 物理)512bytes / 4096bytes

パーティションテーブル:GPT システム ファイルシステム マウントポイント
第1パーティション|1 TB データ保存域 ext4 /media/DATA/data2

★1 マイクロソフトの「UEFI/GPTベースのハードドライブパーティションの構成」ー ドライブパーティションの規則 ーには

前略 … The minimum size of this partition is 100 MB, and must be formatted using the FAT32 file format.… 後略 

と記述されているのですが OSインストール後に partedコマンドでファイル形式を確認すると fat16でフォーマットされていました。フォーマットは OSのインストール中に行ったのですがインストーラー上では fat16等のファイル形式ではなく「EFI-System」と表示されていました。

CentOS 6.7 Basic Server 64bit

今回構築した NAS機 のOSは商用 Linux の RedHat Enterprise Linux のクローンであるCentOSを使用しました。

CentOSのインストール用isoイメージファイルの入手先は 本家 またはミラーサイトから下記のファイルをダウンロードします。

お勧めは 理研 のミラーサイトです。

ftp.riken.jp ディレクトリ:/ Linux / centos / 6.7 / isos / x86_64
isoイメージファイル CentOS-6.7-x86 64-bin-DVD1.iso
CentOS-6.7-x86 64-bin-DVD2.iso
check_sum ファイル md5sum.txt

現在 CentOSの最新バージョンは 7 ですがあえて前バージョンの 6.7を選びました。これは手持ちの UPS(無停電電源装置)の自動シャットダウンアプリが Red Hat Enterprise Linux 6.x と CentOS 5.xをサポートしているためです。

ここで CentOS 5.xではなく 6.7 にしたのは現時点で最新のバージョンであるのと CentOSは Red Hat Enterprise Linux のクローンOSなのでバージョンが同じならば多分自動シャットダウンアプリもインストール出来るだろうと思ったからです。

CentOS 6.7のインストールオプションは「Desktop」ではなく「Basic Server」を選択し更に管理人にとってサーバーの構築に必要と思われるパッケージを追加インストールしました。

例えば、X-Window System 、Gmoneデスクトップです。サーバーにデスクトップ?とお思いでしょうがサーバーにデスクトップが不要になるのはサーバーが稼働開始してからの話です。

サーバー構築中もコマンド操作が中心になるのは事実ですがデスクトップも併用した方が断然効率的(web検索など)だと思います。サーバーの構築が完了してからテキストモード(ランレベル:3)に変更すればよいのですから。

また今回はUPS連携の「停電時自動シャットダウン」アプリをメーカーサイトからダウンロードしてインストールするので webブラウザも必要です。

参考資料

インストールするパッケージや各種サーバー(SSH、FTP、Samba)の構築、ntpdによるシステム時刻(OS)とハードウェア時刻(マザーボード)の同期などの方法は下記のサイトを教科書にしました。

お便利サーバー.com

なお今回のインストールでは 1枚目のインストールDVDだけで完結しました。

Sambaサーバーの設定|2020年6月 追記

設定ファイル smb.conf のプロトコル記述について。

Ubuntu 20.04 LTS とそのフレーバーのファイラー(Files, Thunar, PCManFM など)から NASの Windows共有フォルダーにアクセス出来ない、出来ても下の画像のように空のフォルダーが表示されます。また、直接アドレスを入力しても同じです。

Windows 共有をマウントできないメッセージ

要求された場所にアクセスできません

Windowsネットワークを開いた画像

Windows ネットワークを開くと...

ホスト名、アドレスを入力している画像

ホスト名、アドレスを入力しても...

環境によっては、テキストファイルや画像ファイルが「フォルダー」のアイコンで表示され開くことができない事も確認しました。

原因は CentOS6.10 Samba3.6の通信プロトコルが SMB1 であり、Ubuntu 20.04 LTSでは SMB1 が廃止され SMB2以降のプロトコルでないと正常なアクセスが成立しないためです。

下記は リリースノート からの引用です。

Samba 4.11

Focal ships with Samba 4.11.x which introduces a number of changes. Of note we have:

  • SMB1 disabled by default: can still be enabled via a /etc/samba/smb.conf config change;
  • python2 no longer supported

Detailed upstream release notes for 4.11.0 can be seen here: Samba 4.11.0 - Release Notes

 

Samba 4.11

Focal には Samba 4.11.x が同梱されており、多くの変更が加えられています。注目すべきは次のとおりです。

  • SMB1はデフォルトで無効になっています。/etc/samba/smb.confの設定変更で有効にすることができます
  • python2はサポートされなくなりました

4.11.0の詳細なアップストリームリリースノートは、こちらで確認できます: Samba 4.11.0 - Release Notes

解決方法は、2つ。Samba4 にアップグレードするか、現Samba3.6の設定ファイル smb.conf の [global] セクションに SMB2 プロトコルを使用するコードを追記するかです。今回は後者を選択しました。

理由はアップグレードによる予期せぬトラブルを避けるためよりリスクの低い方を選びました。リモート端末から

 # nano /etc/samba/smb.conf

下記を追記して保存します。

[global]
max protocol = SMB2

リモート端末の画像

リモート端末から編集と再起動

smb.confファイル編集後の画像

smb.conf に SMB2 追記

そして Sambaサーバーを再起動します。

 # /etc/init.d/smb restart

これで以前のように使えるようになりました。

Windows 10 について

参考までに Windows 10 デフォルトのプロトコルは SMB2 以上ですが、手持ちの Windows 10 Home はインストール時に自動的に SMB1 プロトコルに設定されていたので問題ありませんでした。

Windows 10 Pro のリテール品は自動で設定され、プリインストール版は手動で設定していたので問題ありませんでした。いずれ Windows 10 の SMB1 も廃止になるのでしょうね。

サーバー構築の前に1

NAS機のプライベートIPアドレスを固定

現在ルーターから NAS機に割り当てられているプライベートIPアドレスは DHCP(Dynamic Host Configuration Protocol)なのでサブネット内のホスト機の使用状況によって変動します。

これはサーバーとしては不都合なので OSのインストール後 SSH、FTP、Sambaの各サーバーを構築前する前にルーター機能を使用してプライベートIPアドレスが変動しないように固定しておきます。

プライベートIPアドレス固定の設定方法はルーターの機種によって異なるのでそれぞれのマニュアルに従って設定します。

サーバー構築の前に2

SE Linuxとファイヤーウォールを無効化

SE Linuxは個々のプログラムにアクセス制限をかけるセキュリティーツールでその効力は root(スーパーユーザー)を含めた全てのユーザーに及びます。

故に設定を誤ると例えばパーミッションを解決したにもかかわらずプログラムが実行されない或いはアクセスできない等の問題が出たりするので SE Linuxの取扱いには難しいものがあります。

SE Linuxは公開サーバーで重要な情報を取り扱う場合などには必要かもしれませんが自宅内に設置するようなファイルサーバーにおいてはこのような高度な機能は不要ですしむしろ障害になりかねません。

そこで、CentOS 6.7ではこのSE Linuxがデフォルトで有効になっているのでサーバー構築の前にファイヤーウォールと共に無効化しておきます。

それでは端末から

 # nano /etc/selinux/config

を実行し SE Linuxの設定ファイルのデフォルトのコード部分をコメントアウトして

#SELINUX=enforcing
SELINUX=disabled

と記述し保存したらパソコンを再起動して次のコマンドで SE Linuxが無効になったことを確認します。

 # getenforce
 Disabled

下の画像はローカル(サブネット内ホスト機)からサーバー機にリモート接続したTeraTermのスクリーンショットです。

続いてファイヤーウォールの無効化はデスクトップからroot権限により設定します。下の画像はファイヤーウォールを無効化した状態のスクリーンショットです。

一見ファイヤーウォール有効に見えますがステータスバー左側にファイヤーウォール無効のメッセージが出ています。

HDDのマウント

今回 2台の HDDで 2つのパーティションを保存領域に設定したのでこの領域をサブネット内の Windows機や Linux機から読み書き出来るようにするためには OSにマウントする必要があります。

手動でマウントしてもよいのですが NASを再起動する度に手動マウントするのも面倒なので OS起動時に自動的にマウントする様に /etc/fstabを設定します。

その前に2つのパーティションのマウント先ディレクトリを /media/ 下に作成し Windows上から読み書き出来るようにパーミッション(権限)を変更します。

パーミッション(権限)を変更

HDD 1(sda4)をマウントするディレクトリを data1、HDD 2(sdb1)をマウントするディレクトリを data2とします。

端末から

 # mkdir -p /media/DATA/data1
 # mkdir /media/DATA/data2

-pオプション|/DATAと /data1の2つのディレクトリを作成

を実行してディレクトリが作成されたら所有者をユーザーに、パーミッションを 777に -Rオプションで変更します。

端末から

 # chown -R ユーザー名:ユーザー名/media/DATA/data1
 # chown -R ユーザー名:ユーザー名/media/DATA/data2
 # chmod -R 777 /media/DATA

自動マウントの設定

次に /etc/fstabに自動マウントの設定を記述します。このときHDDとパーティションの識別をUUIDで行うので blkidコマンドでHDDとパーティションのUUIDを表示させておきます。

端末から

 # blkid

を実行すると下記のようにHDDとパーティションの情報が表示されます。朱文字がマウントするべきパーティションです。

/dev/sda1: SEC_TYPE="msdos" UUID="9AD7-954F" TYPE="vfat"
/dev/sda2: UUID="e8f3a5b9-19af-480b-9916-78024b14287f" TYPE="ext4"
/dev/sda3: LABEL="swap" UUID="29c7d0e0-da55-40c1・・・364f25" TYPE="swap"
/dev/sda4: LABEL="data1" UUID="a6da1205-5cf2-40d・・・49aa1b5" TYPE="ext4" 
/dev/sdb1: LABEL="data2" UUID="88c8bc55-81d7-427・・・1f1d58d" TYPE="ext4" 

続けて

 # nano /etc/fstab

を実行しblkidコマンドで表示させた UUIDと HDDのマウント先などを最終行に下記のように記述し保存します。

上記 "data1"、"data2" と下記 /data1、/data2について|2者の名称は同じである必要はありません 説明用に同じ名称にしているだけなのでパーティションが判別できれば何でもよいです

   ⋮
UUID=a6da1205-5cf2-40d・・・49aa1b5 /media/DATA/data1  ext4  defaults  0 0 
UUID=88c8bc55-81d7-427・・・1f1d58d /media/DATA/data2  ext4  defaults  0 0 
 

下の画像はサブネット内ホスト機上の端末(TeraTerm)から見た /etc/fstab設定後のスクリーンショットです。

実際には構築中のNAS機上で設定しました。

そして次のコマンドを実行してマウントできる事を確認します。

 # mount -a /media/DATA/data1
 # mount -a /media/DATA/data2

マウントできたら NAS機を再起動して data1、data2が自動マウントされている事を確認します。

最後に Sambaサーバーを構築してサブネット内ホスト機の Windows上で NASのホストネームのフォルダーが下の画像のように表示されそのフォルダー内の data1とdata2にアクセス出来れば設定完了です。

なお、Sambaサーバーの構築で共有ディレクトリを設定する場合マウントした /data1/、/data2/を指定してもよいのですがその場合 /data1/、/data2/の中にそれぞれ自動的に作成される /lost+found/ディレクトリがサブネット内の Windows上から見える事になります。

なので /data1/、/data2/ディレクトリ下にそれぞれもう1つディレクトリを作成してこれを共有ディレクトリに指定します。

Windows側で lost+found を非表示にするには(2020年9月 追記)

(NASの OSは CentOS8.2 Samba4.11 にアップグレードしています)

Sambaサーバーの設定ファイル smb.conf の共有ディレクトリセクションに以下ののコードを記述します。

Text Editor :
[共有名]
 hide files = /lost+found/

次に lost+found ディレクトリの所有者を root に、パーミッションを 755 に変更します。

GNOME Terminal :
 # chown -R root:root /media/DATA/data1/lost+found 
 # chmod -R 755 /media/DATA/data1/lost+found
 # systemctl reload smb

以上の設定により Windows側では「隠しフォルダー」となり、半透明で表示されるのでエクスプローラーウィンドウの 表示 タブ内の 隠しファイル のチェックを外します。

これで lost+found ディレクトリを削除することなく非表示になります。

Windows 側の設定

Windows 側で設定することは特にありませんが NAS機への SSH接続とコントロールのため端末エミュレータ Tera Term(テラターム)をインストールしておきます。

直近では ホスト機のWindows上から停電時自動シャットダウンアプリをインストールする際に使用します。

もしも FTPサーバーを構築しているならばファイルの送受信用に FTPクライアントの WinSCP をインストールしておくと何かと便利です。SSH接続が出来るのでお勧めです。

参考までに Windows側で設定することは特にないと書きましたが1つだけ ー Tera Termで NAS機へ接続する際にIPアドレスを入力するのが面倒な時は hostsファイルにNAS機のIPアドレスとホストネームを記述して名前解決しておくとよいです。

NAS機のホストネームで接続できるようになります。hostsファイルは下記の場所にあるのでテキストエディタやメモ帳で開いて最終行に記述しておきます。

C:\Windows\System32\drivers\etc\hosts 
 
 
  192.168.0.10      net2.localdomain 
(NAS機のIPアドレス)   (NAS機のホストネーム) 
 

VLC メディアプレイヤーのインストール

今回自作したパソコンは NAS用途だけでなくデスクトップ機にも転用出来るようにしておきたいのでマルチメディアプレイヤーの VLC をインストールしました。

OS デフォルトのメディアプレイヤーは別途コーデックをインストールしないと使えないのでコーデックパックを探す手間を考えると VLCをインストールしたほうが手っ取早いと思ったからです。

ところがそのインストールには少々手こずりました。何しろ初めてCentOS Server にインストールしたものですから Ubuntuのようにはいきません。

インストールの方法をインターネットで検索して2つの方法を試したのですが上手く行かず3つ目に行った下記の方法でインストールする事が出来ました。

Nux !(Nux on CentOS 7) というフォーラムに掲載されていた CentOS 7 用のリポジトリを 6用のリポジトリに修正(赤字部分)して VLCをインストールしました。

端末から

 # yum install http://li.nux.ro/download/nux/dextop/el6/x86_64/nux-dextop-release-0-1.el6.nux.noarch.rpm 
 
 # yum install vlc

を実行してインストール完了です。

OSのユーザーインターフェイスをテキストモードへ

ここまでの設定やインストールは NAS機のデスクトップ(GUI)上で行ってきましたがここから先は NAS機を UPSと接続しネットワーク上に置くのでモニターやキ-ボード等は取外すことになります。

その前にデスクトップは起動する必要がないのでテキストモードでの起動(ランレベル:3)へ変更しておきます。設定ファイル /etc/inittabを編集します。

端末から

 # nano /etc/inittab

を実行して設定ファイルの最終行のランレベル 5をコメントアウトして

#id:5:initdefault:
id:3:initdefault:

の様にランレベル 3を記述し(下画像)保存して NAS機を再起動します。

モニター画面にログインプロンプトが表示され入力待ちの状態になっていれば OSはテキストモードで起動しています。

ログインプロンプトが確認できたらユーザーIDとパスワードを入力しログインしてrootに昇格または rootユーザーでログイン後、次のいずれかのコマンドでシャットダウンします。

 # shutdown -h now(今すぐシャットダウン)
 # shutdown -h +1(今から1分後にシャットダウン)

シャットダウンしたら NAS機を所定の場所に設置します。これ以降の設定やアプリのインストールはサブネット内のホスト機から行います。

参考までに|テキストモードでログイン後日本語のデスクトップ(X-Window System)を起動したい場合は次のコマンドを実行します。

 $ LANG=ja_JP.UTF-8 startx
 

UPSとの連携

停電時自動シャットダウンアプリのインストール

今回寿命を迎えた市販の NASと一緒に購入した UPSを引き続き使いたいので停電時に NASを自動的にシャットダウンしてくれるアプリケーションソフトをインストールする事にしました。

そのアプリは「Simple Shutdown Software(Linux版)」と言う自動シャットダウンアプリで UPSのメーカー OMRON のサイトで無償配布されています。

  • UPS型式:BX35F
  • Simple Shutdown Software Ver 2.30(Linux/64ビット版)
  • Ver 2.30/2.20 取扱説明書 Linux版

今回下記の手順でインストールしました。この手順はホスト機で WinSCPなどの FTPクライアントを使わないつまり FTPサーバー未構築の場合の方法です。

  1. 新・NAS機に CentOS 6.7をインストールしサーバーの構築を完了する
  2. 新・NAS機に UPSメーカーのサイトからスタンドアロン用の Simple Shutdown Softwareをダウンロードし解凍しておく
  3. この時アプリの取扱説明書も必ずダウンロードしてサブネット内のホスト機にコピーしておく
  4. 新・NAS機をシャットダウンしてUPSに接続する(UPS付属のUSBケーブル)
  5. UPS電源ON → 新・NAS機にLANケーブルを接続し電源ON
  6. 新・NAS機にホスト機からリモート接続
  7. 一般ユーザーでログイン後 rootに昇格または rootユーザーでログイン
  8. ホスト機から前出の取扱説明書に従ってインストール
  9. インストールが完了するとデーモン登録されるので再起動しなくてよい
  1. 2015年9月末 新・NAS機稼働開始!

 

Simple Shutdown Software の設定

下の画像はSimple Shutdown Software 設定のスクリーンショットです。net2.localdomain が新・NAS機のホストネームです。

設定の変更は Agent Managerを下記コマンドで起動します。

 # /usr/lib/ssd/master/AgentManager

するとメニューが表示されるので一旦自動シャットダウンアプリを停止してから新しい設定を入力していきます。詳しい事はアプリと一緒にダウンロードした取扱説明書に記載されています。

以上でUPS連携停電時自動シャットダウンアプリのインストール完了です。

HDDの使用量を確認する

2015年9月末の稼働開始からひと夏の厳しい環境を乗り越え2016年12月現在まで何の問題もなく運用しています。

そこで今回はこの期間のHDD使用量を確認しておきます。まずはサブネット内ホスト機のTeraTermからNAS機にリモート接続しユーザー権限でログインしてrootに昇格しておきます。

確認方法

rootに昇格したら次のコマンドを実行します

 # df -h

すると下記のようにHDDのパーティションごとにその使用量が表示されます

Filesystem   Size  Used  Avail  Use%  Mounted on
/dev/sda2     30G  4.0G   24G    15%  /
tmpfs        1.9G     0  1.9G     0%  /dev/shm
/dev/sda1    100M  256K  100M     1%  /boot/efi
/dev/sda4    887G  466G  376G    56%  /media/DATA/data1-a
/dev/sdb1    917G  493G  378G    57%  /media/DATA/data2-f
 

下の画像はTeraTermから上記コマンドを実行した時のスクリーンショットです。

実は今回HDDの使用量を確認する事になったきっかけがホスト機のバックアップイメージを転送している途中でバックアップアプリが停止したことでした。

原因は /dev/sda4(/media/DATA/data1-a)の容量不足で、思えば稼働開始から現在に至るまで1度も容量確認などしていませんでした。今回 /data1-aディレクトリ内を整理して上記の結果となっているわけです。

容量オーバーした NAS機の挙動は ?

ところで容量オーバーしたその時のNAS機の挙動について、サブネット内の別のホスト機からも /data1-aにアクセス出来ますしファイルの読み込みも問題ありませんでした。

図らずもNAS機が容量オーバーした時の動作確認ができた結果となりました。

CentOS 6 リポジトリの不具合を解消する(2020年5月 追記)

2015年9月に自作NASの稼働開始して以降、初のシステムのアップデートを実行しましたが途中リポジトリのリンク切れで少々手こずりました。結果的に問題解決に 3時間ほどかかりましたがアップデート完了しました。

作業は自宅サブネット内ホスト機(Windows10)からリモートで行いました。以下に不具合解決までの詳細を記します。

現象

現象は次の通り。

  1. yum update を実行するとリポジトリURLアクセス 404エラーでアップデートが停止した。
  2. 下記コマンドで yumキャッシュをクリアしてアップデート実行しても変わらない。
Terminal :
 # rm -fr /var/cache/yum/*
 # yum clean all
  1. リポジトリ リスト コマンドを実行すると下記のエラーがある。
 # yum repolist
結果
読み込んだプラグイン:fastestmirror, refresh-packagekit, security 
Determining fastest mirrors
base
base/primary_db
extras
extras/primary_db
nux-dextop
nux-dextop/primary_db
エラー:Cannot retrieve metalink for repository:
 epel. Please verify its path and try again
(リポジトリ用の metaリンク を取得できません。epel パスを確認してからもう一度試してみてください。)
 
試したこと

現象1.のエラーメッセージの中に

If the mirrorlist= does not work for you, as a fall back you can try the 
remarked out baseurl= line instead.
(mirrorlist= がうまくいかない場合は、代わりに baseurl= 行を使ってみてください)

とあったのでこれを試してみました。

下の画像(fig1)は epelリポジトリの設定ファイルである epel.repo の内容です。mirrorlist= に https で、baseurl= に http で始まる接続先の URLが記述されています。

epel.repo 中の mirrorlist= の行頭に # を入れてコメントアウトし、 baseurl= の行頭の # を外して有効化しました。(fig2)つまり HTTPSプロトコルからHTTPプロトコル接続に変更したわけです。

下の画像(fig3)は yum repolist コマンドを実行した結果です。epelリポジトリのエラーが解消されています。

epel.repo 編集前の画像

fig 1| epel.repo 編集前

epel.repo 編集後の画像

fig 2| epel.repo 編集後

yum repolist コマンド実行結果の画像

fig 3| yum repolist コマンド実行結果

続けて yum update コマンドを実行した結果、依存性解決が終了した後、アップグレードするべき 2つのパッケージが見つからないというエラーが出ました。

そこでこの2つのパッケージをアンインストールして再度 yum update コマンドを実行した結果、今度は別のパッケージのダウンロードエラーで止まってしまいました。

結果この方法では解消できないことが分かりました。なおこのエラーの対処法は次のパートで説明しています。

原因と対処法

解決方法は こちらのコミュニティ ですぐに見つかりました。原因は SSL証明書の不整合でした。不整合とは OSシステム側に持っている証明書(ルート証明書)の有効期限がリポジトリ側に持っている証明書(SSLサーバー証明書)の有効期限から外れているということです。

簡単にいうと HTTPSプロトコルつまり https:// から始まる URLにアクセスできない訳です。詳しくは 「いまさら聞けない、SSLサーバ証明書とルート証明書の関係.pdf」 を見てください。非常に分かりやすいです。

今回に当てはめてみると、長期間アップデートしていなかったのでルート証明書の有効期限が切れ、リポジトリにアクセスできなかったという訳です。なので対処法はルート証明書を更新すればよいことが分かりますね。

上述のリンク先コミュニティのベストアンサーと同じ答えになりました。具体的には下記コマンドを実行すればよいとの事。

 # yum upgrade ca-certificates --disablerepo=epel 

一旦無効にした epel は更新完了後に有効になるようです。ですが今回このコマンドは実行していません。別の方法で更新しました。

というのも同コミュニティの回答の中に「https の代わりに http を使用するように epelリポジトリを変更できます」とあり、下記コマンドが書いてありました。

 # sed -i "s/mirrorlist=https/mirrorlist=http/" /etc/yum.repos.d/epel.repo 

ですがこのコマンドも実行しませんでした。

今回は epelリポジトリの設定ファイルである epel.repo を直接編集することににました。理由は、編集するといってもたった 4文字記述を変えるだけなのでこの方が簡単だし何をしているのか分かるからです。

具体的には mirrorlist= の行3ヶ所を下記のようにしました。

[epel],[epel-debuginfo],[epel-souece]
mirrorlist=https://mirrors.fedoraproject.org/ … 
   ↓ ↓ ↓ 
mirrorlist=http://mirrors.fedoraproject.org/ …

行間の記述は省略しています。その他の行は下の画像を参照してください。

これで yum update を実行してみると、パッケージのダウンロードエラーが解消しアップデートに成功しました。下の画像はその様子のスクリーンショットです。

パッケージリストの読込み画像

パッケージリストの読込み 成功!

トランザクションテストの画像

トランザクションテスト 成功!

アップデート 完了の画像

アップデート 完了!

次に更新されたパッケージ群をシステムに反映するため NASを再起動ではなく shutdown コマンドで電源を切ります。

 # shutdown now 

最後に NASの電源投入しシステムが起動した頃を見計らって epel.repoファイルの http を https に戻し、yum repolist コマンドを実行して下の画像のようにエラーが出ないことを確認します。

これはどういう事かというと、OpenSSL等のパッケージがバージョンアップされた際、SSLルート証明書が更新されたという訳ですね。

▲ 目次へ

クリエイティブ・コモンズ・ライセンス
Top of Pageの画像
sidemenuの画像