维塔斯科技

 找回密码
 立即注册
查看: 6300|回复: 29
打印 上一主题 下一主题

Hyper-V安装Open-WRT的问题

[复制链接]

该用户从未签到

80

主题

491

帖子

1078

积分

金牌会员

Rank: 6Rank: 6

积分
1078
跳转到指定楼层
楼主
发表于 2016-3-29 20:35:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有人在Hyper-V上安装过Open-WRT吗?我在2012 R2上的Hyper-V上安装Open-WRT,网卡只能用LEGACY的网卡,网卡驱动用的kmod-tulip,发现局域网传输只有1M的样子,有人遇到过类似问题吗?

回复

使用道具 举报

该用户从未签到

62

主题

439

帖子

956

积分

高级会员

Rank: 4

积分
956
沙发
发表于 2016-3-29 20:35:57 | 只看该作者
梅林听风 于 2015-9-17 19:51 编辑

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


回复 支持 反对

使用道具 举报

该用户从未签到

75

主题

468

帖子

1027

积分

金牌会员

Rank: 6Rank: 6

积分
1027
板凳
发表于 2016-3-29 20:35:57 | 只看该作者

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

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

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

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

回复 支持 反对

使用道具 举报

该用户从未签到

51

主题

400

帖子

873

积分

高级会员

Rank: 4

积分
873
地板
发表于 2016-3-29 20:35:58 | 只看该作者

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

回复 支持 反对

使用道具 举报

该用户从未签到

70

主题

513

帖子

1114

积分

金牌会员

Rank: 6Rank: 6

积分
1114
5#
发表于 2016-3-29 20:35:58 | 只看该作者

诶?封杀 虚机吗?

这是什么为什么呢?


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

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

回复 支持 反对

使用道具 举报

该用户从未签到

46

主题

340

帖子

742

积分

高级会员

Rank: 4

积分
742
6#
发表于 2016-3-29 20:35:58 | 只看该作者

是不是用了这个补丁,以下四步就不用做了。
修改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;

回复 支持 反对

使用道具 举报

该用户从未签到

57

主题

431

帖子

939

积分

高级会员

Rank: 4

积分
939
7#
发表于 2016-3-29 20:35:58 | 只看该作者

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

回复 支持 反对

使用道具 举报

该用户从未签到

39

主题

341

帖子

741

积分

高级会员

Rank: 4

积分
741
8#
发表于 2016-3-29 20:35:59 | 只看该作者
附件中是我制作的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


复制代码





回复 支持 反对

使用道具 举报

该用户从未签到

61

主题

433

帖子

943

积分

高级会员

Rank: 4

积分
943
9#
发表于 2016-3-29 20:35:59 | 只看该作者

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

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



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

回复 支持 反对

使用道具 举报

该用户从未签到

56

主题

410

帖子

894

积分

高级会员

Rank: 4

积分
894
10#
发表于 2016-3-29 20:36:00 | 只看该作者

恩, 先收藏了。。

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

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

回复 支持 反对

使用道具 举报

发表回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

    移动客户端:
    关注我们:
  • 手机客户端:
  • 安卓版
  • 扫描二维码下载

Archiver|手机版|邢台网云科技有限公司 ( 冀ICP备16008275号 )

快速回复 返回顶部 返回列表