레이블이 Tool-Virtual Box인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Tool-Virtual Box인 게시물을 표시합니다. 모든 게시물 표시

1/21/2018

Hypervisor or VMM(Virtual Machine Monitor)

1. Hypervisor의 기능  

일반적으로 아래의 Wiki를 보면 알겠지만, Hypervisor의 구성에 대한 자세한 설명이 되어 있다.

Hypervisor의 기능을 간단히 설명을 하면  가상의 CPU기능을 제공하여 다양한 OS 사용할 수 있는 선택기능을 제공해주며,
이와 더불어 이 다양한 OS와 통신이 가능한 Interface를 만들어주는 interface를 제공을 해주고 있다. (물론 전가상화 보다는 반가상화를 이용하여 제공)
그래서 가상화를 이용한다면 더불어 발생하는 것이 CPU의 종속이 아니라 이식성이 높은 장점을 가지게 되어질 것이다.

현재 부각이 되는 이유는 점점 CPU 성능이 좋아지기 때문에, 남는 자원을 Hypervisor를 이용하여 다른 별도의 OS로 사용하고 이와 더불어 통신을 하고 사용하는 기술이 대두되고 있다.

  • Hypervisor 의 기본사용 Model 종류  
기본사용모델을 살펴보면, 두개의 모델을 구분해서 생각할 수 있겠다.

https://en.wikipedia.org/wiki/Hypervisor


  • TYPE-1 (native or bare-metal Hyperviors)
동일한 Hardware (CPU) 위에 한개는 Hypervisor 기반으로 2개의 OS 동작이 가능하도록 만든 시스템이다. 
물론 더불어 이들 OS간에 통신도 Hypervisior 를 통해 가능해야 완벽하겠다.
이런 구성은 아직 잘 보지를 못해 뭐라고 말을 못하겠다. 


  •  TYPE-2 (Hosted Hypervisors)
Hardware 위에 기본 Host OS가 동작하며,  Host OS 위에 Hypervisor 가 존재하여 Guest OS를 동작시키는 개념으로 이 Hypervisor는 하나의 Task로 보는 것이 맞을 것 같다.

대표적인 동작 방식이 Window에서 동작하는 VirtualBox or VMware가 있을 것이다.
현재 이와 관련된 Hypervisor는 많기 때문에 아래의 Link에서도 다 확인이 가능하며 무료 Version 인 Virtual box를 설치해보면 알 것이다.

Hypervisor 관련자료 및 가상화 


1.1 가상화와 종류(Virtualization) 

Hypervisor에서는 제공하는 가상화라는 의미를 좀 자세히 알아보도록 하자.
Hypervisor or VMM(Virtual Machine Monitor)일단 가상의 CPU를 만들어야 하며 이와 더불하드웨어의 어느 정도까지를 어떻게 만들 것인지 정해야한다.
이를 Hypervisor에서 말하고 있는 가상화이다.

이를 두고 가상화하는 방식을 두가지 방법으로 나누고 있다.
  1. 전가상화(Full virtualization) 
  2. 반가상화(Paravirtualization)


  • 전가상화(Full virtualization) 
전가상화는 실제의 CPU와 관련 Hardware를 거의 완벽하게 만들어가는 작업이며, 이는 Guest OS의 수정이 거의 필요가 없다
하지만 문제발생이 되는 부분이 있다고하며, Hardware 구성변경이 될 경우 이에 대한 문제가 발생이 되는 것이다.

  • 반가상화(Paravirtualization)
반가상화는 hardware에 부가적으로 붙어있는 환경 즉, 관련 Device들은 가상화를 하지 않는다. 
왜냐하면 CPU는 동일할 수 있지만 관련 환경 Hardware device들은 다르기 때문이다. 
이와 같은 기능을 제공하기에 이식성이 높고 다양한 Hardware를 제공하는 것이 장점일수는 있지만, 
상위 OS와 Hypervisor는 가상화가 되지 않는 부분을 어떻게 해야하며, 다른 OS와 통신하는 방법이 관것일 것이다.
TYPE-1 모델일 경우 봐도 구조상 반가상화하는 것이 맞을 듯 싶다.


2. Hypervisor TYPE1과 Embedded 솔루션 비교  

기존에는 Intel 칩기반으로 많은 가상화 기능이 존재하지만 이는 여기서는 생략하기로 하고 
현재  Embedded 환경에서 사용되어지는 Hypervisor 의 TYPE-1 모델이 사용이 되는가 하는 생각으로 각 부분을 간단히 조사했다. 


2.1 Hypervisor의 TYPE-1 모델 


상위 Hypervisor의 TYPE-1 모델을 다시 생각해 볼 필요성이 최근들어 Embedded에서 발생하는 것 같다.
Main ARM Core, 즉 Multi Core가 SMP(symmetric multiprocessing) 대칭형 다중처리 방식으로 점점 변경되어 가고 있으며, 
특히 Embedded AP에서 Linux에서 SMP를 자주 볼 수 있다.
(SMP는 한개의 커널과 다중코어) 

최근 보면 성능좋은 CPU/AP를 이용하여 서로 다른 두 개의 OS를 이용하여 통신하는 구조로 사용되는 이유를 보면 두 개 Platform 사용 같다. 
Embedded 에서는 Second OS를 RTOS의 이용하여 빠른 Latency 받고 이를 Linux에서 각 적용하는 구조인 것으로 보인다. 
상위 구성을 두 개의 CPU로도 쉽게 구성할 수 있겠지만, HW적으로 분할되기 때문에 상위 모델로 쉽게 사용하는 것으로 보인다.  
물론 CPU/AP 위에 성능이 좋은 OS 1개를 사용하는 방식이 가장 최선일 지는 모르겠지만 
외부에 빠른 처리 와 빠른 Latency가 필요할 경우가 있을 것 같다.

Hypervisor의 TYPE-1 모델위에 별도의 두개의 OS를 사용하면서 통신하고 주고 받는 것이다.
기본 OS는 Linux/Android/WinCE 일 것이며, Second OS는 RTOS이다.

  • SMP/MPP 관련내용
SMP(Symmetric_multiprocessing)
MPP(Massively Parallel Computer)
  https://en.wikipedia.org/wiki/Symmetric_multiprocessing
  https://ko.wikipedia.org/wiki/%EB%8C%80%EC%B9%AD%ED%98%95_%EB%8B%A4%EC%A4%91_%EC%B2%98%EB%A6%AC
  https://ko.wikipedia.org/wiki/%EB%8C%80%EA%B7%9C%EB%AA%A8_%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%84%B0


2.2 SoC와 DSP 솔루션 


TI의 경우 DSP만 출시하여, DSP 독자적으로 사용하거나, ARM Core와 HPI/PCI Interface로 연결하여 사용하여 DSP의 사용확장을 하였다. 

유저가 DSP를 항상 ARM Core와 함께 사용하니, TI에서 Davinci Series를 출시되면서 다음과 같이 ARM과 DSP를 함께 내장하고 이를 통신하는 구조로 변경되어짐
즉 ARM(CPU)와 DSP 혹은 ARM-M3는 존재하여, 각각의 별도의 OS 사용하고 통신을 위해서,
Memory Map IO 방식으로 동일한 주소접근하고 ARM과 DSP 는 Shared Memory 사용함.
 
DSP는 BIOS라는 RTOS를 이용하여 멀티미디어 관련부분을 담당하고, ARM(CPU)는 Linux/Android와 같은 OS를 이용하는 구조. 
TI에서 제공되는 SoC의 경우가 DSP를 내장하거나, ARM-M3(ARM Core)를 내장하여 이를 이용한다.

OMAP 역시 점점 발전함에 따라 점점 DSP의 역할이 점점 줄어들어들고, Graphic 부분는 증가하고 위와 동일한 솔루션을 제공하며, 
GPU 및 더욱 좋아진 Power Management 제공함에 따라 BSP가 복잡해질 뿐이다.
하지만 최근 출시되어지는 AM34xx or AM43 Series는 위와 같은 방식과는 다르다. 

물론 TI만 DSP를 출시하는 것이 아니므로, Qualcomm Chip은 아직 사용해본적이 없기에 TI에만 이야기 하지만 얼추 다 비슷하리나 본다..


2.3 ARM에서 Hypervisor 이용 


이는 최근에 Vendor들이 출시되는 Chip Solution을 보면 ARM의 Hypervisor 기술은 이 중요한 모델인 것 같다.
물론 TI와 비교해서 어느 모델이 더 성능이 나올지는 궁금하지만 현재 이런 솔루션들이 나오고 있으며, 이를 사용하고 있다.

아래의 동작 모델은 ARM 기반의 Hypervisor를 이용하여 통신을하는 방식이며 기존의 TI와는 방식과는  다르다.


3. ARM Hypervisor TYPE-1 솔루션들  


현재 Automotive쪽을 구조들을 보면, RTOS하면 QNX로 가는 추세인 것 같다.
Automotive 사용되는 OS는 Linux or Android등 일반 OS와 함께 사용되어지며, 신뢰성이 보장이되는 RTOS를 두어 위와 같이 구성을 하는 것이 점점 추세로 변경이 되어가는 것 같다.
물론 모든 ARM이 지원이 되는 것은 아니며, ARMv7 이상이 되어야 하며, 다중코어를 사용해야 의미가 있을 것이다.

  • ARMv8 ARM-A 의 57/53의 구조 
ARM은 다중코어를 지원하며 4개 단위로 Cluster로 하여 Big.Little System(8개 코어사용)을 제공해주고 있다.
Big Cluster는 아래의 ARM-A의 57이며, Little Cluster는 ARM-A의 53일 것이다.

  http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.den0024a/BABIBAED.html


  • ARMv8 Cache 
더불어 아래와 같이 L3 Cache를 제공하여 Cluster 가 공유가 가능한 Cache를 가지고 있다. 
  http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.den0024a/BABDBFEA.html


3.1 QNX Hypervisor TYPE-1  

Blackberry가 인수한 QNX는 상용 microkernel로 된 RTOS의 한 종류이며 hypervisor 기능을 제공해주고 있다. 
QNX에 대해 좀 더 알고 싶다면 아래의 Wiki를 읽어보도록 하자  


이부분은 본인이 만약 QNX를 사용을 해볼 기회가 있다면 좀 더 자세히 알아보겠지만, 
현재 아래와 같이 Block도로만 구성을 이해할수 밖에 없다. 

  • QNX의 Hypervisor TYPE-1 모델 구성 
  http://blackberry.qnx.com/en/products/hypervisor/index
  https://www.qnx.com/content/dam/qnx/products/hypervisor/hypervisor-product-brief.pdf

  • QNX의 ADAS 모델 
다양한 Chip Vendor들의 Chip에서 제공해주고 있으며, TI 및 Qualcomm도 포함된다. 
하지만, 이것을 사용하는 것은 아마 사용자의 몫일 것 같다. 
  
  https://www.qualcomm.com/solutions/automotive/infotainment


  • QNX의 BIOS 위에 QNX 연결 
  http://www.qnx.co.kr/news/pr_238_1.html


3.2 Xen Hypervisor 기반으로 한 TYPE-1

Xen은 opensource로 반가상화를 제공해주고 있는 Hypervisor Type 1이며, 위의 QNX 모델과 같이TYPE-1 솔루션들을 제공을 해주고 있다.
우선 아래의 Xen Project의 기본 구조을 살펴보자

Xen Project (Open source)
  https://wiki.xen.org/wiki/Xen_Project_Software_Overview
  https://www.slideshare.net/MrCracker/xen-and-art-of-virtualization-xen-architecture

  • ARM과 X86의 비교 사항 



  • PV: Paravirtualized (반가상화)
  • VS: Software Virtualized (QEMU, DevOps에서도 배포할 경우 이용되는 에뮬레이터)
  • VH: Hardware Virtualized (Interrupt와 Timers 만 가상화)
  • HA: Hardware Accelerated ( Page Table로 봐서는 MMU 포함?)


Xen 위에 올라가는 Domain 이라는 가상화 기능이 제공되는 Dom0은 Domain 0을 의미하며, Host Domain이라고 한다.
DomU는 unprivileged domain의 약자로 Dom0의 반대쪽을 의미하고, Dom0보다 우선순위가 낮은 것 같다.

  • Xen 의 Dom0/1 (Guest OS 동작)
  https://wiki.xen.org/wiki/Dom0
  https://wiki.xen.org/wiki/DomU
  https://en.wikipedia.org/wiki/Xen

  • Xen Project 관련내용 및 Guest OS 
  https://www.xenproject.org/developers/teams/hypervisor.html
  https://www.slideshare.net/xen_com_mgr/xen-on-arm-xen-summit-2013-v2
  https://www.slideshare.net/MrCracker/xen-and-art-of-virtualization-xen-architecture


  • PV 반가상화 Driver의 Roadmap Xen
  https://wiki.xenproject.org/wiki/Embedded_and_Automotive_PV_Drivers/Roadmap


  • AUTOMOTIVE Xen 
  https://www.slideshare.net/xen_com_mgr/alss14-xen-project-automotive-hypervisor-demo


  • TI-AUTOMOTIVE Xen
  https://www.slideshare.net/xen_com_mgr/xen-in-oss-based-in-vehicle-infotainment-systems


  • ZYNQ 
  Xilinx에서 나온 Chip으로 아래와 같이 XEN을 이용하여 사용이 가능하다
  https://issuu.com/xcelljournal/docs/xcell_journal_issue_93/36


  • ODROID 
내 개인 Board인 Odroid에도 가능 
  https://wiki.xenproject.org/wiki/Xen_ARM_with_Virtualization_Extensions/OdroidXU
  https://forum.odroid.com/viewtopic.php?f=98&t=6643



3.3 기타 TYPE-2 모델

Linux에서 KVM 기반으로 하면 Type-2가 될 것 같으며, 이는 상위에서 언급된 Virtual Box 비슷할 거라고 생각되어진다. 

KVM (Kernel Based Virtual Machine)
  https://en.wikipedia.org/wiki/Kernel-based_Virtual_Machine

8/01/2017

Ubuntu에서 USB-Serial을 설정

USB Serial은 전에도 설명했듯이 CDC-ACM을 이용하여 Descriptor을 이용하여 사용한다.
Window도 이 Driver를 제공하지만, Linux도 이 Driver를 제공을 하고 있기에 아래와 같이 
간단히 설명한다. 

대부분 사람들이 Linux를 Virtual Box를 통해서 사용하기 때문에 그 기준으로 설명한다.


  • Virtual Box 설정 
  1. 설정->USB->장치필터 에 USB Serial 등록




  • Ubuntu xxx 설정 및 확인사항 
  1. Ubuntu 에서 lsusb에서 USB Vendor ID와 Product ID 확인 
  2. sudo modprobe usbserial vendor=xxx product=xxxx 로 등록 

현재 usb device 상황 파악

jhlee@jhlee-VirtualBox:~$ lsusb
Bus 002 Device 002: ID 80ee:0021 VirtualBox USB Tablet
Bus 002 Device 003: ID 0451:16b6 Texas Instruments, Inc. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

jhlee@jhlee-VirtualBox:~$ lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ohci-pci/12p, 12M
    |__ Port 1: Dev 2, If 0, Class=HID, Driver=usbhid, 12M
    |__ Port 2: Dev 3, If 0, Class=comm., Driver=cdc_acm, 12M
    |__ Port 2: Dev 3, If 1, Class=data, Driver=cdc_acm, 12M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/12p, 480M




jhlee@jhlee-VirtualBox:~$ sudo modprobe usbserial vendor=0x0451 product=0x16b6

jhlee@jhlee-VirtualBox:~$ dmesg 
[    6.721716] cdc_acm 2-2:1.0: This device cannot do calls on its own. It is not a modem.
[    6.721805] cdc_acm 2-2:1.0: ttyACM0: USB ACM device
[    6.742603] usbcore: registered new interface driver cdc_acm
[    6.742605] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
.....
[   87.360071] usbcore: registered new interface driver usbserial
[   87.360707] usbcore: registered new interface driver usbserial_generic
[   87.360953] usbserial: USB Serial support registered for generic


  • Ubuntu에서 minicom 설정 (Serial Program)


jhlee@jhlee-VirtualBox:~$ dmesg | grep tty
[    3.809474] console [tty0] enabled
[    6.721805] cdc_acm 2-2:1.0: ttyACM0: USB ACM device

jhlee@jhlee-VirtualBox:~$ sudo minicom -s

            +-----[configuration]------+
            | Filenames and paths      |
            | File transfer protocols  |
            | Serial port setup        |
            | Modem and dialing        |
            | Screen and keyboard      |
            | Save setup as dfl        |
            | Save setup as..          |
            | Exit                     |
            | Exit from Minicom        |
            +--------------------------+
Serial port setup
            | A -    Serial Device      : /dev/ttyACM0
Save setup as dfl 
Exit


참고사항
  http://belitino.tistory.com/140

Minicom 사용법
  https://help.ubuntu.com/community/Minicom

  • Serial Program 관련내용
만약 본인이 직접 프로그래밍을 한다고 하면, 반드시 sudo로 실행을 해야한다.

  http://tldp.org/HOWTO/Serial-Programming-HOWTO/
  https://wiki.kldp.org/wiki.php/Serial-Programming-HOWTO

10/03/2015

Virtual Box Upgrade

1. Virtual Box Upgrade

Ubuntu 14.04를 사용하게 되면서 해상도문제및 기타문제 발생으로 Virtual Box Upgrade를 결정하였다.





  • 1st Upgrade  
  1. 기본패키지: VirtualBox-5.0.6-103037-Win
  2. 확장패키지: Oracle_VM_VirtualBox_Extension_Pack-5.0.6-103037

  • 2nd Upgrade
  1. 기본패키지: VirtualBox-5.1.22-115126-Win.exe


기본패키지는 기본 Virtual Box Program이며 Extension Pack 이를 보완해주는 Program으로,USB 2.0 지원 및 기타 문제를 해결해준다.

2. Virtual Box Upgrade Version

기존버전에서 아래 Version으로 Upgrade 했으면, 현재 별이상 없이 사용하고 있다.
Ubuntu Version 이 변경이 되면 주기적으로 Upgrade를 해줘야 할 것 같다.
  1. 기존버전:  4.3.6-91406 
  2. 1st Upgrade:  5.0.6-103037
  3. 2nd Upgrade: 5.1.22-115126

2.1 기본패키지 및 확장패키지 Upgrade  

Virtual Box는 새로운 Version이 나오면, Upgrade진행 여부를 묻는 Message가 나오면,
이에 응답진행하면,
자동으로 Download가 되며, 이를 설치하면된다.
그리고, Download가 된 후, 새로 설치진행하고, 만약 확장팩이 설치가 되어있다면, 확장팩도 Upgrade하라고 자동으로 Message가 나오며, Download하고 설치하면된다.


기존 설치와 관리가 동일하기때문에 이에 대한 자세한 설명은 아래를 참조

  https://ahyuo.blogspot.com/search/label/Virtual%20Box

  • 확장패키지가 설치가 안된경우

* 기본패키지 설치후 파일->환경설정->확장 에서 확장패키지 변경

  • 주의사항 
  1. Upgrade시 Virtual Box는 실행을 하지 말하야 한다. 
  2. Upgrade가 진행 한 후 컴퓨터 Restart를 진행해야한다. 

Virtual Box는 관리자 Mode에서 실행되기 원하며, 아래와 같은 Message가 나온다.


  1. Repair와 Remove 메뉴가 나오는데 Repair로 설정하여 진행을 하였다. 
  2. 추후 설치 및 진행을 하면될 것 같다.  (* 메뉴 중 TRY가 되지 않아 무시하고 넘어갔다)


관련설치 메뉴얼:
  https://www.virtualbox.org/manual/ch01.html#intro-installing

관련확장 메뉴얼:
  https://www.virtualbox.org/manual/ch04.html

2.2  변경사항 

일단 그래픽적으로 많이 변했고, USB 3.0지원 및 설정 기능, 메뉴변경 등 눈에 띄는 변경사항으로 봐도 달라지점을 쉽게 알수 있다.
변경사항을 보면, 버그픽스와 호환성문제해결 등 GUI 문제사항이 주를 이루고 있다.
무료로 사용하게 해주어서 정말 감사할 뿐이고, 고맙게 느끼며 사용하고 있다.


버전별 변경사항 확인:
  아래사이트에서 버전별로 달라진 기능 및 변경사항들을 확인하자
  https://www.virtualbox.org/wiki/Changelog


3. 메뉴얼 


3.1 사용메뉴얼


  • Virtual Box 기본메뉴얼
아래의 메뉴얼를 참고하여 좀 더 관련기능의 역할과 관련지식을 알아두고,버전업이 될 수록 새로운 기능이 나오므로,  이에 관련된 기능을 알아두자.

  https://www.virtualbox.org/wiki/Downloads#manual
  https://www.virtualbox.org/manual/UserManual.html


  • End-User 봐야할 문서
  https://www.virtualbox.org/wiki/User_HOWTOS


3.2 LINUX 설치후 문제발생시 확인사항

Guest OS를 Linux로 사용할 경우 필요한 패키지를 기술하고 있으며, Guest OS로 Linux를 설치후 문제가 발생하였다면 이곳을 먼저 확인하자
Ubuntu 역시 Debian 기반으로 한 OS임을 잊지 말자.

Getting started->Build instructions:
Guest LINUX를 설치전 확인사항
  https://www.virtualbox.org/wiki/Linux%20build%20instructions

3.3 Virtual Box에서 사용되는 Binaries 설명

Window에서 사용되어지는 Virtual Box의 실행파일 및 각 파일에대한 내용을 기술하고 있으며, 차후 좀더 설정 및 변경을 해야한다면, 각 기능을 먼저 숙지하고 수정하자.

  https://www.virtualbox.org/wiki/Binaries_overview


3.4 Virtual Box 관한 FAQ

Virtual Box에서 제공하는 FAQ이며, 많은 내용을 담고 있지 않지만, 많은 궁금사항을 물어보는 보는 것이기에 반드시 읽어봐야한다.

   https://www.virtualbox.org/wiki/Developer_FAQ

3.5 Virtual Box 네트워크관련내용 및 기술문서 

Virtual Box에 관련된 TIP과 네트워크 사용할 때의 사용되는 VboxManage 기능을 알아두자.
기본적으로 Virtual Box에서 사용되어지는 네트워크 패킷을 잡을 수 있는 기능을 소개하고 있으며, 좀 더 많은 기능을 사용하고 싶다면 봐야할 부분이다.

Virtual Box의 Network 관련 TIPs
   https://www.virtualbox.org/wiki/Network_tips
   http://www.virtualbox.org/manual/ch08.html

더 자세한 내용은 상위 기본 매뉴얼 과 아래의 기술문서 참고.

3.2-3.5내용은 아래에 사이트에 가면 있기에 보다많은 기술적인 정보를 더 알고 싶다면, 아래의 기술문서를 참고하여 보면 될 것이다.
이곳에서 Virtual Box의 궁금한 사항들을 포괄적으로 자세히 설명해주고 있다.

Virtual Box의 전체기술문서
    https://www.virtualbox.org/wiki/Technical_documentation

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/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



      12/22/2013

      Windows 7에서 VirtualBox 설치 및 설정 과 Ubuntu 설치

      1. VirtualBox 설치

      기존의 Vmware 와 비슷한 기능을 가지고 있지만, GPL Lincense를 가지고 있어서,
      무료로 사용이 가능하여 많은 개발자들이 사용하는 프로그램이다


      • Download 
      아래의 사이트에서 기본프로그램확장패키지가 다운이 가능.
        https://www.virtualbox.org/wiki/Downloads
      1. VirtualBox platform packages. (GPL version 2)
      2. VirtualBox 4.3.6 Oracle VM VirtualBox Extension Pack (PUEL Licence )




      다운파일
      1. 기본패키지: VirtualBox-4.3.6-91406-Win.exe
      2. 확장패키지: Oracle_VM_VirtualBox_Extension_Pack-4.3.6-91406.vbox-extpack

                                                                       
      Manual:
         https://www.virtualbox.org/manual/ch01.html#intro-installing

      1.1 기본패키지 설치

      다음과 같은 방법으로 다운받은 파일로 VirtualBox 설치 및 설정하기







      1.2 확장패키지 추가.

      USB2.0 과 그 밖의 기능을 제대로 사용하기위해서 사용한다. 

      아래 메뉴에서 확장패키지 추가 
      파일->환경설정->확장       




      • USB기능 활용

      아래메뉴에서 기본적으로 사용할 것만 설정.
      Virtual Box->설정->USB 

      *USB인 경우, 실행 중인 Virtual Box->장치->USB 장치 에서도 조절이 가능


      *기타 다른기능은 확장메뉴얼 참고

      확장메뉴얼


      2. 새로운 가상머신

      새로운 가상머신과 가상하드디스크 만들기 

       머신->새로만들기 








      1. SSD를 사용하면, 가급적 동적할당 설정
      2. 하드디스크를 이용하면, 고정크기를 권장. 
      3. 메모리는 항상 본인의 Memory의 반 정도가 적당 


      2.1 Virtual Box 확인 

      *주의사항 
      메모리의 Host Memory의 50%를 넘어서는 안된다고 합니다. 
      즉,권고사항 Guest OS Memory 사용은 Host OS Memory의 50% 정도 

      가상하드디스크를 고정크기로 할당할 경우, 시간이 상당히 오래걸리며, 
      두개의 파일을 확인을 하실 수 있습니다.

            PATH:  C:\Users\사용자이름\VirtualBox VMs\ubuntu_12.04_64
      • ubuntu_12.04_64.vbox
      • ubuntu_12.04_64.vdi

      2.2 Virtual Box 설치기본설정

      아래에서 Linux Ubuntu 이미지를 연결하여 Booting 준비
      • 설정->저장소->컨트럴러:IDE :          LINUX 이미지  연결.

      2.3 성능관련 설정 및 불필요한 기능 삭제

      • 설정->시스템->프로세서  
              Guest OS의 성능향상 기대              

      • 설정->시스템->마더보드->부팅순서    (옵션)        
            플로피 디스크 제거로 광학을 우선 1순위로 변경

      기본적으로 본인이 Virtual Machine을 만들 때 OS를 제대로 선정 했다면,
      큰무리가 없으므로,  2.4 ~ 2.5 까지는 확인만 하고 넘어가자.

      2.4 세부 관련설정 확인 및 변경 


      아래의 설정은 기본적으로 확인하고 변경을 하자.
      보통기본적으로 본인이 선택한 OS에 맞게 설정이 되어있지만 확인용으로 확인하자.

      • 설정->시스템->마더보드->확장된 기능   (확인)
             I/O APIC :  ( Guest OS 64 bit 일 경우 필수설정) 


             아래의 사이트에서  3.1.2. 64-bit guests  확인  

          https://www.virtualbox.org/manual/ch03.html  
          https://www.virtualbox.org/manual/ch03.html#intro-64bitguests

      ** I/O APIC: I/O Advanced Programmable Interrupt Controller

          http://www.intel.com/design/chipsets/datashts/290566.htm

      • 설정->시스템->프로세서  (확인)
             PAE/NX 기능 :  본인의 Guest OS가 32bit 일 경우 사용 권장  

          위 기능은 사실 Virtual Box에서 RAM을 확장을 많이 하지 않을 것이고,
          Memory Map도 확장할 일이 없을 거 같아 나에게 있어서는
          사실 별로 불필요한 설정 같다.

      **PAE/NX: Physical Address Extension 

      32bit Machine 일 경우 물리적으로 4GB Memory Map 가질수 밖에 없다. 
      그래서 이 Memory Map 주소를 확장하기위해서 사용하는 기술 
      OS에서 이를 4bit 확장하여 64GB를 가지는 것이므로 혼동하지 마시길.
      결론적으로, (32bit Machine의 Memory Map)


      2.5 가상화 관련 설명 및 이해 

      • 가상화( Virtualization) 란?

         Virtual Box에서 가상 CPU 및 관련 Device를 만들어 제공해주는 시스템을 말한다

      • 전가상화(Full Virtualization)/반가상화(Para Virtualization) 이란?    

          가상화 종류는 다음과 같이 두 종류로 나뉘어 지며, Virtual Box에서는 반가상화를 지원한다. 

          하이퍼바이저 (Hypervisor) : 반가상화를 할 경우, 실제 CPU를 사용하는것이 아니라, 
          하이퍼바이저라는 CPU를 사용하여 가상화를 진행한다. 
        
      1. 전가상화(Full Virtualization):  Guest OS의 수정 없이 진행이 되는 전체 가상화를 말한다. 
      2. 반가상화(Para Virtualization):  Guest OS에서의 수정이 필요하며, Linux에서는 KVM과 같이 돌아간다. 


      • Virtual box의 가상화

      현재 Virtual Box는 전가상화 및 반가상화 역시 지원이 되고 있다.
      이전 모델은 전가상화이지만, 현재 새버전들은 반가상화 버전으로 설정이 가능하다.
      그리고, 현재의 흐름은 반가상화버전으로 가는 것 같다.

         https://www.virtualbox.org/wiki/Virtualization


      2.6 가상화 관련 설정확인 

      하이퍼바이저 설정확인

      • 설정->시스템->가속->반가상화 인터페이스                 (확인)
        1. 기본값:  KVM으로 설정 ( Linux 했을 경우)
        2. 없음 :  반가상화 사용안함
        3. 레거시 : 이전 버전의  반가상화 버전으로 이전 Virtualbox와 호환 
        4. 최소 :  Mac OS 용 Hypervisor  
        5. Hyper-V : MS Window 용 Hypervisor 
        6. KVM : Linux 용 Hypervisor 

                 반가상화 인터페이스 


      ** 반가상화 주의사항
      반가상화을 설정했을 경우에는 Guest OS에서도 이에 관련하여 완벽히 지원이되어야 한다.
      현재 Linux에서는 KVM을 지원을 해줘야한다. (Kernel 2.6.x 이상 )

                 http://www.linux-kvm.org/page/Choose_the_right_kvm_%26_kernel_version

      • 설정->시스템->가속
             VT-X/AMD-V 사용하기 :  문제 발생했다면 본인의 컴퓨터 BIOS 확인하자 
         

      ** VT-X/AMD-V 이란? 
      Intel은 VT-X / AMD은 AMD-V 
      CPU에서 Virtualization 가속기능을 제공하고 있으며, 이 기능을 사용하는 것이다. 
      설정확인은 본인의 BIOS에서 CPU VT-X 기능이 OFF 되어있는지 확인하자. 



      2.6 최종 설정 확인 

      아래는 나의 랩탑의 설정후 예제들이다. 


      • 가속->반가상화 인터페이스 설정변경: Legacy 설정 



      • 가속->반가상화 인터페이스 설정변경: 기본값 

      기타확인사항 
      • 이미지가 CPU- 64bit or 32bit 인지 확인 
      • 네임명을 64로 하면, 아이콘에 현재 64가 발생. 추후 추가 패키지 설치 요망. 


      **주의사항

      동시에 두개의 가상머신을 사용하지 말도록 하자. 아래의 매뉴얼을 보면, 권고사항이 있다. 




      3. Guest OS(Ubuntu) 설치

      Ubuntu Desktop version 설치
      이유는 용량문제로 필요없는부분은 사용하지 않기위해서이다.






         1. 설치->언어
                  한국어 설정
         2. 설치->키보드 배치
                  언어          : English -> 한국어 변경
                  키보드 배치 : 한국어 - 한국어(101/104)
         3. 설치->설정
                   ID와 Password 설정 후 설치 진행


      3.1  설치후 Package 관련명령 숙지 

      아래는 apt-get을 이용한 pakage 관리하는 방법이다. 


         
         1. apt-get install   pkg                      // 패키지 설치
         2. apt-get remove pkg                         // 패키지 제거
         3. apt-get remove --purge remove pkg          // 관련 패키지 삭제   
         4. apt-cache show pkg                         // 패키지 정보
         5. apt-cache search pkg                       // 패키지 검색
      
         6. dpkg -l                                    // 현재 전체 설치된 패키지 정보 
         7. dpkg -l  | grep pkg                        // 현재 설치된 패키지 검색
      
      pkg: package name 


      3.1 설치후 SSH 관련설치 

      우선 Ubuntu 설치후 대시홈 좌측의 맨위버튼에서 터미널 (Terminal) 을 실행하고 실행중이
      이를 찾아 좌측의 Launcher에 고정시키자.



      SSH 관련 항목 설치  (SSH Server 설치 ) 

           * 설치항목 확인학인하고 SSH Server 를 설치

           $ dpkg -l |grep ssh            // ssh 관련부분이 설치되어있는지 확인 
           $ sudo apt-get install openssh-server
           $ sudo apt-get install vim     // vim 방향키 문제가 있어 다시 설치 
      

      이제 xshell로 이용하여 외부에서 접속이 가능하다.

      3.3  게스트 확장 준비

      dkms를 설치 안해도, non-dkms version으로 동작하는 것 같음. (legacy)


      아래의 upgrade와 update는 개발환경의 Manual을 반드시 참조하자. 
      upgrade와 update는 시간이 오래걸리는 작업이며, linux 관련 package가 변경이 된다. 

           $ sudo apt-get upgrade      // 기존가지고 설치된 패키지를 새버전으로 Upgrade.    
           $ sudo apt-get update       //현재 버전에서 설치되어진 패키지 리스트를 변경   
      


           $ sudo apt-get install build-essential module-assistant
           $ sudo apt-get install dkms
      


      Linux 게스트확장 메뉴얼
            https://www.virtualbox.org/manual/ch04.html#idp95340944


      • 기본설치후 한글설정이 이상동작일 경우 


      1. 시스템설정->언어  (IBUS->한글 전환)
      2. 시스템설정->텍스트 입력창  ( 한국어/영어   존재 확인 )

        https://blog.xianchoi.kr/315
       

      3.4  게스트확장 설치 
       
      1.    Virtual Box 시작 
      2.    실행중인 Virtualbox의 메뉴 중 장치-> 게스트 확장 설치 실행 
      3.    자동실행되고 확장을 설치한다 
      4.    시간이 상당히 걸린다  (*메시지를 잘보자  )
      5.    리부팅 
      위에서 dkms를 설치안해, Non-dkms version으로 동작.

      아래는 14.04 설치때 설치중인 상황이다. 아래와 같이
      Press Return to close this window 때까지 기다리자.


      제대로 설치가 될 경우, Virtual Box의 화면 Resizing 제대로 동작한다.

      4. Ubuntu Server 개발환경설정 (TFTP,NFS)

      Virtual Box를 위와 같이 설치 후에
      개발을 하기위해서 TFTP Server 및 DHCP, NFS, SAMBA Server 관련설정 정보
      아래의 사이트를 참고


        http://ahyuo.blogspot.kr/2015/07/ubuntu-1204.html
        http://ahyuo.blogspot.kr/search/label/DevelEnv


      5. Virtual Box 기본편의설정 

      게스트확장을 제대로 설치후, 아래의 설정을 사용하도록 한다.

      (머신->설정)
      • 설정->일반->고급  : 
             클립보드 :  양방향  (권장) : 설정시 Host에서 Copy한 내용을 Guest OS에 적용가능
             드래그앤드롭: 양방향 or 호스트에서 게스트 설정 ( 권장)
            

      **주의사항
      클립보드 공유: version이 낮을 경우 동작이 제대로 안된는 경우가 있다. 
      드래그앤드롭:  동작이 잘 되지 않음  Host에서 Guest OS로 파일을 탐색기끼리 가져오는데, 동작 잘 안됨. 

      클립보드-사용방법
             실행 중인 Virtual Box ->  클립보드 공유 or 드래그 앤 드롭 : 방향을 설정


      5.1 공유폴더 설정 및 환경설정

      • 설정->공유폴더 ->머신폴더: 공유폴더 설정. 
            ( 자동마운트설정)

      게스트 확장설치 후, 아래와 같이 수정을 해주면, 공유폴더의 퍼미션문제가 쉽게 해결

      $ sudo vi /etc/group 
          .....
          .....
          vboxsf:x:1001:jhlee  --- > vboxsf 찾은 다음  자신의 ID  추가 
      

      다음 재부팅 후, 아래와 같이 확인

      $ ls /media/sf_Share/    // mount data 확인 
      
      


      **기타사항 

      Guest로 로그인하고, sudo를 사용하면 아래와 같은 message 확인되므로, 본인 userid로 로그인
      Guest ID로 sudo를 사용하고 싶다면,아래와 같이 TTY를 사용
      sudo: unable to change to root gid: Operation not permitted
      
      Ctrl+Alt+F1   (TTY1) 
      Ctrl+Alt+F7   (GUI 화면 복귀)
      
      


      5.2 Network 공유 (옵션)

      본인의 가상머신의 Network 설정을 브릿지모드로 설정했을 경우
      아래와 같이, 본인의 Host Window에 손쉽게 접근이 가능하므로, 윈도우에서 폴더 공유를 하여
      Network 공유를 하여도 무방하다.




      5.3 USB 설정  (옵션)

      GUEST OS(Linux) 에서 USB를 제대로 사용하기 위해서는
      VM Virtual Box 관리자 의 머신 -> 설정 -> USB  에서 USB 필터를 등록을 해줘야 사용가능.

      이는 USB 인식가 어디에 인식이 되는가 이기 때문이므로, 본인이 필요할 경우 사용.
      이를 제대로 사용하기위해서는 Virtual Box USB , Window Driver가 제대로 동작.

      ** 현재 본인은 가급적 사용을 안하는 편입니다.
      • 동작이 안될 경우, 
              - 관련 Driver 삭제하고 재설치
      • 인식이 안될 경우  
              - Virtual Box USB 문제일 경우
        
                 A. 일단 동작 중인 Virtual Box에 원하는 USB가 자동으로 나오는지 확인
                      (필터를 등록했을 경우, 자동으로 Check가 됨)
                      (Virtual Box USB Driver 가 없을 경우도, 자동으로 인식)
                 B. 위의 필터등록확인
                 C. Linux에서 lsusb로 확인

                 Virtual Box USB Driver
                       Download:   http://www.driverscape.com/download/virtualbox-usb
                       Path:           C:\Program Files\Oracle\VirtualBox\drivers\USB\device
         
              - 쓰는 도중 인식 불능 오류발생후)
                    USB장치가 두개로 인식할 경우,
                    USB 필터를 삭제하고, 다시 부팅 그리고, 필터 추가.


      5.4 VirtualBox 현재 상태확인 (옵션)

      아래와 같이 virtual machine의 우측 아래 현재 본인의 설정의 상태를 쉽게 알수 있는 아이콘이 존재하며,이를 이용하여 현재 상태를 확인하자.





      6. 64Bit OS 확인사항

      기본적으로 32Bit OS를 사용하면 CPU를 한개를 사용하지만, 64bit는 다르다.

      • 설정->시스템->마더보드 

      64bit OS는 I/O APIC를 사용하여, CPU를 여러개 사용한다.
      Window를 제외하고 이기능은 제대로 동작하지 않는 것 같다.  (자세한내용은 원문)

      하지만, 성능을 위해서 64bit로 설치했다.
      리눅스도 제대로 되기를 바라며^^

        https://www.virtualbox.org/manual/ch03.html#settings-motherboard (Note & Warning 확인)
        https://www.virtualbox.org/manual/ch03.html#intro-64bitguests (Warning 확인)


      7. Virtual Box 메뉴얼

      아래는 메뉴얼은
      C:\Program Files\Oracle\VirtualBox\VBoxManage.exe

        http://www.virtualbox.org/manual/ch08.html