Windows8.1インストール済みのECS LIVA(いわゆる「白LIVA」)がお安くなっているようですね。今日の時点だと、32GBモデル(LIVA-C0-2G-32G-W-OS)が16,000円弱で買えるようです。
この白LIVA、マシンパワーはそこそこありながら完全ファンレス&省電力&小型軽量&安価と、非常に魅力のある存在だと思っています。そこで、今回はこの白LIVAにCentOS7をインストールして、痛快至極な小型軽量サーバを構築する方法を書いてみたいと思います。
ただし、この方法にはいくつか注意点があります。
- (当然ながら)正規の使用方法ではありませんので、メーカー保証は効かなくなります。
- インストールされているWindows8.1は完全に消去されます。
- 無線LANやBluetoothは(現段階では)使用できなくなります。
- 正規のカーネルは使用しないので、安全に運用できる保証は一切ありません。
- 下記の方法を適用したことによって生じた一切の不利益について、筆者は責任を負いかねます。あくまで自己責任で行なってください。
というわけで、とても万人にお勧めできる方法ではありません。というか、安易に信用しないでください。少しでも不安に思ったら、実行しないでください。
ただし、腕に覚えのある方であれば思わずニヤリとして頂けるハッキングではないかと思いますので、2万円弱をどぶに捨てても構わないという猛者の方々のために、以下ご紹介致します。
なお、白LIVAでCentOSを動かす方法は、私のオリジナルではありません。最初にこのアイデアを実現されたのはanagotさんです。私はその過程を推測してご紹介するだけですので、先駆者の功績は私のものではありません。また、以下の手順で何等かの不具合が生じた場合にanagotさんにお問い合わせ等をするのは絶対におやめください。この点、どうかよろしくお願い致します。
では、手順を紹介致します。
0.用意するもの
- 仮想化ソフトと、それを動かせる64bit環境(32bit環境ではできません)
念のため、仮想環境側でUSBデバイスを認識する機能があることを確認しておいてください。ちなみに、VMware Workstation Playerでは認識できることを確認済みです。 - CentOS7(1503)のISOイメージ
- Ubuntu(バージョン14.04以上)のブータブルISOイメージ(64bit版)
- USBメモリその1(2GB以上あれば充分です)
- USBメモリその2(お手持ちの白LIVAのストレージ容量以下であること。USB3.0対応のものがお勧めです)
- 3口以上のUSBハブ
1.仮想環境(その1)にCentOS7をインストールする
この時点で「どうすればいいの?」と思う方は、以下の手順に進まずにどうぞお帰りください。仮想環境の設定や操作手順、CentOSのインストール方法等はこの記事の本筋ではありませんので、省略させて頂きます。
なお、後ほどこの環境でカーネルのビルドを行ないますので、マシンパワーはそれなりに割り振っておいた方がよいかと思われます。お好みにもよりますが、あくまで作業用ですのでフルインストールする必要はありません。
2.仮想環境(その1)でカーネルをビルドする
RPM形式でのビルドの手順は過去の記事にありますので、ご参考までに。もちろん、皆さまお得意の方法がありましたら、それで問題ありません。ビルドするカーネルの条件は、以下の2点です。
- バージョン3.13以上であること
- BayTrail-M SoCのeMMCを認識するために必要な、以下の7つのモジュールを組み込むこと
mmc_core、mmc_block、sdhci、sdhci-acpi、acpi_lpss、pinctrl、pinctrl-baytrail
バージョン3.18.24であれば、私が作成した.configが使えるかと思いますので、config作業が面倒だと思われる方はご利用ください。もちろん、この.configを基にカーネルのチューニングを行なっても一向に構いませんが、上記7つのモジュールが無くならないようにご注意ください。
なお、余計なことに私の設定ではカーネルの圧縮アルゴリズムとしてLZ4を使用していますので、ビルドする際はlz4-develのインストールをお忘れなく。
また、さらに余計なことにゲームコントローラのモジュールや英語と日本語以外の言語サポートなど、サーバ用途には不要と思われるモジュールはざっくりと切り捨てていますので、皆さんが必要とされているモジュールが残っているかどうか、念のためにご確認ください。
無事ビルドが完了しましたら、次のステップへどうぞ。
3.仮想環境(その2)にCentOS7をインストールする
ここで作成した環境がそのままLIVAに導入されますので、作成の際は以下の点にご注意下さい。
- ファームウェアはEFIであること
VMwareであれば、vmxファイルに「firmware=”efi”」という行を追記してください。その他の仮想化ソフトでの設定方法はよく知りませんが、UEFI 64bitでしか動作しない白LIVAに導入する以上、これは必須です。 - ディスクサイズは小さめに
ここで作成したディスクイメージをそのまま流し込みますので、お手持ちの白LIVAのストレージ容量を超えないのはもちろんのこと、お手持ちのUSBメモリその2に全部入り切るサイズに設定してください。 - ディスクはLVMで作成すること
後々の処理が楽なので、2TB以下であってもLVMで作成します。CentOS7のインストーラはデフォルトでLVMで作成しますので、そのままで構いません。
4.仮想環境(その2)にビルドしたカーネルをインストールする
RPM形式であればrpmで、そうでない方はそれなりの方法でインストールしてください。
インストールした後、以下のコマンドでGRUB2の設定を変更します。
grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
ビルドしたカーネルで再起動してみてください……問題なく起動したらOKです。もしダメでしたら、お気の毒ですがカーネルのconfigからやり直してください。
5.仮想環境(その2)のディスクイメージをUSBメモリその2に焼き込む
仮想環境側でUSBメモリをどのデバイスとして認識するかによりますが、そのデバイスがわかれば以下のコマンドでOKです。
dd if=/dev/sda of=[USBメモリのRAWデバイス名] bs=32M
「bs=32M」は、おまじないだと思ってくださいw
(小ネタ:ddを実行中のプロセスにSIGUSR1を送ると、ddの途中経過を教えてくれます。)
6.UbuntuのブータブルUSBイメージを作成する
USBメモリその1に、Ubuntu14.04以上のブータブルISOイメージを焼き込みます。14.04未満のバージョンでは白LIVAのeMMCを認識できないので、利用できません。焼き込み方法はご随意に。ちなみに私はLinuxLive USB Creatorで作成しました。
7.白LIVAに諸々を繋いでUbuntuを起動する
白LIVAのUSB2.0ポートにUSBハブを繋いで、そこにキーボード、マウス、USBメモリその1を差します。HDMIは対応モニタに繋ぎましょう。
そして、LIVAの電源を入れたらDELキーを連打してUEFIのメニューを呼び出します。ブートデバイスの優先順位のトップにUSBメモリその1を設定したら、設定を保存して再起動してください。この辺、特に画面写真とかメニューの項目とかは示しませんので、悪しからず。
8.Windows8.1にさよならを告げる
無事にUbuntuが立ち上がったら……心の準備はよろしいでしょうか。ここで白LIVAのeMMC(/dev/mmcblk0)にインストールされているWindows8.1を完全に消去します。少しでも惜しいと思ったら、ここで引き返してくださって結構です。
(インストール済みのWindowsを吸い出して保存するって、可能なんでしょうか。私もよく知らないのですが)
未練を断ち切った方は、ターミナルを開いてgdiskを起動してください。
gdisk /dev/mmcblk0
そして、すべてのパーティションを削除してください。最後の「w」で、すべてが消えます。あくまで自己責任で実行してください。
9.白LIVAにCentOSのイメージを流し込む
まっさらになったLIVAのストレージに、USBメモリその2に焼き込んだディスクイメージを流し込みます。USBメモリその2はLIVAのUSB3.0ポートに差すといいでしょう。USBメモリが3.0に対応していれば、2.0に比べて転送速度が圧倒的に速いです。
コマンドは
dd if=[USBメモリその2のRAWデバイス名] of=/dev/mmcblk0 bs=32M
でいけるはずです。まれにUbuntuがUSBメモリその2を認識しそこなうことがありますが、何度か差し直してリトライすれば大丈夫です。
10.LIVAのCentOSを起動する
ddが終了したら、Ubuntuをシャットダウンして、LIVAの電源が切れたのを確認してからUSBメモリその1、その2を抜きます。
そして、再び電源を入れたらDELキー連打でUEFIのメニューを呼び出します。ブートデバイスを見ると「UEFI OS」という項目があるはずです。それをブートの優先順位のトップにして設定を保存したら、再起動してください。
……どうですか?
ビルドしたカーネルでうまく起動したら、まずはおめでとうございます。
11.ファイルシステムを拡張する
以下、LIVAのCentOS上で作業を行ないます。
たとえばストレージ64GBのLIVAに32GBのディスクイメージを流し込んだ場合、GPTの最後尾にあるパーティションテーブルは32GBのところに置かれてしまいます。これは全ストレージの半分の位置でしかないので、このままでは全ストレージを使用することができません。まずこのパーティションテーブルの位置を修正します。
修正にはpartedを使います。
parted /dev/mmcblk0
すると、「パーティションテーブルの位置がおかしいよ! 直す?」的なことを訊かれるので、修復(Fix)を選択します。私の場合は2回訊かれたので、2回ともFで答えました。これだけで、パーティションテーブルの位置は修正されます。
続いて、今度はLVMの大きさを拡張します。LVMの論理ボリュームの大きさも流し込んだイメージの大きさのままになっているので、これを全ストレージにまで拡張します。
まず、論理ボリュームの名前を確認します。
lvdisplay
続いて、その名前を使って以下のコマンドを実行します。
lvextend -r -l +100%FREE [論理ボリューム名]
これはマウントしたままで実行できるはずです。-rオプションをつけて、ファイルシステムもついでに拡張してしまいましょう。
……以上で、インストール作業はおしまいです。いかがでしたでしょうか。
白LIVAに載せたCentOS7は思った以上にキビキビと動いてくれます。この小さな小さなサーバをどう生かすかは、皆さまのアイデア次第です。ちなみに私は、まず自前で運用しているVPSの監視に使おうかと思っていますが、他にもいろいろな用途が考えられますので、今後が楽しみです。
ああそうそう、最後にひとつTipsを。
この段階で白LIVAは無線LANが使えませんので、有線のネットワークに接続せざるを得ません。また、白LIVAは(どういう理由かわかりませんが)何等かのディスプレイを接続していないと、起動しないようになっています。有線のネットワークとディスプレイがLIVAの設置場所の近くにあれば問題ないのですが、案外そうもいかないものです。もしサーバとしてヘッドレスで運用するのであれば、VGA端子にダミープラグを差しておくといいでしょう。我が家ではこれで無事に動いています。
それでは、お疲れ様でした。