GNOME을 싫어하는 나는
xubuntu 14.04 를 설치하여
vmware를 설치하려고 하는데
설치는 아주 잘 되는데
실행할 때 컴파일 오류가 뜨는 것이다.
캡쳐를 해두지 않아서 사진은 없는데
Virtual Network Device 가 제대로 설치가 되지 않아 오류가 뜬다.
열심히 구글링을 해 본 결과,
결국 해결을 하였다.
0. 우선,
/usr/lib/vmware/modules/source/ 에 들어가서
vmnet.tar를 일단 백업해둔다.
만약을 대비해서.
1. test.c 파일을 생성하여 아래의 소스를 넣는다.
--- vmnet-only/filter.c 2013-10-18 15:11:55.000000000 -0400
+++ vmnet-only/filter.c 2013-12-21 20:15:15.000000000 -0500
@@ -27,6 +27,7 @@
#include "compat_module.h"
#include <linux/mutex.h>
#include <linux/netdevice.h>
+#include <linux/version.h>
#if COMPAT_LINUX_VERSION_CHECK_LT(3, 2, 0)
# include <linux/module.h>
#else
@@ -203,7 +204,11 @@
#endif
static unsigned int
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 13, 0)
VNetFilterHookFn(unsigned int hooknum, // IN:
+#else
+VNetFilterHookFn(const struct nf_hook_ops *ops, // IN:
+#endif
#ifdef VMW_NFHOOK_USES_SKB
struct sk_buff *skb, // IN:
#else
@@ -252,7 +257,12 @@
/* When the host transmits, hooknum is VMW_NF_INET_POST_ROUTING. */
/* When the host receives, hooknum is VMW_NF_INET_LOCAL_IN. */
- transmit = (hooknum == VMW_NF_INET_POST_ROUTING);
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 13, 0)
+ transmit = (hooknum == VMW_NF_INET_POST_ROUTING);
+#else
+ transmit = (ops->hooknum == VMW_NF_INET_POST_ROUTING);
+#endif
packetHeader = compat_skb_network_header(skb);
ip = (struct iphdr*)packetHeader;
2. 그리고
tar xvf vmnet.tar vmnet-only/filter.c
patch vmnet-only/filter.c < test.c
tar -uvf vmnet.tar vmnet-only/filter.c
를 차례대로 입력한다.
끝이다.
3. 여담
vmware의 소스가 tar로 묶여있으므로
압축을 풀어 filter.c 파일을 패치한 다음에
다시 압축을 하면 된다.
그리고 vmware서비스를 껐다가 다시 실행해보면
이제는 오류가 뜨지 않고 아주 잘 실행이 된다.
4. ps
맨 위의 저 소스는 나도 여러번 고치다가 되었다.
커널버전에 따라 조금씩 다른건가?
여튼 저 위의 소스로 안되면 다른 소스를 구해서 해보길 바란다.
'Studies' 카테고리의 다른 글
webhacking.kr 33번 (0) | 2014.08.08 |
---|---|
공유 라이브러리란? (0) | 2014.08.01 |
ASCII 아스키 코드 표 (0) | 2014.07.26 |
RTL공격 (0) | 2014.07.23 |
vi와 친해지기 (0) | 2014.07.01 |