投稿者「the-takeo」のアーカイブ

Windows Server 2012のRDPでサーバー証明書を設定する方法

RDP(リモートデスクトップ)でキチンとセキュアな環境を整えるためには、
サーバー証明書を設定する必要がある。
設定する理由と、設定しない場合の弊害は下記記事を参照するとわかりやすい。
参考: リモート・デスクトップ接続のサーバに「正しい」証明書を割り当てる

さて、それでWindows Server 2008 R2であればGUIで簡単に割り当てられるのだが、
Windows Server 2012では同様の項目が見つからなかった。
調べた結果、どうもPowerShellを使うぐらいしか方法が見つからなかったので、その方法を記載する。

  1. 新しい証明書をダブルクリックし、インポートする。
  2. PowerShellを管理者として実行する。
  3. 以下を実行し、新しい証明書のThumbprintを確認する。
    dir cert:\LocalMachine\My
  4. 以下を実行する。これは単にパスを設定するだけである。
    $path = (Get-WmiObject -class “Win32_TSGeneralSetting” -Namespace root\cimv2\terminalservices -Filter “TerminalName=’RDP-tcp'”).__path
  5. 以下を実行し、証明書の割当を変更する。
    Set-WmiInstance -Path $path -argument @{SSLCertificateSHA1Hash=”新しい証明書のThumbprint”}

以上の手順で証明書を設定できる。
実行後、特にエラーが起きないことを確認したら、RDPを切断し、再度RDPで接続できることを念の為に確認する。
RDPしたときのウィンドウ上の鍵マークをクリックすれば、設定した証明書が利用できているか確認できる。

他に方法はあるはずだと思うけど、上記手順で行えたので調査は打ち切りです。
こんな操作すること滅多にないしね。


こういう作業の何が嫌かって、万が一ミスってRDPできなくなったときだね。
データセンターのサーバーに対してやる場合、最悪データセンターに行かなくてはならなくなる・・・

Windows Update KB3055034で凄く困った(修正済。詳細は追記より)

恒例のWindows Updateによる不具合。
今まで運が良かったのか遭遇したことはなかったんだけど、昨日、とうとう大きなトラブルにぶち当たった。
それも仕事関係なのが救えない。

Microsoft Office 2010(KB3055034)の更新プログラム

何が問題かって、この更新プログラムをインストールすることにより、
Excel2010で、Web上のOfficeドキュメントをWebDAVで開けなくなるのだ。
俺が確認したのはSharePoint2010上のファイルだけど、情報調査した限りWebDAV使う物全般がダメになっているみたい。
確認した限り、現象は「認証ダイアログが何回も表示される」「Excelがクラッシュする」等。

今のところ、どうもネット上にはまだ情報があまりない。
一応、確認したのは以下のページ。

KB3055034 breaks opening Office files directly from sharepoint
HOME-BOX2(お知らせの部分)

なお、このKB3055034をアンインストールすることにより問題は解消した。
方法は以下のとおり。

・手動でアンインストールする方法
1. 「コントロールパネル」を開き、「プログラム」をクリックする
2. 「プログラムと機能」の「インストールされた更新プログラムを表示」をクリックする
3. 「Microsoft Office」カテゴリ内の「Update for Microsoft Office 2010(KB3055034)」を右クリックし、「アンインストール」をクリックする
4. ダイアログの指示に従ってアンインストールする

・コマンドで実行する方法
以下のコマンドを実行する

アンインストーラーが立ち上がるので、指示に従ってアンインストールを行う(再起動が必要)


MicrosoftがKB3055034を取りやめない限り、Wndows Updateを行うとまたKB3055034が入ってしまう。
そのため、以下の対策を行う。

・再度KB3055034をインストールしないように設定する方法
1. 「Windows Update」を起動する
2. 「更新プログラムの確認」をクリックし、現在インストールできる更新プログラムを取得する
3. 取得が完了したら「XX個の重要な更新プログラムが利用可能です」をクリックする
4. 「Office 2010」内の「Microsoft Office 2010(KB3055034)の更新プログラム」のチェックを外す
5. 「Microsoft Office 2010(KB3055034)の更新プログラム」を右クリックし、「更新プログラムの非表示」をクリックする
6. 「OK」をクリックする


しかし、KB3055034からどうしてこんなトラブルが発生するのか。
だってこの更新プログラムの内容って

Microsoft Word 2010 で、ドキュメントにカスタム作業ウィンドウが表示されたら、組み込みの作業ウィンドウに情報が更新されません。
たとえば、選択したテキストの書式は、書式の詳細設定] 作業ウィンドウで更新されません。

だよ?
Officeの内部コードの闇は深い、ということなのか。

ってか、Office2010のメインストリームサポートってこの更新プログラムが出た2015/10/13に切れてるんだな・・・
Microsoft Office 製品に関する各 OS のサポート状況
修正パッチがでなかったらどうしよう・・・


追記(2015/10/20)

どうやら、KB3055034をアンインストールし、ファイルを開けるようになっても、
編集して保存することができなくなるパターンが有るようだ。
その場合はKB3054886も同様にアンインストールすると編集、保存が可能になる。

また、IEの「信頼済みサイト」に登録することで回避できる場合もあるようだ(未確認)
MSの公式情報で確認できるのは今のところ下記だけである。
https://community.office365.com/ja-jp/f/347/t/414294

早くパッチでないかねぇ。


追記(2015/11/24)

2015/11/11のWinddows Updateで同様の現象が再発する模様。
KB3101521のアンインストールで解消した。
https://support.microsoft.com/ja-jp/kb/3101521

mso.dllに含まれる不具合のようなので、
今後もmso.dllが更新されると再発すると思われる。


追記(2015/12/09)

KB3114399でKB3055034の不具合が修正されたことが分かった。
これで無心でWindows Updateできるね。
よかったね。おめでとう。

サーバー購入計画

本当になんの目的もないただの雑記です。

最近、個人的にサーバーを持ちたいと思うようになった。
単純に適用な仮想マシンを立ちあげたいというだけで、目的は一切ない。

完全に趣味である。
まぁ、仕事でWindows Serverを結構使うので、その練習台にしたいという意味合いもあるにはある。
ドメイン環境とか無意味に作りたい。

現実的にはファイルサーバー運用になるとは思う。
性能は殆どどうでもいいので安いものを探しているんだけど、下のやつが結構良さそう。
HP ProLiant MicroServer Turion II NEO N5 F1F35A0-AAAE

2万円切るなら十分でしょう。
HDDは追加でWDの赤、4TBを2つ買う予定。
一応ファイルサーバーなので、RAID1は組んでおきたいのです。

Hyper-V Server 2012 R2をインストールして、その中にWindows Server 2012 R2を仮想マシンとしてインストールする予定。
この辺りは仕事でもやっているので特に問題ないと思う。
Windows Server 2012 R2はどっかで買おう。
LINUX?知らん。

そういや仕事で初めてHyper-V Server入れたときはちょっと苦労した。ドメイン参加していないと結構面倒臭いのね
都合上ドメイン参加はできなかったので辛かった。
・・・と言っても、一度やれれば次は5分でできるような作業だけど。
このページには本当にお世話になりました。
Hyper-V ServerをGUIで使い、仮想マシンを作成してみる

しかし、肝心な点として、普段使っているマシンはMacなんだよな・・・。
Macで使えるHyper-V Managerって無いのかしら。
初期設定だけはVirtualBoxでwindows立ちあげてやるしかないか。

しかし、そこまでして何故俺はMacを使うんだろう。
正直、結構Windows使いに戻った方がいいんじゃないかと思うときもある。

LINUXに何度挫折したか分からん。どうも、IT音痴です。

何が書きたかったんだこの記事。

目的はないけど、自宅サーバーがほしい

この一年、PC周りを色々と新調した。
特に意味はないけど、使用しているガジェットを羅列してみる。

PC: MacBook Pro (Retina, 15-inch, Early 2013)
ディスプレイ: acer G276HL
マウス: Logicool G700S
キーボード: Logicool G105
PCクーラー: NOTEPAL ERGOSTAND LITE
USB HUB: Anker AH232
マウスパッド: Logicool G240
外付けHDD: G-Technology (HGST) G-DRIVE with Thunderbolt 3TB
外付けHDD(Backup): I-O DATA 3.0TB HDC-LA3.0
外付けHDD(Mobile): BUFFALO 1TB HD-PA1.0TU3

G700Sはいいんだけど、しばらく使い続けているとハングアップでもしているのか、クリックの反応がにぶくなったりする。

Anker AH232は13ポートとか言うアホみたいに便利なhubなんだが、接続方法の問題か、最近3ポートしか認識しなくなった・・・初期不良なのか、これに更にhub指しているのが問題なのか。でもそのhub抜いても認識治らないし・・・。

G-DRIVEは単純にブランドで選んだ。
Backup用のHDDはヤマダ電機で安売りしていたので買っただけ。
毎晩0:30にG-DRIVEのデータをBackup用のHDDにコピーするようにしている。

暇ができれば、個別にレビュー的なことも書いていきたい。


最近、MMD動画を見るのにハマってしまっている。
昔はあまり好きじゃなかったんだけどな。違和感が全く無くなっていて、技術の進歩って凄いな。
東方やったことないのに二次設定ばかり覚えてしまっている。

MacでScriptを定期実行する方法

以前、Macでファイルを定期的にバックアップする設定で、
Scriptを定期実行するために、Macの標準カレンダーを使って擬似的に実現していた。
だけど、本当ならcronとか、まともな方法でやりたい。

Macではcronでなくlaunchdというものが推奨されているようなので、
これで実行するように仕込んだ。

上記のようなファイルを
/Users/UserName/Library/LaunchAgents
に保存し、ターミナルから以下のコマンドを実行する。

以上でタスク登録完了である。
タスクの登録状況は以下のコマンドで確認できる。

(本当は実行権限とか色々あるけど俺の使用範囲ではないので割愛します)

ただ、launchdはイチイチコマンドでやるので分かりにくい。
GUIで使えないのかな、と思っていたが、Lingonというツールがあった。
タスク内容の編集には有料ライセンスが必要だが、内容の確認は無料でもできる。
むしろLingonでタスクの内容を確認し、そのplistファイルを見比べることでplistファイルの書き方を勉強することができたのが、自分にとって大きな収穫だった。

参考
OS XのLaunchdデーモンをGUIで編集できるMac用ユーティリティ「Lingon X 2.0」を使ってみた。
launchdをcronの代わりに使うための簡易メモ
launchd.plistの書き方


Windowsならタスクスケジューラで一発なんだけどな。
Macはシステム的なことは極力見せない方針っぽいし、今後も実装される予定はないだろうな。

HP DL360サーバーで論理ディスクを作成する方法

社内で結構サーバーやインフラ関連に関わるようになってしまった。
わが社はHPのDL360シリーズのサーバーにWindows Serverをインストールして使っている。
論理ディスクはBIOSからささっと設定することができる。

で、それはいいんだけど、運用後にさらにHDDを追加し、これで論理ディスクを作成するようにお達しが来た。
「え?BIOSからやる=システム止めなきゃ無理じゃね?」と思ったが、どうもHPのツール
「HP ProLiantアレイ コンフィギュレーション ユーティリティ for Windows 64ビット」
を使えばシステムを止めずに論理ディスクの作成ができるらしい。
上記ツールはWeb上で入手可能だ。
実際に導入したが、GUIに従うだけで論理ディスクの作成、削除ができる。いやぁ簡単でいい。
(ちなみに、HPプロビジョニングでOSインストールしていれば初期から入っている筈である。最初からプロビジョニングでインストールすればよかったんだけど、何か上手くインストールできないから直に入れた経緯がある)

・・・と安心していたら、さらに要望が来た。
「Hyper-V Server 2012の方にもHDD追加したから論理ディスク作成4649!」とのこと。
GUI使えないし、どうすりゃいいんじゃと思っていたが、CUIで論理ディスクを作成できるツールもHPがリリースしていることが分かった。
「HP ProLiantアレイ コンフィギュレーション ユーティリティ(CLI) for Windows 64ビット」
以下、使い方とコマンド例をメモしておく。

事前準備
1. HPのサポートページから利用しているサーバーを検索する
2. 商品のページに辿り着いたら「ドライバー、ソフトウェア、およびファームウェアを入手する。」をクリックする
3. OSで「Windows Server 2012」を選択する
4. 「ソフトウェア – システム管理」に「HP ProLiantアレイ コンフィギュレーション ユーティリティ(CLI) for Windows 64ビット」があるので、これをダウンロードする
5. ダウンロードしたインストーラをサーバー上で実行する。コマンドプロンプトでインストーラを実行すればGUIがでてくるのでそれに従う

実行方法
1. c:\Program Files\Compaq\Hpacucli\Bin\hpacucli.exeを実行する
2. アレイ設定ツールが立ち上がるので、各コマンドを実行する

なお、コマンドの説明と例はマニュアルを参照すれば良い。
が、やや難しいので、実際に自分が使ったコマンドを備忘も兼ねて記述する。


・現在の設定を確認するとき


・論理ディスクの設定を確認するとき

スロット番号、論理ディスク番号は上記のdetailから確認する。


・空いているディスクでRAID0のディスク(アレイ)を作成するとき

スロット番号は上記のdetailから確認する。


・空いているディスクでRAID 1 のディスク(アレイ)を作成するとき(ディスクを指定する)

スロット番号は上記のdetailから確認する。
driversもdetailから確認可能。どうやら<port>:<box>:<bay>の順になっている模様。detailで全論理ディスクのdriversを確認して、使われてないディスクを指定すればよい。


・論理ディスクを確認する

スロット番号は上記のdetailから確認する。


・論理ディスクを削除する

(スロット番号は上記のdetailから、論理ドライブ番号はlogicaldrive all showから確認する)
警告が出るので、yで続行し、削除する。


しかし、趣味でこういうことするのはいいけど、仕事という責任が伴う場合でサーバーやインフラ管理するのって疲れる。
しかも担当者が知識ゼロの俺だけとか。

もう少しミニマムに、単純に行きてゆきたい。

MonoでC#のコンパイル

C#で簡易的なツールを作ったとき、Xamarin Studioとかでコンパイルはできる。
できるが、ソリュージョンとして作るほどのものでもないしなぁ・・・ということが多い。

コマンドからMonoでコンパイルできないかな、と思ったら案の定できることがわかった。

ちなみに、参照追加が必要なコードの場合はオプションで追加できる。
例えば、僕はSystem.Xml.Linqをusingするコードをコンパイルしたかったので、以下のようにした。

何という内容の無さ。

「善意の半強制イベントが嫌い」という話から、よくわからない展開になってしまった実りのない雑記

何となく、心のなかで思っていたことを書き記してみる。
思考の言語化に近いので、支離滅裂な内容かもしれない。
思考自体、基本的に感情的で、非論理的なものだから、仕方ないと予防線を張っておく。

書き記したことに特にきっかけがあった訳ではない。
むしろ逆で、きっかけが無いからこそかける。
何かきっかけがあって書いたら、何だか自分を曝け出しすぎているようで、恥ずかしい。

さて、僕は送別会とか、誕生日パーティとか、そういうものがあまり好きではない。

こう言うと誤解を受けそうなので訂正しておく。
個人的な友人を祝ったりとか、そういうことは大好きだ、
ただ、学校のクラスとか、会社の部署とか、そういう単位で開かれるそれが嫌いなのだ。
こんな感覚自体は昔から持っていたが、具体的な思想押して持つようになったのは高校生ぐらいのときからだと思う。

クラスの女子の誰かが、「誕生日の人がいたら、昼休みに祝おう」なんてことを言い出した。
この時点でウエッと思った。どうせ思いつきで、すぐに面倒くさくなるだろう。
その予想は見事にあたって、6月ぐらいになることには無かったことになっていた。

そこで思った。
これ、祝われない人の気持ちを一切考えていないな、と。
6月以降の人はまだいい。実際は4,5月でも祝われていない人がいるかも知れない。
その気持を考えると少し憂鬱になる。
祝って欲しい訳ではない。
しかし、同じ立場の者が祝われて、自分が祝われない。これは気分のいいものではないだろう。

クラスという単位で祝う以上、そこに例外が生まれてはいけないのだ。
しかし、じゃあ仮に全員が祝われるようになったらどうだろう。

やっぱり嫌だ。祝われたい人ばかりではないだろう。
今で言えばFacebookに勝手にタグ付けされて自分の写真がアップロードされるようなものだ。
「写真アップロードされれば嬉しいじゃん」とかいう単純な精神構造の人ばかりではないのだ。

大体、クラスというのは仲良しグループが集まったものではない。別に関わりのない人も居る。
その事自体は問題ない。むしろ自然だ。
だからこそ、システム的には全員平等、最低限の繋がりのみで構成されるべきだと思う。
あまり知らない人のことを祝うことに苦痛を感じないのだろうか。
少なくとも、僕は苦痛に感じる。
そして、逆の立場で、関わりのない人に祝われるのも、いい気分ではないだろう。独裁者のサイコパスじゃあるまいし。
お互い、なんの利益もない。何だこの苦痛。

そんな風にある程度、昔から思っていた感情を言語化出来た。それが高校生のときだった。

ついでに言いすぎておくと、送別会とか、こういうイベントで、食事に行くことって、本当に楽しいのだろうか。
僕は捻くれているのか、「え?送別するのに何で飯行くの?酒飲むの?」とか思ってしまうのだ。
普通に見送ればいいじゃない。
或いは移動先の情報とか教えてあげるほうが、遥かにありがたいだろう。

「コミュニケーションとしての食事を全否定かよ」と言われると思う。
概ねその通りだ。
「話すこと実際無いんじゃね?だから簡単に挨拶するぐらいでいいと思うよ」という感じだ。

食事しながら話すことはお互いに分かり合うための基本(口実)らしいが、そもそもみんながみんなと分かり合うなんて、疲れないだろうか。
もっと、人はそれぞれが孤立していたほうがいいと思う。

よく「まずは一緒に食事に行って仲良くなる」と言うが、一緒に食事って、俺の中では相当ハードルが高いのだが、如何だろうか。
食事なんて仲の良い友達とぐらいしか行かないし、そうでなくてはとても楽しめない。
初対面の人となんて、絶対にできない。
「仲良くなってから一緒に食事に行く」という流れが自然だと思っている。
「まずは一緒に食事に行って仲良くなる」という発想は「一緒に食事に行く人とは仲の良い人のことだ。だから一緒に食事に行けば仲良く慣れる」という仮定と結論が逆転した一種の帰納的思考法から導き出された詭弁にしか、僕には思えないのだ。

合コンや街コンって本当に楽しいのだろうか。
この歳になっても、狂気の沙汰にしか感じられないのだけど。

ちなみに、こんな思想を持った結果、出会いがこの歳まで一切なく来てしまった。
そして、「出会いとかいらないな」という思想に至りつつある。
こうなりたくないなら、上記に似たような思想は捨てた方がいい。

一般的な幸せを目指すなら、一般的な感性と思想が大切だ。

Macでファイルを定期的にバックアップする設定

僕はiTunesのメディアファイルを始め、動画、画像ファイルを全て外付けのHDDに保存して管理している。
昔はNASだったんだけど、引っ越してから無線の速度が遅くなったので単純な外付けHDDに回帰した。

で、それはいいんだけど、最近ファイルが壊れていたりすることに気付いた。
古いHDDのせいだろうか。
幸か不幸か、大して重要じゃないファイルなのでよかったが、流石にこの大容量の資産にバックアップがないこの状況が少し怖くなってきた。
今までもたまに気が向いたときに別の外付けHDDにバックアップを取ったりしていたが、気が向いた時だけじゃ心もとなさ過ぎる。
バックアップを毎晩、自動実行しようと思うに至った。

で、Windowsのようにrobocopyコマンドを使おうとしたけど、当然Macにはrobocopyなんてコマンドは無い。
その上、定期実行しようにもWindowsで言うタスクスケジューラが無い。Windows脳の僕はこれで少しパニックになった。

そんな色んな障害を乗り越えた(乗り超えるほど大きい壁じゃない)作業メモを残そうかなと思う。
なお、前提として僕はシェルスクリプトなんて書いたこともない素人である。
cron?良くワカンネ」というレベルである。
実際、良くわからなくて今回使わなかった。今度また挑戦する。


1. バックアップを行うコマンド(シェルスクリプト)を書く

最悪手動でも、バックアップを1クリックで行えるコマンドファイルを作成できれば、
Macでバッチファイル的なものを作成する
のようにして1クリックバックアップシステムが作れるはず。
まずはバックアップを行えるようなコマンドを探した。

2秒で見つかった。

rsync

差分更新まで行ってくれるイカした奴。
僕の望む同期の形を考え、以下のようなオプションを設定した。

-a…元の権限を保持する
-t…元のタイムスタンプを保持する
-u…追加、更新されたファイルだけをコピーする
-v…処理中の経過ファイルを表示する(後述のログ出力のため)
–delete…コピー元にないファイルがコピー先にあった場合、削除する

要するに、バックアップ元と寸分たがわぬ構成をコピーする、という趣旨だ。
それで、最初は単純に以下のような1行コマンドで済ませていた。

だけど、あんまり好きじゃない点が一つあった。
Macで外付けHDDに接続した場合、”.”から始まる不可視ファイルが作成されるが、これらまでバックアップ先にコピーされてしまう。
なので、バックアップ元の外付けHDD内の通常フォルダのみに対してrsyncを行うようなコマンドに修正した。
ついでにrsyncの出力をログとしてファイルに残すようにした。

これでバックアップ元HDD直下のフォルダについて、全てバックアップ先にコピーされる。
ただ、上記スクリプトの欠点は、バックアップ元HDD直下にスペースを含むフォルダが有る場合、上手く動作しないことだ。
つまり、”test folder”というフォルダがあると、”test”と”folder”という2フォルダと認識されてしまう。
工夫すればどうにでもなると思うけど、スクリプトをシンプルにしたかったのでこのままにしておいた。
工夫する知識も気力も無いです。

2. シェルスクリプトを定期実行する

さて、スクリプトはできたが、定期実行はできるのか。
ちゃんとやるならcronやlaunchで設定するのが良いらしい。
でも、よくわからないので、原始的な方法を採った。
Macの標準カレンダー(旧iCal)とAutomatorを用いる方法だ。

MacのAutomatorで新規作成を行う。
書類の種類は「カレンダーアラーム」にする。(アプリケーションでも良い。その場合は後述の設定が必要)
アクションで、「ユーティリティ」→「シェルスクリプトを実行」を選択する。
上記のスクリプトを記述し、保存する。

以上により、Macの標準カレンダーにイベントが登録される。
時刻や繰り返しの設定を適宜変更すれば、定期タスクの設定が簡単に可能だ。

ちなみに、「カレンダーアラーム」でなく、「アプリケーション」を作成した場合、appファイルが作成される。
このappファイルを開くと、シェルスクリプトが実行されるので、後はこのappを定期的に実行するように、手動で標準カレンダーに登録すれば良い。
カレンダーで普通にイベントを追加し、
「通知」→「カスタム」を選択する。
初期状態では通知が「メッセージ」となっていると思うので、ここを「ファイルを開く」にする。
ファイルの種類がカレンダーになっているので、ここで「その他」を選択し、先程のappファイルを選択する。
2015-03-02 22.53.29
ちなみに、GoogleカレンダーやiCloudのカレンダー等、クラウド上のカレンダーではこの通知の設定が保存されなかった。
未検証だが、クラウド上と動機する過程で「ファイルを開く」通知が消えてしまうのだろう。
ローカルのMac上のイベントとして設定したほうが確実だ。

後は時刻や繰り返しを設定することで、定期的にスクリプトが実行できる環境が完成する。

基本的に「カレンダーアラーム」で設定したほうが簡単だと思う。
ちなみに「カレンダーアラーム」で作成した場合、そのappファイルは以下の場所に保存されている。
/Users/UserName/Library/Workflows/Applications/Calendar
appファイルを常に手元においておきたい場合は「アプリケーション」で作成するのもありだと思う。

・参考にしたページ
rsync – 高速なファイル同期(バックアップ) – Linuxコマンド
iCalで指定時刻にアプリを呼び出す
【Linux】bashで指定したディレクトリ内のファイルを取得する
lsでディレクトリのみ,ファイルのみ,表示する


追記(2015/05/30)

定期実行でカレンダーを使うのは負けた気がしてきたので結局launchdを使うことにしました。
MacでScriptを定期実行する方法

VirtualBoxの仮想環境で容量を増やす方法とその注意点

僕はMac使いだが、C#しか基本的に使わないので、コーディングするときはVirtualBoxでWindows8.1を起動してその中でやっている。
Windowsもクリーンインストールだとスッキリしていて悪くない。仕事関係の勉強にもなるし。

で、どんどん使っていると容量が無くなってくる。
当初は20GBもあればいいだろ、と思っていたのに、今では40GBに増やしたくなっている。
VirtualBox上では「容量の拡張」みたいなメニューが無いので無理だと思っていたが、調べてみたらコマンドから実行可能だった。

やり方自体は簡単。Macなのでターミナルから実行することを想定しているが、Windowsでもコマンドプロンプトから同じように実行できる。

ちなみに、一つ落とし穴がありハマったので、それについては後述する。


VirtualBox仮想環境(Windows)のディスク拡張方法

  1. 仮想ディスクファイルのバックアップをとっておく
  2. VBoxManage modifyhd 仮想マシンの仮想ディスクのパス —-resize 拡張後のディスク容量(MB単位)
    を実行する。
    ex)VBoxManage modifyhd /Users/Administrator/VirtualBox/VMs/TestMachine/TestMachine.vdi --resize 40960
  3. コマンドが完了したら、仮想マシンを起動する。(この時点ではまだ容量が増えていない)
  4. 「コントロールパネル」→「システムとセキュリティ」→「ハードディスク パーティションの作成とフォーマット」を開く
  5. 画面下部で、Cドライブに割り当てられている領域を右クリックし、「ボリュームの拡張」をクリックする。

以上で仮想マシンの容量が拡張される。
2以降の手順はWindows固有の操作なので、Windows以外の場合はそのOSのパーティション割り当て方法に従ってください。

・・・で、1で仮想ディスクを拡張したとき、仮想マシンが一切起動しなくなる場合がある。
どうやら原因は仮想ディスクファイルの形式のようだ。
VHD形式の仮想ディスクファイルは上記コマンドで拡張すると壊れてしまい、起動できなくなるのだ。

VHD形式の仮想ディスクを拡張するには、一度別形式に変換してから拡張を行うと良い。

VBoxManage clonehd --format VDI 仮想マシンの仮想ディスクのパス 変換後の仮想ディスクのパス

ex)VBoxManage clonehd --format VDI /Users/Administrator/VirtualBox/VMs/TestMachine/TestMachine.vhd /Users/Administrator/VirtualBox/VMs/TestMachine/TestMachine.vdi
上記コマンドでVDI形式に変換された仮想ディスクファイルが作成されるので、それを拡張すれば良い。
拡張後は形式をVHD形式に戻してもいいし、戻さなくてもいいし、好みにすればいいと思う。


しかし、最近自分にITの適正が無いのが分かり始めた。
何かこう、薄給で責任の少ない仕事がしたい。
田舎の公園の清掃員とかが理想なのだ。
(清掃員を下に見る意図ではありません。ただ、田舎に帰るとどうしても羨ましくなってしまうのです。)