gooブログはじめました!

写真付きで日記や趣味を書くならgooブログ

VirtualBox on FreeBSD 11 (2)

2013-12-31 22:41:00 | ノンジャンル
先ほどの記事のやり方では、だめで、結局、Config.kmkという
ファイルを書き換えたらうまくいった。以下のpatch-Config.kmk-hyama
を使って、Config.kmkを作り直せばコンパイルは通る用になった。

 # cat patch-Config.kmk-hyama
*** Config.kmk.orig    2013-11-29 03:29:52.000000000 +0900
--- Config.kmk    2013-12-31 21:15:54.000000000 +0900
*************** ifdef VBOX_WITH_CPP_EF
*** 1718,1724 ****
  endif
  
  # Overridable libraries (unix).
! LIB_PTHREAD      ?= pthread
  
  # Xcursor (consider an SDK for this).
  ifeq ($(VBOX_XCURSOR_LIBS),)
--- 1718,1724 ----
  endif
  
  # Overridable libraries (unix).
! LIB_PTHREAD      ?= iconv pthread
  
  # Xcursor (consider an SDK for this).
  ifeq ($(VBOX_XCURSOR_LIBS),)
*************** TEMPLATE_VBOXR0DRV_CFLAGS              =
*** 3260,3275 ****
      $(VBOX_GCC_WARN) -Wpointer-arith -Winline $(VBOX_GCC_Wno-pointer-sign) $(VBOX_GCC_fdiagnostics-show-option) \
      -Wstrict-prototypes -Wmissing-prototypes -Wstrict-prototypes \
      -Wimplicit-function-declaration -Werror-implicit-function-declaration \
!     -O2 -fformat-extensions -ffreestanding -fno-strict-aliasing -fno-common -finline-limit=8000 \
      $(VBOX_GCC_fno-stack-protector) $(VBOX_GCC_R0_OPT) $(VBOX_GCC_R0_FP) \
      -nostdinc -std=c99
! TEMPLATE_VBOXR0DRV_CFLAGS.x86          = -m32 -mno-align-long-strings -mpreferred-stack-boundary=2 -mno-mmx -mno-3dnow -mno-sse -mno-sse2
  TEMPLATE_VBOXR0DRV_CFLAGS.amd64        = -m64 --param inline-unit-growth=100 --param large-function-growth=1000 \
      -fno-omit-frame-pointer -mcmodel=kernel -mno-red-zone -mfpmath=387 -mno-sse -mno-sse2 -mno-mmx \
      -mno-3dnow -msoft-float -fno-asynchronous-unwind-tables -Wundef
  TEMPLATE_VBOXR0DRV_CXXFLAGS            = -fno-exceptions -fno-rtti \
      $(VBOX_GCC_WARN) -Wpointer-arith -Winline \
!     -O2 -fno-format-extensions -fno-strict-aliasing -fno-common -finline-limit=8000 \
      $(VBOX_GCC_fno-stack-protector) $(VBOX_GCC_R0_OPT) $(VBOX_GCC_R0_FP) \
      -nostdinc
  TEMPLATE_VBOXR0DRV_CXXFLAGS.x86        = $(TEMPLATE_VBOXR0DRV_CFLAGS.x86)
--- 3260,3275 ----
      $(VBOX_GCC_WARN) -Wpointer-arith -Winline $(VBOX_GCC_Wno-pointer-sign) $(VBOX_GCC_fdiagnostics-show-option) \
      -Wstrict-prototypes -Wmissing-prototypes -Wstrict-prototypes \
      -Wimplicit-function-declaration -Werror-implicit-function-declaration \
!     -O2 -ffreestanding -fno-strict-aliasing -fno-common -finline-limit=8000 \
      $(VBOX_GCC_fno-stack-protector) $(VBOX_GCC_R0_OPT) $(VBOX_GCC_R0_FP) \
      -nostdinc -std=c99
! TEMPLATE_VBOXR0DRV_CFLAGS.x86          = -m32 -mpreferred-stack-boundary=2 -mno-mmx -mno-3dnow -mno-sse -mno-sse2
  TEMPLATE_VBOXR0DRV_CFLAGS.amd64        = -m64 --param inline-unit-growth=100 --param large-function-growth=1000 \
      -fno-omit-frame-pointer -mcmodel=kernel -mno-red-zone -mfpmath=387 -mno-sse -mno-sse2 -mno-mmx \
      -mno-3dnow -msoft-float -fno-asynchronous-unwind-tables -Wundef
  TEMPLATE_VBOXR0DRV_CXXFLAGS            = -fno-exceptions -fno-rtti \
      $(VBOX_GCC_WARN) -Wpointer-arith -Winline \
!     -O2 -fno-strict-aliasing -fno-common -finline-limit=8000 \
      $(VBOX_GCC_fno-stack-protector) $(VBOX_GCC_R0_OPT) $(VBOX_GCC_R0_FP) \
      -nostdinc
  TEMPLATE_VBOXR0DRV_CXXFLAGS.x86        = $(TEMPLATE_VBOXR0DRV_CFLAGS.x86)
*************** TEMPLATE_VBOXR3EXE_LDFLAGS.solaris     =
*** 3457,3462 ****
--- 3457,3463 ----
  TEMPLATE_VBOXR3EXE_LIBS                = pthread m rt dl
   else ifeq ($(KBUILD_TARGET),l4)
  TEMPLATE_VBOXR3EXE_LIBS                = \
+     /usr/local/lib/libiconv.a \
      $(L4_LIBDIR)/libvboxserver.s.so \
      $(L4_LIBDIR)/libuc++.0.s.so \
      supc++ gcc_eh gcc \
*************** TEMPLATE_VBOXR3EXE_LIBS                =
*** 3464,3470 ****
      $(L4_LIBDIR)/libuc.0.s.so
   else ifeq ($(KBUILD_TARGET),os2)
  TEMPLATE_VBOXR3EXE_TOOL                = GXX3OMF
! TEMPLATE_VBOXR3EXE_LIBS                = socket iconv
   else ifeq ($(KBUILD_TARGET),darwin)
  TEMPLATE_VBOXR3EXE_TOOL                = GXX4MACHO
  TEMPLATE_VBOXR3EXE_LIBS                =
--- 3465,3471 ----
      $(L4_LIBDIR)/libuc.0.s.so
   else ifeq ($(KBUILD_TARGET),os2)
  TEMPLATE_VBOXR3EXE_TOOL                = GXX3OMF
! TEMPLATE_VBOXR3EXE_LIBS                = socket 
   else ifeq ($(KBUILD_TARGET),darwin)
  TEMPLATE_VBOXR3EXE_TOOL                = GXX4MACHO
  TEMPLATE_VBOXR3EXE_LIBS                =
*************** TEMPLATE_VBOXR3EXE_LDFLAGS.darwin.x86  =
*** 3480,3497 ****
    endif
   else if1of ($(KBUILD_TARGET), freebsd netbsd openbsd)
  TEMPLATE_VBOXR3EXE_TOOL                = GXX3
! TEMPLATE_VBOXR3EXE_LIBS                = pthread
  TEMPLATE_VBOXR3EXE_INCS               += \
      /usr/include \
      /usr/X11R6/include \
      /usr/local/include
  TEMPLATE_VBOXR3EXE_LIBPATH            += \
-     /usr/lib \
-     /usr/X11R6/lib \
      /usr/local/lib
   else ifeq ($(KBUILD_TARGET),solaris)
  TEMPLATE_VBOXR3EXE_TOOL                = GXX3PLAIN
! TEMPLATE_VBOXR3EXE_DEFS               += LIBICONV_PLUG _REENTRANT # Avoid the GNU libiconv, for now at least.
  
  TEMPLATE_VBOXR3EXE_LIBS                = rt socket
   else
--- 3481,3496 ----
    endif
   else if1of ($(KBUILD_TARGET), freebsd netbsd openbsd)
  TEMPLATE_VBOXR3EXE_TOOL                = GXX3
! TEMPLATE_VBOXR3EXE_LIBS                = iconv pthread
  TEMPLATE_VBOXR3EXE_INCS               += \
      /usr/include \
      /usr/X11R6/include \
      /usr/local/include
  TEMPLATE_VBOXR3EXE_LIBPATH            += \
      /usr/local/lib
   else ifeq ($(KBUILD_TARGET),solaris)
  TEMPLATE_VBOXR3EXE_TOOL                = GXX3PLAIN
! TEMPLATE_VBOXR3EXE_DEFS               += LIBICONV_PLUG _REENTRANT # Avoid the GNU lib, for now at least.
  
  TEMPLATE_VBOXR3EXE_LIBS                = rt socket
   else
*************** ifeq ($(KBUILD_TARGET),linux)
*** 3670,3676 ****
  # not necessary except USE_LIB_PCAP is defined in SUPR3HardenedMain.cpp
  # TEMPLATE_VBOXR3HARDENEDEXE_LIBS += cap
  endif
! ifn1of ($(KBUILD_TARGET), win os2)
   TEMPLATE_VBOXR3HARDENEDEXE_LDFLAGS       = $(filter-out '$(VBOX_GCC_RPATH_OPT)%,$(TEMPLATE_VBOXR3EXE_LDFLAGS))
   TEMPLATE_VBOXR3HARDENEDEXE_LDFLAGS.linux = $(filter-out $(VBOX_GCC_ORIGIN_OPT),$(TEMPLATE_VBOXR3EXE_LDFLAGS.linux))
  endif
--- 3669,3675 ----
  # not necessary except USE_LIB_PCAP is defined in SUPR3HardenedMain.cpp
  # TEMPLATE_VBOXR3HARDENEDEXE_LIBS += cap
  endif
! ifn1of ($(KBUILD_TARGET), win os2 freebsd)
   TEMPLATE_VBOXR3HARDENEDEXE_LDFLAGS       = $(filter-out '$(VBOX_GCC_RPATH_OPT)%,$(TEMPLATE_VBOXR3EXE_LDFLAGS))
   TEMPLATE_VBOXR3HARDENEDEXE_LDFLAGS.linux = $(filter-out $(VBOX_GCC_ORIGIN_OPT),$(TEMPLATE_VBOXR3EXE_LDFLAGS.linux))
  endif
*************** TEMPLATE_VBOXMAINEXE_LDFLAGS            
*** 3970,3983 ****
  TEMPLATE_VBOXMAINEXE_LIBS                = $(LIB_RUNTIME)
   else if1of ($(KBUILD_TARGET), freebsd netbsd openbsd)
  TEMPLATE_VBOXMAINEXE_TOOL                = GXX3
! TEMPLATE_VBOXMAINEXE_LIBS                = $(LIB_RUNTIME)
  TEMPLATE_VBOXMAINEXE_INCS               += \
      /usr/include \
      /usr/X11R6/include \
      /usr/local/include
  TEMPLATE_VBOXMAINEXE_LIBPATH            += \
-     /usr/lib \
-     /usr/X11R6/lib \
      /usr/local/lib
  else ifeq ($(KBUILD_TARGET),solaris)
  TEMPLATE_VBOXMAINEXE_TOOL                = GXX3PLAIN
--- 3969,3980 ----
  TEMPLATE_VBOXMAINEXE_LIBS                = $(LIB_RUNTIME)
   else if1of ($(KBUILD_TARGET), freebsd netbsd openbsd)
  TEMPLATE_VBOXMAINEXE_TOOL                = GXX3
! TEMPLATE_VBOXMAINEXE_LIBS                = iconv $(LIB_RUNTIME)
  TEMPLATE_VBOXMAINEXE_INCS               += \
      /usr/include \
      /usr/X11R6/include \
      /usr/local/include
  TEMPLATE_VBOXMAINEXE_LIBPATH            += \
      /usr/local/lib
  else ifeq ($(KBUILD_TARGET),solaris)
  TEMPLATE_VBOXMAINEXE_TOOL                = GXX3PLAIN
*************** ifdef VBOX_WITH_QTGUI
*** 4392,4399 ****
      /usr/X11R6/include \
      /usr/local/include
      TEMPLATE_VBOXQT4GUIEXE_LIBPATH += \
-     /usr/lib \
-     /usr/X11R6/lib \
      /usr/local/lib
     endif
     ifeq ($(KBUILD_TARGET),solaris)
--- 4389,4394 ----
*************** TEMPLATE_VBOXBLDPROG_LDFLAGS.sparc64    
*** 4535,4541 ****
  TEMPLATE_VBOXBLDPROG_LIBS                = pthread m rt dl
   else ifeq ($(KBUILD_HOST),os2)
  TEMPLATE_VBOXBLDPROG_TOOL                = GXX3OMF
! TEMPLATE_VBOXBLDPROG_LIBS                = socket iconv
   else ifeq ($(KBUILD_HOST),darwin)
  TEMPLATE_VBOXBLDPROG_TOOL                = GXX4MACHO
    if "$(VBOX_DEF_MACOSX_VERSION_MIN)" == "10.7" || "$(VBOX_DARWIN_HOST_VERSION_MAJOR)" == "7"
--- 4530,4536 ----
  TEMPLATE_VBOXBLDPROG_LIBS                = pthread m rt dl
   else ifeq ($(KBUILD_HOST),os2)
  TEMPLATE_VBOXBLDPROG_TOOL                = GXX3OMF
! TEMPLATE_VBOXBLDPROG_LIBS                = socket 
   else ifeq ($(KBUILD_HOST),darwin)
  TEMPLATE_VBOXBLDPROG_TOOL                = GXX4MACHO
    if "$(VBOX_DEF_MACOSX_VERSION_MIN)" == "10.7" || "$(VBOX_DARWIN_HOST_VERSION_MAJOR)" == "7"
*************** TEMPLATE_VBOXBLDPROG_LDFLAGS.darwin     
*** 4570,4583 ****
  TEMPLATE_VBOXBLDPROG_LIBS                =
   else if1of ($(KBUILD_HOST), freebsd netbsd openbsd)
  TEMPLATE_VBOXBLDPROG_TOOL                = GXX3
! TEMPLATE_VBOXBLDPROG_LIBS                = pthread
  TEMPLATE_VBOXBLDPROG_INCS               += \
      /usr/include \
      /usr/X11R6/include \
      /usr/local/include
  TEMPLATE_VBOXBLDPROG_LIBPATH            += \
-     /usr/lib \
-     /usr/X11R6/lib \
      /usr/local/lib
   else ifeq ($(KBUILD_HOST),solaris)
  TEMPLATE_VBOXBLDPROG_TOOL                = GXX3PLAIN
--- 4565,4576 ----
  TEMPLATE_VBOXBLDPROG_LIBS                =
   else if1of ($(KBUILD_HOST), freebsd netbsd openbsd)
  TEMPLATE_VBOXBLDPROG_TOOL                = GXX3
! TEMPLATE_VBOXBLDPROG_LIBS                = iconv pthread
  TEMPLATE_VBOXBLDPROG_INCS               += \
      /usr/include \
      /usr/X11R6/include \
      /usr/local/include
  TEMPLATE_VBOXBLDPROG_LIBPATH            += \
      /usr/local/lib
   else ifeq ($(KBUILD_HOST),solaris)
  TEMPLATE_VBOXBLDPROG_TOOL                = GXX3PLAIN
*************** TEMPLATE_VBoxAdvBldProg_LIBS    = \
*** 4610,4620 ****
      $(TEMPLATE_VBOXBLDPROG_LIBS)
  TEMPLATE_VBoxAdvBldProg_LIBS.darwin = \
      $(TEMPLATE_VBOXBLDPROG_LIBS) \
!     iconv \
      $(TEMPLATE_VBOXBLDPROG_LIBS.darwin)
  TEMPLATE_VBoxAdvBldProg_LIBS.freebsd = \
      $(TEMPLATE_VBOXBLDPROG_LIBS) \
!     iconv \
      rt \
      $(TEMPLATE_VBOXBLDPROG_LIBS.freebsd)
  TEMPLATE_VBoxAdvBldProg_LIBS.linux = \
--- 4603,4613 ----
      $(TEMPLATE_VBOXBLDPROG_LIBS)
  TEMPLATE_VBoxAdvBldProg_LIBS.darwin = \
      $(TEMPLATE_VBOXBLDPROG_LIBS) \
!      \
      $(TEMPLATE_VBOXBLDPROG_LIBS.darwin)
  TEMPLATE_VBoxAdvBldProg_LIBS.freebsd = \
      $(TEMPLATE_VBOXBLDPROG_LIBS) \
!      \
      rt \
      $(TEMPLATE_VBOXBLDPROG_LIBS.freebsd)
  TEMPLATE_VBoxAdvBldProg_LIBS.linux = \
*************** TEMPLATE_VBOXLNXHOSTR3EXE_CFLAGS.debug  
*** 4673,4679 ****
  TEMPLATE_VBOXLNXHOSTR3EXE_CFLAGS.profile    = $(TEMPLATE_VBOXLNXHOSTR3EXE_CXXFLAGS.profile)
  TEMPLATE_VBOXLNXHOSTR3EXE_CFLAGS.kprofile   = $(TEMPLATE_VBOXLNXHOSTR3EXE_CXXFLAGS.kprofile)
  TEMPLATE_VBOXLNXHOSTR3EXE_CFLAGS            = -g $(VBOX_GCC_pipe) $(VBOX_GCC_PEDANTIC_C)   $(VBOX_GCC_fno-stack-protector)
! TEMPLATE_VBOXLNXHOSTR3EXE_LIBS              = pthread m rt dl
  
  TEMPLATE_VBOXLNXHOSTR3LIB                   = Template for linux host libraries.
  TEMPLATE_VBOXLNXHOSTR3LIB_EXTENDS           = VBOXLNXHOSTR3EXE
--- 4666,4672 ----
  TEMPLATE_VBOXLNXHOSTR3EXE_CFLAGS.profile    = $(TEMPLATE_VBOXLNXHOSTR3EXE_CXXFLAGS.profile)
  TEMPLATE_VBOXLNXHOSTR3EXE_CFLAGS.kprofile   = $(TEMPLATE_VBOXLNXHOSTR3EXE_CXXFLAGS.kprofile)
  TEMPLATE_VBOXLNXHOSTR3EXE_CFLAGS            = -g $(VBOX_GCC_pipe) $(VBOX_GCC_PEDANTIC_C)   $(VBOX_GCC_fno-stack-protector)
! TEMPLATE_VBOXLNXHOSTR3EXE_LIBS              = iconv pthread m rt dl
  
  TEMPLATE_VBOXLNXHOSTR3LIB                   = Template for linux host libraries.
  TEMPLATE_VBOXLNXHOSTR3LIB_EXTENDS           = VBOXLNXHOSTR3EXE
*************** TEMPLATE_VBOXGUESTR3EXE_DEFS.linux := $(
*** 4717,4723 ****
  ifeq ($(KBUILD_TARGET),linux) # As few libs as possible on linux.
   TEMPLATE_VBOXGUESTR3EXE_LIBS     = pthread rt m dl
  else if1of ($(KBUILD_TARGET), freebsd netbsd openbsd)
!  TEMPLATE_VBOXGUESTR3EXE_LIBS     = $(TEMPLATE_VBOXR3EXE_LIBS) iconv
  else ifeq ($(KBUILD_TARGET), solaris)
   TEMPLATE_VBOXGUESTR3EXE_LIBS     = $(TEMPLATE_VBOXR3EXE_LIBS) nsl
  endif
--- 4710,4716 ----
  ifeq ($(KBUILD_TARGET),linux) # As few libs as possible on linux.
   TEMPLATE_VBOXGUESTR3EXE_LIBS     = pthread rt m dl
  else if1of ($(KBUILD_TARGET), freebsd netbsd openbsd)
!  TEMPLATE_VBOXGUESTR3EXE_LIBS     = iconv $(TEMPLATE_VBOXR3EXE_LIBS) 
  else ifeq ($(KBUILD_TARGET), solaris)
   TEMPLATE_VBOXGUESTR3EXE_LIBS     = $(TEMPLATE_VBOXR3EXE_LIBS) nsl
  endif
*************** TEMPLATE_VBOXGUESTR3XORGMOD_LIBS = \
*** 4894,4900 ****
      $(VBOX_LIB_VBGL_R3_SHARED) \
      $(VBOX_LIB_IPRT_GUEST_R3_MINI)
  TEMPLATE_VBOXGUESTR3XORGMOD_LIBS.freebsd += \
!     iconv
  
  
  #
--- 4887,4893 ----
      $(VBOX_LIB_VBGL_R3_SHARED) \
      $(VBOX_LIB_IPRT_GUEST_R3_MINI)
  TEMPLATE_VBOXGUESTR3XORGMOD_LIBS.freebsd += \
!     
  
  
  #


使い方は、以下のように、再度、オリジナルファイルに、patchをあてる。


 # cd /usr/ports/emulators/virtualbox-ose/work/VirtualBox-4.2.20
 # rm Config.kmk
 # mv Config.kmk.orig Config.kmk
 # patch 


VirtualBox on FreeBSD 11

2013-12-31 17:02:00 | ノンジャンル
FreeBSD 11でVirtualBoxをインストールするために、pkg installは、カーネルのバージョンがあわないのか、動かなかった。そこで、portsからコンパイル。

今度は、libiconv_openがないといってscmをリンク時にエラーになる。kBuildのスクリプトを見てもどこに何を指定するのかわからなかったが、kBuildで作成するライブラリのなかに、iconvのライブラリを入れれば解決するのではと思いついたのでやってみた。

結果は、今のところ良好で、buildは進んでいる。やったことは、以下のとおり。
RuntimeBldProg.aに、libiconv.aの中のオブジェクトファイルを追加した。


# cd /usr/ports/emulators/virtualbox-ose/work/VirtualBox-4.2.20/out/freebsd.x86/release/lib
# ls RuntimeBldProg.a
RuntimeBldProg.a
# ar -x /usr/local/lib/libiconv.a
# ls -l *.o
-rw-r--r-- 1 root wheel 1740 12月 31 16:48 relocatable.o
-rw-r--r-- 1 root wheel 2824 12月 31 16:48 localcharset.o
-rw-r--r-- 1 root wheel 1051236 12月 31 16:48 iconv.o
# ar -r RuntimeBldProg.a *o
# ar -t -T RuntimeBldProg.a | tail -3
iconv.o
localcharset.o
relocatable.o
# ar -r VBoxCOM.a iconv.o localcharset.o relocatable.o

結果としては、まだだめ。。。iconvのエラーはなくならない。




FreeBSD 11とPKGNG

2013-12-30 14:08:00 | ノンジャンル

FreeBSD 11のパッケージのレポジトリが、なかったので、パッケージがインストールできなかったのが、ようやくレポジトリができた。Firewall越しにもアクセスもできるようになったようなことが、以下に書いているが、HTTP_PROXYをみて80番をつかうのかどうかはよくわからない。

まずは、FreeBSD 11でも動くようになって何ヨリである。

http://april.fool.jp/blogs/2013/12/%E5%A0%B1%E5%91%8Apkg-1-2-3%E3%81%A7proxy%E8%B6%8A%E3%81%97%E3%81%AE%E3%83%AC%E3%83%9D%E3%82%B8%E3%83%88%E3%83%AA%E6%8E%A5%E7%B6%9A%E3%81%8C%E5%8F%AF%E8%83%BD%E3%81%AB/

FreeBSD 11 & virtualbox

2013-12-01 23:56:00 | ノンジャンル

FreeBSDの11でVirtualBoxを起動しようとしたが、カーネルモジュールの
インストールで、エラーになる。

portsからコンパイルしようとするとエラーになる。

pkg install では、まだ、11の情報がないため、どんなこコマンドもインストールも
できない。

ということで、八方塞がり。