Acer Aspire easyStore H340 に Windows Server 2012 R2 Essentials を入れる

あらすじ

もう購入して6年前ですが、下記の記事で書いた Acer Aspire easyStore H340 という Windows Home Server の4ドライブベイの NAS を使っていました。

Windows Home Server 搭載の Acer Aspire easyStore H340-S1 レビュー - tilfin's note

とうに Windows Home Server 自体は終わってしまったんですが、Drive Extender というこちらも廃止された機能がゆるく便利だったためそのまま使い続けていました。ギガビットイーサのNICであるため速度的な問題がなく、NAT内での利用でセキュリティに不安はそれほどなかった。オールインワンで販売されたNASだったので、コンソールが普通に利用できないためOSインストールすらもハードルが高かったのが理由です。

しかし、流石に色々と厳しくなってきました。Windows Home Server が32ビットのため、 4ベイのHDDがそれぞれ最大2TBまでしか認識できなく、初期のシステムドライブは1TBなので複製機構を利用すると3.5TB(= (1+2+2+2) / 2)で限界になること。Drive Extender をマイクロソフトが捨てているので、新しい大規模ストレージシステムに移行しておかないとと思い、アップグレードを検討することにしました。

この間に Windows Home Server 自体は次のバージョン 2011 が出てそこで打ち止めとなり終了してしまいました。現存する一番近い OS は Windows Server 2012 Essentials の R2 になります。Windows Home ServerWindows Server 2003 ベースのため5世代の差があります。普通はハードから総取り替えするレベルなんですが、この筐体が静音でデザインも気に入っていたのと、メモリを増設すれば動作環境にギリギリ達することができたので、頑張って Windows Server 2012 R2 Essentials を入れてみようと調べ始めました。

日本語のリソースではこれを行った人は見つからなかったのですが(マザーボードを入れ替えてインストールした方はいました)、海外のフォーラムでは成功している人がいて、手順も載せてくれていたためやってみることにしました。

How To Install Windows Server 2012 R2 On H340 Hardware With No Vga Cable (Unattended Install) Using Virtualbox - Acer - We Got Served Forums

手順概要

  • Windows ADKを使って、Windows を無人インストールできる設定ファイルを用意する。
  • 物理ハードディスクに対して、VirtualBox から Windows Server 2012 R2 Essentials を途中までインストールする。
  • easyStore のシステムドライブベイ(1番下)にハードディスクを差して電源を入れる。
  • 数十分放置して無人インストールが完了した頃合で、リモートデスクトップからセットアップする。

注意事項

  • 記憶域プールは DriveExtender とは違い物理ハードディスクをまとめて指定するため、システムディスクの空き領域を活用することはできない。
  • OSをインストールするシステムハードディスクは、MBRディスクとなるため2TBまでしか利用できない。
  • GPTディスクが含まれるため現状 easyStore の各ドライブベイのLEDを利用することはできない(点灯しない)
  • インフォメーション(iマーク)LEDは常時青で点滅となる。
  • メモリを 2GB 以上に増やす(スロットは1つなので入れ替え)。

無人インストール用自動応答ファイルの設定

基本方針として入力が必要なものは予めセットしておく。リモートデスクトップが利用できるようにしておく(ただ次項で設定したファイアウォールのルールは結局反映されなかった)。

Windows ADK をインストール

Windows 8.1 Update 用 Windows アセスメント & デプロイメント キット (Windows ADK) http://www.microsoft.com/ja-jp/download/details.aspx?id=39982

Windows システム イメージ マネージャー

  1. OSインストール DVD ISO をマウントして sources\install.wim を抽出
  2. Windows システム イメージ マネージャーを開く
  3. Windows イメージの選択から install.wim を選択し、カタログ ファイルを作成する。

応答ファイルの設定

応答ファイルの設定をする。カタログのComponentsから設定する(詳細は下記のリンク参照)。 最後に応答ファイル autounattend.xml として保存する。

autounattend.xml

上記の設定を自分で行ったが結局すんなり行かなかったので、自分の作ったサンプルを貼っておきます。プロダクトキー (ProductKey) を換えてください。Administratorのアカウントは、Password2012 になっています。

<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
    <settings pass="windowsPE">
        <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <SetupUILanguage>
                <UILanguage>ja-JP</UILanguage>
            </SetupUILanguage>
            <InputLocale>ja-JP</InputLocale>
            <SystemLocale>ja-JP</SystemLocale>
            <UILanguage>ja-JP</UILanguage>
            <UserLocale>ja-JP</UserLocale>
        </component>
        <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <DiskConfiguration>
                <Disk wcm:action="add">
                    <CreatePartitions>
                        <CreatePartition wcm:action="add">
                            <Order>1</Order>
                            <Size>350</Size>
                            <Type>Primary</Type>
                        </CreatePartition>
                        <CreatePartition wcm:action="add">
                            <Extend>true</Extend>
                            <Order>2</Order>
                            <Type>Primary</Type>
                        </CreatePartition>
                    </CreatePartitions>
                    <ModifyPartitions>
                        <ModifyPartition wcm:action="add">
                            <PartitionID>1</PartitionID>
                            <Format>NTFS</Format>
                            <Active>true</Active>
                            <Label>System</Label>
                            <Order>1</Order>
                        </ModifyPartition>
                        <ModifyPartition wcm:action="add">
                            <Format>NTFS</Format>
                            <Label></Label>
                            <Order>2</Order>
                            <PartitionID>2</PartitionID>
                        </ModifyPartition>
                    </ModifyPartitions>
                    <DiskID>0</DiskID>
                    <WillWipeDisk>true</WillWipeDisk>
                </Disk>
            </DiskConfiguration>
            <ImageInstall>
                <OSImage>
                    <InstallFrom>
                        <MetaData wcm:action="add">
                            <Key>/IMAGE/NAME</Key>
                            <Value>Windows Server 2012 R2 SERVERSOLUTION</Value>
                        </MetaData>
                    </InstallFrom>
                    <InstallTo>
                        <DiskID>0</DiskID>
                        <PartitionID>2</PartitionID>
                    </InstallTo>
                    <InstallToAvailablePartition>false</InstallToAvailablePartition>
                    <WillShowUI>OnError</WillShowUI>
                </OSImage>
            </ImageInstall>
            <UserData>
                <ProductKey>
                    <WillShowUI>OnError</WillShowUI>
                    <Key><プロダクトキー></Key>
                </ProductKey>
                <AcceptEula>true</AcceptEula>
                <FullName><名前></FullName>
                <Organization><組織名></Organization>
            </UserData>
            <EnableNetwork>true</EnableNetwork>
            <EnableFirewall>true</EnableFirewall>
        </component>
    </settings>
    <settings pass="oobeSystem">
        <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <RegisteredOrganization><組織名></RegisteredOrganization>
            <RegisteredOwner><名前></RegisteredOwner>
            <TimeZone>Tokyo Standard Time</TimeZone>
            <OOBE>
                <HideEULAPage>true</HideEULAPage>
                <NetworkLocation>Home</NetworkLocation>
                <ProtectYourPC>1</ProtectYourPC>
                <HideOEMRegistrationScreen>true</HideOEMRegistrationScreen>
                <HideOnlineAccountScreens>true</HideOnlineAccountScreens>
                <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>
                <HideLocalAccountScreen>true</HideLocalAccountScreen>
            </OOBE>
            <UserAccounts>
                <AdministratorPassword>
                    <Value>UABhAHMAcwB3AG8AcgBkADIAMAAxADIAQQBkAG0AaQBuAGkAcwB0AHIAYQB0AG8AcgBQAGEAcwBzAHcAbwByAGQA</Value>
                    <PlainText>false</PlainText>
                </AdministratorPassword>
            </UserAccounts>
            <BluetoothTaskbarIconEnabled>false</BluetoothTaskbarIconEnabled>
            <AutoLogon>
                <Password>
                    <Value>UABhAHMAcwB3AG8AcgBkADIAMAAxADIAUABhAHMAcwB3AG8AcgBkAA==</Value>
                    <PlainText>false</PlainText>
                </Password>
                <Enabled>true</Enabled>
                <LogonCount>9</LogonCount>
                <Username>Administrator</Username>
            </AutoLogon>
        </component>
        <component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <InputLocale>ja-JP</InputLocale>
            <SystemLocale>ja-JP</SystemLocale>
            <UILanguage>ja-JP</UILanguage>
            <UserLocale>ja-JP</UserLocale>
        </component>
    </settings>
    <settings pass="specialize">
        <component name="Microsoft-Windows-TerminalServices-LocalSessionManager" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <fDenyTSConnections>false</fDenyTSConnections>
        </component>
        <component name="Networking-MPSSVC-Svc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <FirewallGroups>
                <FirewallGroup wcm:action="add" wcm:keyValue="EnableRemoteDesktop">
                    <Active>true</Active>
                    <Group>Remote Desktop</Group>
                    <Profile>all</Profile>
                </FirewallGroup>
            </FirewallGroups>
        </component>
        <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <ComputerName><ホスト名></ComputerName>
        </component>
    </settings>
    <cpi:offlineImage cpi:source="catalog:d:/temp/install_windows server 2012 r2 serversolution.clg" xmlns:cpi="urn:schemas-microsoft-com:cpi" />
</unattend>

リモートデスクトップのポート開けは設定したものの適用されていませんでした。最初はファイアウォール自体を無効 (EnableFirewallをfalse) にしてもいいかもしれません(ただ無効になってくれるかは検証していないので推測です)。

このXMLファイル autounattend.xml をルートに配置した CD ISO イメージ(autounattend.iso)を何らかの方法で作成します。

物理ハードディスクを仮想ディスクとして利用する準備

管理者権限でコマンドプロンプトを開いて、VirtualBoxのVBoxManageコマンドで行います。

C:\Windows\system32>cd "\Program Files\Oracle\VirtualBox"

C:\Program Files\Oracle\VirtualBox>VBoxManage internalcommands createrawvmdk -fi
lename "D:\Temp\easystore.vmdk" -rawdisk "\\.\PhysicalDrive2"
RAW host disk access VMDK file D:\Temp\easystore.vmdk created successfully.
  • PhysicalDrive2 の 2 は予めディスク番号を調べておいて合わせます。

VirtualBox

VirtualBoxの新しいゲストを作成します。ハードディスクドライブに easystore.vmdk を選択します。CD/DVDドライブに以下をセットします。

  • ja_windows_server_2012_r2_essentials_with_update_x64_dvd_4119240.iso
  • autounattend.iso

ゲストを起動します。ロケール選択が出てこないで進めばとりあえず順調です。「処理が完了します」まで緑のチェックが入り、再起動カウントダウン画面になり、再起動がかかってVirtual Boxの初期画面が出たらゲストOSを強制的に終了させます。

VirtualBox を終了し、該当ハードディスクを取り外します。easyStore のドライブを全て一旦はずし、一番下のドライブベイにセットアップしたハードディスクをセットしてます。このままDHCPがあるLANに繋がっている状態で easyStore の電源を入れます。

この状態で数十分待ちます。DHCPサーバの履歴を見るなどして、easyStore の IPアドレスを特定し、リモートデスクトップ接続をします。 しかし、私の場合ここでファイルウォールが効いていたため、接続できませんでした。エクスプローラから \<IPアドレス>\c$ を叩き、Administratorで接続できれば、OSインストールは成功しています。作業用PCでレジストリエディタを開き、リモートで接続によってファイアウォールを無効化の設定に変更しました。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile

あたりのプロファイルの EnableFirewall を 0 (0x0) にセットします。

コマンドプロンプトから shutdown コマンドで再起動させます。

shutdown /r /m \\<IPアドレス>

easyStore の再起動後暫くしてリモートデスクトップ接続ができました。

セットアップ

後はコントロールパネルからファイアウォールの設定を開き、ルールで受信の構成でリモートデスクトップのルールを3つを有効にしてファイルウォールを再度オンにします。 「Windows Server Essentialsの構成」で管理者アカウントを設定するところがあります。Administrator は後に無効化され、ここで指定したアカウントが実質の管理者アカウントとなります。

ここまで来れば後は簡単です。リモートデスクトップからお好みの Windows Essentials サーバの設定を行います。

データの移行

私の場合は、新規のハードディスク2つを下から2,3番目のドライブベイにセットしてそれを記憶域プールの双方向ミラーで作成しました。

これまでのドライブエクステンダーに含まれていたデータを4番目のドライブや USB での外付けなど何らかの方法で開き、ドライブレター\DE\shares からコピーします。どのドライブにどのデータがあるかはわからないので、以前の全てのドライブの中身を上書きはスキップでコピーすれば移行完了です。

あとがき

メモリ 2 GBは足りていますが、やはり CPU がネックとなりがダッシュボードやコントロールパネルの表示が遅いです。よって諸々の設定が終わるのに時間がかかります。逆に言うとセットアップが終われば、ネットワークストレージとしてこれまで通り利用できます。Windows Azure Backup も VPN サーバとしての利用も可能です。