12/31/2013

Android 개발환경 설정 Ubuntu 12.04

1. ANDROID BUILD 개발환경.

현재 ODROID를 위한 기본개발환경구성 

  • Host OS Ubuntu 권장사항 
  1. Android 6.0 (Marshmallow) - AOSP master: Ubuntu 14.04 (Trusty)
  2. Android 2.3.x (Gingerbread) - Android 5.x (Lollipop): Ubuntu 12.04 (Precise)
  3. Android 1.5 (Cupcake) - Android 2.2.x (Froyo): Ubuntu 10.04 (Lucid)

  • Build Toolchain
  1. Android 8.0 and higher support only Clang/LLVM
  2. legacy kernels, GCC 4.9 included in the AOSP master branch (under prebuilts/) may also be used.

  • JDK 권장사항 
  1. Android 7.0 (Nougat) - Android 8.0 (Oreo): Ubuntu - OpenJDK 8, Mac OS - jdk 8u45 or newer
  2. Android 5.x (Lollipop) - Android 6.0 (Marshmallow): Ubuntu - OpenJDK 7, Mac OS - jdk-7u71-macosx-x64.dmg
  3. Android 2.3.x (Gingerbread) - Android 4.4.x (KitKat): Ubuntu - Java JDK 6, Mac OS - Java JDK 6
  4. Android 1.5 (Cupcake) - Android 2.2.x (Froyo): Ubuntu - Java JDK 5

Repo 와 Git 및 Build 환경구성 

  • 개발환경-Key packages
  1. Python 2.6 to 2.7 from python.org
  2. GNU Make 3.81 to 3.82 from gnu.org
  3. Git 1.7 or newer from git-scm.com

  • Make Version 
To avoid build errors, Android 4.0.x (Ice Cream Sandwich) and earlier must revert from make 3.82.

Android SITE의 기본요구사항 확인 
  https://source.android.com/setup/build/requirements

Host에서 USB Device 설정
  https://developer.android.com/studio/run/device#setting-up


1.1 Ubuntu 12.04 LTS 32bit Version 설치 

Android 기본 빌드내용은 아래의 사이트를 참고
Linux에 기본 Android Build 환경과 SDK 및 기타 설정해보자
Ubuntu에 Android 개발환경을 설치해보자. 만약 Virtual Machine을 이용한다면,우선 Virtual Machine 먼저 설정하고, 아래와 같이 ubuntu를 기본으로 설치진행 

  • OS : unbuntu 12.04_LTS
  • Virtual Box 사용.
Virtual Machine을 사용한 Linux를 이용할 경우, 적어도, 16GB RAM 그리고, 30GB 그 이상의 disk 용량을 요구.

Virtual Box 설치 및 Ubuntu 12.04 설치
  https://ahyuo79.blogspot.com/2013/12/virtualbox.html

repo 설치 및 git 설치
  https://ahyuo79.blogspot.com/2014/07/repo.html

Google의 개발환경구성 관련설명
  https://source.android.com/setup/build/initializing

Google의 개발환경구성 관련설정
  https://source.android.com/source/initializing.html#installing-the-jdk

ODROID Download
  https://com.odroid.com/sigong/nf_file_board/nfile_board_view.php?keyword&tag&bid=230


  • 기본 adb 와 fastboot 설치
$ sudo apt-get install android-tools-adb android-tools-fastboot 

  • 설정 Tool Chain 
$ sudo apt-get install gcc-arm-linux-gnueabihf
$ vi ~/.profile
ARCH=arm
CROSS_COMPILE=arm-linux-gnueabihf-

JAVA_HOME=/usr/lib/jvm/jdk1.6.0_35
PATH=$JAVA_HOME/bin:$PATH

  • AOSP Build 시 문제사항 
  https://stackoverflow.com/questions/20235901/aosp-build-error
$ sudo apt-get install libswitch-perl 

  • JDK 관련문제사항 
Copying: out/target/common/obj/APPS/KeyChain_intermediates/emma_out/lib/classes-jarjar.jar
Copying: out/target/common/obj/APPS/Launcher2_intermediates/emma_out/lib/classes-jarjar.jar
make: *** [out/target/common/docs/api-stubs-timestamp] 오류 45

  • JDK 문제 발생시 변경  
$ update-alternatives --config javadoc
$ update-alternatives --config java
$ update-alternatives --config javac
$ update-alternatives --config jar


  • Errors.HIDDEN_SUPERCLASS
아래와 같이 JDK Version 변경 
.... ERROR사항 (stripped of unavailable superclass 에러)  (JDK 6으로 변경)
Install: out/target/product/odroidx2/system/app/Development.apk
Copying: out/target/common/obj/JAVA_LIBRARIES/uiautomator_intermediates/noproguard.classes.jar
target Dex: uiautomator
Install: out/target/product/odroidx2/system/app/PinyinIME.apk
frameworks/base/ethernet/java/android/net/ethernet/EthernetStateMachine.java:72: error 111: Public class android.net.ethernet.EthernetStateMachine stripped of unavailable superclass com.android.internal.util.StateMachine
DroidDoc took 19 sec. to write docs to out/target/common/docs/api-stubs 

  https://com.odroid.com/sigong/nf_board/nboard_view.php?brd_id=odroidaf&bid=1294
  https://com.odroid.com/sigong/nf_file_board/nfile_board_view.php?keyword=&tag=&bid=95

설치된 중복 Package 관리방법
  https://ahyuo79.blogspot.com/2018/02/ubuntu-package-2.html

  • JAVA JDK 관련링크
Java SE Development Kit 6u26
jdk-6u26-linux-x64.bin  (계정이 필요)
  https://www.oracle.com/technetwork/java/javase/downloads/index.html
  https://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase6-419409.html


1.1.  Installing JDK (Java Development Kit) 

ubuntu를 설치를 하고 update를 하면 , 기본적으로 openJDK가 설치가 된다고 하는데 이 openJDK로 빌드를 하면 문제발생하는데, 주로 JDK의 Version 문제이다. 
ODROID Android  Source Version 를 여러 개 같이 빌드하니, 이 문제는 각 버전마다 별도로 각각 관리해야함 

일단 TEST를 위해서 Sun사 JDK와 OpenJDK 둘다 설치해보고 테스트 중이다.
더불어 Oracle JDK도 존재하며, Sun 사는 Oracle사에 인수합병이 되었으니, Sun JDK가 이전 Version , Oracle JDK가 이후 Version일 것 이라고 생각함

본래 JDK에 문제가 없다면 하나만 설치하면된다. 문제가 발생하면 처음 Version을 변경을 해보고, 다른 JDK로 변경을 해보자.

  •  Sun JDK 설치 (실패) 
$ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
$ sudo apt-get update
$ sudo vi /etc/apt/sources.list 
   ## check your list 
$ sudo apt-get install sun-java6-jdk

위의 명령대로 했더니, 설치가 안되어서, 다시 구글링해서 아래와 같이 script version or manual version으로 설치

  •  Sun JDK 설치 (성공) 
$ wget https://raw.github.com/flexiondotorg/oab-java6/master/oab-java.sh
$ chmod +x oab-java.sh
$ sudo ./oab-java.sh
$ sudo apt-get update
$ sudo apt-get install sun-java6-jdk sun-java6-fonts sun-java6-source
$ sudo update-alternatives --config java    // JAVA JDK중 사용자가 직접설정
$ sudo update-alternatives --all            // 모든설정 사용자가 직접설정.
# 체크 모든 JDK , JRE 설정 

  • Oracle JDK 설치 
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update  
sudo apt-get upgrade  
sudo apt-get install oracle-java7-installer        // oracle-7 JDK 설치 

sudo update-java-alternatives -s java-7-oracle     // oracle-java-7로 설정 및 사용

sudo echo oracle-java7-installer shared/accepted-oracle-license-v1-1 select true | sudo /usr/bin/debconf-set-selections                     // 정확히 뭔지 모르겠음 

sudo apt-get install oracle-java7-set-default  // JAVA_HOME and PATH 환경변수 자동설정.
sudo apt-get install oracle-java8-installer
sudo apt-get install oracle-java6-installer    // 각 version 별로 설치

상위 관련내용 
  http://askubuntu.com/questions/21131/how-to-correctly-remove-openjdk-openjre-and-set-sunjdk-sunjre-as-default


Sun사와 Oracle 사의 JDK를 설치, Version 1.6로 확인 JDK는 Ubuntu Terminal에서 설치를 해야한다. (SSH Client 설치할 경우, Error)
     
JDK 관련설명 및 사용법
  https://help.ubuntu.com/community/Java

Android Version ICS와  JDK 권장내용 (ODROID 관련내용, 중요한 내용)
  http://codewalkerster.blogspot.kr/2011/11/android-openjdk-vs-sun-jdk-build.html

  • Open JDK 설치 
$ sudo apt-get update
$ sudo apt-get install openjdk-7-jdk

  • SUN SDK 6 설치확인
각 JDK를 설치 후 Version 확인 

$ java -version
$ javac -version 
Sun JDK 6
$ java -version  //Sun JDK 6 and Oracle 6
java version "1.6.0_45"
Java(TM) SE Runtime Environment (build 1.6.0_45-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode)

OPEN JDK 7 설치확인 
$ java -version  // OpenJDK 설치시
java version "1.7.0_55"
OpenJDK Runtime Environment (IcedTea 2.4.7) (7u55-2.4.7-1ubuntu1~0.12.04.2)
OpenJDK 64-Bit Server VM (build 24.51-b03, mixed mode)

javac 1.7.0_55

이렇게 JDK를 여러개를 설치 한 후 JDK와 JRE를 변경하고 싶다면 update-alternatives를 이용하는데, 이게 애매할때가 있는데,
이런 경우에는 각 설치한 JDK 패키지들을 각자 삭제한후 새로 설치 진행을 하자 
나중에 정리가 필요할 것 같다.


1.2. Ubuntu 12.04의 Package 설치 


$ sudo apt-get install git gnupg flex bison gperf build-essential \
  zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \
  libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \
  libgl1-mesa-dev g++-multilib mingw32 tofrodos \
  python-markdown libxml2-utils xsltproc zlib1g-dev:i386

$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so


1.3. Host 에서 ADB USB Access 허용   

Host 즉  Window에서,  Guest OS인 Linux Server에 usb device 관련설정 한 후에 , Window의 Virtual box에서 USB Filter로 등록하여 사용하자. 

  • adb 사용을 위해 USB Device 설정 
$ sudo vi /etc/udev/rules.d/51-android.rules
    SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666"

$ sudo chmod a+rx /etc/udev/rules.d/51-android.rules
$ sudo service udev restart

아래의 사이트 참고 
  http://developer.android.com/tools/device.html

Fastboot 설치방법 
  https://github.com/red-root/PortingARMLinux/wiki/Fastboot-%EC%84%A4%EC%B9%98-%EB%B0%8F-%EC%82%AC%EC%9A%A9%EB%B2%95


2. How to install Toolchain 

Lite version 만 무료이며, 아래의 링크는 ODROID 사이트에서 가져옴

  • Code Sourcery - Tool Chain Download
  https://sourcery.mentor.com/sgpp/lite/arm/portal/release1294

  • Download 후 설치 
$ sudo chmod a+x arm-2010q1-188-arm-none-eabi.bin
$ sudo dpkg-reconfigure -plow dash
    아니오 선택.

$ ./arm-2010q1-188-arm-none-eabi.bin


설치시 PATH에  cross compiler 설치된 디렉토리 자동으로 추가되며,이를 .bath_profile로 확인.


3. How to install SDK and ECLIPSE



3.1 ECLIPSE

$ sudo apt-get install ecplise

회사 컴퓨터는 위와 같이 설치가 했는데  아래와 같은 에러가 발생하여, 아래와 같이 해결.
java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons:

$ ln -s /usr/lib/jni/libswt-* ~/.swt/lib/linux/x86_64/ 

이상하게, Eclipse와 위에서 설치한 필수 library와 충돌한다.
만약 위의 대로 설치가 되지 않는다면, 아래와 사이트가서 직접 다운로드해서 실행.

  http://www.eclipse.org/downloads/packages/release/indigo/sr2


3.2. ECLIPSE에서 Android SDK 설치

ODROID 메뉴얼과 아래의 메뉴얼을 참조하면 쉽게 할수 있을 것이다.

$ eclipse 실행.
Help->Install New Software -> ADD

ADT(Android Develop Tools) 로
      Name: ADT Plugin
      Location: https://dl-ssl.google.com/android/eclipse/


  • ADB와 FASTBOOT를 사용하기위해서 PATH설정 

$ vi ~/.bash_profile
 PATH=${PATH}:~/android-sdks/platform-tools
$ source ~/.bash_profile

아래사이트 참조
  http://blog.naver.com/PostList.nhn?from=postList&blogId=kazama10&categoryNo=29&currentPage=3


Ref.
  http://source.android.com/source/initializing.html

12/30/2013

ODROID-X2 보드구성 및 관련내용

1. ODROID-X2 보드 기본구성

  • Exynos4412 기반의 1.7GHz ARM Cortex-A9 Quad Core with 2GB memory
  1. Low-cost development platform
  2. 1.7GHz Quad core ARM Cortex-A9 MPCore
  3. 2GB Memory
  4. 6 x High speed USB2.0 Host port
  5. 10/100Mbps Ethernet with RJ-45 LAN Jack
  6. Android 4.x & Ubuntu BSP
  7. Community-driven projects & supports








이외에 ODROID-U2/X/X2/Q가 전부 Exynos 4412를 사용하는데, 자세한 사항을 보면 약간씩 틀리며, CPU Clock과 Memory 부분도 다르다.
그래서 좀 좋은 X2를 구입을 했으며,별도로 아래의 사항들을 더 구입을 했다.


  • 별도구입사항 ( Cable 및 전원사항)
  1. USB-UART Module Kit (상위보드 UART1.8V 에 연결 , CP210x Driver 설치)
  2. HDMI Cable (micro type)
  3. micro USB Cable
  4. Wifi Module 2
  5. 5V2A Adaptor
  6. eMMC Module/eMMC Reader
  7. 8GB SD Card/ SD Card Adapter

  • HW 외부설정  (Jumper 설정)
  1. Bootmode       (eMMC Module or SD Card Slot 선택) 
  2. micro HDMI     (720P or 1080P 선택)

관련자료 제품군 참조
  www.hardkernel.com
  http://odroid.com/dokuwiki/doku.php

1.2 ODROID-X2 USB Device 구성

ODROID-X2에서 USB Device는 두개를 제공하며, 이를 이용하여 Debug 및 통신을 한다.

  1. UART2USB Device  (상위보드의 UART 1.8V에 연결 후 Driver 설치)
  2. DNW 관련 Device   (상위보드의 Micro USB로 이용)

  • UART To USB Driver (CP210x Driver 설치)


  CP210x Driver Download
  http://www.silabs.com/products/mcu/pages/usbtouartbridgevcpdrivers.aspx


2.  ODROID X2 Release Version TEST 

  • ODROID X2 보드 연결사항 
  1. USB-UART 연결  
  2. WIFI USB Dongle 연결 
  3. HDMI 연결 
  4. USB HID 지원기능  (MOUSE / KEYBOARD )

  • 부팅시 LED 동작확인 
  1. RED: 전원인가시 무조건 ON
  2. BLUE: GPC로 GPIO로 동작추측  (부팅 or 동작 중에 자주 켜지므로 확인)
  3. BLUE: GPC로 GPIO로 동작추측
전원을 뽑은 후 RED LED가 꺼질때가지 기다리자.

  • HW 주의사항 및 체크사항  
  1. 부팅이 안될때(상위 LED확인), 전원과 USB-UART 빼고 기다린후 다시 시도   
  2. RESET S/W 3초간 눌러주어야 동작. (RESET 동작실행)
  3. POWER S/W 눌러 POWER OFF 진행
  4. HDMI가 예민해서 그런지, 2번 or 3번 테스트를 진행. 

eMMC의 경우 uboot 영역은 SD Card카드와 달리 PC에서 접근 할수가 없다고 한다.
  https://codewalkerster.blogspot.com/2014/02/how-to-recovery-emmcemmc-50-u-boot-on.html


2.1  How To write Image in Window 

ODROID에서 지원하는 IMAGE는 UBUNTU/ANDROID이며, 아래의 사이트에서 본인 원하는 Image들을 Download 하자

  • ODROID X2 Android Image Download
  https://dn.odroid.com/4412/Android/

  • ODROID X2 Ubuntu Image Download
  https://dn.odroid.com/4412/Linux/
  https://dn.odroid.com/4412/Linux/ubuntu_16.04lts/


$ md5sum ubuntu-14.04.2lts-lubuntu-odroid-x2-20150224.img.xz
f45831ab42a26dc39708d7e91e40296e  ubuntu-14.04.2lts-lubuntu-odroid-x2-20150224.img.xz
// download 후 md5sum file 과 비교  
$ unxz ubuntu-14.04.2lts-lubuntu-odroid-x2-20150224.img.xz 

  1. Image Download 및 압축해제  (반디집이용 )
  2. SD Format 진행 
  3. SD Card에 Image Writing (Etcher or Win32DiskManager 이용) 

  • SD Card 및 Odroid Image Write
  http://com.odroid.com/sigong/nf_board/nboard_view.php?brd_id=notice&bid=2258
  http://odroid.us/mediawiki/index.php?title=Step-by-step_Ubuntu_SD_Card_Setup_--_for_Windows_Users
  https://wiki.odroid.com/troubleshooting/odroid_flashing_tools


2.2  Ubuntu Image 경우 

  • TEST 진행한 Image 
  1. ubuntu-14.04.2lts-lubuntu-odroid-x2-20150224.img (동작안됨)
  2. ubuntu-16.04-mate-odroid-x2-20160920.img (동작확인)

  최신 Image인 경우, Kodi 는 물론 WIFI도 잘동작하며, HDMI동작을 확인


  • Ubuntu Serial
    User: root
    Password: odroid

  • Ubuntu X Server
    User: root
    Password: odroid


2.3  Android Image 경우 

  • TEST 진행한 Image
android-4.4.4_alpha-5.4-sd_installer-odroidx2-20160307.img (동작확인)

처음 동작하면 내부 Image를 write 하고 booting 하므로 시간이 많이 걸림

  1. ODROID Utility가 Superuser 권한을 요청
  2. 키보드는 좌측상단에서 설정가능 (한글미지원) 
  3. Setting 에서 WIFI ON 후 동작확인

  • 주의사항 
주의 HDMI이 연결후 화면이 전체녹색일 경우 다시 외부연결로 시도하면 해결


2.3.1 Gapp 관련사항 

Google Apps로 PlaySotre 및 관련 Google Program을 이용하기 위해서 사용되어지는 Android App이며, 이를 함께 배포시 이는 구글에게 라이센스를 제공해야한다.


  • 최근테스트 ( 2018년)
  1. 4.4.4는 Kitkat이므로 GAppsInstaller_kitkat.apk Download 
  2. ODROID-X2를 전원을 끈후 SD CARD를 컴퓨터에 연결 
  3. DOWNLOAD 디렉토리에 상위 파일 복사.
  4. SD CARD 다시 넣고 BOOT 
  5. Ultra Exploler로 상위 apk를 설치
  6. 설치후 자동 Reboot 
  7. Play Store 등록 

등록은 되지만 설치되는 APP이 현재는 거의 없는 듯 하다.

  • Android Version History
  https://en.wikipedia.org/wiki/Android_version_history

  • GMS(Gapp) Download
  https://dn.odroid.com/GAPPS/
  https://codewalkerster.blogspot.com/2013/11/universal-1-click-gapps-installer-for.html
  http://codewalkerster.blogspot.kr/2013/09/odroid-xu-updatezip.html

  • NAS 사용 
이전에 KODI를 설치하고 ODROID로 NAS를 사용했지만, 팬소리와 열 문제로 셋탑박스와 공유기로 변경을 했다.
  https://www.wsgvet.com/bbs/board.php?bo_table=odroid&wr_id=69


3. 개발환경구성 

이전에는 기억하기로 Android/Ubuntu 지원했던걸로 기억하고 있으며, 최근에 보니 아래와 같이 두개를 다 지원을 해주는 것 같다.
현재 사이트를 다시 가보니, 예전의 링크들은 다 없어지고, 구식이 되어 지원을 안해주는 것 같다.

  • ODROID-X2의 지원 OS 
  1. Android 지원 
  2. Ubuntu 지원

이전에 일반리눅스 사용시에 Uboot / Kernel 이 제공되기 때문에 Filesystem을 구축하여 나의 리눅스를 구축하여 사용했다.

  • 이전 ODROID-BSP 기반으로 했던사항들 
  1. ODROID X2 Android/Ubuntu 기본기능 확인 및 NAS로 이용
  2. ODROID X2 BSP 빌드 및 관련기능확인
  3. Android에서 IPTIME n150ua  WIFI USB Driver Porting하여 동작확인
  4. ODROID X2의 Ubuntu 기반으로 QT 포팅 (Source Download 및 빌드)
  5. ODROID X2의 Uboot/Kernel 과 TI Filesystem으로 최적화하여 Boot 및 QT 포팅
  6. ODROID X2 Lollipop Porting 및 소스분석 (도중 그만둠) 

귀찮아서 블로그에 제대로 정리를 하지 않았더니, 나도 몇년이 지난지금 봐도 잘 모르겠다.
그래서 다시 정리하기로 결정했으며, 6번은 회사일로 중간에 그만두었지만, 소스 분석이 더 중요한 것 같아 남겨야 할 것 같다. 

  • HOST Linux 개발환경 
Host OS를 Ubuntu 12.02 와 그 이전 version을 사용했던걸로 기억을 하고 있다.
그리고, 현재는 시간이 되어서 이것을 정리할 겸해서 다시 Ubuntu 14.04를 사용할 예정이다.
Ubuntu 설치시 꼭 필요한 Package는 다시 정리하자. (필요 없다면 설치하지 말자)


Odroid ToolChain 
이전에는 arm-2010q1을 사용했었는데, 이번에는 다른 GCC도 가능로도 별문제가 되지 않을 것 같다.

  http://www.codesourcery.com/sgpp/lite/arm/portal/release1294
  http://code.google.com/p/acoral-hg/downloads/detail?name=arm-2010q1-188-arm-none-eabi-i686-pc-linux-gnu.tar.bz2&can=2&q=

관련참고사항
  https://com.odroid.com/sigong/nf_board/nboard_view.php?brd_id=odroidx&kind=&bid=4164

Toolchain
  https://com.odroid.com/sigong/nf_board/nboard_view.php?brd_id=odroid-x2&kind=&bid=5171


Ubuntu Image
  https://com.odroid.com/sigong/nf_board/nboard_view.php?brd_id=odroid-x2&kind=&bid=5442
  • Odroid Toolchain (새로생긴사이트)
  https://dn.odroid.com/toolchains/



3.1 BSP Source Download 

이전에 아래의 사이트에서 BSP를 다운받아 사용했지만, 현재 존재하지 않지 않는다.
Android Beta 1.x.x 이런씩 으로 지원을 했지만, 폴더가 다 삭제되고 없으며 마지막 1.9.0만 존재

ANDROID:
  http://dn.odroid.com/Android_Beta_1.8.0/BSP
관련정보
  http://dn.odroid.com/Android_Beta_1.8.0/X/

  • 새로변경된 정보
ODROID 전체폴더구성
  http://dn.odroid.com/

Exynos 4412기반의 Boad 관련정보
  https://dn.odroid.com/4412/

마지막으로 남은 폴더
  https://dn.odroid.com/Android_Beta_1.9.0/

일단 상위에서 제공해주는 Image를 구워서 한번 동작을 해보고, 다시 Uboot / Kernel / Android Build를 정리해가자.


3. Build 관련정보 

ODROID의 Getting Started에서 관련보드 참조
  http://odroid.com/dokuwiki/doku.php

wiki 링크가 변경되어 새로 수정
  https://wiki.odroid.com/start
  https://wiki.odroid.com/old_product/odroid-x_u_q/odroid4412

중요정보
  http://odroid.us/mediawiki/index.php?title=Main_Page
  http://odroid.us/mediawiki/index.php?title=Step-by-step_Ubuntu_SD_Card_Setup_--_for_Windows_Users

XBMC(KODI) 설치 (이전에는 XBMC로 배포)
  https://kodi.wiki/view/ODROID


3.3 회로도 및 메뉴얼 

최근보니, 링크가 거의 깨진것 같으며, 이전에 받았던 메뉴얼을 찾아 볼수가 없으며, 물론 엑시노스의 완전 메뉴얼은 NDA 문제로
ODROID에서도 제공받을 수 없다

회로도 (참고용)
  https://dn.odroid.com/4412/Hardware/ODROID-X_BASE_Rev_06.pdf

Exynos-4412 User Manual 1.0
  http://com.odroid.com/sigong/nf_file_board/nfile_board_view.php?bid=118


12/29/2013

Virtual Box 관련 문제사항정리

1. 기존 VDI 추가 할 경우 UUID 중복문제

  • 에러발생요건
흔히 기존에 한번 사용했던 or 존재하였던 저장소 VDI를 복사 한 다음
같은 Virtual Box의 다른 Virtual Machine에서 이 저장소 VDI를 연결할 경우
Virtual Box는 UUID로 VDI로 구별 하기에 이 중복이 되지 않게 잘 사용하자.

  • 해결방법
  1. UUID를 새로 설정해주면 문제해결이 가능 (강제 처리방안)
  2. VDI 중복을 피하는 것이 가장좋은 해결방안 (기본처리방안)

  • 에러사항 예 
기존의 UUID가 존재했기에, VDI를 등록을 할 수가 없다고 한다.
VDI의 처음 생성 되어 사용되던 PATH가 변경이 되면 이부분이 제대로 동작이 안되는 것 같다.

결과 코드:  E_INVALIDARG (0x80070057)
구성 요소:  VirtualBox
인터페이스: IVirtualBox {fafa4e17-1ee2-4905-a10e-fe7c18bf5554}
호출자 RC:  VBOX_E_OBJECT_NOT_FOUND (0x80BB0001)

  https://support.microsoft.com/ko-kr/kb/237771
  https://forums.virtualbox.org/viewtopic.php?f=6&t=58707


  •  기본처리방법
기본적으로 전체 VirtualBox를 종료를 하고, 다시 시작하면
VirtualBox는 이를 감지해서 연결삭제하고,저장소정보를 삭제하는것이 가장 좋은 방법입니다.

기본적으로 Virtual Box를 전체종료하고 다시 시작시 문제점을 감지합니다.
(검사기능)





  • window 10 에서는 cmd 실행방법 


window key + s  실행 후 , cmd

  •  강제처리방법
UUID를 강제적으로 변경하는 방법
  1. 윈도우 시작키 -> cmd 창 실행
  2. VBoxManage internalcommands 치면 간단한 설명 확인 
  3. VBoxManage internalcommands sethduuid 변경하고자하는 VDI PATH    


C:\Users\JHLEE>  cd C:\Program Files\Oracle\VirtualBox\

C:\Program Files\Oracle\VirtualBox> VBoxManage internalcommands 

Oracle VM VirtualBox Command Line Management Interface Version 5.0.6
(C) 2005-2015 Oracle Corporation
All rights reserved.

Usage: VBoxManage internalcommands  [command arguments]

Commands:

......
  sethduuid filepath [ uuid]
       Assigns a new UUID to the given image file. This way, multiple copies
       of a container can be registered.
......


C:\Program Files\Oracle\VirtualBox> VBoxManage internalcommands sethduuid D:\DEVELS\LINUX\VMINFO\VDI-DISK\DM8127-IPNC.vdi”  

  • Virtual Box Version 4.0.4 일 경우

 VBOXMANAGE internalcommands setvdiuuid “pathtovhdfile”



      http://snoopybox.co.kr/1565
      http://www.groovypost.com/howto/virtualbox-error-uuid-hard-disk/
      http://blog.1day1.org/398
      http://blog.naver.com/PostView.nhn?blogId=iamgomi&logNo=40132608924


2. USB 2.0 관련 문제사항 


2.1  USB 2.0 (ECHI) 미지원 


Virtual Box Site에서 Extension Pack을 설치를 하면 문제가 해결


2.2  USB 오류 문제 (인식에러)

상위와 같이 USB도 인식이 되다가, 갑자기 안되는 경우가 있다.
장치관리자에서 본인의 USB를 반드시 확인하고, 아래를 확인하자.


아래와 같이 USB 인식에러가 발생했을 경우,


  •  USB를 1개 사용했을 경우
머신->설정->USB에서 우측의 맨 위 아이콘을 선택하여 빈값으로 필터를 만들어 추가하여,
새필터를추가 하여, 이 새필터가 자동으로 잡히게 만든다.



  •  USB를 2개 이상일 경우
위 방법은 USB가 여러개 일 경우, 새필터가 우연히 내가 사용하는 USB으로 자동으로 잡혀주면 고맙겠지만,
그건 힘들것 같다, 대신 외부의 하드웨어적으로 연결된 USB Port를 변경해 보면서 테스트를 해보니, 위 문제가 해결이 되었다.

12/28/2013

Virtual Box - Network 구성설정 (Bridged Networking)

1. Virtual Box의 Bridged Networking 모드  

개발하기 가장편하고 좋은 모드로 많이 사용하는 방법이다. 설정에 대한 부분도 어렵지 않아 편하다.


  • VirtualBox 네트워크 설정
  먼저 아래의 설정의 의미부터 파악하고 보자. 

  https://ahyuo.blogspot.com/2013/12/linux-env.html


기본적으로, 아래의 2번과 3번을 많이 사용하고 있다.
4번는 내가 특별한 상황에서만 사용했다.

2. Window의 단일 네트워크 어댑터로 구성 
    가장 많이 사용되는 구조이며, 구성도 간단하고 이해 하기도 쉬운 구조이다.
    기본적인 Window에서 사용되는 물리적인 네트워크 어댑터에 VirtualBox NDIS6 Bridged Networking Driver가 포함이 되어있어 쉽게 구성이 가능하다.

    Window의 물리적인 네트워크 어댑터에 physical driver구성에 filter를 두어 "net filter" driver (bridge) 두어 동작이 된다.
    이것이 window physical driver 에서 data들을 분리하여 가져와서 virtual box driver에 연결하는 것이다.

    2.1 단일 네트워크 어댑터 구성도 

    개발을 한다고 하면, 단일 네트워크 구성은 아래와 같이 구성이 된다.
    무선 AP에는 개발장비가  유/무선 연결이 되며, Linux 서버는 아래와 같이 구성된다.

      
    전체 네트워크 구성 
    IP      : 192.168.1.x 
    NETMASK : 255.255.255.0
    
    
          유/무선 AP (DHCP Server) 
              192.168.1.1
                   ┃
                   ┃ 
                   ┠═══════════════ 개발장비(EVM ETH0 or WIFI)
                   ┃                     192.168.1.50 
                   ┃
                   ┃                            
        *1. Wireless-AC 7260  ━━━━━━━━━━━━━━━━━━  * 2. Bridged Networking 
           (Window의 무선랜 네트워크 Adapter)                          (VirtualBox NDIS6 Bridged Networking Driver)
               192.168.1.127                                                  ┃    
                                                                              ┃
                                                                              ┃
                                                                    * 3. Intel Pro/1000MT DeskTopLan   
                                                                        (Virtual Box 내부 네트워크 어댑터1)  
                                                                          192.168.1.100 (Linux Server)
    


    1. Wireless-AC 7260             : Window의 무선랜 네트워크 어뎁터(Physical Wifi Network Device)
    2. Bridged Networking          : 브리지 어댑터 모드  (Virtual Box 네트워크 설정)  
    3. Intel Pro/1000MT DeskTopLan  : Virtual Box의 내부 Network Adapter
    


    상위그림자료
      https://en.wikipedia.org/wiki/Box-drawing_character

    Bridged Networking 모드에서는 NET Filter(VirtualBox NDIS6 Bridged Networking Driver) 동작하여 실제적으로 Network Device는
    상위 1번과 3번이 종단 Network Device로 동작하게된다.

    상위 경우는 Virtual Box의 어댑터1만을 설정한 것이며, 두개이상의 Virtual Box의 어댑터를 사용할 경우에도,
    Bridge를 통해 같은 AP에 존재하는 네트워크와  쉽게 통신이 가능하다.

    • 사용되는 종단 Network Device IP
    1. 192.168.1.127   -   Wireless-AC 7260                  : 6C-29-95-6D-FD-E9
    2. 192.168.1.100   -   Intel Pro/1000MT DeskTopLan  : 08-00-27-0F-63-43 

    • 외부 AP 설정 
    상위와 같이 설정 한 뒤에 AP에서 DHCP Server를 MAC Address 맞게 설정.




    2.2 Window 네트워크 어댑터의 NET FILTER 확인 

    이 부분은 설정이 아니라 확인사항이니, 알면 넘어가도 좋다.

    • 물리적인 네트워크 어댑터 확인 
    1. 로컬영역 연결->속성 :  유선랜
    2. 무선 네트워크 연결->속성 : 무선랜

    Window의  Physical Network Adapter 내부 Driver들 중 VirtualBox NDIS6 Bridged Networking Driver 사용 중임 확인
    ( Virtual Box를 위한 NET Filter driver 확인) 

    *상위 Driver는 속성에서 사용여부를 설정가능 


    참고자료
       https://www.virtualbox.org/manual/ch06.html   (6.5장에 개념 설명)

    2.3 Virtual Box의 네크워크설정 

    실제 Virtual Box의 네트워크의 구성과 Virtual Box의 네트워크 어뎁터를 설정하여 상위 구성도와 같이 설정을 진행한다.

    • 설정->네트워크->어댑터1 설정
    아래의 같이 본인이 사용할 Window의 물리적인 어댑터를 선택하여 설정
    1. Window의 무선 네트워크 어댑터 (Intel Dual Band Wireless-AC 7260)
    2. Window의 로컬영역 연결 (Realtek PCIe GBE Family Controller)

    나의 경우는 현재 무선 네트워크 어댑터로 설정



    • 상위설정에서 확인사항
    1. 브리지어댑터 설정확인 
    2. 무작위모드: 가상머신에 허용 
    3. 케이블연결됨 체크  ( 체크를 안할 경우 상위 어댑터가 연결이 안됨)


    3 Window의 복합 네트워크 어댑터로 구성  

    상위 단일 네트워크 어댑터 구성과 달리,  두 개의 Window 네트워크 어댑터를 동시에 사용할 필요성이 있을 경우가 되겠다.


    3.1 복합 네크워크 어댑터 구성도 

    상위에서 설명했듯이 두개의 네트워크 어댑터를 동시에 사용할 경우를 말하며, 개발로 가정하면, 무선랜으로는 AP와 통신하고 유선랜으로는 개발장비에 붙힌다고 가정하면 맞을 것 같다.

    상위 2번 단일 네트워크 어댑터 설정과 달리 무선랜에는 AP가 연결된 상태지만, 유선망은 연결이 되지 않았다.
    유선랜과 무선랜을 연결하여 두 개의 디바이스가 통신이 가능하도록 한다.

    Window의 두 개의 네트워크 어댑터를 연결해야하는 상황이면 아래와 같을 것이다.  
      
    이럴 경우 아래와 같이 유선랜 Adapter와 무선랜 Adapter 사이에 Window에서 직접 Bridge Mini Port Adapter를  추가하여 두개  Network를 연결해준다.

      
    전체 네트워크 구성 
    IP      : 192.168.1.x 
    NETMASK : 255.255.255.0
    
    
          유/무선 AP (DHCP Server) 
              192.168.1.1
                   ┃
                   ┃ 
                   ┃
                   ┃ 
            ┏* 1.Mac Bridge Miniport 
            ┃ (Window의 네트워크 브리지 Adapter) 
            ┃
            ┃        
            ┃        ┏  2. Wireless-AC 7260     ━━━━━━━━━━━━━━━━━━  4. Bridged Networking   
            ┃        ┃     (Window의 무선랜 네트워크 Adapter)                           (VirtualBox NDIS6 Bridged Networking Driver)
            ┃        ┃       192.168.1.75                                                    ┃
            ┗━━━━┫                                                                       ┃
                      ┃                                                                5. Intel Pro/1000MT DeskTopLan   
                      ┃                                                                 (Virtual Box 내부 네트워크 어댑터1)  
                      ┃                                                                    192.168.1.100 (Linux Server)
                      ┗  3. Realtek PCIe GBE Family Controller 
                              (Window의 로컬영역 Adapter)
                                192.168.1.65
                                   ┃
                                   ┃
                                   ┗━━━━[ HUB or Direct ] ━━━━━━━━  6. 개발보드 
                                                                                   (EVM-ETH0 )
                                                                                  192.168.1.53 
    


    1. Mac Bridge Miniport : 무선랜과 유선랜사이의 Bridge 구성 (Window 어댑터 설정->공유)
    2. Wireless-AC 7260             : Window의 무선랜 네트워크 Adapter(Physical Wifi Network Device)
    3. Realtek PCIe GBE Family Controller : Window의 로컬영역 Adapter(Physical Wired Network Device)
    4. Bridged Networking          : 브리지 어댑터 모드  (Virtual Box 네트워크 설정)  
    5. Intel Pro/1000MT DeskTopLan  : Virtual Box의 내부 Network Adapter
    


    상위와 같이 설정하면, 개발보드와 Linux Server 통신이 가능하고, 같은 네트워크 구성이므로, 문제 없이 동작이 된다.


    3.2 Window의 네트워크브리지 어댑터 생성 

    아래의 Window의 Network 어댑터 두개를 연결하여 새로운 네트워크 브리지 생성

    1. 로컬영역 연결 
    2. 무선 네트워크 연결 

    • Window의 네트워크 브리지 어댑터 생성
    1. 제어판->네트워크 및 인터넷-> 네트워크 및 공유센터 선택
    2. 좌측의 메뉴의 어댑터 설정 변경 선택
    3. 무선랜과 유선랜 선택후 마우스 우클릭 연결브릿지로 생성 
    4. 네트워크 브리지(Mac Bridge Miniport) 생성 및 동작 확인 






    3.3 Virtual Box의 네트워크 설정 

    실제 Virtual Box의 네트워크의 구성과 Virtual Box의 네트워크 어뎁터를 설정하여 상위 구성도와 같이 설정을 진행한다.

    1. Virtual Box의 설정->네트워크 설정 확인 
    2. 다음에 연결됨에 기존것 대신 Mac Bridge Miniport 변경 


    • 상위설정에서 확인사항
    1. 브리지어댑터 설정확인 
    2. 무작위모드: 가상머신에 허용 
    3. 케이블연결됨 체크  (체크를 안할 경우 상위 어댑터가 연결이 안됨)

    • 유선랜 미사용시
    유선랜 설정을 사용하지 않는다면, 상위의 Virtual Box의 네트워크설정에 다음에 연결됨에 기존의 사용하던 Window 네트워크 어뎁터를 설정하면된다.
    그리고, Window의 새로 생성된 네트워크브리지(Mac Bridge Minport) 삭제하면된다.

    • 주의사항. 
    Virtual Box가 동작 중에 네트워크나, 네트워크 설정을 변경을 하지 않는 것이 좋다.
    (내부에서 에러가 발생한다)



    4. Virtual Box의 Network Adapter 2개 동시사용

    2번의 단일 네트워크 구성과 유사하지만, Virtual box에 Network 어댑터를 하나 더 추가하고 설정하여 Linux Server에서 별도의 NAT를 사용함.


    Virtual box의 Network Adapter를 2개설정

    • A. Virtual Box Network 구성 (다른 Network 구성해결)
    1. Virtual Box의 어댑터1는  Bridge Network로 구성 
    2. Virtual Box의 어댑터2는  Adapter NAT로 구성 

    위 방법으로 네트워크 동작 확인  

    12/27/2013

    WinMerge ( 비교 프로그램)

    사실 개인적으로 beyond compare를 좋아하지만, 무료는 아니이기에, 소스비교프로그램 무료로 찾는다고 한다면,

    WinMerge가 아닐까 싶다 Araxis Merge 혹은 beyond compare는 상용이기에, 이미 익숙해져있지만, 그래도 무료 Tool을 사용한다면
    WinMerge는 무료를 쓸수 있어서 괜찮은 프로그램 인 것 같다.

    Download
      http://winmerge.org/downloads/


    1. 설치후 환경설정.






    2.사용법.

    다른 비교툴과 유사하며, 마우스 우측버튼을 누를경우 비교 메뉴가 나온다.

    12/26/2013

    Virtual Box - Network 구성설정 (NAT)

    1. Virtual Box의 NAT 모드 

    Host(Window) 와 GuestOS(Linux)를 NAT모드로 설정을하게되면 보안적으로는 좋겠지만,개발하는 입장에서는 많은 불편을 감수해야한다.

    NAT(Network Address Translation)으로 Host에 별도의 내부 Network를 구성하여 Guest OS와 통신하기 때문에, Guest OS에서 Host로 접근은 괜찮겠지만,
    Host에서 Guest OS로의 접근이 제한이 되기때문에 이를 해결하기위해서 포트포워딩이 필요하다.


    • VirtualBox 네트워크 설정
      먼저 아래의 설정의 의미부터 파악하고 보자. 

      https://ahyuo.blogspot.com/2013/12/linux-env.html

    • 설정방법 
    VirtualBox->설정->네트워크-> 어댑터1 설정 -> 다음에 연결 :  NAT로 설정



    2. Server Apps 사용할 경우 제약사항 및 설정

    Linux Server로써 사용한다면, 중요한 것은 Host와 Virtual Box간의 통신이며, 현재 NAT모드로 설정이 되어있기 때문에
    Host (Window)에서는 Linux Server로 접근이 제한적이기 때문에, 만약 Linux에서 별도의 Server Application을 사용한다면 위에서 설명했듯이 포트포워딩을 해주자.
    예를들면 SSH Server 사용한다면 Virtual Box에서 포트포워딩으로 SSH Server에 접근이 가능하도록 설정한다.

    2.1 SSH Server 설치


     $ sudo apt-get install openssh-server
     $ vi  /etc/ssh/sshd_config     
    
    ClientAliveInterval 60  # jhlee  for connection  -- option
    ClientAliveCountMax 99999 #jhlee for connection  -- option
                                  
     $ sudo /etc/init.d/ssh restart 

    Ref.
       http://www.ubuntututorials.com/enable-ssh-ubuntu-12-04/


    2.2 Virtual Box의 Network 포트포워딩 설정 

    VirtualBox의 설정->네트워크 에 포트포워딩 설정, 포트 포워딩을 설정전 아래와 같은 정보는 미리 알고 있어야 한다.
    • Guest OS IP: Linux 에서 ifconfig로 IP 정보파악 
    • Host OS IP: cmd 에서 ipconfig로 VirtualBox Host-Only Network의 IP 정보파악 알기

          Guest OS:         10.0.2.15
          Host  OS:         169.254.241.176  ( 192.168.51.1 일 경우가 많다)






    • HOST OS SSH Client 접속

    다양한 SSH 지원 Client 프로그램 이용 (XShell, Security CRT)
    상위 포트포워딩이 설정이 제대로 되었다면, Host에서 직접 SSH Server로 접속해보자.

    • XShell 일 경우
    1. 등록정보->터미널->인코딩   UTF로 설정.         (한글이 깨짐)
    2. 등록정보->모양->색구성표   편집                  (청색이 잘 안보임)

    참고자료
       http://jmnote.com/wiki/VirtualBox_%EB%A6%AC%EB%88%85%EC%8A%A4_SSH_%EC%97%B0%EA%B2%B0_(NAT)

    NFS Portforwarding
      http://blurblah.net/993

    12/25/2013

    Virtual Box - Network 설정 과 Window Network Adapter 이해

    1. Virtual Box의 내부 Network 관련설정 


    Virtual Box에 Network를 다양하게 존재하지만, 다 사용하지 않기에 여기서는 다루지 않고 아래의 관련메뉴얼과 다른사이트를 참조하기 바란다.
    현재 많이 사용하는 Network 설정은 기본 설정인  NAT와 Bridge 설정만을 설명하겠다.
    본인은 Linux를 Server 목적으로 Bridged Networking으로 만 사용한다.


    이유는 아래의 표를 보면 모든기능을 사용가능한 것이 Bridged임을 쉽게 알수있다.
    NAT의 제약사항은 기본으로 알고 있으리라고 생각한다.

    VM ↔ HostVM1 ↔ VM2VM → InternetVM ← Internet
    Host-only++
    Internal+
    Bridged++++
    NAT+Port forwarding
    NAT Network++Port forwarding


    1.1 Virtual Box의 네트워크 설정 

    Virtual Box를 새로구성한 후 아래와 같이 Virtual Box에서 네트워크 관련설정이 가능하다.

      설정->네트워크->어댑터1 설정

    어댑터는 Guest OS에서 Network 관련설정을 요약을 해보면 다음과 같다.
    1. 어댑터의 Network 구성설정 ( Host 와 Guest OS 네트워크 구성설정)
    2. Guest OS Network Device 관련설정 
    3. MAC 주소 및 NAT를 위한 포트포워딩 설정 




    • 다음에 연결됨  (어댑터의 네트워크 구성설정)
    1. Not attached : 연결되지 않음 , 사용안함 
    2. Network Address Translation (NAT) : 일반적인 NAT 모드
    3. NAT Network : 개선된 NAT 모드, 추가적인 명령, VboxManage 이용 
    4. Bridged networking : Virtual box가 이미 사용중인 window adapter 연결하여 brigde로 사용 
    5. Internal networking : 다른종류의 soft based network라고 하는데 잘모르겠음.
    6. Host-only networking : VirtualBox Host-Only Network 이용
    7. Generic networking : 거의사용 안한다고 한다.

    • 어댑터 종류 ( Virtual Box의 Guest OS의 Network Device)
    1. AMD PCNet PCI II (Am79C970A);
    2. AMD PCNet FAST III (Am79C973, the default);
    3. Intel PRO/1000 MT Desktop (82540EM);
    4. Intel PRO/1000 T Server (82543GC);
    5. Intel PRO/1000 MT Server (82545EM);
    6. Paravirtualized network adapter (virtio-net).

    • 무작위모드 (Promiscuous mode)
    무작위모드 (promiscous mode) 주로 스니핑할때 사용되며, Virtual Box의 메뉴얼을 읽어보면 대부분의 무선랜은 이 기능을 지원하지 못한다고 언급하고 있다.
    하지만, 브리지하는 것이 유선으로 연결하는 것이기때문에 , Host 내부에서 사용하는 의미가 있을 것 같다.
    1. 거부                :  기본설정 (무작위 기능을 사용안함)
    2. 가상머신에 허용 :  Host Network 정보는 볼수 없지만, VM사이에서 Network 정보는 볼수 있다.  
    3. 모두 허용         :  모든제한을 제거, Host Network 정보를 볼수있다.
    **상위기능 정리
    1/2/3번을 선택하던 Host에 연결된 Network Device의 Mac broadcast/multicast는 정보는 볼수있다.
    하지만, Guest OS에서 Host의 Network Device의 Packet 정보를 보고 싶다면, 3번을 선택해야한다.

    상위기능을 쉽게 테스트 해보려면,GuestOS에서 Wireshark를 설치하여 동작시켜보면 안다.
    다만 Wireshark의 Interface에서 Promiscuous Mode설정하고 Capture해보고 비교해보면 안다.


    • MAC 주소 
    추후 DHCP를 사용하게된다면 이곳을 직접 설정하여 DHCP Server에 설정된 MAC으로 동일하게 설정이 가능하다.


    • 케이블 연결됨 
    Virtual Box의 Network Adapter와 상위 Window Network Adapter에 연결
    상위와 같이 아래의 두 Adapter를 연결함
    1. Intel PRO/1000 MT Desktop (82540EM)  (가상유선랜)
    2. Intel Dual Band Wireless-AC 7250         (무선랜)

    • 포트포워딩 
    네트워크 구성을 NAT를 사용할 경우, 외부 Network가 내부 Network에 접근이 가능하도록 하는 기능이다.
    네트워크 구성을 브리지어댑터 모드로 구성한다면 사용할 일이 없다.



    1.2 관련용어 정리 및 참고자료 


    • 무작위모드 (Promiscuous mode)
    무작위 모드를 사용하면, 동일한 네트워크에 연결된 다른 Network Device들의 Packet정보를 보는 것이 가능한데 이를 스니핑이라고 한다.
    어떻게 같은 Network에서 다른 Network Device의 Packet 정보를 볼 수 있는가 하면, Ethernet의 물리적 구조를 보면  쉽게 알수 있다.
    기본적으로 Ethernet은  BUS구조이며, 한 Device가 송신하면 모든 Device들이 다 받도록 구성되어있다. 그래서 이전에는 Dummy Hub를 이용하여 Debugging도 하고 그랬지만,
    요즘은 L2스위치, 즉 스위치 Hub가 기본이라 MAC 주소를 파악하여, 해당 Device에게만 받도록 동작하도록 되어있다.

    물론 MAC Broadcast/Multicast는 모든 Device들이 받기 때문에 상위정보와 관계가 없다.



    • 무작위모드 참고자료 와 Wireshark 사용법
      https://en.wikipedia.org/wiki/Promiscuous_mode
      https://wiki.wireshark.org/CaptureSetup/Ethernet


    • 무작위모드 설정방법

    $ ifconfig eth0 promisc 
    $ ifconfig eth0
    eth0      Link encap:Ethernet  HWaddr 08:00:27:0f:63:43  
              inet addr:192.168.1.100  Bcast:192.168.1.255  Mask:255.255.255.0
              inet6 addr: fe80::a00:27ff:fe0f:6343/64 Scope:Link
              UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
              RX packets:164 errors:0 dropped:0 overruns:0 frame:0
              TX packets:171 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:19383 (19.3 KB)  TX bytes:24384 (24.3 KB)
    
    $ sudo ifconfig eth0 -promisc
    $ ifconfig eth0
    eth0      Link encap:Ethernet  HWaddr 08:00:27:0f:63:43  
              inet addr:192.168.1.100  Bcast:192.168.1.255  Mask:255.255.255.0
              inet6 addr: fe80::a00:27ff:fe0f:6343/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:308 errors:0 dropped:0 overruns:0 frame:0
              TX packets:216 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:46911 (46.9 KB)  TX bytes:30378 (30.3 KB)


    • 네트워크 관련 매뉴얼
    6.1/6.2 참고 및 관련기능 참고
    6.5 Bridged Networking 기능
    6.5 Bridged Networking 의 (WLAN의 promiscuous mode 제한)
    6.11. Improving network performance (Promiscuous mode 설명)
      https://www.virtualbox.org/manual/ch06.html


    • 버추얼 박스 네트워크 설정 가이드

      http://solatech.tistory.com/263


    • 버추얼 박스 네트워크 설정 자료

      http://niceit.tistory.com/188


    2. Window(Host)의 네트워크 어댑터 확인 

    제어판->네트워크 및 인터넷->네트워크 상태 및 작업보기 ->어댑터 설정 변경
    나의 경우는 아래와 같이 6개의 어댑터가 존재한다.

    하지만 실제로 거의 사용하는 것은 3번 유선4번 무선 일뿐이다.
    그리고, 2번의 경우 Virtual Box의 네트워크 구성을 Bridged Networking로 구성할 경우 사용할 필요가 없어진다.


    • Window Network Adapters
    1. Bluetooth 네트워크 연결2   (Bluetooth 장치(개인 영역 네트워크) #2)
    2. VirtualBox-Host-Only Network (VirtualBox Host-Only Ethernet Adapter)
    3. 로컬 영역 연결         (Realtek PCIe GBE Family Controller)
    4. 무선 네트워크 연결   ( Intel Dual Band Wireless-AC 7260)
    5. 무선 네트워크 연결2  ( Microsoft Virtual WIFI Miniport Adapter)
    6. 무선 네트워크 연결3  ( Microsoft Virtual WIFI Miniport Adapter #2)


    각 어뎁터의 우측클릭후 속성과 상태 기능을 확인해보자


    • 4번 무선 네트워크 연결->속성
    물리적인 무선랜(WIFI) 어댑터로 이 내부에서 사용되는 Driver들을 확인해보자

    1. Microsoft Networks용 클라이언트: Network Client로 필요 
    2. VirtualBox NDIS6 Bridged Networking Driver : Virtual Box의 브리지어댑터(Bridged Network) 필요.
    3. QoS 및 기타등등 




    • 3번 로컬영역 연결-> 속성
    물리적인 유선랜의 어댑터로 이 내부에 포함된 Driver들을 확인해보자
    1. Microsoft Networks용 클라이언트: Network Client로 필요 
    2. VirtualBox NDIS6 Bridged Networking Driver : Virtual Box의 브리지어댑터(Bridged Network) 필요.
    3. QoS 및 기타등등 




    • 2번 VirtualBox-Host-Only Network -> 상태 -> 자세히 
    아래와 같이 Virtual Box -Host의 IP주소를 확인가능하다.



    2.1 Window의 두 네트워크 어뎁터들 연결  

    아래의 메뉴에서 Ctrl키와 함께 두개의 어뎁터를 선택 후 우측마우스로 연결 브리지 적용하면 새로운 Window 네트워크 어뎁터가 생성이 된다.

    두 네트워크는 브리지로 연결이 되어 통신이 가능하며, 사용 후 필요없다면, 이 새로 생성된 브리지를 제거하여 원상태로 복구가 가능하다.



    네트워크 브리지 (MAC Bridge Miniport) 어댑터 생성확인


    네트워크 브리지 (MAC Bridge Miniport) 어댑터 생성->속성확인



    2.2 Window의 두 네트워크 어뎁터들의 공유 (AP동작) 

    이번에는 Microsoft Virtual WiFi Miniport Adapter을 이용하여 Soft 기반의 AP를 동작시키고, 이를 STA모드로 동작 중이 물리적인 Window WIFI Adapter를 연결하는 것이다.
    한 마디로 나의 Laptop에서 AP와 STA모드로 동시에 동작시킨 후 이를 공유하려고 한다.

    Microsoft Virtual WiFi Miniport Adapter 와 Physical Wifi Adapter의 구성으로 아래와 같은 조합으로 구성된다고 한다.
    • STA adapter.
    • STA and AP adapters. (두 모드를 동시 사용할 예정)
    • STA and VSTA adapters.
    • STA, AP, and VSTA adapters.
    STA: Station adapter로 현재 window physical wifi adapter.
    AP  : Access Point로 Virtual Wifi Miniport Adapter를 이용하여 soft based로 구동
    VSTA: Virtual Station Adapter 인데, 다른 Virtual Wifi Miniport Adapter로 구동하는 것 같다.


    1. Window의 cmd (터미널)을 관리자 권한으로 실행하고, 아래의 명령을 통해 기본정보를 확인하자.

    netsh wlan show settings 
    netsh wlan show drivers



    2. Microsoft Virtual WiFi Miniport를 AP로 설정을 하는 것으로 SSID: AP이름 KEY: Password를 입력하여 설정하자

    netsh wlan set hostednetwork mode=allow ssid=JHlee_Laptop_AP key=asdf12345



    3. 기본설정을 했으니, SoftAP의 동작을 시키고 Microsoft Virtual WiFi Miniport Adapter가 동작하는 확인하자.

    netsh wlan start hostednetwork  



    4. 상위에서 AP로 동작되는 것을 확인했지만, 인터넷이 되지 않아 문제가 발생한다.
    이를 해결하기위해서 아래의 WLAN의 STA과 AP를 공유해서 이 문제를 해결하자
    1. 무선 네트워크 연결   ( Intel Dual Band Wireless-AC 7260)
    2. 무선 네트워크 연결3  ( Microsoft Virtual WIFI Miniport Adapter #2)




    5. 공유가 된후, WLAN이 동작되는 외부 Device(핸드폰)를 이용하여 상위 JHLee_Laptop_AP에 접속하면 인터넷이 동작되는 것을 확인가능하다.
    이로써 나의 Laptop에서 STA/AP모드를 동시에 사용한다.


    6. 원상태로 복구하고 싶다면, 원래대로 공유모드를 제거한 후, 아래명령으로 AP모드를 멈추도록 하면, 원래대로 복구된다.

    netsh wlan stop hostednetwork  




    • netsh command 관련사항 

    netsh wlan start hostednetwork    // WLAN을 AP모드로 동작 시작 
    
    netsh wlan stop hostednetwork     // WLAN을 AP모드로 동작 정지  
    
    netsh wlan set hostednetwork [mode=]allow|disallow        //WLAN을 AP모드 관련 설정 
    
    netsh wlan set hostednetwork [ssid=] [key=] [keyUsage=]persistent|temporary  //WLAN을 AP모드 관련 설정 
    
    netsh wlan refresh hostednetwork [data=] key            //WLAN을 AP모드 리프레시  
    
    netsh wlan show hostednetwork [[setting=]security]      //WLAN을 AP모드 정보 확인 
    
    netsh wlan show settings       //WLAN을 정보 확인 
    
    netsh wlan show drivers        //WLAN Driver 정보확인 


    Window AP모드 관련자료
       https://msdn.microsoft.com/en-us/library/dd815243(VS.85).aspx
       https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/cc755301(v=ws.10)

    STA과 AP모드 동시사용관련자료
       http://www.wikihow.com/Enable-a-Virtual-WiFi-in-Windows

    12/23/2013

    Virtual Box의 저장소(VDI) 관리방법

    1. VDI 기본 관리방법 

    Virtual Box에서 VDI는 Virtual Disk Image로 가상의 Hard Disk Image로 생각을 하면되겠다.

    대부분 사람들이 하나만을 크게 사용하여 OS와 DATA영역을 같이 사용을 한다.
    이렇게 사용을 하면 불편함을 많이 느껴서를 이를 분리하고, 필요할때만 사용하는 것이다.

    본인도 이렇게 사용을 하다보니, 이제 편하게 느껴져 아래와 같이 나누어 사용한다.
    기본 OS용 VDI를 사용하고, 데이타용 VDI를 사용하여 확장하는 방식으로 사용하는 것이다.
    필요할 경우에만 데이타용 VDI를 사용하고 백업하는 것이다.

    기본적 Virtual Box의 저장소->SATA를 아래와 같이 구성을 하고, 개발용 DATA VDI는 본인 결정에 따라,
    설정을 변경하고, 백업하고 별도로 관리를 하는 것이다.

    1. OS용 VDI  설정  (Ubuntu 설치)
    2. 개발용 DATA1 관리용 VDI 설정 
    3. 개발용 DATA2 관리용 VDI 설정 
    4. SD DISK IMAGE 용 VDI 설정

    예를 들면, 본인 가상머신->저장소->SATA, 에 기본 VDI는 리눅스를 설치용사용

    1.1 VDI 기본동적관리방법  
    VDI는 Virtual Box에서 제공하는 가상저장장소이며, 기본적으로 이것을 이용을 한다.
    이것을 사용자가 용도에 맞게 분리해서 사용하면 백업과 관리가 편해질 뿐더러, 
    DATA만 저장될 경우, 이것을 다른 사람에게 전달해줘도 크게 문제가 없다. 

    • 기본관리는 Linux의 /etc/fstab 과 UUID로 관리한다. 
    1. OS용(UBUNTU) VDI는 기본적으로 설치 후 OS관련부분만 기록
    2. DATA VDI는 개발이 진행이 되면, 관련 개발부분을 추가하고 연결하고 /etc/fstab 수정
    3. DATA VDI는 개발이 종료되거나, 쓸모가 없다면 이부분을 연결을 끊고, /etc/fstab 수정   
    4. SD-DISK VDI는 SD BOOT용 Image를 만들기 위해 만든다.  

    결론적으로
    개별 Virtual Machine에서 불필요하다면 각각의 VDI를 동적으로 연결을 하고 제거 하는 것이다.

    1. 기본설치용:  ubuntu 12.01  20G
    2. 확장용:   data 확장용 vdi-1 , vdi-2   

      저의 경우는 아래와 같이 결정을 하여 사용하고 있다.
      기본설치용은 크게 용량이 증가될 이유가 없으며, 속도가 중요하다고 판단이 되기때문이다
      • 기본설치용 VDI : 고정크기 저장소 설정 (가급적 고정, SSD 사용유저는 동적사용)
      • 확장용:      VDI:  동적크기 저장소 결정 (개발용 VDI)

      확장용도 기본적으로 고정크기를 하는 것이 좋으나, 용량문제로 동적크기 설정한다.

      ** 확장용 VDI, 개발용 VDI를 ubuntu 12.01 or ubuntu 14.04 아무곳이나 연결하여 사용한다.

      1.2 DATA VDI  Vs SD-DISK VDI  
      DATA VDI 위에서 언급했듯이 , 개발용도로 사용하며, SD-DISK는 SD Boot를 위해 사용한다.
      1. DATA VDI는 개발하면 해당 SOC의 SDK or RDK을 저장장소며, 가능하면 동적할당으로 만든다. 
      2. SD-DISK VDI는 SOC에서 SD BOOT를 위해 4G (추천) or 8G 고정할당으로 만든다. 


      1.3 SD-DISK VDI 와 SD-DISK VMDK 차이 

      둘다 SOC의 SD BOOT의 Image를 만들기 위해서 사용을 한다. 하지만 만드는 방법이 서로 다른다. 
      VDI는 저장장소이지만, VMDK는 링크로 개념으로 봐야하며,
      Guest OS에서 Host OS의 SD DISK를 직접 접근하기 위해서 VMDK를 사용한다.
      VDI를 이용할 경우, Image를 가지고 와서 Window에서 다시 이 Image를 SD Disk에 Write한다.


      1.4 SD DISK VDI 관리 및 Image 만드는 방법 

      1. SD용 VDI IMAGE (e.g 4G, 8G 16G) 고정or 동적크키로 만든다. ( SD 크기에 따라 ) 
      2. Linux에서 이곳에 접근하여 이곳에 Image를 만든다. 
      3. Image를 Window로 가져와서 Win32DiskImager.exe Program을 이용하여 SD Write 한다.
      가급적 크기를 적게만들어 시간일 만들고, Write하는 시간을 줄이자.
      SD Card 16G사용하더라도, 4G 기준으로 만들고 사용하면 된다.


      • Linux에서 SD Image 법

        http://processors.wiki.ti.com/index.php/Processor_SDK_Linux_create_SD_card_script


      • Download Win32DiskImager 
      사용방법은 간단하며, 아래와 같이 Read와 Write를 이용하여, Backup과 Write를 하자.


      1. Read를 할 경우 SD Image를 Backup 하여 다른 곳에 적용가능 
      2. Write 할 경우 위에서 만든 Image를 적용 

        http://www.npackd.org/p/win32-disk-imager/0.9.5
      • Win32DiskImager 사용하는 예 
        http://processors.wiki.ti.com/index.php/Processor_SDK_Linux_Creating_a_SD_Card_with_Windows


      2. 기본 VDI 추가방법

      위에서 언급했듯이 DATA or SD Image VDI를 추가하는 방법이다.
      이는 소스관리 목적이며, 편의성으로 주로 이용하기 위해서 이다.
      다른목적으로 사용을 해도 상관은 없다.

      •    머신->설정
      1. 저장소->컨트롤러:SATA 선택  우측의 포트개수 수정
      2. 컨트롤러:SATA->하드디스크 추가 
      3. VDI 새로 생성 및 추가 

      주의사항
        1. 기존 VDI를 추가 도중 UUID 오류가 발생할수 있음
           UUID 중복문제 부분참조.

        2. 반드시 우측의 포트개수와 하드디스크 숫자를 맞추어 주시기 바랍니다.
        추가했다가 뺄경우, 이 숫자가 맞지 않는다면 에러가 발생합니다.



         위에서 설명했듯이 하드디스크 추가로 하면

      1. 새디스크 만들기   : 아래로  진행 
      2. 기존디스 선택하기 : 기존에 만들어진  VDI or VMDK 선택 




           새 디스크로 만들기 로 선택 할 경우 아래와 같이 진행



      • 일반적 데이타 VDI는 동적할당 설정
      • SD IMAGE를 만들고자 한다면 고정크기로 만들자 




      • 일반데이타 이미지는  VDI 이름과 SIZE를 설정한다.
      • SD DISK IMAGE를 만들고자 한다면, 8G or 16G 이런식으로 만들자. 




      2.1 SD-DISK Link VMDK 추가  

      Virtual Box는 직접 Host의 Driver Interface를 직접 접근을 할수 없다.
      예를들면, Host의 HDD or SDD or SD Card 및 USB Interface를  
      Virtual Box에서 직접 연결할 수 없기에 VMDK Link 만들어 Host와 Guest OS를 연결을 해주는 것이다.  
      나의 경우는 USB와 SD Card의 접근이 중요했으며, 이를 직접 접근하려고 VMDK를 이용했다. .


      • 사용목적 

      1. Host의 SD Card Reader 와 Guest OS와 연결 
      2. Host의 USB or SSD Drive 및 Interface 와 Guest OS와 연결

         위에서 생성한 Link vmdk를 추가하면
      1. Linux에서 이 Link vmdk를 이용하여 SD Card reader 직접 접근이 가능 
      2. 다른 Drive에직접 Access가 가능해진다.

      이 부분은 필요할 때만 Link를 생성해서 확인하고 사용하는것이 좋으며, 사용할 경우,
      매번 Window에서 현재의 Disk의 연결상태는 USB의 연결상태 때문에 변경이 된다.
      그러므로 반드시 명령어로 wmic diskdrive list brief  로 확인해야한다.
      • SD Card Reader Link VMDK 생성 (반드시 administrator 실행)
      1. 윈도우에서 cmd Command를 실행
      2. SD Disk 를 삽입을 반드시 삽입을 한다. (Plug in 되어야 인식되는 제품이 있음)
      3. wmic diskdrive list brief 이용하여 SD Disk Physical Drive를 알아낸다.
      4. Virtual Box Command로 SD Disk Link vmdk 생성한다. 

      **주의사항-1 
          SD Card Reader는 수시로 \\.\PHYSICALDRIVE1 or 2 로 변경이 될 수 있다.
          왜냐하면 USB Hard가 연결이 될 경우, USB Hard가 먼저 인식이 되어 SD-Card는 2로 설정이 되기 때문이다.
          그러므로, SD-DISK Link VMDK는 사용시에 주의해서 사용해야한다.

      **주의사항-2
          본인 SD Card Reader 가 Hotplug 기능을 지원을 하여, SD Card가 사용 중일때만,
          이 링크가 동작이 되어 VDI 관리자 문제가 발생한다.
          그러므로 이 VMDK는 필요시에만 사용을 하는 것이 좋을 것 같다.





      문제가 발생한다면, 관리자 모드로 실행하자
      • CMD 실행 이용하여  *. VMDK 생성 (필요할때마다 삭제하고, 생성)
      아래와 같이 USB의 특성상 매번 PHYSICALDRIVEx 번호가 변동이 될 것이므로, 필요할때 생성하여, 사용하자. (상위 주의사항 참고)

      C:\Users\JHLEE> wmic diskdrive list brief
      Caption                                    DeviceID            Model
            Partitions  Size
      Samsung SSD 850 PRO 512G SCSI Disk Device  \\.\PHYSICALDRIVE0  Samsung SSD 850 PRO 512G SCSI Disk Device  4           512105932800
      SDHC Card                                  \\.\PHYSICALDRIVE1  SDHC Card      2           15924142080
      
      
      C:\Users\JHLEE> cd C:\Program Files\Oracle\VirtualBox
      
      C:\Program Files\Oracle\VirtualBox> VBoxManage internalcommands createrawvmdk -filename "D:\DEVELS\LINUX\VMINFO\VDI-DISK\sdcard-real.vmdk" -rawdisk "\\.\PHYSICALDRIVE1"
      
      

      • 윈도우 탐색기에서 VMDK 생성확인



      • Virtual Box 연결 (관리자 모드로 다시 실행하자)
      1. 설정->저장소->컨트롤러:SATA  선택 및 우측의 포트갯수 확인 (현재 6개사용)
      2. 하드디스크 SATA 추가 연결 (새로생성된 VMDK 파일추가) 
      3. 최신 Version 부터는 핫플러그 기능제공 선택

      최신버전부터 핫플러그가 지원이 되기에, 리눅스에서도 별다른 설정없이
      자동마운트가 됩니다.




      • 에러사항-1 
      아래와 같이 에러가 발생하는 원인은 일반유저 모드로 VMDK를 생성을 하며,
      접근에 문제가 생긴다.



      저장소->컨트롤러:SATA-> 호스트 I/O 캐시 사용하기를 사용
      위를 설정하면 해결이 된다.
      VERR_ACCESS_DENIED 때문에, 관리자모드로 아무리 해결을 할려고 해도
      해결이 되지 않았다.
      관리자모드와 별관계가 없는거 같다.






      WINDOW-PATH설정
           https://www.java.com/ko/download/help/path.xml

      SD-DISK 설정
           http://www.sandyscott.net/2013/08/14/virtualbox-direct-drive-access/
           https://romaimperator.com/?p=29
           https://www.virtualbox.org/manual/ch09.html#rawdisk       (9.9.1.1)


      2.2 이미 생성된 VDI SIZE 변경   

      VDI의 처음 생성시 동적크기 했을 경우에만 해당되며, 권장을 하지 않아서 자세히 다루지 않고 소개만 하겠다.
      다시한번 언급하겠지만, 권장사항은 아니다.

      VDI 사이즈 조절하는 방법은 동일하다 아래의 Command를 이용한다.


      • VBoxManage Modifyhd         (기존 )
      • VboxManage Modifiymedium (현재)


           http://leechwin.tistory.com/17
           http://blog.daum.net/yangjp1190/6613406


      3. VDI 관련 Linux 환경설정 

      Virtual Box의 Virtual Machine의 저장소가 변경이 되었으니,
      이 변경사항 or 새로운 VDI를 추가 리눅스에서 필요한 환경설정 살펴보겠다.


      **문제사항-기본에 확장된 VDI를 제거할 경우 
      /etc/fstab에 UUID 정보가 존재하여 mount 정보로 인하여, 부팅시 문제가 발생하지만,
      SKIP으로 넘어가고, 추후 이 변경사항을 현재 상황에 맞게 변경을 해주자.

      3.5 참조 

      3.1. 본인환경확인 

      VDI를 추가 하기전에 기존 사용하던 리눅스 환경에서 확인하는 작업이다.
      불필요하다면 생략하자.

      Ubuntu 설치 후 기본용량 확인
                  * 20G 중 13G 사용가능, sda1만 사용
                    (update & upgrade 전혀 안하고, ssh server 만 설치)


      • mount 정보 및 파티션 정보확인  

      $ mount
      /dev/sda1 on / type ext4 (rw,errors=remount-ro)
      proc on /proc type proc (rw,noexec,nosuid,nodev)
      sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
      none on /sys/fs/fuse/connections type fusectl (rw)
      none on /sys/kernel/debug type debugfs (rw)
      none on /sys/kernel/security type securityfs (rw)
      udev on /dev type devtmpfs (rw,mode=0755)
      devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
      tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)
      none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)
      none on /run/shm type tmpfs (rw,nosuid,nodev)
      .......
      
      
      $ df -h
      Filesystem      Size  Used Avail Use% Mounted on
      /dev/sda1        16G  3.1G   13G  21% /
      udev            2.0G  4.0K  2.0G   1% /dev
      tmpfs           792M  788K  791M   1% /run
      none            5.0M     0  5.0M   0% /run/lock
      none            2.0G  152K  2.0G   1% /run/shm
      SHARED          494G  366G  129G  74% /media/sf_SHARED
      
      $ cat /proc/partitions 
      major minor  #blocks  name
      
         8        0   20971520 sda
         8        1   16776192 sda1
         8        2          1 sda2
         8        5    4192256 sda5
         8       16   10485760 sdb
        11        0    1048575 sr0
        11        1    1048575 sr1
      
      $ sudo fdisk -l
      
      Disk /dev/sda: 21.5 GB, 21474836480 bytes
      255 heads, 63 sectors/track, 2610 cylinders, total 41943040 sectors
      Units = sectors of 1 * 512 = 512 bytes
      Sector size (logical/physical): 512 bytes / 512 bytes
      I/O size (minimum/optimal): 512 bytes / 512 bytes
      Disk identifier: 0x00095854
      
         Device Boot      Start         End      Blocks   Id  System
      /dev/sda1   *        2048    33554431    16776192   83  Linux
      /dev/sda2        33556478    41940991     4192257    5  Extended
      /dev/sda5        33556480    41940991     4192256   82  Linux swap / Solaris
      
      

      3.2 fdisk 설정 및 partition 결정

      새로 생성할 VDI가 DATA VDI 즉 개발목적이라면 File System이 필요하고, Partition이 필요하다.
      fdisk로 partition을 설정을 해야하며, file system format을 설정을 해야한다.

      현재 SD-DISK VDI는 TI에서 제공해주는 Script에서 자동으로 Partition을 잡고해주므로
      크게 걱정안해도 된다.

      1. ubuntu 부팅 후 Termianl 실행 or SSH 실행
      2. fdisk로 기본 파티션 설정
      3. cat /proc/partitions 으로 추가된 새로운 VDI 사이즈 확인 

      **주의사항 
          /dev/sdx :  여러 VDI 추가 할 경우 sdx의 이름은 순서대로 a,b,c,d,e 할당됨  
          이 부분은 virtual box의 설정->저장소에서 SATA 포트 번호를 확인 


      $ cat /proc/partitions  // 파티션 확인,두번째 DEV가 파티션이 없는 것을 확인(/dev/sdb) 
         8        0   20971520 sda
         8        1   16776192 sda1
         8        2          1 sda2
         8        5    4192256 sda5
         8       16   10485760 sdb
        11        0    1048575 sr0
        11        1    1048575 sr1
      
      $ sudo fdisk /dev/sdb
      Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
      Building a new DOS disklabel with disk identifier 0x6634dbfd.
      Changes will remain in memory only, until you decide to write them.
      After that, of course, the previous content won't be recoverable.
      
      Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
      
      Command (m for help): m
      Command action
         a   toggle a bootable flag
         b   edit bsd disklabel
         c   toggle the dos compatibility flag
         d   delete a partition
         l   list known partition types
         m   print this menu
         n   add a new partition
         o   create a new empty DOS partition table
         p   print the partition table
         q   quit without saving changes
         s   create a new empty Sun disklabel
         t   change a partition's system id
         u   change display/entry units
         v   verify the partition table
         w   write table to disk and exit
         x   extra functionality (experts only)
      
      Command (m for help): n
      Partition type:
         p   primary (0 primary, 0 extended, 4 free)
         e   extended
      Select (default p):  p 
      Partition number (1-4, default 1):  1  
      First sector (2048-20971519, default 2048): 
      Using default value 2048
      Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): 
      Using default value 20971519
      
      Command (m for help): p
      
      Disk /dev/sdb: 10.7 GB, 10737418240 bytes
      255 heads, 63 sectors/track, 1305 cylinders, total 20971520 sectors
      Units = sectors of 1 * 512 = 512 bytes
      Sector size (logical/physical): 512 bytes / 512 bytes
      I/O size (minimum/optimal): 512 bytes / 512 bytes
      Disk identifier: 0x6634dbfd
      
         Device Boot      Start         End      Blocks   Id  System
      /dev/sdb1            2048    20971519    10484736   83  Linux
      
      Command (m for help): w
      The partition table has been altered!
      
      Calling ioctl() to re-read partition table.
      Syncing disks.
      
      

      3.3 File system Format 

      위에서 fdisk를 이용하여 partition 을 만들었고, 1st partition에 ext4를 적용합니다.

      $ sudo mkfs.ext4 /dev/sdb1 
      mke2fs 1.42 (29-Nov-2011)
      Filesystem label=
      OS type: Linux
      Block size=4096 (log=2)
      Fragment size=4096 (log=2)
      Stride=0 blocks, Stripe width=0 blocks
      655360 inodes, 2621184 blocks
      131059 blocks (5.00%) reserved for the super user
      First data block=0
      Maximum filesystem blocks=2684354560
      80 block groups
      32768 blocks per group, 32768 fragments per group
      8192 inodes per group
      Superblock backups stored on blocks: 
       32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
      
      Allocating group tables: done                            
      Writing inode tables: done                            
      Creating journal (32768 blocks): done
      Writing superblocks and filesystem accounting information: done 
      



      3.4  Auto Mount

      만약 위처럼 했다면 문제 없이 /dev/sdb1를 인식하여, ubuntu가 자동으로 아래와 같이 자동으로 mount 한다.
      만약 문제가 있다면 수동으로 mount를 설정하자.
      아래의 b771bdc7-e7f7-454b-a48a-df598833169d  VID의 UUID 정보이다.

      $ mount
      ......
      SHARED on /media/sf_SHARED type vboxsf (gid=999,rw)
      /dev/sdb1 on /media/jhlee/b771bdc7-e7f7-454b-a48a-df598833169d type ext4 (rw,nosuid,nodev,uhelper=udisks2)
      





      $ mkdir Works
      $ cd Works
      $ ln -s /media/jhlee/b771bdc7-e7f7-454b-a48a-df598833169d AM335x
      


      Reboot를 하게된다면, 인식을 잘못하는 경우가 발생한다.
      그래서, 아래와 같이 직접 Manual로 관리하기로 했다.


      3.5 Manual Auto Mount 설정 (fstab) 

      manual로 uuid 정보를 얻어 본인이 원하는 장소에 매번 mount를 설정이 가능하다.

      //아래와 같이 mount test 를 해보고 해보자. 
      
      $sudo mount /dev/sdb1   ~/work
      

      • /dev/disk/by-uuid에서 uuid 정보를 얻기
      Linux는 vdi를 추가할 때마다 disk를 sda, b, c 형식으로 증가되며,
      partion을 증가시킬때마다 sda1, sda2 씩 증가가 된다.
       
      예를 들면 sda는 첫번째이며, sdb일 경우는 두번째 vdi를 의미한다.

      $ ls -l /dev/disk/by-uuid/
      or 
      $  sudo blkid
      
      합계 0
      lrwxrwxrwx 1 root root 10  6월 30 14:14 16f0e1a8-5fe1-4d77-ad2b-52d3e27dcf75 -> ../../sda5
      lrwxrwxrwx 1 root root 10  6월 30 14:14 86a6d6e3-c9cd-4eff-bb0e-0e944cd0b31f -> ../../sdb1
      lrwxrwxrwx 1 root root 10  6월 30 14:14 b8bed244-c794-449b-97eb-434d6456ee85 -> ../../sda1
      
      
      

      1. UUID를 알아내는법은 위의 방법
      2. 파일->가상미디어관리자->하드디스크 방법 (Version 4.x는 안됨)

      • /etc/fstab 관련설정 
          options :  errors=remount-ro 변경사용중
                      ( default 사용하면 booting 중 문제발생)
          dump   :  사용안함
          pass     :  fsck 무결성 check   1    


      $ sudo vi /etc/fstab
      
      #
      # [file system="" ]   [ mount point=""]    [ type ]      [options]       [dump]   [pass]
      
      
      UUID=b8bed244-c794-449b-97eb-434d6456ee85 /                  ext4    errors=remount-ro 0       1
      
      
      ## 
      ## 새로 mount할 곳 ,뒤에 옵션 현재는 동일하게 사용 중, errors=remount-ro 0       1 
      ##    
      
      #AM437x 
      #UUID=35e74ae8-80c1-4832-bff6-674b4a93d6c2 /home/jhlee/am437x      ext4    errors=remount-ro     0       1
      
      
      ##DM8127                                                     
      UUID=86a6d6e3-c9cd-4eff-bb0e-0e944cd0b31f /home/jhlee/work   ext4    errors=remount-ro     0       1
      
      

      /etc/fstab 설정관련내용
           http://jikime.tistory.com/448
      • 아래 명령어로 TEST를 해보고 확인해보자


      $ sudo mount -a 
      $ mount     // 현재 마운트 된 디렉토리 확인 
      $ df -h      //  disk 용량 확인 
      


      3.6 File system 권한변경 

      기본으로 root 권한을 가지고 있으므로, user 권한으로 사용하기가 불편합니다.
      그래서 아래와 같이 사용할 directory 전체의 권한을 변경을 해줍니다.

      $sudo chown -R jhlee:jhlee work
      



      4. VDI 관리예제

      아래는 현재 제가 사용하고있는 방식이며 불필요하면 제거하고 빼는 방식을 사용합니다.
      기본적으로 다음과 같이 설정하고 사용을 합니다.


      • SATA0:  Ubunt_12.04 기본설치
      • SATA1:  AM437x BSP용 
      • SATA2:  DM8127-IPNC BSP용 및 APP 
      • SATA3:  DM368-IPNC BSP용 및 APP
      • SATA4:  Virtaul SD-DISK 용으로 SD BOOT를 하기위해서 가상 VDI입니다.




      • 파일->가상미디어관리자->하드디스크 

          위에서 VDI  UUID가 확인이 가능하지만, Linux에서는 파티션별로 UUID를 사용하기에 별로 의미가 없다.




      Ref.
           https://hasol.net/xe/index.php?document_srl=2266&mid=board_AVQK63