日本电子维修技术 网络Hyper-V安装Open-WRT的问题



有人在Hyper-V上安装过Open-WRT吗?我在2012 R2上的Hyper-V上安装Open-WRT,网卡只能用LEGACY的网卡,网卡驱动用的kmod-tulip,发现局域网传输只有1M的样子,有人遇到过类似问题吗?

评论
我用的是Windows 2008 R2的Hyper-V,不过跟windows的版本没有关系。
主要是我自己编译的OpenWRT,最新的trunk有点问题,但是也能用,而且还集成了ss。
Chaos Calmer RC3非常的正常,编译时要注意以下几点:
修改config/Config-images.in,以生成vhd镜像,不过生成了也没用,因为格式太老。需要用qemu自己转换成vhd才行;修改package/kernel/linux/modules/virtual.mk,以增加Hyper-V支持;修改target/linux/x86/config-3.18,开启linux内核对Hyper-V的支持;修改target/linux/x86/image/Makefile;在make menuconfig中的Virtualization Support中选中kmod-hyperv-net-vsc和kmod-hyperv-storage。在Kernel modules->Network Devices取消对所有网卡的选中。
这样编译出来的openwrt完美支持标准的Hyper-V虚拟网卡,性能千兆无压力。
我的网卡是HP NC382T。



评论

这个厉害, 我那个时候编译的版本是 极路由, 还有一个是  树莓派。。。

先留着备用。。

PS。其实 Openwrt 在PC好像没多少有点, 那些插件不重新编译的话也无法应用。

评论

nc328T 有什么正规的购买渠道么?

评论

NB,我按照你说的试试看

评论

个人觉得Openwrt最理想的平台就是用在虚拟机上,这样的话,永远不用考虑“路由器”的兼容性问题,因为所谓兼容,也就是cpu、网卡之类的,而虚拟机完美的解决了这个问题。

评论

洋垃圾就行,挺好用的。

评论

有问题欢迎交流。
无论国内还是国外,几乎没有关于新版本Hyper-V Openwrt的信息,而且Openwrt的老外是有意封杀Hyper-V的,很多关于Hyper-V的提交都被莫名其妙的拒绝了。
不过好在现在的新版linux内核对Hyper-V的支持很好,特别是3.18。
之前的3.14有bug。

评论

诶?封杀 虚机吗?

这是什么为什么呢?


感觉OP主要还是开源,包括很多插件,都是开源的。 可以自行编译。。

但OP主要目标可能不是PC,
另外 ,X86 下还有很多的开源、或者免费的 商业路由工具。

评论

不是封杀虚拟机,是封杀Hyper-V,因为这个是微软的技术。
openwrt原生完美支持的是VMware的Workstation和ESXi,对Xen的支持也是原生的。
其实,整个Linux阵营的开发者对微软都是封杀的态度,温和点的也是“不支持”。

评论

附件中是我制作的OpenWRT Chaos Calmer RC3 15.05源代码的Hyper-V补丁,可以尝试应用。

用svn或者git迁出OpenWRT的CC版RC3源代码(这个版本已经够新了,内核为Linux 3.18,相当稳定);
然后应用补丁:
git apply --verbose hyper-v_cc_rc3.patch复制代码编译时注意选中Kernel->Virtualization Support中的四个Hyper-V相关的模块;
Kernel modules->Network Devices取消选中所有网卡驱动,因为Hyper-V驱动已经通过补丁加载了。

编译之后用ubuntu之类的新版qemu工具转换镜像为vhd格式。OpenWRT编译生成的vhd镜像格式太久,Server 2008 R2无法识别。
转换命令如下:
qemu-img convert -f raw ./bin/x86/openwrt-x86-generic-combined-ext4.img -O vpc ./bin/x86/openwrt-x86-generic-combined-ext4.vhd复制代码
无法上传附件,所以直接把源代码贴出来,另存为补丁并应用即可。
diff --git a/config/Config-images.in b/config/Config-images.in
index a60dd50..52b3d66 100644
--- a/config/Config-images.in
+++ b/config/Config-images.in
@@ -231,6 +231,16 @@ menu "Target Images"
                select TARGET_IMAGES_PAD
                select PACKAGE_kmod-e1000

+        config VHD_IMAGES
+                bool "Build Hyper-V image files (VHD)"
+                depends on TARGET_x86 || TARGET_x86_64
+                select GRUB_IMAGES
+                select TARGET_IMAGES_PAD
+                select PACKAGE_kmod-hyperv-balloon
+                select PACKAGE_kmod-hyperv-net-vsc
+                select PACKAGE_kmod-hyperv-util
+                select PACKAGE_kmod-hyperv-storage
+
        config VMDK_IMAGES
                bool "Build VMware image files (VMDK)"
                depends on TARGET_x86 || TARGET_x86_64
diff --git a/package/kernel/linux/modules/virtual.mk b/package/kernel/linux/modules/virtual.mk
index 4464fe9..b15f97a 100644
--- a/package/kernel/linux/modules/virtual.mk
+++ b/package/kernel/linux/modules/virtual.mk
@@ -186,3 +186,86 @@ define KernelPackage/xen-pcidev/description
endef

$(eval $(call KernelPackage,xen-pcidev))
+
+#
+# Hyper-V Drives depends on x86 or x86_64.
+#
+define KernelPackage/hyperv-balloon
+  SUBMENU:=$(VIRTUAL_MENU)
+  DEPENDS:=@(TARGET_x86||TARGET_x86_64)
+  TITLE:=Microsoft Hyper-V Balloon Driver
+  KCONFIG:= \
+    CONFIG_HYPERV_BALLOON \
+    CONFIG_HYPERVISOR_GUEST=y \
+    CONFIG_PARAVIRT=n \
+    CONFIG_HYPERV=y
+  FILES:=$(LINUX_DIR)/drivers/hv/hv_balloon.ko
+  AUTOLOAD:=$(call AutoLoad,06,hv_balloon)
+endef
+
+define KernelPackage/hyperv-balloon/description
+  Microsofot Hyper-V balloon driver.
+endef
+
+$(eval $(call KernelPackage,hyperv-balloon))
+
+define KernelPackage/hyperv-net-vsc
+  SUBMENU:=$(VIRTUAL_MENU)
+  DEPENDS:=@(TARGET_x86||TARGET_x86_64)
+  TITLE:=Microsoft Hyper-V Network Driver
+  KCONFIG:= \
+    CONFIG_HYPERV_NET \
+    CONFIG_HYPERVISOR_GUEST=y \
+    CONFIG_PARAVIRT=n \
+    CONFIG_HYPERV=y
+  FILES:=$(LINUX_DIR)/drivers/net/hyperv/hv_netvsc.ko
+  AUTOLOAD:=$(call AutoLoad,35,hv_netvsc)
+endef
+
+define KernelPackage/hyperv-net-vsc/description
+  Microsoft Hyper-V Network Driver
+endef
+
+$(eval $(call KernelPackage,hyperv-net-vsc))
+
+define KernelPackage/hyperv-util
+  SUBMENU:=$(VIRTUAL_MENU)
+  DEPENDS:=@(TARGET_x86||TARGET_x86_64)
+  TITLE:=Microsoft Hyper-V Utility Driver
+  KCONFIG:= \
+    CONFIG_HYPERV_UTILS \
+    CONFIG_HYPERVISOR_GUEST=y \
+    CONFIG_PARAVIRT=n \
+    CONFIG_HYPERV=y
+  FILES:=$(LINUX_DIR)/drivers/hv/hv_util.ko
+  AUTOLOAD:=$(call AutoLoad,10,hv_util)
+endef
+
+define KernelPackage/hyperv-util/description
+  Microsoft Hyper-V Utility Driver
+endef
+
+$(eval $(call KernelPackage,hyperv-util))
+
+#
+# Hyper-V Storage Drive needs to be in kernel rather than module to load the root fs.
+#
+define KernelPackage/hyperv-storage
+  SUBMENU:=$(VIRTUAL_MENU)
+  DEPENDS:=@(TARGET_x86||TARGET_x86_64) +kmod-scsi-core
+  TITLE:=Microsoft Hyper-V Storage Driver
+  KCONFIG:= \
+    CONFIG_HYPERV_STORAGE=y \
+    CONFIG_HYPERVISOR_GUEST=y \
+    CONFIG_PARAVIRT=n \
+    CONFIG_HYPERV=y
+  FILES:=$(LINUX_DIR)/drivers/scsi/hv_storvsc.ko
+  AUTOLOAD:=$(call AutoLoad,40,hv_storvsc)
+endef
+
+define KernelPackage/hyperv-storage/description
+  Microsoft Hyper-V Storage Driver
+endef
+
+$(eval $(call KernelPackage,hyperv-storage))
+
diff --git a/target/linux/x86/64/config-default b/target/linux/x86/64/config-default
index 1caad74..32c7648 100644
--- a/target/linux/x86/64/config-default
+++ b/target/linux/x86/64/config-default
@@ -99,6 +99,14 @@ CONFIG_HPET_MMAP=y
CONFIG_HW_RANDOM_INTEL=y
# CONFIG_HW_RANDOM_VIRTIO is not set
CONFIG_HYPERVISOR_GUEST=y
+# CONFIG_HYPERV is not set
+# CONFIG_HYPERV_BALLOON is not set
+# CONFIG_HYPERV_NET is not set
+# CONFIG_HYPERV_STORAGE is not set
+# CONFIG_HYPERV_UTILS is not set
+# CONFIG_FB_HYPERV is not set
+# CONFIG_HID_HYPERV_MOUSE is not set
+# CONFIG_HYPERV_KEYBOARD is not set
# CONFIG_I7300_IDLE is not set
# CONFIG_IA32_EMULATION is not set
CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
diff --git a/target/linux/x86/config-3.18 b/target/linux/x86/config-3.18
index d7a2d61..6dfdfd7 100644
--- a/target/linux/x86/config-3.18
+++ b/target/linux/x86/config-3.18
@@ -203,6 +203,17 @@ CONFIG_HW_RANDOM=y
CONFIG_HW_RANDOM_GEODE=y
CONFIG_HW_RANDOM_VIA=y
# CONFIG_HYPERVISOR_GUEST is not set
+
+# CONFIG_HYPERV is not set
+# CONFIG_HYPERV_BALLOON is not set
+# CONFIG_HYPERV_NET is not set
+# CONFIG_HYPERV_STORAGE is not set
+# CONFIG_HYPERV_UTILS is not set
+# CONFIG_FB_HYPERV is not set
+# CONFIG_HID_HYPERV_MOUSE is not set
+# CONFIG_VMWARE_BALLOON is not set
+# CONFIG_HYPERV_KEYBOARD is not set
+
CONFIG_HZ_PERIODIC=y
CONFIG_I8253_LOCK=y
# CONFIG_I8K is not set
diff --git a/target/linux/x86/image/Makefile b/target/linux/x86/image/Makefile
index e7e02f1..a52ec11 100644
--- a/target/linux/x86/image/Makefile
+++ b/target/linux/x86/image/Makefile
@@ -148,6 +148,15 @@ ifneq ($(CONFIG_VMDK_IMAGES),)
   endef
endif

+ifneq ($(CONFIG_VHD_IMAGES),)
+  define Image/Build/vhd
+        rm $(BIN_DIR)/$(IMG_PREFIX)-combined-$(1).vhd || true
+        qemu-img convert -f raw -O vpc \
+                $(BIN_DIR)/$(IMG_PREFIX)-combined-$(1).img \
+                $(BIN_DIR)/$(IMG_PREFIX)-combined-$(1).vhd
+  endef
+endif
+
define Image/Build/gzip
        gzip -f9 $(BIN_DIR)/$(IMG_PREFIX)-combined-$(1).img
        gzip -f9 $(BIN_DIR)/$(IMG_PREFIX)-rootfs-$(1).img
@@ -219,6 +228,7 @@ define Image/Build
        $(call Image/Build/grub2,$(1))
        $(call Image/Build/vdi,$(1))
        $(call Image/Build/vmdk,$(1))
+        $(call Image/Build/vhd,$(1))
        $(CP) $(KDIR)/root.$(1) $(BIN_DIR)/$(IMG_PREFIX)-rootfs-$(1).img
   else
        $(CP) $(KDIR)/root.iso $(BIN_DIR)/$(IMG_PREFIX).iso
复制代码





评论

恩, 先收藏了。。

最近用的软路由, 有些抽风,随机重启,比较闹心。 打算在VM里重做一个软路由。

目前用Openwrt 效果感觉如何? 有评估过其他软路由吗?

评论

至少我自己编译的OpenWRT相当稳定,因为完全自定义了模块,主要是用vxn和ss做“智能上网”,没有过意外重启。

上面已经说了用软路由的主要目的,其他软路由都不是开源、允许自己编译的,所以没法随心所欲的调整智能上网功能,故仅选择了openwrt。

注:所谓智能上网是这样的,在配置中可以设置基于域名的域名解析和路由,例如*.google.com/*的域名均通过vxn使用8.8.8.8进行解析;然后所有*.google.com/*的域名均通过vxn访问。
这样可以保证域名解析结果的准确和访问;同时由于其是基于配置的,故访问*.taobao.com/*是直连。

最最关键的,这是基于域名的设置,不是基于ip的。除了openwrt,然和开源路由都没有这个功能。

评论

vxn是什么?

基于dnsmasq ipset和iptables设置的重定向?

评论

V.P_N 不能说的太明白

评论

恩恩。。。

你是说根据不同域名 来转发 DNS规则吧?

好多DNS工具都带吧?
Win 2012 中的也支持转发, 我把Google什么,都转到Ipv6的地址解析。。


其他系统虽然不是开源,但都是基于某个分发版本定制的,
远程或本地登录后,大可以运行很多自定义脚本什么的,
就算没有插件选择, 也可以自己安装一些第三方的 工具或脚本。

评论

没错,很多工具可以实现,但至今只发现Openwrt是最廉价且方便的同时实现了两个功能:指定域名以特定方式解析,以及指定域名以特定方式访问。

并且特定方式解析的域名不一定非要特定方式访问,反之亦然。

评论

额。。。

感觉快成绕口令了。

对了, 你有看到过 Openwrt下的去广告的插件吗?

评论

没有,去广告用的是firefox, chrome, opera的ad block插件。基于浏览器的比基于路由的更灵活。

评论

搜索一下好像还是有一个的

不过有好多年没更新了,而且没开源。。



路上上屏蔽广告也有些好处, 比如, QQ,这类内嵌广告的,都无法正常加载, 那么就只能不显示广告或者缓存的数据(可以清除)

评论

嗯,的确可以用来搞定软件中的嵌入广告,不过也有可能会误杀某些网站的元素,导致网站工作不正常。

评论

这点也算是比较担心的。。。

算了,总之先试试看在说。。

评论

是不是用了这个补丁,以下四步就不用做了。
修改config/Config-images.in,以生成vhd镜像,不过生成了也没用,因为格式太老。需要用qemu自己转换成vhd才行;
修改package/kernel/linux/modules/virtual.mk,以增加Hyper-V支持;
修改target/linux/x86/config-3.18,开启linux内核对Hyper-V的支持;
修改target/linux/x86/image/Makefile;

评论

这个补丁就是修改了这几个文件的源代码。
关键还是要明白修改的意思,不能生搬硬套。

评论
现在在用 2012 R2 hyper-v openwrt, 一个恩山论坛的玩家编译的hyperv固件. 在我的 gen8 上用我也是新网卡, 不过BCM网卡有个坑, 在hyperv下性能低下, 之前找了好多资料, 后来发现改个注册表就好了.

评论

我加载了一下补丁,从27行开始报错。。。不知道什么情况。能麻烦上传一个可以使用的op不?先谢谢了


评论

请查收消息。
具体什么错误,贴出来看看。

评论

再次编译了系统,在打补丁的时候还是会出现错误。但是如果根据补丁内容修改相关文件后,成功编译,目前已经开始使用了。


评论

再次编译了系统,在打补丁的时候还是会出现错误。
但是如果根据补丁内容修改相关文件后,成功编译,目前已经开始使用了。

评论

如果自己修改后编译成功,可以用git diff > patch.txt来生成补丁,看看和原始补丁文件有什么区别。

确实,因为国内到op官网速度的问题,我用了git clone -b master git://git.coding.net/openwrtio/openwrt.git cc,我稍后再试试看

评论

用全局vxn下载openwrt官方源代码速度就快多了。

评论
open HYPERV MARK

评论

修改package/kernel/linux/modules/virtual.mk,以增加Hyper-V支持;
关于这点,trunk里好像没有这个文件,不知道为啥,在15.05的代码里有。

评论

是的,最新的DD trunk移除了这个文件,查看git的历史记录可以看到。

个人瞎猜,OpenWrt的开发者一向是反对虚拟化运行OpenWrt的,因为他们最大的乐趣是不停的折腾新硬件的驱动,而不是单纯的路由器代码(纯粹的路由器功能的代码很多都已经很久没有升级了),真正更新的主要是驱动,以及kernel中跟驱动相关的东西。

解决办法:从git的历史记录中迁出删除前的最新版的virtual.mk文件即可。
这个文件其实就是以kernel的方式,载入一些模块而已,所以自己写一个也能用。

评论
我也在试着编译openwrt,初学,先试试看。

评论

你好,问一下,翻到这篇帖子,OpenWRT可以使用基于域名的流量转发,这样的意思是我可以路由直接开启VXN,然后流量就可以直接区分了?
这样区分的是网页流量还是包括软件的都是特定流量了?

评论

首先不耻下问用错了
第二分流用mwan3+ipset就可以了

评论

懵逼了····

改掉去

评论

使用ipset即可,比如将特定的域名添加到某个集合,然后指定这个集合的路由策略。

评论

好的,非常感谢··

终于有方向了·晚上实验下 电路 电子 维修 我现在把定影部分拆出来了。想换下滚,因为卡纸。但是我发现灯管挡住了。拆不了。不会拆。论坛里的高手拆解过吗? 评论 认真看,认真瞧。果然有收 电路 电子 维修 求创维42c08RD电路图 评论 电视的图纸很少见 评论 电视的图纸很少见 评论 创维的图纸你要说 版号,不然无能为力 评论 板号5800-p42ALM-0050 168P-P42CLM-01
 ·日本留学生活 求个大阪合租
·日本留学生活 自家房招租求
·日本留学生活 东京地区出9成新lv钱包
·日本育儿教育 孩子从国内过来如何学习日语
·日本育儿教育 明年四月横滨招月嫂
·日本育儿教育 请问咋让娃突破识字关?感谢分享中文共读和学习经验的妈妈
 ·中文新闻 东区明星迈克尔·格列柯,53 岁,将在第一次出生两年后第二次
·中文新闻 《爱情岛》明星卡米拉·瑟洛和杰米·朱维特在透露即将迎来第三

维修经验

CPUcpu-z 1.77版低调发布

日本维修技术更新: New benchmark “submit and compare” feature New clocks dialog reporting all system’s clock speeds in real-time Preliminary support for Intel Kaby Lake AMD Bristol Ridge processors 主要是增加了支持I、A两个新架构的 ...

维修经验

CPU这几天经常开机黑屏,热重启后又正常

日本维修技术这几天经常开机黑屏,热重启后又正常,今天热重启也不管用了。折腾半天总算点亮,显示超频失败,以前出这个画面我是不理它的,直接重启就能正常进系统了,今天不敢托大,因为 ...

维修经验

CPU超频求助!关于华擎H170和6700K

日本维修技术问题见楼主的show贴 https://www.chiphell.com/thread-1634895-1-1.html 这次华擎的H170 Hyper最大的特色应该是自带时钟发生器可以自由超外频 可是楼主好久没有折腾超频了。。。 两图中除了CPU外频 以 ...

维修经验

CPU液态金属会侵蚀cpu核心吗?

日本维修技术前阵子看到有人说,液态金属时间长了会侵蚀cpu铜盖,那么问题来了,这货会不会侵蚀核心呢? 评论 这玩意儿好像只对铝起反应 评论 不是说,cpu的盖子是铜的吗。。。 评论 不会,核 ...

维修经验

CPUm6i究竟支不支持e3 1231v3

日本维修技术官网上看支持列表没写有e3 1231v3,装机帖又有人晒,百度也没个明确答案,那究竟能不能点亮?有在用的chher说一下么 评论 升级最新bios肯定可以支持 评论 我的p67evo官网上也没说支持12 ...

维修经验

CPU华擎 HYPER 妖板 正确玩法

日本维修技术600元的 B150,10相供电,释放洪荒之力 注意必须官网 Beta 区的 BIOS 有 AVX 的 CPU 可能会掉缓存 启动时按 X 键激活 SKY OC,重启后进入 BIOS 160924164727.jpg (95.63 KB, 下载次数: 1) 2016-9-24 17:47 上传 ...

维修经验

CPUE5 2686 V3和i7 6800K如何选择

日本维修技术默认用,不超频,两者功耗是一模一样的 E5 2686 V3:2.0主频,3.5睿频, 18核心36线程 ,45M L3 咸鱼大约2500~3000元 i7 6800K : 3.5主频,3.8睿频 ,6核心12线程 ,盒装3000元 评论 性能应该是26 ...

维修经验

CPUHD530硬解4K能力还是有点弱呀!

日本维修技术播放器用PotPlay 64bit,各种优化后,跑4K @120Hz视频只能到70帧左右的速度,勉强能用! 显示器用的4K的优派VP2780 未标题-1.jpg (211.97 KB, 下载次数: 0) 2016-9-26 21:29 上传 评论 这个估计你没优化 ...

维修经验

CPU6900k 1.25V到4.2体质怎么样

日本维修技术如图,体质怎么样,ring是35,没敢试了,都说ring高了毁硬件 评论 不错的U,但不算雕,上4.4就大雕了,这电压上4.5的目前没见有人发图 评论 谢谢前辈告知 评论 我这个用1.2V超的4.2,R ...

维修经验

CPUI3 6100 华擎B150M pro4超4.5g测试。

日本维修技术看看论坛没多少i3 6100的帖子,就转下自己发的show贴里面的数据,给大家参考下。家里还有当年的神U i3 540 oc 4.5G在给老妈用。 不知道数据上正常吗?有6100的朋友可以告诉下,另外是不有 ...

维修经验

CPU7系u会兼容100系主板吗?

日本维修技术RT,听说要推200系板,100系还能用吗以后。。 评论 兼容的 评论 感谢!以后换u就行了,目前消息200系板会有新的特性吗? 评论 24条PCI-E 3.0通道、支持Intel Optane混合存储技术、十个USB 3 ...

维修经验

CPU有心入5820k了,求教下温度问题

日本维修技术一直徘徊在6700k和5820k之间,6700k现在这德行直接把我推向了5820k啊,从2600k升级上来,三大件都要换,现在唯一疑惑的是IB-E ex这种顶级风冷能不能压住4.5g的5820呢?毕竟刚刚买一个多月。 ...

维修经验

CPU6600&6600K才100的差价

日本维修技术太少了吧。。。 6600.JPG (106.91 KB, 下载次数: 0) 2016-10-1 10:30 上传 评论 毕竟只是i5而已…… 评论 上z170 6600也能超,等于没区别,差价能有100已经不错了 评论 然后又见不超频人士推荐超频 ...