先日から弄っている Rasberry Pi は、Raspbian Linux が動いていました。
しかし、Fedora Linux から使い慣れている RedHat系 Linux である CentOS で動作させたいと言う思いから起動OSを CentOS7 に変更する事にしました。
変更することでファームウェアの更新が出来ないデメリットを持ちますが、慣れているメリットの方が上回りました。ファームウェアのアップデートは、別途、現在のMicroSDカードで行う事とします。
また、このRasberry Pi を24時間稼働にしたいので
専用ケース及び、ファン、ヒートシンクのセット
を購入しました。
これで、ファンを取り付け、ホコリ対策として基板を隠す事にしました。
また、MicroSDカードでの運用は、24時間稼働には厳しいと思うので、外付けSSDをUSB接続し起動直後は、全てSSDで稼働するようにしました。
3.5インチ SSD及び、3.5インチHD用ケース
ハード的な用意は、このへんにして実際の CentOS7 のインストールを開始します。
最初は、MicroSDカードにCentOSをインストールします。
まず、MicroSDカードを念の為、 SDFormatterソフト を使い論理サイズの変更を含めフォーマットします。
下記のリンクから
AltArch Releases を探し、RaspberryPi2 (img) をダウンロードします。
ダウンロードしたファイルは xzファイルなので、7z などを使い解凍をし imgファイルを取り出します。
取り出した imgファイルを Win32DiskImager を使い、MicroSDカードに書き込みます。
出来上がった MicroSDカードは既に CentOS が稼働する状態なので、Rasberry Pi に刺しネットワークケーブルを繋げるだけで、Windwosからの SSH 接続が可能です。
初期のユーザー名とパスワードは
ユーザー名:root
パスワード:centos
となっています。
これは既に管理者権限のユーザーアカウントなので、直後にパスワードは変更しておきましょう。
コマンドは
passwd
です。実行直後に、パスワードを2回求めてきますので、適切なパスワードを設定して下さい。
また、パスワードを変更直後に
pwconv
で、シャドウ化しておきましょう。
ここまでの作業で、MicroSDカードでの作業は終了し、MicroSDカードは「/boot」のみ使うようにします。
また、初期の状態では外付けSSDを稼働する為の電源が足りないので
cp /boot/config.txt /boot/config.txt.bak
で初期設定を退避します。
もし、下記の作業で編集を間違えても、MicroSDカードをWindowsへ刺せば「/boot」はFATフォーマットなので、いつでも戻す事が可能です。
vi /boot/config.txt
でファイル編集し最後尾に
safe_mode_gpio=4
max_usb_current=1
を追加します。
今回、viコマンドで編集作業をしましたが、操作が簡単と言われている nano で編集しても問題ありません。
編集が終了し適切に変更されていることを確認したら
shutdown now
で、Rasberry Pi をシャットダウンします。
シャットダウンが終了したら、電源を抜き外付けSSDをUSBに刺し、電源を再度刺します。
起動が正常であれば、再び root でログインします。
外付けSSD が正常に認識されているかは
dmesg | grep sda
で確認します。
認識されていれば外付けSSDのパーティションとフォーマットを行います。
fdisk /dev/sda
この時、外付けSSDには、「/」ルートパーティションとswapを作成したいので2つのパーティションを作成します。
swapの容量は、物理メモリーが1Gなのでswapは2Gを取ります。
容量は
物理メモリーが2G以下の場合、物理メモリーX2となり
物理メモリーが2G以上の場合、物理メモリー+2G
が推奨されています。
実際には、稼働させるプログラムが、どのくらいメモリーを使うのかで変わってきます。今回は、CUIで稼働させるのでswapは無しでも良いくらいですが、保険です。
fdisk で使えるコマンドは、hで確認することが出来ます。
今回、60G のSSDを使うので、「/」に58Gを1のパーティションで確保し、swapを2のパーティションで2G取ります。
n → p → 1 → 1 → +58G
n → p → 2 → そのままenter → そのままenter → t → 82
これでsda1をLinuxパーティション、sda2をswapパーティションに出来ます。
wで物理的にSSDに書き込みます。
また、既にSSD内にパーティションがある場合、dで削除してから上記の作業を行って下さい。
次に、出来たパーティションをフォーマットします。
mkfs -t ext4 /dev/sda1
mkswap /dev/sda2
フォーマットが正常に終了したら、MicroSDカードから外付けSSDに「/」をコピーします。
コピーするには、cpコマンドでは権限やデバイスファイルが正常にコピーされないので「dd」コマンドを使います。
dd if=/dev/mmcblk0p3 of=/dev/sda1 bs=32M
これでMicroSDカード内の「/」であるmmcblk0p3のパーティションを外付けSSDの「/」にしたいsda1に、32Mがずつコピーします。
ddコマンドが正常に終了したら
e2fsck -f /dev/sda1
でチェックします。途中でエラーが出たらyで修復して下さい。
重大なエラーが出なければddコマンドでコピーした容量がMicroSDカードと同じ容量になっているので
resize2fs /dev/sda1
を実行して下さい。これで先にfdiskで確保した容量に拡張されます。
mount /dev/sda1 /mnt
で/mntにマウントします。
vi /mnt/etc/fstab
を編集しますが、この時、UUIDで起動マウントを指定する為
/dev/sda1と/dev/sda2のUUIDを
blkid
で調べます。ここで表示されたUUIDをメモし
vi /mnt/etc/fstab
内に
UUID=xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx swap swap notime 0 0
UUID=xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx / ext4 noatime 0 0
に変更します。
この時、前述した blkidではUUIDの前後が「"」で囲まれているので編集時には、「"」を外して下さい。
ここまでが終われば、一旦、外付けSSDのマウントを
umount /dev/sda1
で解除します。もし、マウント先の/mnt下に自身が移動していればcdコマンドでカレントに戻ってからumountして下さい。
最後に
cp /boot/cmdline.txt /boot/cmdline.txt.bak
でMicroSDカードでの起動環境を退避し
vi /boot/cmdline.txt
で
root=/dev/mmcblk0p3
の部分を
root=/dev/sda1
に変更して下さい。
これで最初の起動だけMicroSDカードで、起動後は全て外付けSSDになります。
reboot
又は
shutdown now
で再起動してください。
再起動後、dfコマンドで正常に外付けSSDの容量になっているかを確認し
dmesg | grep sda
で起動時に正常にマウントされているかを確認してください。
最後になりましたが、今回SSDを使った理由は、発熱性、電源容量を考慮した結果になっています。
通常のハードディスクでも大丈夫ですが、その場合、別途電源が必要になり発熱を考慮したケースが必要になると思います。
次回は、起動後のワンポイントを記載します。