注意
本環境は仮想スイッチを利用した前提の構成であり、DAA(PCIパススルー)は利用していません。
多分DAAなら発生しないと思います。
Hyper-Vで動かすための前準備と手順
必要なもの
-
OpenWrt x86のimgデータ
-
generic-squashfs-combined-efi.img.gz
だと更新やリセットが楽 - 事前に落として
.img.gz
から解凍して.img
にしておくこと
-
-
qemu-img
- ダウンロードしたimgをvhdxにしたり、拡張したりするのに使う
手順
- qemu-imgを解凍した中身とOpenWrtのimgデータを一つのフォルダにまとめる
-
cmd
を立ち上げ、次のコマンドを順番に実行する -
qemu-img resize -f raw ***.img 1G
1Gに拡張する、必要に応じて増やしても減らしてもOK。 -
qemu-img convert ***.img -O vhdx ***.vhdx
imgからvhdxにコンバートしてHyper-Vのディスクとして使えるようにする。 - コンバートしたディスクをHyper-Vの仮想マシンにセットする
- セキュアブート無効
- メモリ1GB(動的でも固定でもOK)
- プロセッサは1~2くらい
- あとはお好みで
- 起動したらこれにしたがってディスクの拡張を実施(実行完了後、VMは自動で再起動する)
以上!
フレッツ光のONUとつながらない
これは実NICと仮想スイッチ間のMACアドレスが異なることが原因っぽいです。
解決方法
OpenWrtにNICを追加した際に実際のNICのMACアドレスと同じになるように静的に割り振ってあげる必要があります。
また、MACアドレスのスプーフィング(偽装)も許可してあげると良いです。知らんけど。
VLANが通らない
MACアドレスのスプーフィングを許可しているのにVLANが通りません。
普通のパケットは通ります。なんでや。
解決方法①
NICに対してVLANが1つだけ紐づく場合は、仮想VLANIDを有効にする
にチェックを入れ、VLANIDを指定することで通すことができます。
解決方法②
トランクポートなど、複数のVLANが通ることを前提とする場合は、Set-VMNetworkAdapterVlan
を使用してVMに対して許可するVLANを設定することが可能です。
めんどくさいので全部許可してしまえ~!な場合は下記の通り設定してみてください。
PS C:\Users\Administrator> Set-VMNetworkAdapterVlan OpenWrt -Trunk -AllowedVlanIdList 1-4094 -NativeVlanId 0
PS C:\Users\Administrator> Get-VMNetworkAdapterVlan OpenWrt
VMName VMNetworkAdapterName Mode VlanList
------ -------------------- ---- --------
OpenWrt ネットワーク アダプター Trunk 0,1-4094
OpenWrt ネットワーク アダプター Trunk 0,1-4094
OpenWrt ネットワーク アダプター Trunk 0,1-4094
OpenWrt ネットワーク アダプター Trunk 0,1-4094
OpenWrt ネットワーク アダプター Trunk 0,1-4094
ちなみにNICを指定したい場合は-VMNetworkAdapterName
で指定してやることで、特定NICだけ通すみたいなことも出来るっぽいです。