Win10 Hyper-Vを無効にした起動設定の作り方

VagrantとVirtualBoxでローカルの開発環境を構築している人向けです。

Hyper-V

Win10 Proで使えるようになった仮想化システム「Hyper-V」、つよそうですよね。

Dockerとかと組み合わせると捗りそうな代物です。

ところで、Hyper-Vが有効化されていると、VirtualBoxと競合してうまく動かなかったりしませんか?

VirtualBoxのアプデでHyper-Vとの共存が可能になったという話もありましたが、アプデしたり環境を再び整えるのが面倒くさい(環境が壊れる懸念もある)そこのあなたにこちらの記事をプレゼント。

Hyper-Vを都合よく手軽に無効にしたい

単に有効化と無効化を切り替えるだけであれば、コントロールパネル > プログラム > Windowsの機能の有効化または無効化から切り替えて再起動するだけですが、切り替えの度にいちいち設定画面を出すのがだるい。デフォで無効にしておきたい。PC起動時に選択できるようにしてくれ。というニーズがあるはずです。

できます。

Hyper-Vを無効にした状態で起動するブートモードの作り方

参考: Windowsのbcdeditでブートメニューの項目を追加する:Tech TIPS – @IT
参考: 他の仮想環境を利用するためにHyper-Vを一時的に無効にする:Tech TIPS – @IT

cmd.exeを管理者権限で開き、下記の手順を実施します。

1. 現状の確認

C:\WINDOWS\system32>bcdedit
Windows ブート マネージャー
--------------------------------
identifier              {bootmgr}
device                  partition=\Device\HarddiskVolume1
path                    \EFI\Microsoft\Boot\bootmgfw.efi
description             Windows Boot Manager
locale                  ja-JP
inherit                 {globalsettings}
badmemoryaccess         Yes
default                 {current}
resumeobject            {c78ef55a-4ee8-11ea-8e1c-a5b3457f836d}
displayorder            {current}
toolsdisplayorder       {memdiag}
timeout                 30

Windows ブート ローダー
--------------------------------
identifier              {current}
device                  partition=C:
path                    \WINDOWS\system32\winload.efi
description             Windows 10
locale                  ja-JP
inherit                 {bootloadersettings}
recoverysequence        {e005d74c-4ee8-11ea-87f9-c9149b72445e}
displaymessageoverride  Recovery
recoveryenabled         Yes
badmemoryaccess         Yes
isolatedcontext         Yes
allowedinmemorysettings 0x15000075
osdevice                partition=C:
systemroot              \WINDOWS
resumeobject            {c78ef55a-4ee8-11ea-8e1c-a5b3457f836d}
nx                      OptIn
bootmenupolicy          Standard
hypervisorlaunchtype    Auto

2. 起動設定の複製

新しい起動設定はno Hyper-Vという名前で作成することにしました。

C:\WINDOWS\system32>bcdedit /copy {current} /d "no Hyper-V"
エントリは {e005d750-4ee8-11ea-87f9-c9149b72445e} に正常にコピーされました。

起動設定が複製されていることを確認します。
新しいブートローダーが登録され、ブートマネージャーのdisplayorderの項目にも値が増えています。
説明文(description)以外はすべて元のコピーになっています。

C:\WINDOWS\system32>bcdedit
Windows ブート マネージャー
--------------------------------
identifier              {bootmgr}
device                  partition=\Device\HarddiskVolume1
path                    \EFI\Microsoft\Boot\bootmgfw.efi
description             Windows Boot Manager
locale                  ja-JP
inherit                 {globalsettings}
badmemoryaccess         Yes
default                 {c78ef55b-4ee8-11ea-8e1c-a5b3457f836d}
resumeobject            {c78ef55a-4ee8-11ea-8e1c-a5b3457f836d}
displayorder            {current}
                        {e005d750-4ee8-11ea-87f9-c9149b72445e}
toolsdisplayorder       {memdiag}
timeout                 30

Windows ブート ローダー
--------------------------------
identifier              {current}
device                  partition=C:
path                    \WINDOWS\system32\winload.efi
description             Windows 10
locale                  ja-JP
inherit                 {bootloadersettings}
recoverysequence        {e005d74c-4ee8-11ea-87f9-c9149b72445e}
displaymessageoverride  Recovery
recoveryenabled         Yes
badmemoryaccess         Yes
isolatedcontext         Yes
allowedinmemorysettings 0x15000075
osdevice                partition=C:
systemroot              \WINDOWS
resumeobject            {c78ef55a-4ee8-11ea-8e1c-a5b3457f836d}
nx                      OptIn
bootmenupolicy          Standard
hypervisorlaunchtype    Auto

Windows ブート ローダー
--------------------------------
identifier              {e005d750-4ee8-11ea-87f9-c9149b72445e}
device                  partition=C:
path                    \WINDOWS\system32\winload.efi
description             no Hyper-V
locale                  ja-JP
inherit                 {bootloadersettings}
recoverysequence        {e005d74c-4ee8-11ea-87f9-c9149b72445e}
displaymessageoverride  Recovery
recoveryenabled         Yes
badmemoryaccess         Yes
isolatedcontext         Yes
allowedinmemorysettings 0x15000075
osdevice                partition=C:
systemroot              \WINDOWS
resumeobject            {c78ef55a-4ee8-11ea-8e1c-a5b3457f836d}
nx                      OptIn
bootmenupolicy          Standard
hypervisorlaunchtype    Auto

3. Hyper-Vを無効化

C:\WINDOWS\system32>bcdedit /set {e005d750-4ee8-11ea-87f9-c9149b72445e} hypervisorlaunchtype off
この操作を正しく終了しました。

変更の結果を確認

C:\WINDOWS\system32>bcdedit
(略)

Windows ブート ローダー
--------------------------------
identifier              {e005d750-4ee8-11ea-87f9-c9149b72445e}
device                  partition=C:
path                    \WINDOWS\system32\winload.efi
description             no Hyper-V
locale                  ja-JP
inherit                 {bootloadersettings}
recoverysequence        {e005d74c-4ee8-11ea-87f9-c9149b72445e}
displaymessageoverride  Recovery
recoveryenabled         Yes
badmemoryaccess         Yes
isolatedcontext         Yes
allowedinmemorysettings 0x15000075
osdevice                partition=C:
systemroot              \WINDOWS
resumeobject            {c78ef55a-4ee8-11ea-8e1c-a5b3457f836d}
nx                      OptIn
bootmenupolicy          Standard
hypervisorlaunchtype    off

hypervisorlaunchtypeの項目がoffに変化していることがわかります。

※ 有効化するときは、onではなくauto

C:\WINDOWS\system32>bcdedit /set {e005d750-4ee8-11ea-87f9-c9149b72445e} hypervisorlaunchtype Auto

これにて、Hyper-Vを無効にした状態で起動するブートモードの作成ができました。

PCを再起動すると、「オペレーティングシステムの選択」画面が出て、どちらのブートモードで起動するか選ぶことができるようになります。

※デフォルトでは、選択せずに30秒経過すると自動的に優先度の高いブートモードで起動します。
※デフォルトのモードを変更したい場合は、ブートモード選択画面下部の「規定の起動設定やその他オプションの変更」から設定することもできますが、このままコマンドライン上で設定することもできます。

ブートモードの優先順位を変更

「出社したら勝手に再起動されてんだけどウケるw」という事故はしばしば発生いたします。

せっかくHyper-Vを無効にしたブートモードを作っておいても、勝手に起動するときにはデフォルトのブートモードで立ち上がってしまいます。厄介ですね。

というわけで、ブートモードの優先順位を変更します。

やり方は大きく2通り

それぞれ手順を説明します。

bcdeditコマンドによる変更

現状の確認

C:\WINDOWS\system32>bcdedit
Windows ブート マネージャー
--------------------------------
identifier              {bootmgr}
device                  partition=\Device\HarddiskVolume1
path                    \EFI\Microsoft\Boot\bootmgfw.efi
description             Windows Boot Manager
locale                  ja-JP
inherit                 {globalsettings}
badmemoryaccess         Yes
default                 {current}
resumeobject            {c78ef55a-4ee8-11ea-8e1c-a5b3457f836d}
displayorder            {current}
                        {e005d750-4ee8-11ea-87f9-c9149b72445e}
toolsdisplayorder       {memdiag}
timeout                 30

(略)

デフォルトのブートモードを変更

C:\WINDOWS\system32>bcdedit /default {e005d750-4ee8-11ea-87f9-c9149b72445e}
この操作を正しく終了しました。

変更後の確認

C:\WINDOWS\system32>bcdedit
Windows ブート マネージャー
--------------------------------
identifier              {bootmgr}
device                  partition=\Device\HarddiskVolume1
path                    \EFI\Microsoft\Boot\bootmgfw.efi
description             Windows Boot Manager
locale                  ja-JP
inherit                 {globalsettings}
badmemoryaccess         Yes
default                 {default}
resumeobject            {c78ef55a-4ee8-11ea-8e1c-a5b3457f836d}
displayorder            {current}
                        {default}
toolsdisplayorder       {memdiag}
timeout                 30

(略)

これでデフォルトのブートモードが変更できました。

システム構成ツールによる変更

1. Windowsキーを押し、「msconfig」と入力してシステム構成ツールを開く

「システム構成ツール」とか
「System Configuration」とか

2. [ブート]タブにて、作成した「no Hyper-V」を選択し、[既定値に設定する]をクリックして[OK]で保存

これでデフォルトのブートモードが変更できました。

いずれのやり方でも一瞬。簡単。

えくりぷす べんり こまんど

編集画面だとページタイトルが明朝体なので、ひらがなでタイトルを書くとなんとも言えないおかしさが生まれてちょっと好きです。

テックノートのページではバリバリのゴシック体なので、ユーモラスな印象というよりは、どこか幼い印象になってしまいますね。

余談でした。

EclipseというIDEを単なる高機能テキストエディタのように利用する、高尚な技術の結晶に対する愚弄の日々を過ごしている身として、使うとちょっと便利なコマンドを宣伝しようと思います。

※途中で口調や文体が変わっていますが、執筆日が異なるためです。
 ほぼほぼ社内向けの記事なので堅いこと言わないでほしい。

※また今回は、『「Ctrl」押しながら「変数名」や「関数名」をクリックすると、定義に飛べる』
 みたいな系統の話は含まれません。

良さげなツールやショートカットを見つけたら共有をお願いします。皆が捗ります。


Ctrl + h

まずはみんな大好き「Ctrl + h」コマンドです。
使ってない人はぜひ使ってください。

機能:

  • 特定広範囲を対象とした、文字列の高度な検索

用途:

  • デバッグ中のコールスタックを遡る際など、関数の記述箇所を探すのが手間なケースで多用
  • コーディング中に、呼び出し階層機能など、EclipseのIDE的な側面が見落とすHTMLやjs内の文字列を見逃さない検索手段として多用
  • 使われていない変数や関数を探したり、影響範囲の確認にほぼ必須

Ctrl + j

Glance検索機能を開始します。
正直「Ctrl + f」よりも使えるかもしれないコマンドです。試しにどうぞ。
(「Ctrl + f」には文字列置換という役目があるからね)

機能:

  • インクリメンタル検索
  • ヒットした箇所のハイライト表示
  • Eclipseの Ctrl + f は、Windows標準のメモ帳と同じような使用感
  • こいつはChrome等で  Ctrl + f  したときのような使用感

用途:

  • 例えばファイル内で「変数名」を検索すると、使われている箇所が一望できる
  • 一度に2単語ハイライトしたいときとか、ハイライトしながらコード修正したいときとかに便利
  • リファクタリングにも役立ちそうな便利コマンド

Ctrl + Shift + r

HTMLやらPHPやらJSやら、別ファイルを色々参照したりPOST先に指定したりといったコードが多い環境で重宝します。

機能:

  • 名称によるファイル検索
  • 柔軟な検索が可能

用途:

  • ファイル名コピってコマンド打ってペーストしてEnter押すとそのファイルが開ける(的な使用感)
  • 範囲選択してコマンド打つだけでも↑と同様の効果が得られる
  • もう脇にあるツリー表示からファイルをちょこまか探す必要は無いのです。
    (フォルダ構成をある程度眺めることも大事ではあるけど)

Ctrl + d

このあたりはぜひ使ってほしいです。

機能:

  • 行削除
  • 「カーソルのある行」、「選択範囲を含む行」を消し飛ばす

用途:

  • 選択した範囲を含む行をサクっと消せて気分がいい

Ctrl + l

シンプル行移動。

機能:

  • 入力した行にジャンプする
  • 999999とか入れると、「範囲外の行番号です」とシンプルに指摘される

用途:

  • レビューされたコードについて、レビュー箇所までスパッと飛ぶのによく使っていました♨

Ctrl + {

画面分割はよく使う機能。便利なので。

機能:

  • エディタを左右に分割表示する。
  • すでに分割表示になっている場合は、表示を元に戻す。

用途:

  • 同じファイルの別の場所を見ながら作業したいこと、ありますよね?

Ctrl + Shift + –

こちらの分割もよく使う。便利なので。

機能:

  • エディタを上下に分割表示する。
  • すでに分割表示になっている場合は、表示を元に戻す。

用途:

  • 同じファイルの別の場所を見ながら作業したいこと、ありますよね??

Ctrl + Alt + ↑/↓

コピペよりも指への負担が少ない気がする。

機能:

  • 行の複製
  • ↑を押したなら上に、↓を押したなら下に、行が複製されるだけ

用途:

  • コピペに比べ、インデント込みで確実に同じ内容を複製できるのが強み
  • 1行レベルを複製するならコマンド打つ方が楽
  • SQLでINSERTのVALUESをたくさん用意したときとか、jsonでテストデータ作ってるときとかに多用(……嘘ですAtomで作業しました)

Alt + ↑/↓

コピペってわりとミス タイプするよね。

機能:

  • 行を移動させる
  • 下に移動させる場合、直下の行と入れ替わる形で移動していく。上も同様。

用途:

  • インデントがそのまま移動していくのが強い(構造がわからなくなりにくい
  • コードを整理する際とかに使ったりする

Alt + ←/→

Chromeもこういう操作するよねー。マウスに「戻る/進む」ボタンが付いてない人向け。

機能:

  • ←:戻る →:進む
  • 作業していたファイルを順に移動する

用途:

  • 複数のファイルを並行して書き換えている際などに、マウスクリックで切り替えるのが面倒だったときなど。
  • 誤って開いていたファイルたちを閉じまくってしまったときなどに、「戻る」連打で触ったファイルを開いて回る荒業がある(ない)。

Ctrl + / or Ctrl + Shift + c

基本技。

機能:

  • コメントアウトの有無を切り替える

用途:

  • コーディング中は色々コメントアウトしたくなるのでとにかく多用

Alt + Shift + r

変数やメソッドの名称を一括で変更できるコマンド。あまり活用できていない……

機能:

  • 変数やメソッドにカーソルを合わせて使うと、その変数・メソッドの名称を一括で編集できる
  • この手のIDEにあまりない、リアルタイムな編集と反映でちょっとすごい

用途:

  • あとから変数名を変えたくなった際など、ファイル内でまとめて変換できてちょっと便利
  • 変数のスコープとか、もっと賢かったらいいんだけど……
  • 正直、「Ctrl + f」から文字列の置換で済ませがち

Ctrl + Shift + l

機能:

  • ショートカットキーの一覧が出る

用途:

  • ショートカットキーの一覧を見る

入社当初はこんな記事見てた気がするけど、結局そんなに色々なコマンド使わないまま今日を迎えている(Atomの操作の方が慣れてるから、簡単なテキスト処理はAtomでやっちゃう)。
文字のケース変更コマンドはときどき使う。

デスクトップPC(Win10) HDD→SSD換装

メインの起動ドライブをSSDに換装した作業メモです。

参考サイト:【最新】HDDからSSDに交換・換装!コピー・クローン方法解説!

HDDのパーティション形式を確認

取り付けたSSDを初期化する際、元のHDDとパーティション形式を揃えた方が安全なので、予め形式を確認しておきます。

参考サイト:MBRまたはGPTの確認方法(パーティション形式) | パソコンの問題を改善

  1. 「ディスクの管理」を開く
    「[Win] + [X] キーでメニュー表示 → [k] キーで開く」が一番早いと思います。
  2. OSが入っているディスク(Cドライブのあるディスク)のパーティション形式を確認
    MBRGPTかを確認します。

SSDをPCに接続

PCにSSDを取り付けるだけです。

  1. 一度PCの電源を落とす
    ※メモリ増設などと同様、シャットダウン後に電源ケーブルまで外します。
  2. SSDを取り付ける
    電源ケーブルとSATAケーブルをしっかり取り付けます。

SSDの初期化

元のHDDのフォーマット形式に合わせて、SSDを初期化します。

  1. Windows を起動する
  2. 「ディスクの管理」を開く
  3. SSDの初期化とボリュームの作成を行う
    ※このときのパーティション形式を、元のHDDと合わせます。

EaseUS Todo Backup Freeでディスクのクローン

ソフトのインストールとクローン処理を実施します。

EaseUS Todo Backup Freeの取得

ディスクのクローンやバックアップ等が行えるパワフル便利ソフトです。ディスクのクローンをするだけなら無料版でできてしまう。つよい。

公式サイトからダウンロードするのが安定でしょうか。

(参考記事から名前調べて適当に窓の杜からダウンロードしちゃった)

インストール(ver. 12.0)

[次へ]で問題ありません
許諾に同意
適当なフォルダを選択
不要なチェックを外す
バックアップ機能を使う際の既定のフォルダ指定
適当で良さそう
インストールがゴリゴリ進んでこの画面に
[完了]をクリックするとブラウザで何か開くけど閉じていい
ライセンス認証とか出るけど[後で]

画面右下に出てくるセールスポップアップは「今後表示しない」にチェック入れて消す。

ソフトウェアアップデートはお好みで。

クローン

クローンするには、画面左の「クローン」のとこをクリック
1. ソースの指定はディスクまるごとチェックした
(正直C:のみとかでもいける気はするし、細かいパーティションが切られるのはイヤ……)
2. ターゲットの指定でSSDを選択(画像はHDD選んでるけど気にしない)
2.a. 「編集」をクリックすると、クローン後のレイアウトをいじれる
SSD内に不要なパーティションが切られて困る場合はいじると吉
2.b. 高度なオプションで「SSDに最適化」にチェック入れると良さげ
3. 次の画面で「実行」をクリックすると、ターゲットのデータが消えるとかなんとか聞かれる
OKをクリックすると、ゴリゴリと処理が走る

そこそこ時間がかかるので待機。クローンが完了したら閉じる。

SSDからブートするように変更して起動チャレンジ

ブートの優先順位を変更します。

  • BIOSのブートオプションから、ブートの優先順位を変えるのが丁寧。
  • 元のHDDのSATAケーブルをポートから抜き、同じポートにSSDのSATAケーブルを挿すのは手荒。(これでもちゃんと起動できた)

問題なくSSDから起動できてPCが使えることを確認したら、元のHDDは煮るなり焼くなり……

以上。

ローカルの開発環境(Vagrant)のPHPでcURLが機能しない

タイトルがわかりにくいですね。

困った

こんなことをしていました。

$url = 'http://' . $_SERVER['HTTP_HOST'] . SERVER_URL . 'index.php?action=hoge';

$curl = curl_init($url);
    (中略)
$response = curl_exec($curl);
※$url: http://local-host.name/server_url/index.php?action=hoge な感じ

こんな風になりました。

Could not resolve host: local-host.name

いやぁ繋がらん繋がらん…… 軽く調べたらDNSがまずいみたいな話🤔

解決

vagrant上の/etc/hosts127.0.0.1 local-host.nameを追加して、$ vagrant reloadしたら解決していた。

[vagrant@localhost ~]$ sudo vim /etc/hosts
    (~編集~)
[vagrant@localhost ~]$ sudo cat /etc/hosts

127.0.0.1 local-host.name

[vagrant@localhost ~]$ exit
Abgemeldet
Connection to 127.0.0.1 closed.

C:\hoge\vagrant\piyo>vagrant reload
~~~

ちょろいもんですわ。(反映されるタイミングが少し怪しかったけど……)

参考

Ubuntu18.04 LTS | HDDの増設

前回の続き。

内蔵HDDの追加作業をしました。

調べたらGUIで簡単にできるらしい。さっくりと実践。
(うっかりスクショ撮り忘れたので文字ばっかですがご了承ください)

参考: HDDをフォーマットする – Ubuntu 18.04 LTS編

  1. Windowsキーとか押して「disk」と入力し、出てきた「ディスク」を開く。
  2. セットアップを行いたいディスクを選択し、メニュー(≡)から「ディスクを初期化」を選択。
  3. ディスクの初期化
    何も入っていないドライブだったので下記のように選択して初期化。
      消去: 既存のデータを上書きしない(クイック)
      パーティション: 新しいシステムと(中略)互換(GPT)
  4. [➕]を押して未割り当て領域にパーティションを作成
    パーティション作成ダイアログでは、パーティションのサイズを最大にしました。
  5. ボリューム名などの設定は以下のようにして作成。
      ボリューム名: data
      消去: オフ
      タイプ: Linuxシステム専用の内蔵ディスク(Ext4)。
  6. [▶]を押してパーティションをマウント
  7. [⚙]を押してマウントオプションを編集
    Ubuntu起動時に自動でマウントされるよう設定する。
      ユーザーセッションのデフォルト: オフ
      ☑ システム起動時にマウントする
      ☑ ユーザーインターフェースに表示する
      マウントポイント: /media/onlineconsultant/data
      識別: UUID=~~~~~~~~~~
      ファイルシステムのタイプ: auto
    として [🆗]。認証を求められるのでパス入れて完了。
  8. 再起動して確認。

サイト通りの手順でできてしまった。

一応コマンドでもできるという話

まず現状確認

$ cat /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda1 during installation

UUID=d2916135-4486-43be-a209-b548c96bfe38 / ext4 errors=remount-ro 0 1
/swapfile none swap sw 0 0

ここで、以下のようにコマンド実行

sudo echo -e '/dev/sda1 /media/onlineconsultant/data auto defaults 0 0' >> /etc/fstab

みたいなことをしてもできます。(ちょっと /etc/fstab ファイルの中身は違うけど実質同じ(はず))

おわり。

参考