プログラマーのメモ書き

伊勢在住のプログラマーが気になることを気ままにメモったブログです

VirtualBox の Windows で IDE につないだストレージを SATA につなぎ換える

こちらの記事で VirtualBox の Windows を 10 から 11 にアップグレードする話を書きました。で、同じことを別の ゲスト Windows 10 にもやっておこうとおもったら、こちらはストレージが

  • IDE 接続
  • 仮想ディスクが VMDK 形式

となってました(当然 MBR です)。

なので、 WIndows 11 にアップグレードする前に、 SATA に VDI 形式のディスクとしてつなぎ換えたので、その作業をメモっておきます。

なお、この仮想マシンの場合は、アップグレードにいろいろと苦労しました。一連の作業は下記のとおりです。

VMDK から VDI へ変換

まず、 VMDK 形式のディスクを VDI 形式に変換します。仮想メディアマネージャで確認すると、下記のように複数のスナップショットに対応してディスクが分かれて存在していました。

このままスナップショットがわかれていると作業がうまく進むか不安だったので、いったん、すべてのスナップショットを削除しておきます。

次に、仮想メディアマネージャーで、 VMDK の仮想ディスクを選択して、『コピー』を選択します。この時に、ディスク形式が選択できるので、 VDI 形式を選んでおきます。

次に、仮想ディスクのイメージファイルは可変サイズのままとしておきます。

最後に、新しい仮想ディスクのファイル名を指定します。

なお、この時、ディスクサイズも入力できますが、コピーの場合は反映されませんでした。なので、ディスク容量を増やしたい場合はコピー後に作業してください。

『完了』ボタンを押して、しばらく待つと、無事に、 VDI 形式の仮想ディスクが作成できました。

ディスク容量を増やすなら、この変換後の VDI 形式のディスクに対して行っておきます。

SATA へつなぎ換え

実は、ここで、ちょっと乱暴な方法を取ってしまいました。なので、できるかもしれないけどあんまりおすすめの方法ではないです。

まず、仮想マシンを選択して、『設定』画面から『ストレージ』を選択します。

現状はこんな感じになってました。

次に、『コントローラを追加』アイコンをクリックして、

『AHCI(SATA)』を追加します。

名前が『AHCI』になってるので、わかりやすいように『SATA』に変えておきます。

続いて、追加した SATA コントローラを選択し、『ハードディスクの追加』アイコンをクリックすると、

のような選択画面が表示されるので、さきほど VDI に変換した仮想ディスクを選択して、追加します。

同様に、SATAコントローラに光学ドライブも追加しておきます。光学ドライブを追加する際に選択するメディアが特になかったので、 VBoxGuestAdditions を選んでおきました。

最後に、IDE配下の既存のストレージ(VMDK形式のやつ)および光学ドライブの割り当てを除去し、IDE コントローラもいらないので除去しておきます。

起動とリカバリー

ここまでできたら、仮想マシンを起動します。ですが、残念ながら青い画面が表示され、エラーになりました。

その後何度か、再起動して、自動修復を試みてくれます(もし、再起動しない場合は、リセットを行って、もう一度起動します)。

ですが、自動修復に失敗したようで、下記のような画面になりました。

今回の場合は、『詳細オプション』が表示されたので、それをクリックします。

オプションの選択が表示されるので、『トラブルシューティング』をクリックします。

再度、メニューが表示されるので、『詳細オプション』を選択します。

いくつかオプションがあるのですが、起動時のストレージコントローラ関連の問題なので、『スタートアップ修復』を選んでみます。

『診断中』と表示後、

と表示されます。しばらくするとさらに、

とメッセージが変化して、さらに待つと、作業が完了して、再度 Windows が立ち上がります。なんと無事にWindows が起動できました。

本当は

本来は、下記の記事にあるように、あらかじめ SATA コントローラをインストールさせておけば、こんな綱渡りしなくても済んだんでしょうね。

VirtualBoxでWindowsの入ったストレージをSATAにつなぎかえる #VirtualBox - Qiita

まとめ

いずれにせよ、無事に起動するようになったので、あとは前回の記事と同じ手順で、 WIndows 11 にアップグレードしておきます。

VirtualBox の WIndows 10 を 11 にアップグレードする

仕事が一段落ついたのと、ちょっと VM の環境で検証したいことが出てきたので、まんま、下記の記事をやってみました。

VirtualboxのWindows10仮想マシンをデータを引き継いでWindows11にアップグレードする | gatsby-starter-blog++

最初は順調にいっていたので、わざわざ自分でブログの記事を書くまでもないだろうと思っていたら、 Windows 11 のインストール直前で躓いてしまったので、一応、メモっておきます。

試した環境はこんな感じでした。

  • VirtualBox 7.0.8 (作業途中で 7.0.18 にアップデート)
  • ホスト WIndows 11, 23H2
  • ゲスト Windows 10 22H2, 2024/7/8 時点で WIndows Update を適用済み

VirtualBox 7.x で Windows 11 にアップデートするための準備

この手の作業の鉄則として、まずはバックアップを取っておきます。仮想マシンのフォルダごとコピーしておけばOKですね。

実際の作業は前述の記事の通りにすすめれば OK です。なので、詳細は割愛しますが、主に下記の3点です。

  • ストレージを MBR から GPT に変更
  • EFI を有効
  • TPM 2.0 およびセキュアブートを有効

で、これで WIndows 11 へのアップグレードができるようになると思い、 WIndows 10 ゲストを起動して、『設定』->『更新とセキュリティ』->『Windows Update』を開くと、『Windows 11 を実行するための最小システム要件を満たしていません』と表示されたままです。

あれれ?さて、困ったぞ。

やったこと

前述の記事では、この時点でシステム要件が満たされているとなっているのですが、どうも満たされたと判定されていないようです。仕方ないので、 WIndows 11 のシステム要件を改めてチェックします。

Windows 11 の仕様とシステム要件 | Microsoft

CPU は 2 コア以上、メモリは 4GB 以上あることを確認します。

TPM の確認は、『設定』->『更新とセキュリティ』->『デバイスセキュリティ』->『セキュリティプロセッサ』の『セキュリティプロセッサの詳細』を表示させます。

セキュアブートの確認は、『設定』->『更新とセキュリティ』->『デバイスセキュリティ』の『セキュアブート』を表示させます。

このあたりは問題なかったのですが、ストレージ容量として 64GB 必要とありますが、現在のドライブは 62GB ちょっとしかありません。

これ怪しいですね。

ディスク容量の拡張

ということで、 VirtualBox 側の仮想ディスク容量を 80GB に増やしてみます。最初は、 VirtualBox 側での操作になります。メニューの『ファイル』->『ツール』->『仮想メディアマネージャ』より、仮想メディアマネージャを表示します。

複数の仮想ディスクが表示されますが、対象となるゲストが使っているディスクを選択します。画面下部の『属性』タブのサイズに拡張後のサイズを入力して、『適用』ボタンを押します。

ただ、スナップショットがある場合は、これだけでは反映されませんでした。スナップショットを削除してから作業するというのも一つの方法だと思うのですが、今回は、現在実行中のスナップショットおよびその先祖について、仮想的なサイズがすべて拡張後のサイズになるように修正しました。最終的にはこんな感じですね。

これで、起動したら、ゲスト側で拡張したサイズを認識してくれました。

次は、ゲスト側のパーティションサイズも増やします。なお、今回は C ドライブのパーティションの後ろに、回復パーティションがあったので、ちょっと乱暴ですが、ゲスト OS ということもあるし、作業を簡単にするためそこは削除してしまいます。

パーティションの削除は、diskpart を管理者権限で実行して行います。

diskpart の使い方は、下記などを参考にしてください。

Windows 10回復パーティションを削除してもいい?

GPT の場合、エラーがでることがあるそうで、この場合もエラー対応を行ってから削除しました。

Cドライブがあるパーティションの直後に空パーティションが存在するようになれば、

『ボリュームの拡張』を選択して、実行すればOKです。

これでシステム要件を満たしたかな?と思いきや、やはり判定結果は変わりません。前述の記事のところには、

ここで「このPCでWindows11を実行できます」ではなく、ハードウェア要件を確認する旨のメッセージが出るかもしれませんが、それでも大丈夫です。Windows11アップグレードに進んでください。

とあるので、ダメもとでと思って、 Windows 11 のインストーラを動かしてみたのですが、やはりシステム要件のチェックでひっかかり、先に進めません。

致し方ないので、 VirtualBox そのものを 7.0.8 から 7.0.18 にアップデートしたりもしましたが、同様です。

困った、困った。

解決!

困ったなと思って、ググっていると、

Upgrade from Windows 10 to Windows 11 on VBox7 - virtualbox.org

という記事を見つけました。手順としては、前述の記事とほぼ一緒なのですが、 WIndows 11 のインストールの際に Windows 11 ディスク イメージ (ISO)を使う、とあります。そういや、上記で WIndows 11 のインストールを試したときは、『Windows 11 インストール アシスタント』を使ってましたね。

ということで、藁にもすがる思いで、これを試してみます。

ホスト側で WIndows 11 の ISO イメージをダウンロードして、ゲストの Windows 10 を起動して、光学ドライブに Windows 11 の ISO イメージを割り当てます。で、このドライブ内の setup.exe を動かしてみると、一瞬システムをチェックしますの画面が表示されたのですが、なんと、無事要件のチェックが通りました!

あとは、画面の指示に従ってインストール作業を行ったら、アップグレードできました。いやー、こんなことあるんですね。

余談

なお、最初に Windows 11 のインストーラを起動したときは、下記のような空き容量が不足しているとのメッセージが出てきて、Cドライブでなくてもいいので 10GB程度のストレージをつなげと言われました。

残念ながら、当初の環境では空き容量が無くて、このまま作業を進めることができなかったので、一旦、ゲストをシャットダウンして、 VirtualBox で一時的な仮想ディスクを割り当てて、再度インストール作業を行う、という方法で対応しました(本体の仮想ディスクはなるべく容量を抑えたかったためです)。

もちろん、追加した仮想ディスクはアップデート後に消してます。

まとめ

若干イレギュラーな点もありましたが、無事に VirtualBox で Windows 11 を動かすことができました。たまにしか使いませんが、これで検証環境に困らなくてすみそうです。

2024/8/9 追記1

基本的に、上記で終わりなんですが、仮想マシンの設定を見ていたら、『一般』の『基本』にある『バージョン』が Windows 10 のままになってました。なので、これを Windows 11 に変更します。

あと、仮想マシンの名前と、仮想マシンがあるフォルダの名前、仮想ディスクのファイル名も変更しておきました。

仮想ディスクの名前の変更は、仮想マシンが停止している状態で、 VritualBox の仮想メディアマネージャから、仮想ディスクの『解放』を行い、次に『除去』を行い、 VirtualBox の管理対象外にします。その後、エクスプローラ等でファイル名を変更してから、仮想マシンのストレージに再度アタッチするという作業が必要になります。その点だけ注意が必要です。

これですっきりしますね。

2024/8/9 追記2

あと、別件で気になることがあり、この仮想マシンのパーティションを改めて確認したところ、

のように、Cドライブのパーティションの後ろに、回復パーティションが作られていることに気が付きました。

Windows 11 のアップグレードからしばらく時間が経っているので定かではないのですが、自分で回復パーティションを再作成するようなことなんてやってないので、ひょっとしたら Windiws 11 のインストール時に回復パーティションが作られたのかもしれません。

identy_switch の設定内容について

Roundcube 1.6.7 にアップデートした際に、メールアカウントを切り替えるプラグインを ident_switch から identy_switch へ移行しました。

両者は若干設定内容が異なっているので、改めて、設定内容を確認したので、その他気が付いた相違点と併せてメモっておきます。

設定できる内容

identy_switch で設定できる、アカウント関連以外のものとしては、『設定』->『識別情報』の各追加したアカウントを選択すると

のように、新着メッセージに関するオプションを設定することが可能になります。なお、設定部分を拡大するとこんな感じです。

このうち、『Check all folders for new messages』および『再表示(新しいメッセージの確認等)』は、 ident_switch (というか、素の Roundcube )ではデフォルトのアカウントに対してのみ設定可能だったものですが、これがアカウント毎に設定をすることが可能になったようです。

その他の設定内容は、主に通知関係のものになります。

デフォルトのアカウントに対する設定場所

追加アカウントではない場合は、左端のメニューから『設定』->『設定』->『ユーザーインターフェース』と進むと、

『再表示(新しいメッセージの確認)』があります。

また、『設定』->『設定』->『受信箱』と進むと、『新しいメッセージ』に

のように設定内容が追加されています。

Roundcube 1.6.7 の場合

ちなみに、 identy_switch をインストールしていない素の Roundcube の場合は、『設定』->『設定』->『受信箱』と進むと、『新しいメッセージ』には

のように、『すべてのフォルダーで新着メールを表示』があります(英語だと『Check all folders for new messages』)。

設定内容

で、今回の設定内容ですが、基本的にデフォルトのままとすることにしました。

というのも、 Roundcube を使い始めたときは、こちらの記事に書いたように、新着メールのチェックを有効にしていたのですが、これだとチェックに時間がかかってしまい使い勝手が今一つだったので、無効に戻したという経緯があったためです。

表示内容の相違

identy_switch になってアカウントの選択部分が、

のように最大4件分の表示になりました。以前の ident_switch は設定したアカウント数分すべて表示されていました。

個人的には、以前のスタイルのほうが切り替えやすくて好みです。特にスマホだと、スクロールして表示したいアカウントを選ぶのがちょっと手間取ってしまいます。

アカウントの順番

このアカウント切り替え時のアカウントの並びも変わってます。

ident_switch の時は意識していなかったのですが、思い起こすと、 Label が未設定の場合は、識別情報にアカウントを追加した順に並んでいたようです(Label 設定時の挙動までは確認してないです)。

一方、 identy_switch は Label の辞書順になっているようです。まあ、 Label で制御できるのでいいといえばいいんですが、微妙に違ってますね。