SD 카드를 이용하여 ODROID-X2 보드에 EMMC 부팅하기


1.  "emmc_installer.zip" 파일을 ODROID 사이트에서 받아 압축을 푼다.

2. Win32DiskImager 파일을 이용하여 SD 카드에 "emmc_installer.img" 파일을 write 한다.

--> https://launchpad.net/win32-image-writer  사이트에서 "Win32DiskImager" 파일을 받을 수 있다.

3. ODROID-X2 보드를 SD 부팅모드로 하여 Power on 한다.

--> 자동으로  emmc에 write 됨.

--> 부팅 내용은 첨부파일 참조.

4. emmc write 완료 후 Power off 하고 emmc 부팅모드로 변경 후 Power on

5. End.

emmc_image_write_in_sdcard_bumnux.txt


Ubuntu 13.10 에서 Gingerbread source 빌드할 때 에러나는 부분 수정


1.
frameworks/base/include/utils/KeyedVector.h:193:31: note: declarations in dependent base ‘android::KeyedVector<android::String8, android::wp<android::AssetManager::SharedZip> >’ are not found by unqualified lookup
frameworks/base/include/utils/KeyedVector.h:193:31: note: use ‘this->indexOfKey’ instead
make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libutils_intermediates/AssetManager.o] Error1

Fix:
vim frameworks/base/libs/utils/Android.mk

 57 LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS)
 58 LOCAL_CFLAGS += -fpermissive  //添加此行。


2.
frameworks/base/include/utils/KeyedVector.h:193:31: note: declarations in dependent base ‘android::KeyedVector<android::String8, android::sp<AaptDir> >’ are not found by unqualified lookup
frameworks/base/include/utils/KeyedVector.h:193:31: note: use ‘this->indexOfKey’ instead
make: *** [out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/AaptAssets.o] Error 1

Fix:
vi frameworks/base/tools/aapt/Android.mk

Add '-fpermissive' to line 31:
LOCAL_CFLAGS += -Wno-format-y2k -fpermissive



3.
make: *** [out/host/linux-x86/obj/EXECUTABLES/grxmlcompile_intermediates/grxmlcompile.o] 错误 1
    或者 make: *** [out/host/linux-x86/obj/EXECUTABLES/grxmlcompile_intermediates/grxmlcompile.o] Error 1
     cd external/srec
     wget "https://github.com/CyanogenMod/android_external_srec/commit/4d7ae7b79eda47e489669fbbe1f91ec501d42fb2.diff"
     patch -p1 < 4d7ae7b79eda47e489669fbbe1f91ec501d42fb2.diff
    rm -f 4d7ae7b79eda47e489669fbbe1f91ec501d42fb2.diff
    cd ../..



4.
external/webkit/WebCore/dom/make_names.pl
-my $preprocessor = "/usr/bin/gcc -E -P -x c++";
+my $preprocessor = "/usr/bin/gcc -E -x c++";


5.
build/core/combo/HOST_linux-x86.mk
 60 # Disable new longjmp in glibc 2.11 and later. See bug 2967937.
 61 #HOST_GLOBAL_CFLAGS += -D_FORTIFY_SOURCE=0
 62 HOST_GLOBAL_CFLAGS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0

6.
make: *** [out/host/linux-x86/obj/EXECUTABLES/mksnapshot_intermediates/src/api.o] 오류 1

sudo apt-get install gcc-4.4-multilib g++-4.4-multilib
export PATH=$HOME/bin:$PATH

7.
external/v8/src/globals.h:605:3: error: ‘memcpy’ was not declared in this scope
// append
55: #include <string.h>


8.
external/v8/src/objects.h:2128:60: error: ‘get’ was not declared in this scope
fix:
vi external/v8/Android.mksnapshot.mk
Add '-fpermissive' to line 60
LOCAL_CFLAGS := \
        -Wno-endif-labels \
        -Wno-import \
        -Wno-format \
        -ansi \
        -fno-rtti \
        -DENABLE_DEBUGGER_SUPPORT \
        -DV8_NATIVE_REGEXP -fpermissive


kernel-3.4.39 에서 다음과 같이 에러가 난다면 module.h 파일을 include 시켜라.


error: 'THIS_MODULE' undeclared here (not in a function)


#include <linux/module.h>


Ubuntu13.10의 Virtualbox 에서 USB 인식이 안될때는 아래와 같이


sudo usermod -a -G vboxusers bumnux

(bumnux는 로그인이름)

Ubuntu 13.10 (and derivatives) users: if you're using Skype downloaded from its official website and not from the Ubuntu repositories, chances are the sound in Skype is either distorted or there's no sound at all.

This issue occurs because Ubuntu 13.10 ships with PulseAudio 4.0 and Skype doesn't properly support it yet.

This Skype issue can be fixed in two ways:

A. Install Skype from the Ubuntu 13.10 (Saucy Salamander) repositories, which comes with a fix for this issue. This is the recommended way of installing Skype in Ubuntu since it usually comes with extra fixes that aren't available in the deb downloaded from Skype's website.

Firstly you'll need to enable the "Canonical Partners" repository. To do this, launch "Software & Updates" from System Settings and on the Other Software tab, enable "Canonical Partners":

Canonical partners repository

Then, update the software sources and install Skype:
sudo apt-get update
sudo apt-get install skype

B. If for whatever reason you don't want to install Skype from the Ubuntu repositories, you can apply a fix to the Skype version downloaded from its official website.

To fix the Skype no sound / distorted sound issue in Ubuntu 13.10, run the following command:
sudo sed -i 's/^Exec=.*/Exec=env PULSE_LATENCY_MSEC=30 skype %U/' /usr/share/applications/skype.desktop
The command above replaces "skype" from the Skype desktop file with "env PULSE_LATENCY_MSEC=30 skype", this being a work-around for getting Skype to work with PulseAudio 4.0. 

If you want to launch Skype from a script or add it to Startup Applications, use the following command: "env PULSE_LATENCY_MSEC=30 skype" instead of "skype".


Ubuntu 12.04 에서 kscope를 잘 사용 했었는데 13.10 으로 오면서 kscope 사용하는데 문제가 있다.

Virtualbox를 열어서 windows로 source Insight를 사용하기에 번거로워서 Ubuntu에서 소스분석 툴이 없을까 인터넷을 검색하던 중 source navigator가 있다는 것을 알게 되었다.

그래서 다시 인터넷 검색해서 아래와 같이 설치 방법을 찾고 사용해 보기로 한다.

아래 내용은 다음 블로그를 참조로 하였다.

[퍼옴] http://blog.daum.net/finalyu/17

아래에서 실제로는 4,5번을 제외한 6번까지 실행을 하였으며

3번에서 configure 실행 시에 뒤에 옵션을 달지 않았다.


1. 다음 사이트에서 source navigator의 최신 버젼을 다운로드한다. 

 http://sourcenav.sourceforge.net/

 

2. source navigator 설치를 위해 필요한 컴포넌트들을 설치한다.

 $ apt-get install build-essential autoconf automake libxmu-dev libxt-dev libxt6 libsm-dev libsm6 libice-dev libice6 libxmu-dev

 

3. source navigator 압축을 해제후 설치한다

 $ tar xvzf sourcenav-6.0.tar.gz

 $ cd sourcenav-6.0

 $ ./configure --prefix=/opt/sourcenav

 $ make

 $ make install

 

 4. source navigator의 path를 지정한다.

 $ vi $HOME/.bashrc

 

 - .bashrc -

PATH=$PATH:/opt/sourcenav/bin

 

 5. 지정된 path를 적용한다.

 $ source $HOME/.bashrc

 

6. source navigator을 실행한다.

 $ snavigator &

 

7. 설치후, 실행할 때 다음과 같은 오류가 나올때!!

 Can't find a usable tk.tcl in the following directories: 
/opt/sourcenav/share/tk8.3

/opt/sourcenav/share/tk8.3/tk.tcl: no event type or button # or keysym
no event type or button # or keysym
while executing
"bind Listbox <MouseWheel> {
%W yview scroll [expr {- (%D / 120) * 4}] units
}"
(file "/opt/sourcenav/share/tk8.3/listbox.tcl" line 182)
invoked from within
"source [file join $tk_library listbox.tcl]"
invoked from within
"if {[string compare $tcl_platform(platform) "macintosh"] && \
[string compare {} $tk_library]} {
source [file join $tk_library button.tcl]
so..."
(file "/opt/sourcenav/share/tk8.3/tk.tcl" line 308)
invoked from within
"source /opt/sourcenav/share/tk8.3/tk.tcl"
("uplevel" body line 1)
invoked from within
"uplevel \#0[list source $file]"


This probably means that tk wasn't installed properly.

 

다음과 같은 부분을 주석 처리한다

/opt/sourcenav/share/tk8.3/listbox.tcl 파일 안에 182-184줄

/opt/sourcenav/share/tk8.3/text.tcl 파일 안에 457-459줄

 

아마.. 마우스 휠과 관련된 부분인 것 같다..

http://wiki.javajigi.net/pages/viewpage.action?pageId=153



4d7ae7b79eda47e489669fbbe1f91ec501d42fb2.diff


Ubuntu 13.10(14.04) 에서 android build  시 에러 메세지 수정 포인트


Error 1
make gets killed at some point

Fix: you need more RAM to finish the build.


Error 2

Code:
frameworks/base/include/utils/KeyedVector.h:193:31: note: declarations in dependent base ‘android::KeyedVector<android::String8, android::sp<AaptDir> >’ are not found by unqualified lookup
frameworks/base/include/utils/KeyedVector.h:193:31: note: use ‘this->indexOfKey’ instead
make: *** [out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/AaptAssets.o] Error 1
Fix:
  • $ kwrite frameworks/base/tools/aapt/Android.mk
  • Add '-fpermissive' to line 31:
    • LOCAL_CFLAGS += -Wno-format-y2k -fpermissive


Error 3
Code:
frameworks/base/include/utils/KeyedVector.h:193:31: error: ‘indexOfKey’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
frameworks/base/include/utils/KeyedVector.h:193:31: note: declarations in dependent base ‘android::KeyedVector<android::String8, android::wp<android::AssetManager::SharedZip> >’ are not found by unqualified lookup

frameworks/base/include/utils/KeyedVector.h:193:31: note: use ‘this->indexOfKey’ instead
make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libutils_intermediates/AssetManager.o] Error 1
Fix:
  • $ kwrite frameworks/base/libs/utils/Android.mk
  • Add '-fpermissive' to line 64:
    • LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS) -fpermissive


Error 4
Code:
external/srec/tools/thirdparty/OpenFst/fst/lib/cache.h:136:11: note: use ‘this->SetState’ instead
make: *** [out/host/linux-x86/obj/EXECUTABLES/grxmlcompile_intermediates/grxmlcompile.o] Error 1
Fix:
  • $ cd external/srec
  • $ wget "https://github.com/CyanogenMod/android_external_srec/commit/4d7ae7b79eda47e489669fbbe1f91ec501d42fb2.diff"
  • $ patch -p1 < 4d7ae7b79eda47e489669fbbe1f91ec501d42fb2.diff
  • $ rm -f 4d7ae7b79eda47e489669fbbe1f91ec501d42fb2.diff
  • $ cd ../..


Error 5
Code:
development/tools/emulator/opengl/host/tools/emugen/main.cpp:79:9: error: ‘optind’ was not declared in this scope
development/tools/emulator/opengl/host/tools/emugen/main.cpp:92:45: error: ‘optind’ was not declared in this scope
make: *** [out/host/linux-x86/obj/EXECUTABLES/emugen_intermediates/main.o] Error 1
Fix:
  • $ kwrite development/tools/emulator/opengl/host/tools/emugen/main.cpp
  • Add '#include <getopt.h>' to list of includes:
    • #include <getopt.h>


Error 6
Code:
host C++: liboprofile_pp <= external/oprofile/libpp/arrange_profiles.cpp
In file included from external/oprofile/libpp/arrange_profiles.cpp:24:0:
external/oprofile/libpp/format_output.h:94:22: error: reference ‘counts’ cannot be declared ‘mutable’ [-fpermissive]
make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/liboprofile_pp_intermediates/arrange_profiles.o] Error 1
Fix:
  • $ kwrite external/oprofile/libpp/format_output.h
  • Remove 'mutable' from 'mutable counts_t & counts;' on line 94:
    • counts_t & counts;


Error 7
Code:
development/tools/emulator/opengl/shared/OpenglCodecCommon/GLSharedGroup.cpp:345:65:   required from here

frameworks/base/include/utils/KeyedVector.h:193:31: error: ‘indexOfKey’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
frameworks/base/include/utils/KeyedVector.h:193:31: note: declarations in dependent base ‘android::KeyedVector<unsigned int, ShaderData*>’ are not found by unqualified lookup

frameworks/base/include/utils/KeyedVector.h:193:31: note: use ‘this->indexOfKey’ instead
make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libOpenglCodecCommon_intermediates/GLSharedGroup.o] Error 1
Fix:
  • $ kwrite development/tools/emulator/opengl/Android.mk
  • Add '-fpermissive' to line 25:
    • EMUGL_COMMON_CFLAGS := -DWITH_GLES2 -fpermissive


Error 8
Code:
/usr/bin/ld: note: 'XInitThreads' is defined in DSO /lib/libX11.so.6 so try adding it to the linker command line
/lib/libX11.so.6: could not read symbols: Invalid operation
collect2: error: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/EXECUTABLES/emulator_renderer_intermediates/emulator_renderer] Error 1
Fix:
  • $ kwrite development/tools/emulator/opengl/host/renderer/Android.mk
  • Add new entry 'LOCAL_LDLIBS += -lX11' after line 6 as shown:
    • LOCAL_SRC_FILES := main.cpp
      LOCAL_CFLAGS += -O0 -g
      LOCAL_LDLIBS += -lX11

      #ifeq ($(HOST_OS),windows)
      #LOCAL_LDLIBS += -lws2_32


Error 9
Code:
external/llvm/include/llvm/ADT/PointerUnion.h:56:10: error: enumeral mismatch in conditional expression: ‘llvm::PointerLikeTypeTraits<llvm::PointerUnion<clang::Stmt*, const clang::Type*> >::<anonymous enum>’ vs ‘llvm::PointerLikeTypeTraits<clang::eek:bjCInterfaceDecl*>::<anonymous enum>’ [-Werror]
cc1plus: all warnings being treated as errors
make: *** [out/host/linux-x86/obj/EXECUTABLES/llvm-rs-cc_intermediates/slang_rs.o] Error 1
Fix:
  • $ kwrite frameworks/compile/slang/Android.mk
  • Remove '-Werror' from line 22:
    • local_cflags_for_slang := -Wno-sign-promo -Wall -Wno-unused-parameter


Error 10
Code:
frameworks/base/libs/rs/rsFont.cpp:224:76:   required from here

frameworks/base/include/utils/KeyedVector.h:193:31: error: ‘indexOfKey’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
frameworks/base/include/utils/KeyedVector.h:193:31: note: declarations in dependent base ‘android::KeyedVector<unsigned int, android::renderscript::Font::CachedGlyphInfo*>’ are not found by unqualified lookup

frameworks/base/include/utils/KeyedVector.h:193:31: note: use ‘this->indexOfKey’ instead
make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libRS_intermediates/rsFont.o] Error 1
Fix:
  • $ kwrite frameworks/base/libs/rs/Android.mk
  • Add '-fpermissive' to line 183:
    • LOCAL_CFLAGS += -Werror -Wall -Wno-unused-parameter -Wno-unused-variable -fpermissive


Error 11
Code:
external/mesa3d/src/glsl/linker.cpp:1394:49: error: expected primary-expression before ‘,’ token
......
external/mesa3d/src/glsl/linker.cpp:1734:59: error: ‘offsetof’ was not declared in this scope
make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libMesa_intermediates/src/glsl/linker.o] Error 1
Fix:
  • $ kwrite external/mesa3d/src/glsl/linker.cpp
  • Add '#include <stddef.h>' to list of includes as shown:
    • #include <climits>
      #include <stddef.h>
      #include <pixelflinger2/pixelflinger2_interface.h>


Error 12
Code:
external/gtest/src/../include/gtest/gtest-param-test.h:287:58: note: ‘template<class Container> testing::internal::ParamGenerator<typename Container::value_type> testing::ValuesIn(const Container&)’ declared here, later in the translation unit
make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libgtest_host_intermediates/gtest-all.o] Error 1
Fix 1:
  • $ kwrite external/gtest/src/Android.mk
  • Add '-fpermissive' to lines 52 and 70 (both lines contain same info)
    • LOCAL_CFLAGS += -O0 -fpermissive
Fix 2:
  • $ kwrite external/gtest/include/gtest/internal/gtest-param-util.h
  • Add '#include <stddef.h>' to list of includes as shown:
    • #include <vector>
      #include <stddef.h>
      #include <gtest/internal/gtest-port.h>


Error 13
Code:
frameworks/compile/slang/slang_rs_export_foreach.cpp: In static member function ‘static slang::RSExportForEach* slang::RSExportForEach::Create(slang::RSContext*, const clang::FunctionDecl*)’:
frameworks/compile/slang/slang_rs_export_foreach.cpp:249:23: error: variable ‘ParamName’ set but not used [-Werror=unused-but-set-variable]
cc1plus: all warnings being treated as errors
make: *** [out/host/linux-x86/obj/EXECUTABLES/llvm-rs-cc_intermediates/slang_rs_export_foreach.o] Error 1
Fix:
  • $ kwrite kwrite frameworks/compile/slang/Android.mk
  • change
    • local_cflags_for_slang := -Wno-sign-promo -Wall -Wno-unused-parameter -Werror
  • to
    • local_cflags_for_slang := -Wno-sign-promo -Wall -Wno-unused-parameter


Error 14


Code:
dalvik/vm/native/dalvik_system_Zygote.cpp: In function ‘int setrlimitsFromArray(ArrayObject*)’:
dalvik/vm/native/dalvik_system_Zygote.cpp:199:19: error: aggregate ‘setrlimitsFromArray(ArrayObject*)::rlimit rlim’ has incomplete type and cannot be defined
     struct rlimit rlim;
                   ^
dalvik/vm/native/dalvik_system_Zygote.cpp:222:43: error: ‘setrlimit’ was not declared in this scope
         err = setrlimit(contents[0], &rlim);
                                           ^
make: *** [out/host/linux-x86/obj/SHARED_LIBRARIES/libdvm_intermediates/native/dalvik_system_Zygote.o] Error 1
make: *** Waiting for unfinished jobs....
Fix:
diff --git a/vm/native/dalvik_system_Zygote.cpp b/vm/native/dalvik_system_Zygote.cpp
index 8224656..f4102e8 100644
--- a/vm/native/dalvik_system_Zygote.cpp
+++ b/vm/native/dalvik_system_Zygote.cpp
@@ -19,6 +19,7 @@
  */
 #include "Dalvik.h"
 #include "native/InternalNativePriv.h"
+#include <sys/resource.h>
 
 #include 
 #if (__GNUC__ == 4 && __GNUC_MINOR__ == 7)



Error 15

/usr/include/zlib.h:34:fatal error: zconf.h: No such file or directory

system/core/gpttool/gpttool.c:

make[3]: ***[out/host/linux-x86/obj/EXECUTABLES/gpttool_intermediates/gpttool.o] Error 1

 

Fix.

sudo apt-get install zlib1g-dev

sudo cp  /usr/include/x86_64-linux-gnu/zconf.h  /usr/include/



Error 16

make: *** [out/host/linux-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o] 오류 1


Fix.

vi  build/core/combo/HOST_linux-x86.mk

 56 ## bumnux
 57 #HOST_GLOBAL_CFLAGS += -D_FORTIFY_SOURCE=0
 58 HOST_GLOBAL_CFLAGS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0



Error 17

make: *** [out/host/linux-x86/obj/EXECUTABLES/test-librsloader_intermediates/test-librsloader] 오류 1

Fix.

vi  external/llvm/llvm-host-build.mk

 38 ## bumnux
 39 LOCAL_LDLIBS := -lpthread -ldl



Error 18

make: *** [out/host/linux-x86/obj/EXECUTABLES/llvm-rs-cc_intermediates/slang_rs_context.o] 오류 1

Fix.

 22 ## bumnux
 23 ##local_cflags_for_slang := -Wno-sign-promo -Wall -Wno-unused-parameter -Werror
 24 local_cflags_for_slang := -Wno-sign-promo -Wall -Wno-unused-parameter


Error 19
                 from art/compiler/dex/quick/x86/codegen_x86.h:20,
                 from art/compiler/dex/quick/x86/fp_x86.cc:17:
external/llvm/include/llvm/InitializePasses.h:144:49: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://source.android.com/source/report-bugs.html> for instructions.
make: *** [out/target/product/smdk4x12/obj/SHARED_LIBRARIES/libart-compiler_intermediates/dex/quick/x86/fp_x86.o] 오류 1


Fix.

sudo apt-get install --reinstall gcc gcc-4.6 gcc-4.6-base libgcc1 cpp-4.6



[퍼옴] http://blog.naver.com/nkkh159?Redirect=Log&logNo=202287777


아래 내용은 저의 글이 아닌 위 사이트에서 퍼온 글입니다.

저한테 고맙다는 얘기들 안하셔도 됩니다.


어느날 버추얼박스(이하 버박)를 사용하다가 업뎃이 올라와서 업뎃을 했더니 실행시 "com개체를 만들 수 없습니다('생성할 수 없습니다'였던가?)"에러를 띄우면서 실행이 불가능했다.

아니, 업뎃이 문제가 아니고 ccleaner를 돌리고 난 후 난 에러였나?

여튼 상세정보를 봐보니 [E_NOINTERFACE (0x80004002)] 에러와 에러코드 발생.

'뭐, 별거 아니겠지'하고 생각한 것이 삽질을 만들게 되었다.

 

참고로 컴터는 윈도우7 32비트 최신버전 업뎃상태다.

 

1. [관리자 권한으로 실행] -> 실패

2. 버박 제거 후 재설치 -> 실패

3. 버박 제거 후 재시작 후 재설치 -> 실패

4. 버박 제거 후 ccleaner로 파일&레지스트리 제거 후 재시작 후 재설치 -> 실패

 

이쯤되니 짜증이 몰려온다.

물론 가족컴에서 발생한 일이라 내 컴에서 돌리면 별 상관 없지만 곧 시작할 연말정산 땜시 반드시 해결을 봐야만 했다.

왜냐고?

이전에 연말정산 간소화서비스 이용하려는데 activeX로 '뭔가'를 설치해야만 서비스 이용이 가능하다고 해서 설치했는데 그 '뭔가'가 바로 'nprotect'.

설치했다가 연말정산 간소화서비스 이용하기도 전에 블루스크린을 맛보았다.

윈도우7 넘어간 이후로 처음 접하게 된 블루스크린이다(명불허전 느프로텍트).

그렇기에 버박 내에 윈도우를 설치해서 그 안에서 연말정산 서비스를 이용해야 나중에 윈도우가 꼬여버리더라도 버박내의 가상 운영체제만 날리면 원래 윈도우는 아무 문제없고 가상운영체제는 기존에 백업해놓은 가상운영체제를 불러오기 하면 되는 편리함때문에 사용하게 된다.

참고로 버박 내 가상 윈도우에서도 각종 민원서비스나 연말정산 및 연말정산 프린트, 금융결제(온라인 쇼핑을 위한 카드 결제 등)이 가능하다.

 

여튼 구글신을 통해 무려 일주일을 허비한 결과 해결방법을 드디어 찾게 되었다.

https://www.virtualbox.org/ticket/12087#comment:26

위의 해결법이 바로 그 방법.

즉, [윈도우]+[R]키를 누르면 [실행]이 뜨는데 거기에 regedit 을 입력 후 [확인]을 누르면 [레지스트리 편집기]가 뜨고 거기서 아래의 항목을 찾아가 삭제하면 된다.

삭제하면 되는 키 값들은 아래와 같다.

HKEY_CURRENT_USER\Software\Classes\CLSID\{00020420-0000-0000-C000-000000000046} 부터

HKEY_CURRENT_USER\Software\Classes\CLSID\{00020424-0000-0000-C000-000000000046} 까지.

실제 사용하는 컴퓨터에 따라 저 굵은 글씨체로 되어있는 부분의 숫자가 더 클 수도 있다.

그 범위의 값들을 제거하면 된다.

레지스트리를 만지는 것이기 때문에 혹시나 문제가 생길 수 있으므로 키값들을 백업해둔다.

백업하는 방법은

HKEY_CURRENT_USER\Software\Classes

에서 [CLSID]를 우클릭 한 후 [내보내기]를 하면 된다.


출처 : 초심자용 에린 입문서 블로그 (http://erine.egloos.com/2233135)

$ELEXTECH, Inc  G1800s
$HW Version 1.6
$SW Version 231.000.100
$Startup    4
$TOW: 0
$WK:  1192
$POS: 6378137  0        0
$Baud rate: 9600  System clock: 24.553MHz



$GPGGA,215235.670,3735.0064,N,12701.6746,E,1,03,50.0,0.0,M,19.6,M,0.0,0000*4F
$GPGSA,A,2,10,08,02,,,,,,,,,,50.0,50.0,20.0*0A
$GPGSV,3,1,10,26,78,314,00,29,71,017,00,24,48,156,00,10,44,079,46*79
$GPGSV,3,2,10,21,39,309,32,08,21,046,36,09,16,187,00,02,14,151,35*73
$GPGSV,3,3,10,06,14,296,00,15,06,319,00*7F
$GPRMC,215235.670,A,3735.0064,N,12701.6746,E,0.000000,,060905,,*12
$GPGGA,215236.670,3735.0066,N,12701.6748,E,1,03,50.0,0.0,M,19.6,M,0.0,0000*40
$GPGSA,A,2,10,08,02,,,,,,,,,,50.0,50.0,20.0*0A

..
..
..
$GPGGA,114455.532,3735.0079,N,12701.6446,E,1,03,7.9,48.8,M,19.6,M,0.0,0000*48
$GPGSA,A,2,19,25,15,,,,,,,,,,21.5,7.9,20.0*32
$GPGSV,3,1,10,03,86,244,00,19,51,218,38,16,51,057,00,07,40,048,00*77
$GPGSV,3,2,10,13,34,279,00,23,33,236,00,15,29,076,40,25,25,143,38*71
$GPGSV,3,3,10,21,18,051,,27,12,315,*77
$GPRMC,114455.532,A,3735.0079,N,12701.6446,E,0.000000,121.61,110706,,*0A





1. NMEA Code

GPS에서는 신호가 대략 위와 같은 형식으로 오는데 이걸 NMEA 라고 한다.

NMEA는 The National Marine Elecrtronics Association이라고 하는데,
원래 이 신호가 해양에서의 배의 정확한 위치 확인에 가장 먼저 이용되었나 보다.


그냥 위와 같이 보면 복잡한데,
데이터의 형식은
$로 시작해서 GP로시작하는 NMEA코드이름, 그리고 데이터와 맨 마지막에 *??의
Check Sum그리고 혹은 
로 끝난다.
(, 
은 개행(줄바꿈)을 뜻한다)

/* Modified in 2008-12-09 */
NMEA 0183의 Sentence는 $로 시작해서 *로 끝나며,
그 사이의 모든 글을 XOR 연산하여 *뒤에 체크섬으로 나타낸다.
또한 Sentece뒤에는 <CR><LF>를 붙여서 한 줄로 나타낸다.



Elextech에서 만든 G1800sLP+라는 GPS 모듈에서 나온 GPS정보이며,
UART로 데이터를 전송하고, baud rate는 9600bps (bit per second)라는 것을 알 수 있다.


이 GPS는 총 네가지 종류의 NMEA코드를 출력하는데
$GPGGA,  $GPGSA, $GPGSV, $GPRMC이다.

그리고 뒤의 데이터는 모두 comma ( , )로 구분되어 있다.


2. GPGGA
(Global Positioning System Fix Data)


$GPGGA는 Fix Data라고 하는데, 여기에서 주로 알 수 있는 것은
시간, 위도, 경도, 고도 등이다.

예제 => $GPGGA,114455.532,3735.0079,N,12701.6446,E,1,03,7.9,48.8,M,19.6,M,0.0,0000*48

$GPGGA114455.5323735.0079,N12701.6446,E1037.948.8,M19.6,M0.0,0000*48
시간위도경도계산종류위성수노이즈고도고도2dgps체크섬


$GPGGA,114455.532,3735.0079,N,12701.6446,E,1,03,7.9,48.8,M,19.6,M,0.0,0000*48

114455.532는 시간으로서
Zulu time (그리니치 표준시) 기준으로 11시 44분 55.532초를 뜻한다.


$GPGGA,114455.532,3735.0079,N,12701.6446,E,1,03,7.9,48.8,M,19.6,M,0.0,0000*48

3735.0079는 위도로서
37도 35.0079분을 뜻한다. 60분이 1도니까, 대략 37.5도가 된다. -> 서울
뒤의 N은 북위라는 것을 뜻한다. S라면 남위가 되는 것.
(37˚ 35.0079' = 37.583465˚ = 37˚ 35' 0.474")/* Modified in 2009-03-03 */


$GPGGA,114455.532,3735.0079,N,12701.6446,E,1,03,7.9,48.8,M,19.6,M,0.0,0000*48

12701.6446은 경도로서
127도 1.6446분을 뜻한다. 그러니까, 대략 127도가 된다 -> 서울
뒤에 E는 동경을 뜻하므로, W가 되면 서경이 된다.
(127˚ 1.6446' = 127.02741˚ =  127˚ 1' 38.676")/* Modified in 2009-03-03 */


$GPGGA,114455.532,3735.0079,N,12701.6446,E,1,03,7.9,48.8,M,19.6,M,0.0,0000*48

1은 fix종류를 뜻하는데

GPS는 미국에서 쏘아올린 GPS 위성에서 동시에 쏘아준 신호의 시간차를 이용하여
거리를 계산하는 방법을 쓴다(삼각측량, 불확정성의 원리)
지구의 어디에 있든지 최소한 3개 이상의 GPS신호를 받을 수 있다.

그런데, 이 경우에 상업용 GPS는 오차가 15m정도 생기는데, 이를 보정하는게
dgps라는 것이다. 지상의 특정하고 정확한 곳에 GPS기지국을 설치하고
여기에서도 신호를 쏘아보내는 것이다.

그러면 오차가 5m이내로 줄어들게 된다.

0 이면 invalid한 데이터(못쓰는 데이터) 라는 의미
1 이면 gps 위성신호만으로 계산
2 라면 dgps도 사용하여 계산 등등이다.

/* Modified in 2008-12-09 */
DGPS 기지국을 지상의 특정한 곳에 설치할 수도 있지만,
따로 GPS기기 회사에서 위성을 발사하여 보정하는 경우도 있다.


$GPGGA,114455.532,3735.0079,N,12701.6446,E,1,03,7.9,48.8,M,19.6,M,0.0,0000*48

계산에 사용한 위성의 갯수인데,
최소한 3개 이상의 신호를 받아야 한다.


$GPGGA,114455.532,3735.0079,N,12701.6446,E,1,03,7.9,48.8,M,19.6,M,0.0,0000*48

horizontal dillusion of position이래는데.
무슨 말인지 ~_~)

/* Modified in 2009-01-13 */
위성과의 노이즈에 관련된 자료 라고 하네요


$GPGGA,114455.532,3735.0079,N,12701.6446,E,1,03,7.9,48.8,M,19.6,M,0.0,0000*48

고도 정보인데
M법으로 환산했을때 48.8M라는 것이다. (해수면 기준)

$GPGGA,114455.532,3735.0079,N,12701.6446,E,1,03,7.9,48.8,M,19.6,M,0.0,0000*48

지구를 모델링할때에, 구형으로 모델링할 수도 있고
타원체로 모델링할 수 도 있다.

타원체로 모델링할 경우에, 지표면상에서 정확한 위치를 구하기 위해서
(위도 경도 고도를 x,y,z로 고친다는 뜻)
구형과 타원체가 얼마나 차이가 나는지, 지표면에서 얼마나 높게 있는지
그 정보를 알 필요가 있다 이것은, 위도, 경도에 따라 다른데, 이 높이이다.


$GPGGA,114455.532,3735.0079,N,12701.6446,E,1,03,7.9,48.8,M,19.6,M,0.0,0000*48

dgps를 사용했을 경우 마지막으로 update한 시간과, dgps 기지국의 ID이다.


$GPGGA,114455.532,3735.0079,N,12701.6446,E,1,03,7.9,48.8,M,19.6,M,0.0,0000*
48

check sum이다.



3. GPGSA

사용을 안한다.


4. GPGSV

GPS Satellites in View
계산에 사용한 위성이 아니라, 현재 위치에서 보이는 모든 위성정보이다.


$GPGSV,3,1,10,03,86,244,00,19,51,218,38,16,51,057,00,07,40,048,00*77
$GPGSV,3,2,10,13,34,279,00,23,33,236,00,15,29,076,40,25,25,143,38*71
$GPGSV,3,3,10,21,18,051,,27,12,315,*77

줄이 몇 줄인지 나타낸다.
GPGSV가 총 3줄이 나온다./* Modified in 2009-03-03 */


$GPGSV,3,1,10,03,86,244,00,19,51,218,38,16,51,057,00,07,40,048,00*77
$GPGSV,3,2,10,13,34,279,00,23,33,236,00,15,29,076,40,25,25,143,38*71
$GPGSV,3,3,10,21,18,051,,27,12,315,*77

몇번째 줄인지 나타낸다.
총 3줄의 GPGSV 중 1번째 줄 이다/* Modified in 2009-03-03 */


$GPGSV,3,1,10,03,86,244,00,19,51,218,38,16,51,057,00,07,40,048,00*77
$GPGSV,3,2,10,13,34,279,00,23,33,236,00,15,29,076,40,25,25,143,38*71
$GPGSV,3,3,10,21,18,051,,27,12,315,*77

보이는 위성의 갯수를 나타낸다.
10개의 위성이 보이고 있고 한줄당 4개의 위성정보가 출력된다/* Modified in 2009-03-03 */


$GPGSV,3,1,10,03,86,244,00,19,51,218,38,16,51,057,00,07,40,048,00*77
$GPGSV,3,2,10,13,34,279,00,23,33,236,00,15,29,076,40,25,25,143,38*71
$GPGSV,3,3,10,21,18,051,,27,12,315,*77

03,86,244,00

3번 위성이고,
현재 자신의 위치에서 86도 (degree) elevation
244도 (degree)의 Azimuth
그리고 신호대잡음비 (SNR)은 0 이다.


그렇게 위성 3개가 적히고
*77은 checksum이다.


5. GPRMC
Recommended Minimmum data라고 하는데
추천되는 가장 최소한의 데이터 들이다.

$GPRMC,114455.532,A,3735.0079,N,12701.6446,E,0.000000,121.61,110706,,*0A



$GPRMC,114455.532,A,3735.0079,N,12701.6446,E,0.000000,121.61,110706,,*0A

역시 시간을 의미한다. zulutime 기준으로 11시 44분 55.532초


$GPRMC,114455.532,A,3735.0079,N,12701.6446,E,0.000000,121.61,110706,,*0A

지금 현재 출력되는 값이
쓸 수 있는 값인지 (valid) 아니면 쓰면 안되는 이상한 값인지를 나타내는데
A라면 valid하고 V라면 valid하지 않다.


$GPRMC,114455.532,A,3735.0079,N,12701.6446,E,0.000000,121.61,110706,,*0A


뒤의 위도와 경도는 GPGGA와 동일하다.


$GPRMC,114455.532,A,3735.0079,N,12701.6446,E,0.000000,121.61,110706,,*0A


Speed over ground라고 하는데
knots 단위의 속도이다.

비행기에서는 보통 KIAS라는 속도단위를 쓰고,
배에서는 knots라는 속도단위를 사용한다.
KIAS는 대략 km/h 단위의 1/3이라고 보면된다.

만약 900km/h라면 300KIAS정도 된다.
KIAS는 knots indicator air speed의 약자이다.

/* Modified in 2007-12-19 */
Knot단위계와 km/h단위계의 변환은 대략 1.8을 곱하면 된다.



$GPRMC,114455.532,A,3735.0079,N,12701.6446,E,0.000000,121.61,110706,,*0A

Track Angle in degree true라고 하는데 잘 모르겠다. ~_~)

/* Modified in 2007-12-19 */
진행방향을 정북으로부터 0도부터 359도까지로 표현한 것이다.
121.61 이니까. 동남쪽으로 이동하고 있다.



$GPRMC,114455.532,A,3735.0079,N,12701.6446,E,0.000000,121.61,110706,,*0A

Date이다.
11th, July, 2006. 2006년 7월 11일을 뜻한다.


$GPRMC,114455.532,A,3735.0079,N,12701.6446,E,0.000000,121.61,110706,,*0A


안나오는데 (이 장치가 지원을 안해서..)
원래 북쪽을 0으로 한, magnetic variation,
즉 나침반이다.


*0A

체크섬이다.


- 참조자료 - reference

http://www.nmea.org/ - National Marine Electronics Association
http://www.gpsinformation.org/dale/nmea.htm - GPS Information
http://home.pacific.net.au/~gnb/gps/nmea.html - GPS NMEA reference


Android 어플에서 바이너리 실행하기

어플은 잘 모르지만 국책과제를 하고 있어서 바이너리를 어플에서 어떻게 실행할 수 있을까 고민을 했다.

서비스로 등록해서 실행해 볼까도 해봤는데 어플을 잘 몰라서 구현을 못했었다.

고민을 하다가 구글 아저씨에게 물어보니 "Runtime.getRuntime().exec()를 사용하면 된다는 것이다.

참 쉬운 것을 어렵게 어렵게 알아냈다. @.@...

아래와 같이 사용하면 된다.


import java.io.IOException;


        // bumnux - Starting Superscan
        try{
            Log.v("Running superscan...");       
            Runtime.getRuntime().exec("superscan ra0 scan");
        } catch (IOException e) {
            Log.v("[Error] Running superscan...");       
        }

SVN 주소가 변경된 경우

예전에 PC ip가 변경되면 SVN 받은 소스를 다시 받아야 했다.

그래서 쉽게 주소만 변경할 수 있는지 검색해 보니 아래 같이 하면 된단다..

지금까지 왜 일일이 소스를 다시 받았던가... @.@


svn switch --relocate  OLD_URL  NEW_URL


실예)

svn switch --relocate http://111.222.333.444/svn/ScanWIFI http://555.666.777.888/svn/ScanWIFI

ssh 설정

원하는 사용자만 접속할 수 있도록 변경하기

[펌]  http://hackersnews.org/hn/read.cgi?board=hn_linux&y_number=3012


#  vi /etc/ssh/sshd_config


AllowUsers user1 user2
위 그룹에 속한 유저 중에서도 user1과 user2만 로그인을 하용한다.
물 론 AllowUsers를 별도로 지정하지 않으면 AllowGroups에서 지정한 그룹은 모두 로그인 가능하며 AllowGroups를 지정하지 않고 AllowUsers만 지정하면 그룹에 관계없이 AllowUsers에 지정된 유저만 로그인 가능하다.
(CentOS 5.1과 Fedora Core 6, Ubuntu 12.04 에서는 설정이 없다. 필요하다면 추가해 주면 된다.)


다른 부분도 잘 정리해 놔서....

# PermitRootLogin yes
ssh나 openssh를 사용시 대부분 root로의 직접 로그인을 허용하고 있다. 이러한 경우 무차별 대입법등으로 원격지에서 root로 로그인할 수도 있으므로 root로의 직접 로그인은 가급적 자제하는 것이 좋다.
따라서 일반 유저로 ssh 로그인한 후 su , su - 등을 이용하여 root로 로그인하여야 하는데
굳이 root로의 직접 로그인을 사용하려면 방화벽 등에서 접근통제를 엄격하게 설정하여야 한다.



# PubkeyAuthentication yes
# AuthorizedKeysFile .ssh/authorized_keys

ssh에서 제공하는 인증에는 공개키 인증과 암호 인증법 이렇게 두 가지가 있는데, 공개키 인증을 사용할 것인지에 대해 설정하는 것이다.
공개키 인증 사용시 공개키가 있어야 하므로 더욱 안전하다.
(처음 openssh 설치후 putty로 원격 접속을 시도 했을시 암호화 같은 긴 내용을 보았을 것인데 그것은 암호 인증법이다.)
그리고 인증 접속에 문제가 될 경우 공개키의 내용을 삭제하고 접속하면 다시 물어 본다.
디렉토리 : /etc/ssh



# RhostsRSAAuthentication no
PasswordAuthentication yes
.rhost는 보안상 상당히 위험하므로 사용하지 말아야 한다. 그리고 일반적인 암호 기반의 인증을 사용할 것인지 결정하여야 하는데, 만약 암호기반의 인증을 제공하려면 엄격하게 접근통제를 하여야 할 것이다.


# PermitEmptyPasswords no
암호가 없는 계정에 대해 로그인을 허용할 것인지 지정하는 부분이다. 당연히 no로 지정하는 것이 좋다.
(CentOS 5.1의 경우 주석(#) 처리 되어 있어 암호가 없는 계정은 ssh로 접속이 불가능하다.)


AllowGroups wheel admin
오직 wheel이나 admin 그룹에 속한 유저만 로그인할 수 있도록 허용한다. 이외에 그룹에 속한 유저는 암호를 정확히 입력해도 로그인이 거부된다.
(CentOS 5.1과 Fedora Core 6에서는 설정이 없다. 필요하다면 추가해 주면 된다.)


ListenAddress 0.0.0.0
기본적으로 ListenAddress가 0.0.0.0 으로 되어 있어 인터페이스에 설정된 모든 IP에 대해 리슨(LISTEN)하도록 되어 있다. 만약 여러 IP가 aliasing되어 있다면 꼭 필요한 특정 IP에서만 리슨(LISTEN)하도록 하는 것이 좋다.


Port 875
ssh의 기본 포트는 22번이지만 반드시 22번으로 사용할 필요는 없으므로 임의의 번호를 할당하여 외부에서 접속할 때에는 “ssh hostname –p 975”와 같이 접속하면 된다.
만약 여러 포트로 리슨(LISTEN)하도록 하려면 아래와 같이 설정하면 된다.
Port 22
Port 5002

console로 ftp 접속할 때

ftp [IP] [PORT]
ex) ftp 192.168.2.20 220


passive mode 일 때는 -p

ex) ftp -p 192.168.2.20 220


추어탕
http://m.blog.naver.com/PostView.nhn?blogId=apple9327&logNo=70171723674
서울 종로구 명륜3가 1번지 2-24호

(명륜시장 중간)

- 전화 : 02-741-6458

- 영업시간 : 08:00~15:00 

+ Recent posts