레이블이 Ubuntu x86 DevelEnv인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Ubuntu x86 DevelEnv인 게시물을 표시합니다. 모든 게시물 표시

1/15/2019

Ubuntu 16.04 LTS 기반 설치

1. Ubuntu 16.04 LTS 기본 OS설치 

기존처럼 Window에서 Virtual Box를 설치하여 Ubuntu를 설치하여 적용하는 것이 아니라 반대로 설치하는 경우에 필요한 Tool들을 간단히 정리해 본다.
현재 나의 OS를 Ubuntu 16.04 or 18.04 LTS로 설치하여 사용하고 Virtual Box를 이용하여 Window를 설치한다.

  • 기본 OS: Ubuntu 16.04 /18.04 LTS  ( Jetson 문제로 16.04변경)
  • Guest OS: Window 7 

1.1  USB 설치디스크 만들기

아래의 내용을 보고 간단하게 USB기반으로 Booting하는 Ubuntu OS 를 만들자.

  https://ahyuo.blogspot.com/2019/01/usb.html


2. Ubuntu 에서 사용할 프로그램들   


  • 썬더버드 
기본으로 설치되어 있으며, Window의 Outlook이라고 생각하면 되겠다.


  • 크롬설치방법
아래방법으로 설치함

$ wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - 
$ sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'
$ sudo apt-get update
//크롬 설치
$ sudo apt-get install google-chrome-stable
$ sudo rm -rf /etc/apt/sources.list.d/google.list 


  http://snowdeer.github.io/linux/2018/02/02/ubuntu-16p04-install-chrome/
  https://webnautes.tistory.com/1079

  • VirtualBox 설치
아래의 내용들로 최신 버전을 설치를 해도 되지만, Ubuntu 16.04/18.04 LTS에서는 검색을 하면 쉽게 설치가 가능하다.

아래 내용들은 참고하고, 추후 최신버전으로 변경할 일이 있다면 시도를 다시 해보자.

  https://www.virtualbox.org/wiki/Linux_Downloads
  https://websiteforstudents.com/install-virtualbox-latest-on-ubuntu-16-04-lts-17-04-17-10/
  https://tecadmin.net/install-virtualbox-on-ubuntu-18-04/


해당 *.deb 파일 다운로드

$ wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -
$ wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add -

$ vi /etc/apt/sources.list  // virtualbox repository 추가 
............
deb https://download.virtualbox.org/virtualbox/debian mydis> contrib
deb https://download.virtualbox.org/virtualbox/debian xenial contrib

$ sudo sh -c 'echo "deb http://download.virtualbox.org/virtualbox/debian $(lsb_release -sc) contrib" >> /etc/apt/sources.list.d/virtualbox.list'


//download Oracle public key and register  
$ wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -
$ wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add -

$ sudo apt-get update
$ sudo apt-get install virtualbox-6.0



  • Eclipse
Java용 Eclipse로 Ubuntu 소프트웨어에서 검색을 하면 쉽게 설치 가능



  • Eclipse CDT
C/C++ Eclipse용으로 Ubuntu 소프트웨어에서 검색을 해도 나오지 않아 강제로 아래와 같이 설치


  https://websiteforstudents.com/how-to-install-eclipse-oxygen-ide-on-ubuntu-167-04-17-10-18-04/
  https://agiantmind.tistory.com/182



  • 화면 캡쳐프로그램
원시적 방법으로는 간단하게 Print Screen Button을  이용하여 캡쳐를 하면되지만, Window 처럼
Ubuntu 16.04 /18.04 Version에서

  https://webnautes.tistory.com/513



  • Consol Program 및 SSH Program 
Serial Program을 보기위해 기존의 minicom 이나 putty가 지원이 되니 이를 설치해보자.
아직 Putty로 Serial을 보지 못했다.

$ sudo apt install putty
$ sudo apt install minicom 

$ minicom -s 
$ putty 

putty
  http://processors.wiki.ti.com/index.php/Setting_up_Minicom_in_Ubuntu

SFTP
  http://hongci.tistory.com/16



  • DNS Server 설정 
  http://wani.kr/posts/2017/03/22/ubuntu-resolvconf-settings-summary/



1/14/2019

USB 시동디스크 만들기 와 이해

1. PC의 USB Booting Disk만들기 

현재 기본 OS를 Window 7 or 10가 아닌 Linux ,즉 Ubuntu로 사용해야 하기때문에 아래와 같은 작업을 실행한다.

  1. USB 저장장치기반으로 시동디스크 생성 (ISO Image기반)
  2. BIOS에서 Booting 우선순위를 USB 변경 
  3. Linux(Ubuntu) 설치 진행   

현재 내가 사용하고 있는 OS가 Ubuntu 이므로 그 기준으로 관련 프로그램 설명한다.

기존생각은 Window에서 주로 임베디드에서 많이 사용하던 Win32DiskImager or Echer으로 사용하여 만들 생각이었다
하지만, Ubuntu의 Startup Disk Program 와 Window 에서는 Rufus 이용하여 사용하겠다.

  • Linux와 Window 와 USB Grub과 함께 설치 방법
아래에서 USB Boot Disk를 Grub과 함께 만드는 방법을 소개주셔서 감사하다.
추후 시간이 있다면 이부분을 한번 따라 해보겠다.
  https://bagjunggyu.blogspot.com/2013/10/linux-booting-usb-grub.html


1.1 Ubuntu 에서 Ubuntu USB 시동디스크 만들기

우선 현재 사용 중인 OS가 Ubuntu 일 경우 하도록 하며, 아래의 Startup Disk Program을 이용하여 만들어보자 
Ubuntu에 USB 시동디스크 설치프로그램은 기본설치
(Ubuntu 16.04 이후것은 확인)

  • 사용프로그램 (Ubuntu에 기본내장)
Startup Disk Program

  • Ubuntu에서 시동디스크 만들기 
  1. Startup or 시동디스크 검색 
  2. 시동디스크 설치 실행 
  3. Ubuntu Image 를 USB에 설치 

  • Ubuntu 실행 Startup Disk Program 찾기  

https://tutorials.ubuntu.com/tutorial/tutorial-create-a-usb-stick-on-ubuntu?_ga=2.105790597.76344796.1547599988-873301564.1547599988#0


  • Make Startup Disk 
USB Ubuntu Image 만들기 

https://tutorials.ubuntu.com/tutorial/tutorial-create-a-usb-stick-on-ubuntu?_ga=2.105790597.76344796.1547599988-873301564.1547599988#0


아래문서참고
  https://tutorials.ubuntu.com/tutorial/tutorial-create-a-usb-stick-on-ubuntu?_ga=2.105790597.76344796.1547599988-873301564.1547599988#0

  • 동작방식 
상위와 같이 Ubuntu Image를 생성하면, 내부에 EFI 와 boot 가  directory 존재하며, Ubunut를 설치시에, EFI System Parition을 이용한다. 


1.2 Window에서 Ubuntu/Window USB 시동디스크 만들기

우선 현재 사용 중인 OS가 Window 일 경우 하도록 하며, Echer이외에도  Rufus는 프로그램이 존재하는데, 파티션과 UEFI 설정가능
Image만 USB에 Write하면 될 줄 알았는데, 옵션이 다양하다

  • 사용프로그램 및 Download
Rufus Download 
  https://rufus.ie/

  • Rufus 설정포인트
  1. 파티션을 MBR or GPT로 설정
  2. 대상시스템 (BIOS 또는 UEFI or UEFI)




참고자료
  http://w3devlabs.net/wp/?p=24400
  https://webnautes.tistory.com/1146


1.3 Window에서 Window 10 Image 생성 

MS사에서 제공해주는 방법으로 상위 RUFUS 대신 이용해보도록 하자. 

Window 10 Image Download 및 USB Image 생성

Window USB 시동디스크 만들기 
  https://ahyuo79.blogspot.com/2019/08/lenovo-laptop.html


1.4 Window 에서 이외 Tool 

임베디드에서 많이 사용하는 Win32DiskImager or Echer 사용해도 상관은 없다. 
다만 BIOS에서 UEFI가 아닌 Legacy로 사용 

Download  Win32DiskImager

Download Etcher


2. PC의 BIOS와 UEFI 기본이해 

PC의 BIOS(Basic Input/Output System)는 이전처럼 간단하게 작동이 되지 않으며,
최신 UEFI(Unified Extensible Firmware Interface)을 적용하며 점점 변경되어 가고 있다고 한다

이전 BIOSLegacy BIOS라고 정의하며, 최신 BIOSUEFI이라고 명명한다고 한다. 
Laptop의 BIOS 설정에 가면 상위처럼 이름이 정해져 있다. 


2.1 Legacy BIOS 

Legacy BIOS의 경우는 
이전 부팅방식인 Boot Sector의 MBR 정보와 Bootcode를 가지고 Booting을 했으며, 기본방식으로 동작한다. 
하지만, HDD 용량제한과 BIOS의 기능제한이 문제가 되며, 결론적으로 GPT는 지원을 하지는 못한다. 

  • BIOS -> HDD의 MBR

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


2.2 UEFI 지원 BIOS

UEFI(Unified Extensible Firmware Interface) 의 경우는  
기존 BIOS(Legacy BIOS)와 달리 BootSector(MBR)에만 지원하지 않고 GPT 지원하기되어 대용량 HDD를 지원가능하다.
UEFI Spec은  Boot Manager 라는 것 정의하고, Computer가 Power up이 되었을 때, 
Boot Manager는 이미 사용자가 설정된 Boot Configuration 체크하여 동작하고 Boot를 결정한다

UEFI의 경우 일반적으로 GPT(GUID Partition Table)을 이용한다고 한다.
  • UEFI -> HDD 의 EFI Partition -> EFI Bootloader
아래의 GRUB2의 GPT 부분을 보면, SDA1이 EFI Parition으로 FAT32
https://en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface#Booting


결론적으로 UEFI는 BIOS에 부족한 부분을 외부저장장치에 EFI_SYSTEM_PARTITION이 별도 생성하여 BIOS를 확장하는 구조이다. 
기존의 BIOS에서 할 수 없었던 기능들을 이곳에 추가 확장을 하는 것이다. 

  • EFI system partition (약어, ESD)
외부저장장치 즉 Storage에 다양한 FAT Filesystem(FAT32, FAT16 , FAT12)으로 제공하여 구성되며, 
MBR과 GPT Partition을 기존과 동일하게 설정하기 때문에 이 부분을 이해한다. 
CD Disk는 보니 다르게 동작하니, 착각하지 말자.

ESD Wiki 자료
  https://en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface#EFI_system_partition


  • EFI 관련파일의 구성과 PARTITION 
EFI_SYSTEM_PARTITION -- /EFI/BOOT/BOOT machine_type_short_name.EFI // 이런식으로 이름을 구성  
EFI_SYSTEM_PARTITION -- /efi/BOOT/BOOTX64.EFI   // x86-64 일 경우 (상위와 같이 적용)
EFI_SYSTEM_PARTITION -- /efi\boot\bootaa64.efi  // ARM64 일 경우  (상위와 같이 적용)

UEFI Interface
  https://en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface


  • EFI의 시스템의 이해 
인텔은 EFI(Extensible Firmware Interface)라는 스펙을 개발했지만, 이는 UEFI에 주요 기능이 포함되었다고 한다.
Hardware는 PC의 Mainboard와 CPU 및 기타 Device를 말할 것이며, Firmware와 EFI는 BIOS기능을 말한다.




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


  • Interaction between the EFI Boot manager and EFI drivers
상위에서 설명한 Boot Manager와 동작방식을 그림으로 표현을 해준다.
EFI BOOT Manager와 EFI Driver의 동작방법을 이해해보면, 아래의 Blue색은 EFI의 전체 시스템이며, OS Loader와 어떻게 작용하는지 이해해보자.



  1. 좌측그림 EFI Binaries 파일 
  2. 우측그림 Boot Manager
  https://en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface#Applications


  • UEFI Booting 
UEFI booting은 Legacy BIOS와 다르게 boot sector에 의존하지 않으며, 상위 EFI 처럼 Boot Manager가 존재하여 이를 OS Loader를 실행을 해준다.
크게보면 아래 두가지 형태로 나누어 볼수 있을 것 같으며, 세부적인 Booting은 아래에서 참조하자.

  1. UEFI-GPT booting
  2. UEFI-MBR

  https://en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface#Booting

UEFI를 보면서 Shell 제공뿐만 아니라 기존의 BIOS가 Logo 및 GUI가 지원이 되는 것을 보고 사실 많이 놀랐다.
너무 옛날버전의 BIOS만 봐서 그런지 최신 BIOS를 보니 낯설기만 해서 일단 상위처럼 이해만 하고 넘어가자.
다른 Booting 모드도 제공하는 것 같은데, 추후 사용할 일 있다면 그때 알아가자.

궁금한것은 UEFI로 확장하여, 상위 LOGO와 GUI 환경을 제공하는것인지가 궁금하다. 아직 이해가 되지 않아 이부분은 추후에 확인 


UEFI의 이해 참고자료
  https://namu.wiki/w/UEFI
  https://en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface
  https://ko.wikipedia.org/wiki/%ED%86%B5%EC%9D%BC_%ED%99%95%EC%9E%A5_%ED%8E%8C%EC%9B%A8%EC%96%B4_%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4
  https://msdn.microsoft.com/ko-kr/library/windows/hardware/dn898495(v=vs.85).aspx


3. MBR 와 GPT  이해 와 차이 

  • 기존 MBR(Master Boot Record) 
MBR(Master Boot Record)은 기존부터 사용한 방식이며, HDD Disk의 Sector 0 으로 BIOS가 이 부분으로 부팅하면서 Partition 체크하는 부분이다. 
역할은 Boot CodePartition Entry , 즉 Partition 정보이다. 
하지만, 용량이 제한되어 있다보니, 기능이 제한적일 수 밖에 없다. 

MBR(Master Boot Record)
BootCode 와 Partition Entry 들어감 
  https://en.wikipedia.org/wiki/Master_boot_record

  • GPT기반 변경 
GPT(Sector 1)하드디스크 용량증가로 인하여 MBR의 용량문제 개선하기 위해서, MBR(Sector 0) Partition 기능에 확장제공하는 방식이다. 
현재는 GPT는 MBR에 기존과 다른 구조로 사용하여 확장되어지는 구조이며, 이에 사용되는 툴도 둘다 다르다.


  • Bootloader(GRUB2) 비교
둘 다 Extend Partition에 GRUB을 넣으려고 하는 것이며, 각 차이를 알아두도록 하자. 
  1. boot.img: MBR에 저장되어지는 boot image로 core.img를 접근 
  2. core.img: GRUB의 core image로 /boot/grub을 접근 


  • MBR or GPT 일 경우, GRUB2 저장 

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


Sector Size,LBA 512 기준
  1. Example 1: MBR사용 
    1. Sector 0: MBR
    2. Sector 1~2047 
  2. Example 2: GPT(GUID Partition Table)사용 (아래 그림참조)
    1. Sector 0: MBR
    2. Sector 1: Primary GPT Header 
    3. Sector 2~33:  Partition Entry Array 128개  (128x128/512=32 Sector)
      1. GUID Partition Entry: 128byte 
        1. Partition type GUID: 아래 다시 설명 
        2. Unique Partition GUID
        3. ... 기타 등등 (상위 링크 참조)

    4. Empty Space:
    5. SDA1: EFI System Partition(FAT32)  (각 Partition GUID 참조)
    6. SDA2: BIOS boot Partition  (각 Partition GUID 참조)
    7. SDA3: Linux /  Root File system (각 Partition GUID 참조)
    8. SDA4: Linux /boot  File system (/boot/grub) (각 Partition GUID 참조)

Unix/Linux계열:  각 OS마다 조금씩 다르며, 링크를 참조하여 확인 
Window 32 bit :  UEFI 허용안하며, GPT도 미지원 
Window 64 bit :  Disk 당 GPT 128 Partition 까지 지원

GPT(GUID Partition Table) 사용할 경우 아래의 Globally unique identifier (GUID)는 공용으로 사용하는 ID이므로, 아래의 wiki에서 각각의 ID의 의미를 알아두고 이해하자.
  1. MBR partition scheme: 024DEE41-33E7-11D3-9D69-0008C781F39F
  2. EFI System partition: C12A7328-F81F-11D2-BA4B-00A0C93EC93B
  3. BIOS boot partition: 21686148-6449-6E6F-744E-656564454649
  4. Sony boot partition: F4019732-066E-4E12-8273-346C5641494F
  5. Lenovo boot partition: BFBFAFE7-A34F-448A-9A5B-6213EB736C22
이외 OS 관련된 GUID 와 각 제조회사 GUID 아주 다양하다

세부사항 GUID 정보
Window/Linux/macOS/Android/QNX 등 각 OS GUID는 반드시 확인
  https://en.wikipedia.org/wiki/GUID_Partition_Table#Partition_type_GUIDs



3.1 MBR 와 GPT의 Partition Tool 

기존에 MBR의 경우fdisk라는 것을 이용하여 MBR Parttion table을 설정하고 이를 진행했지만, GPTgdisk,gparted 라는 Tool을 사용한다.

아래와 같이 사용되어지는 Tool이 변경되어진다. 
  1. MBR : fdisk
  2. GPT :  gdisk gparted

3.2 MBR과 GPT의 내부구성 

위에서 설명했듯이 MBR과 GPT도 중요한것은 내부구성을 파악하고 Partition을 어떻게 구분하는지 이부분을 알아보자.
아래의 wiki를 보면 대충이해는 가지만, 세부적인것은 더 자세히 알아봐야할 것 같다.

  • MBR(Master Boot Record) 사용 
기존부터 사용하던 방식으로, 4개의 Primary Partition 4개를 제공하고 확장한다면, Logical로 분할하여 확장하는 방식인 걸로 기억한다. 
아래의 LBA0에 모든 정보를 넣는 구조이다. 

나도 너무 오래되어서 까먹으며, 추후 다시 한번 자세히 정독하자 
  https://en.wikipedia.org/wiki/Master_boot_record
  https://ko.wikipedia.org/wiki/%EB%A7%88%EC%8A%A4%ED%84%B0_%EB%B6%80%ED%8A%B8_%EB%A0%88%EC%BD%94%EB%93%9C
  https://en.wikipedia.org/wiki/Disk_partitioning
  https://en.wikipedia.org/wiki/Extended_boot_record


  • GPT(GUID Partition Table) 사용
MBR부분 즉, LBA0은 이전 호환성을 위해 그대로 사용하고, LBA1 부터 GPT를 사용하게되면 아래와 같이 Patition Entry 가 마음대로 더 확장가능하다. 
우선 Primary GPT 와 Secodary GPT 기반으로 아래와 같이 볼 수 있고, 그 안에 각 Patition Entry Point가 존재한다. 
GUID 방식은 나도 구조를 이전에도 본적이 없어 아래의 Wiki로 파악을 하고 있다.
지금 봐도 좀 혼동이 된다.
  https://en.wikipedia.org/wiki/GUID_Partition_Table
  https://ko.wikipedia.org/wiki/GUID_%ED%8C%8C%ED%8B%B0%EC%85%98_%ED%85%8C%EC%9D%B4%EB%B8%94

5/21/2018

Ubuntu 16.04 LTS Version 설치 및 설정

1. Ubuntu 16.04 설치 

기존까지 Ubuntu 14.04 LTS 64bit 와 Ubuntu 12.04 LTS 64bit Version으로만 이용하다가 얼마전에 Ubuntu가 18.04 Release가 되었으며,
Ubuntu 16.04도 더이상은 최신 Version 이라고 할수 없을 것 같아 이를 설치해보고 현재 Ubuntu의 최신기능과 관련부분을 알아보도록 하자.

  https://www.ubuntu.com

  • 다양한 CPU지원 
Ubuntu가 Desktop 및 Server 와 IOT와 Cloud 로 분류가 되어서 나오고 있으며, x86을 벗어난 ARM64 까지 지원을 하고 있다.
집에 있는 Odroid 및 다른 EVM에서 여러번 봤지만 공식 홈페이지에서 보기는 이번이 처음이다.

  • Could 기능 및 OpenStack 지원 
Docker 기반으로 Container를 이용하여 쉽게 설치 지원이 가능하며, Kubernetes도 현재 지원이 되고 있는 상황이다
이미 Docker기능 및  Jenkins로 이전 Version에서 사용을 했지만, 공식사이트에서 보니 새롭다.

  https://www.ubuntu.com/containers


  • 설치문서 
  https://tutorials.ubuntu.com/tutorial/tutorial-install-ubuntu-desktop?_ga=2.9632694.2071981096.1526908963-614826485.1523275796#8


1.1 Download Ubuntu Image

Virtual Box 기반으로 최소의 용량을 사용하기 위해서 Desktop Version으로 설치진행

  • Download Mirror Site 
  https://launchpad.net/ubuntu/+cdmirrors?_ga=2.206215952.2071981096.1526908963-614826485.1523275796
  http://mirror.kakao.com/ubuntu-releases/16.04/


  ubuntu-16.04.4-desktop-amd64.iso


1.2  Virtual Box 기본설정 

Virtual Box 설치 및 설정은 크게 변경된 것이 없음으로 아래와 같이 동일하게 구성을 하자
  1. 기본 Ubuntu VDI 30G 새로생성 
  2. 생성된 VDI를  용량최소화위해 동적할당 설정 
  3. 네트워크->브리지 어댑터 (어댑터에 브리지) 설정 
  4. 메모리 설정 변경 (본인의 램의 절반수준)
  5. 공유폴더 설정 (추후 설정)
  6. 저장소 설정 IDE 에 Ubuntu Image ISO 추가 
  https://ahyuo.blogspot.kr/search/label/Virtual%20Box


2. Ubuntu 16.04 LTS 기본설치 

  • 기존과 동일하게 설정 
  1. 설치->언어 : 한국어 설정 
  2. 설치->키보드 배치 : 한국어- 한국어 (101/104키호환)
  3. 설치->이름/컴퓨터이름 설정 (계정설정)

설치후 자동으로 IDE의 Ubuntu Image ISO가 제거됨
이전과 다르게 다른 VDI를 자동으로 잡으며 이를 바로 볼수 있다.

  • 기본설치 후 Virtual Box 확장패키지 설치 
  1. 좌측의 맨위 검색에서 Terminal 검색 및 런처에 고정 
  2. 장치->게스트 확장 CD 이미지 삽입 
  3. 실행 및 암호입력 
  4. Ubuntu Reset 

  • Virtual Box Machine 부분 설정 
  1. 일반->고급  클립보드:  양방향 설정 
  2. 일반->고급 드래그 앤 드롭: 양방향 설정 

3. Ubuntu 기본환경 설정 

우선 좌측 상위 맨위 검색버튼을 눌러 Terminal을 검색하여 실행한 후 이를 런처에 고정하자.

  • SSH Server 설정
$ sudo apt-get install openssh-server
$ sudo apt-get install vim     // vim 방향키 문제가 있어 다시 설치 


  • SSH Client - Xshell4 에러 (Xshell6 변경)
등록 정보 ->SSH -> 보안 -> 암호화 설정  확인해보면 해결된다고 하는데, 설정을 봐도 크게 이상이 없다
현재 Xshell4의 보안 알고리즘이 지원을 못한다 그래서 Xshell 6으로 변경 후 아래의 증상은 해결되었다.


  https://www.netsarang.co.kr/forum/xshell/2155/%EC%95%94%ED%98%B8_%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98_%EC%97%90%EB%9F%AC


  • Samba 설정 
$ sudo apt-get install samba  

$ sudo smbpasswd -a jhlee 
New SMB password:
Retype new SMB password:
Added user jhlee.

$ sudo vi /etc/samba/smb.conf   
.......
#======================= Share Definitions =======================

[homes]
comment = Home Directories
valid users = %S
read only = no
;read/write 가능하게 설정하고 싶다면 아래와 같이 설정 
;read only = no or writable = yes 
;read only 만 할 경우는 yes로 설정 
browseable = Yes
;create mask = 0755
;directory mask = 0755

$ sudo /etc/init.d/smbd restart // Samba Server Restart!

본인이 편하다고 생각이 들면 윈도우 탐색기에서 네트워크 드라이브 연결 (옵션)


  • GIT 설치
$ sudo apt-get install git 


  • 공유폴더 설정
아래와 같이 권한을 설정을 한 후

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

Virtual Box->설정->공유폴더 설정


아래와 같이 공유 확인 가능

$ ls /media/sf_SHARED/
....


3.1 Virtual Box의 VDI 추가 및 확인  

  • 기존 사용하던 VDI 및 새로생성할 VDI 확인  
  1. Virtual Box에서 저장소->SATA에 기존에 사용중 VDI or 새로생성한 VDI를 추가 
  2. Ubuntu 로 부팅 후  각 개별 command로 확인 
  3. df -h 용량 확인 
  4. cat /proc/partitions  // VDI 정보확인 
  5. sudo fdisk -l  // VDI 정보 확인 


$ df -h    // 사용되는 Filesystem 용량을 간단히 확인 
Filesystem      Size  Used Avail Use% Mounted on
udev            971M     0  971M   0% /dev
tmpfs           200M  3.9M  196M   2% /run
/dev/sda1        28G  4.4G   22G  17% /
tmpfs           997M  212K  997M   1% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           997M     0  997M   0% /sys/fs/cgroup
SHARED          267G  169G   99G  64% /media/sf_SHARED
tmpfs           200M   40K  200M   1% /run/user/1000

$ cat /proc/partitions       // 새로 생성된 VDI 및 기존 VDI를 추가 했기때문에 이를 확인 
major minor  #blocks  name

  11        0    1048575 sr0
  11        1    1048575 sr1
   8        0   31457280 sda    // Ubuntu VDI 
   8        1   29359104 sda1
   8        2          1 sda2
   8        5    2095104 sda5
   8       16   31457280 sdb     // 새로 생성한  VDI 2번째 , 새로 생성하여 Partition을 잡아야한다. 
   8       32   31457280 sdc     // 기존에 존재하던 VDI 3번째  
   8       33   31456256 sdc1
   8       48   31457280 sdd     // 기존에 존재하던 VDI 4번째  
   8       49   31456256 sdd1
$ lsblk 


  • 새로생성한 VDI  Partition 설정 및 FS Format
상위에서 새로 추가된 VDI 설정확인

 $ sudo fdisk /dev/sdb // 상위에서 확인한 새로 추가된 VDI 
Welcome to fdisk (util-linux 2.27.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x9975df29.

Command (m for help): n     // Partion 추가 
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-62914559, default 2048): 
Last sector, +sectors or +size{K,M,G,T,P} (2048-62914559, default 62914559): 

Created a new partition 1 of type 'Linux' and of size 30 GiB.

Command (m for help): p    // 추가된 Partion 확인 
Disk /dev/sdb: 30 GiB, 32212254720 bytes, 62914560 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
Disklabel type: dos
Disk identifier: 0x9975df29

Device     Boot Start      End  Sectors Size Id Type
/dev/sdb1        2048 62914559 62912512  30G 83 Linux

Command (m for help): w  // 저장  
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

$ sudo mkfs.ext4 /dev/sdb1  // 새로 생성된 Partition 을 EXT4로 포맷 


3.2 추가된 VDI의 자동마운트 

UUID는 Partition을 생성을 한 후에 이 값을 얻을 수 있으므로,  다음과 같이 sdx1 x는 drive를 말하고 1은 Partition을 말한다.
만약 추가했지만, 잡히지 않는다면, 위의 fdisk에서 새로 잡도록하자.

$ ls -l /dev/disk/by-uuid/  
or 
$  sudo blkid
lrwxrwxrwx 1 root root 10  5월 23 21:06 35e74ae8-80c1-4832-bff6-674b4a93d6c2 -> ../../sdd1
lrwxrwxrwx 1 root root 10  5월 23 21:06 b771bdc7-e7f7-454b-a48a-df598833169d -> ../../sdc1
lrwxrwxrwx 1 root root 10  5월 23 21:06 ce6b9446-1e0f-4330-b7e9-923a06501ae9 -> ../../sda5
lrwxrwxrwx 1 root root 10  5월 23 21:06 ed70c2a9-0c95-4e4e-81d8-9bdf6adfe839 -> ../../sda1
lrwxrwxrwx 1 root root 10  5월 23 21:06 ff6cb88e-963c-4bf2-ab67-f24b9e7918b5 -> ../../sdb1

$ sudo vi /etc/fstab

UUID=ed70c2a9-0c95-4e4e-81d8-9bdf6adfe839 /               ext4    errors=remount-ro 0       1
# swap was on /dev/sda5 during installation
UUID=ce6b9446-1e0f-4330-b7e9-923a06501ae9 none            swap    sw              0       0

 
## 새로 mount할 곳 ,뒤에 옵션 현재는 동일하게 사용 중, errors=remount-ro 0       1 

##RaspberryPI                                                     
UUID=ff6cb88e-963c-4bf2-ab67-f24b9e7918b5 /home/jhlee/raspberrypi   ext4    errors=remount-ro     0       1 

- 저장후 재부팅 

$ sudo chown jhlee:jhlee -R raspberrypi 

이제 생성된 UUID기반으로 /etc/fstab에서 설정을 해주자.


  • 자세한 내용은 아래 참고 
  https://ahyuo.blogspot.kr/2013/12/virtual-box-ubuntu-1204.html

7/20/2015

Ubuntu 12.04 기본개발환경 설정 (SSH, GIT, TFTP, DHCP, NFS, SAMBA)

1. Ubuntu 설치 및 기본명령어 학습


  • Virtual Box 설정 
Virtual Box 기반으로 설치를 한다면 아래의 사이트를 참고
  https://ahyuo79.blogspot.com/2013/12/virtualbox.html
  https://ahyuo79.blogspot.com/search/label/Virtual%20Box

  • Download Image (Ubuntu Desktop 12.04)
  https://www.ubuntu.com


  • APT 명령사용법
apt-get 명령을 이용하여 쉽게 package를 설치하고 검색 및 제거가 가능하다.이에 관련된 명령어를 자세히 알아두자.

  https://ahyuo79.blogspot.com/2015/07/ubuntu.html


1.1 SSH  Server 설정

아래와 같이 SSH Server 와 Vim을 설치한다.

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


이미 SSH 설치 와 기본 Upgrade 및 기본 설정을 완료한다.
그리고, 네트워크 설정을 완료한다.

1.2  GIT 관련 기본설정

repo는 git 관련부분 참고
  • GIT 설치 

 $ sudo apt-get install git 


  • GIT 설정 및 Github 이용
Github 처음 이용시

$ echo "# ahyuo.github.io" >> README.md            // README.md 문서 작성 (Github 문서) 
$ git init                                               // Git 초기화 .git 생성  

$ git add README.md                                      // Index 에 README.md 문서 추가  
$ git add *.c                                            // Index 에 본인 소스 추가 


$ git config --global user.email "you@example.com"       // Github 설정 
$ git commit -m "first commit"                           // Local Repository 에 commit 하고 Label


  • Git를 이용하여 Remote에 Push 
이미 Local Repository 가 생성이 되어 있으므로 아래 방법으로 Update만 하면된다.

// Github에서 이미 Remote Repository를 생성 
$ git remote add origin https://github.com/JeonghunLee/ahyuo.github.io.git // Remote Repository 등록 
$ git push -u origin master                                                // Local Repository 와 Remote Repository Sync 
Username for 'https://github.com': 
Password for 'https://xxxxx@github.com':

  https://ahyuo79.blogspot.com/2014/07/git.html
  https://ahyuo79.blogspot.com/2014/07/git-for-window_20.html


2.  SDK/BSP에 필요 Package 설치

UBoot 및 Kernel 생성시 필요한 Package 그리고, 64bit용 OS를 사용할 경우 필요한 Package


2.1 U-Boot 관련 Tools 설치 
Kernel Image 생성시 mkimage를 찾지 못할 경우, u-boot tools 이 필요한 경우

$ dpkg -l | grep uboot-mkimage
$ sudo apt-get install uboot-mkimage                            // build 시 문제 발생 
$ sudo apt-get install u-boot-tools                             // uboot-mkimage  요즘 이 package로 대체  
$ sudo apt-get install xinetd tftpd nfs-kernel-server minicom build-essential libncurses5-dev uboot-mkimage autoconf automake 


2.2 Tool Chain 설치 (Cross Compiler) 

기본적으로 칩제조사에서 제공을 하지만 없을 경우, 아래와 같은 사이트에서 원하는
개발환경을 갖춘다.

  http://elinux.org/Toolchains

기본구성은 binutils과 gcc , 기본 library 및 추가 library들로 구성이 되며,
과거처럼 소스를 받아 빌드해서 만들지 않기에 아래의 사이트에서 Prebuilt toolchain을 down 받아 설치하면된다.

  • Prebuilt toolchains
  * Codesourcery version (Window지원)
  https://www.mentor.com/embedded-software/codesourcery

  * Linaro version
  https://wiki.linaro.org/WorkingGroups/ToolChain
   
  • GCC 관련 매뉴얼 
   빌드 옵션 및 새로운 기능확인 


2.3 Ubuntu 12.04 64bit OS 사용할 경우 추가 설치 
Ubuntu OS 64bit일 경우 32bit version과 호환성을 위해서 Package 설치하자
설치전 필요한 패키지들 아래의 사이트에서 각 OS에 맞게 확인하고 먼저 설치하자.


$sudo apt-get install ia32-libs libgnomevfs2-0:i386 liborbit2:i386 libjpeg62:i386 

   ** libgnomevfs2-0:i386 liborbit2:i386 ( CCS V6.0 이상 경우)


Ubuntu Version 별로 설치 방법이 다르기때문에, 아래의 사이트를 반드시 참조를 하자.


  • Sitrara SDK
  http://processors.wiki.ti.com/index.php/Sitara_Linux_SDK_64_Bit_Ubuntu_Support


  • Ubuntu의 Question
  http://askubuntu.com/questions/297151/how-to-run-32-bit-programs-on-a-64-bit-system


3. DHCP Server 설치 및 설정

나의 경우는 DHCP Server가 필요가 없고, 대신 공유기에서 DHCP를 설정하여 사용하기 때문에 이부분은 옵션


$ sudo apt-get install isc-dhcp-server
$ sudo vi /etc/default/isc-dhcp-server
$ sudo cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bak 


3.1 /etc/dhcpd.conf 설정

$ sudo vi /etc/dhcp/dhcpd.conf

subnet 192.168.1.0 netmask 255.255.255.0 {
#       range dynamic-bootp 192.168.1.90 192.168.1.95;
        option routers                  192.168.1.1;
        option subnet-mask              255.255.255.0;
        option broadcast-address        192.168.1.255;

# IP address of TFTP server  , default ,it's me 
#       next-server 192.168.0.1 ;

        default-lease-time 86400;   #    86400/3600 = 24 hour
        max-lease-time 86400;       #    86400/3600 = 24 hour

        host dm385 {
                hardware ethernet 32:30:3a:63:64:3a;
                fixed-address 192.168.1.4;
                option root-path "/home/jhlee/dm8127/dm385/Source/ipnc_rdk/target/filesys";
#               option root-path "192.168.1.4:/home/jhlee/dm8127/dm385/Source/ipnc_rdk/target/filesys";
                filename "/tftpboot/dm385/uImage";
       }
}


  https://help.ubuntu.com/community/isc-dhcp-server
  http://www.bctes.com/dhcpd.conf.5.html
  http://linux.die.net/man/5/dhcp-options


3.2 DHCP Server 동작방법


$ sudo service isc-dhcp-server restart
$ sudo service isc-dhcp-server start
$ sudo service isc-dhcp-server stop

  https://help.ubuntu.com/community/isc-dhcp-server


3.3 U-BOOT 설정 및 TEST (Target Board)

Target Board에서 U-Boot를 설정을 해보고, 이를 제조사의 SDK 설치 한 다음
U-BOOT 설정을 하고 TEST를 해보자.

A. Target Board의 U-BOOT CONFIG

U-BOOT의 CONFIG에서 BOOTP를 이용하여, 받고 싶은 파라메터 설정 및 확인
이를 이용하여 쉽게 DHCP Server에서 설정을 하자 (가능할 경우만)

$ vi include/configs/dm385_ipnc.h 

#define CONFIG_BOOTP_DEFAULT
#define CONFIG_BOOTP_DNS
#define CONFIG_BOOTP_DNS2
#define CONFIG_BOOTP_SEND_HOSTNAME
#define CONFIG_BOOTP_GATEWAY
#define CONFIG_BOOTP_SUBNETMASK

#define CONFIG_BOOTP_BOOTPATH

관련소스
       vi net/bootp.c


B. Target Board의 U-BOOT 의 환경설정 


  • DHCP 명령으로 BOOTP를 진행한다고 할 경우
DHCP Server에서 BOOTP를 설정하여 쉽게 진행이 가능하겠지만, Network 여건이 그렇지 못한 경우가 많다.


DM388_IPNC# dhcp 
DM388_IPNC#  bootp 

  • Static IP 설정 및 Network 정보 직접설정.
DHCP Server를 사용하면 아래의 정보들을 쉽게 설정하겠지만,
Network에서 DHCP Server가 충돌나는 경우가 많기 때문에 아래와 같이 직접 설정.

DM388_IPNC# setenv ipaddr 192.168.1.102
DM388_IPNC# setenv netmask 255.255.255.0
DM388_IPNC# setenv serverip 192.168.1.100 
DM388_IPNC# setenv rootpath /home/jhlee/dm8127/dm385/Source/ipnc_rdk/target/filesys
DM388_IPNC# saveenv
DM388_IPNC# setenv nfsargs 'root=/dev/nfs rw nfsroot=${serverip}:${rootpath}' 

DM388_IPNC# ping 192.168.1.100 



  • UBOOT 관련 설정 
  https://ahyuo79.blogspot.com/search/label/Uboot
  https://www.denx.de/wiki/DULG/UBootScripts


  • UBOOT Linux BOOT Args 
  http://www.denx.de/wiki/view/DULG/LinuxBootArgs
  http://www.denx.de/wiki/view/DULG/UBootEnvVariables

  • DHCP-PC-TEST방법
  https://rbgeek.wordpress.com/2012/04/29/how-to-install-the-dhcp-server-on-ubuntu-12-04lts/


4. TFTP Server 설정


TFTP Server Package는 여러 종류가 있으며, 가장 기본 되는 Xinet damon에서 관리하는 TFTP 설치하자.

* 다른 TFTP-HPA Package와 같이 설치할 경우, 문제가 발생할 수 있으니, 지우고 설치하자.
  (sudo apt-get remove tftpd-hpa)


$ sudo apt-get install xinetd tftpd tftp
$ sudo mkdir /tftpboot
$ sudo chmod -R 777 /tftpboot


  • xinetd(daemon) 설정 


$ sudo vi /etc/xinetd.d/tftpd    // 새파일 생성 
##
## 
## comments 

service tftp

{
    protocol            = udp
    port                    = 69
    socket_type     = dgram
    wait                   = yes
    user                  = nobody
    server               = /usr/sbin/in.tftpd
    server_args     = /tftpboot
    disable             = no
}

$ sudo /etc/init.d/xinetd restart


4.1 How To TEST 

A. How to do test on PC

$ ls /tftpboot
zImage
$ tftp 192.168.1.100
tftp> ?
Commands may be abbreviated.  Commands are:

connect  connect to remote tftp
mode     set file transfer mode
put      send file
get      receive file
quit     exit tftp
verbose  toggle verbose mode
trace    toggle packet tracing
status   show current status
binary   set mode to octet
ascii    set mode to netascii
rexmt    set per-packet retransmission timeout
timeout  set total retransmission timeout
?        print help information
tftp> get zImage
Received 4382621 bytes in 1.5 seconds
tftp> quit


B. How to do test on EVM (Target Board)

U-Boot에서 tftpboot or tftp로 down을 받아본다.

만약 DHCP Server를 설정하지 않았다면, 아래와 같이 Network를 설정해준다.

$ setenv ipaddr 192.168.1.102
$ setenv netmask 255.255.255.0
$ setenv serverip 192.168.1.100 

$ tftp 0x8100000 am437x/zImage  

C. TFTPBOOT on EVM (Target Board)

TFTP을 이용하여, BOOT하기,
기존의 NAND BOOT와 다르며, 아래와 같이 Load Address를 알아내어, 아래와 같이 계산한다.

        Load address - uImage header size(64bytes)
        0x80007FC0 = 0x80008000 - 0x040

$ setenv bootcmd 'nboot 0x80700000 0 0x500000;bootm 0x80700000'                           ### NAND BOOT
$ setenv bootcmd 'tftpboot 0x80007FC0 dm368ipnc/uImage_ipnc_dm368;bootm 0x80007FC0;'      ### TFTP BOOT

### TFTPBOOT & NETWORK SETTING
$ setenv ipaddr 192.168.1.102
$ setenv netmask 255.255.255.0
$ setenv serverip 192.168.1.100 
$ tftpboot 0x80007FC0 dm368ipnc/uImage_ipnc_dm368
$ bootm 0x80007FC0

Kernel Log 확인

## Booting kernel from Legacy Image at 80007fc0 ...
   Image Name:   Linux-2.6.37_IPNC_DM368_5.1.0
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    4114688 Bytes =  3.9 MB
   Load Address: 80008000
   Entry Point:  80008000
   Loading Kernel Image ... OK


5. NFS Server 설정


5.1  KERNEL NFS CONFIG (Target Board)

Target Board에서 Kernel이 NFS Mount가 될수 있도록 Kernel config를 수정을 해주자.
  • filesystem->Network file system

 KERNEL CONFIG
#
# Pseudo filesystems
#
......
CONFIG_NETWORK_FILESYSTEMS=y
CONFIG_NFS_FS=y
CONFIG_NFS_V3=y
# CONFIG_NFS_V3_ACL is not set
CONFIG_NFS_V4=y
# CONFIG_NFS_V4_1 is not set
CONFIG_ROOT_NFS=y
# CONFIG_NFS_USE_LEGACY_DNS is not set
CONFIG_NFS_USE_KERNEL_DNS=y
# CONFIG_NFS_USE_NEW_IDMAPPER is not set
# CONFIG_NFSD is not set
CONFIG_LOCKD=y
CONFIG_LOCKD_V4=y
CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=y
CONFIG_SUNRPC_GSS=y
CONFIG_RPCSEC_GSS_KRB5=y
#
# Kernel hacking
#
..........
CONFIG_DEBUG_FS=y
CONFIG_DEBUG_KERNEL=y
CONFIG_EARLY_PRINTK=y


  http://www.tldp.org/HOWTO/NFS-Root-3.html

5.2  NFS Server 설치


$ sudo apt-get install nfs-common nfs-kernel-server portmap

  • exports 설정방법

$ sudo vi /etc/exports

#
#/home/jhlee/am437x/targetNFS *(rw,nohide,insecure,no_subtree_check,async,no_root_squash)
#

## For AM437x 
/home/jhlee/am437x/works/targetNFS *(rw,nohide,insecure,no_subtree_check,async,no_root_squash)

## For DM8127-IPNC
/home/jhlee/dm8127/work/Source/ipnc_rdk/target/filesys *(rw,no_root_squash,no_all_squash,sync)
/home/jhlee/dm8127/dm385/Source/ipnc_rdk/target/filesys *(rw,no_root_squash,no_all_squash,sync)

## For DM368-IPNC
/home/jhlee/dm368/mt5/Source/ipnc_rdk/target/filesys_dm368 *(rw,no_root_squash,no_all_squash,sync)



  http://linuxconfig.org/how-to-configure-nfs-on-linux

  • 동작방법
$ sudo /etc/init.d/nfs-kernel-server restart
$ sudo /etc/init.d/portmap restart

  • U-BOOT 설정시 Debugging 및 TIP (Target board)
아래는 DM368 설정의 예이다.

  1. NFS Debugging 원하면,  nfsrootdebug
  2. Mount 시점을 늦추고 싶다면, rootdelay=4  사용하자. 
  3. earlyprintk를 사용하면, KERNEL CONFIG의 Kernel hacking->Early printk 체크를 했다면, 사용하자. 
  4. NFS Mount를 하는데, 제대로 되지 않는다면, ip=192.168.1.168 network 설정확인하자 
*earlyprintk일 경우, 초반에 Kernel이 멈출 경우 유용하다.


$setenv bootargs 'console=ttyO0,115200n8 root=/dev/nfs nfsrootdebug rw rootdelay=10 mem=80M vram=4M notifyk.vpssm3_sva=0xBFD00000 nfsroot=192.168.1.100:/home/jhlee/dm8127/dm385/Source/ipnc_rdk/target/filesys,nolock eth=32:30:3a:63:64:3a ip=192.168.1.168 cmemk.phys_start=0x85000000 cmemk.phys_end=0x89000000 cmemk.allowOverlap=1 earlyprintk';

아래는 nfsrootdebug을 이용한 debugmsg이며, 이렇게 안될 경우, rootdelay 사용해야함.

NFS: MNTPATH: '/home/jhlee/dm8127/dm385/Source/ipnc_rdk/target/filesys'
NFS: sending MNT request for 192.168.1.100:/home/jhlee/dm8127/dm385/Source/ipnc_rdk/target/filesys
PHY: 0:00 - Link is Up - 1000/Full
NFS: failed to create MNT RPC client, status=-113
NFS: unable to mount server 192.168.1.100, error -113
VFS: Unable to mount root fs via NFS, trying floppy.
VFS: Cannot open root device "nfs" or unknown-block(2,0)
Please append a correct "root=" boot option; here are the available partitions:


*bootargs 설정
  https://www.kernel.org/doc/Documentation/filesystems/nfs/nfsroot.txt


5.3 NFS PC-TEST

  • rpcinfo를 이용하여 nfs 동작확인 

$ rpcinfo -p | grep nfs
    100003    2   tcp   2049  nfs
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100003    2   udp   2049  nfs
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs

$ rpcinfo -p | grep portmap
    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper


  • KERNEL CONFIG 확인 

$ cat /proc/filesystems | grep nfs
nodev nfs
nodev nfs4
nodev nfsd


  • PC에서 NFS TEST 
ubuntu 에서 직접 TEST 진행

$ mount -t nfs -o nolock 192.168.1.100:/home/jhlee/dm8127/dm385/Source/ipnc_rdk/target/filesys /mnt/net 

$ umount /mnt/net // unmount 

$ ls /sbin/mount.   // mount 지원되는 filesystem 확인 
mount.fuse        mount.nfs         mount.ntfs        mountall
mount.lowntfs-3g  mount.nfs4        mount.ntfs-3g



6. SAMBA 관련설정


6.1 SAMBA Package 설치 및 설정 

아래와 같이 Package를 설치 해주고 Samba 관련설정을 해주자.

$ sudo apt-get install samba

// sudo smbpasswd -a username  // 자신의 username 

$ sudo smbpasswd -a jhlee     // 나의 username 
[sudo] password for jhlee: 
New SMB password:
Retype new SMB password:


$ sudo vi /etc/samba/smb.conf 
; 아래와 같이 homes 추가하면 자동으로 user 관리가 되며, tftpboot 인경우는 제가 따로 필요해서 추가했습니다. 
; smb.conf에서 ; 은 주석입니다.
 
[homes]
comment = Home Directories
valid users = %S
read only = Yes
;read write 할 경우 아래와 같이 no 
;read only = no or writable = yes 
browseable = Yes
;create mask = 0755
;directory mask = 0755

[tftpboot]
comment = TFTP Server Images
path = /tftpboot
read only = Yes
guest ok = yes
;valid users = jhlee
browseable = yes

$ sudo /etc/init.d/smbd restart // Samba Server Restart!


6.2 Samba Server 동작 확인 및 연결제거 방법

상위에서 설치를 했으니,  Samba Server의 동작을 각각 Linux 및 Window에서 확인하자.
smbclient를 이용하여 아래와 같이 Samba의 정보를  상태를 확인하고 제어가 가능하다.
만약 command가 없다면 상위 apt-get install로 설치하면된다.

  • Samba Server  확인 (Linux)
$ smbclient -U jhlee //192.168.1.100/homes
WARNING: The "syslog" option is deprecated
Enter jhlee's password: 
Domain=[WORKGROUP] OS=[Windows 6.1] Server=[Samba 4.3.11-Ubuntu]
smb: \> ls
...          // 상위 PATH로 mount 된 File 정보가 출력된다. 
...
smb: \> help  // smbclient에서 제공하는 기능을 볼수 있으며, File 생성/수정을 할 수 있다. 
?              allinfo        altname        archive        backup         
blocksize      cancel         case_sensitive cd             chmod          
chown          close          del            dir            du             
echo           exit           get            getfacl        geteas         
hardlink       help           history        iosize         lcd            
link           lock           lowercase      ls             l              
mask           md             mget           mkdir          more           
mput           newer          notify         open           posix          
posix_encrypt  posix_open     posix_mkdir    posix_rmdir    posix_unlink   
print          prompt         put            pwd            q              
queue          quit           readlink       rd             recurse        
reget          rename         reput          rm             rmdir          
showacls       setea          setmode        scopy          stat           
symlink        tar            tarmode        timeout        translate      
unlock         volume         vuid           wdel           logon          
listconnect    showconnect    tcon           tdis           tid            
logoff         ..             !              
smb: \> exit  // smbclient에서 종료하고 나오자. 


  • Window 탐색기에서 Network Driver로 연결 
윈도우 탐색기를 이용하여 네트워크 드라이버로 연결해보자.
잠시 사용할게 아니라면, 가능하면 네트워크 드라이버를 이용하고 연결하고 사용하는 게 편하다.
컴퓨터에서 우측버튼을 누른후  네트워크 드라이버 연결 선택
이미 네트워크 드라이버를 생성했다면 제거 또한 편하게 탐색기에서 가능하다.




Window의 cmd를 이용하여 현재 Network 연결상태를 가능한데, 만약 네트워크 드라이버를 이용하지 않는다면 아래와 같이 연결상태를 확인 가능하다.

  • Samba 연결상태확인  (Window)
일반적인 경우

C:\Users\JHLEE>net use
새 연결 정보가 저장되지 않습니다.
상태         로컬      원격                      네트워크

---------------------------------------------------------------------------
연결 끊김              \\192.168.1.100\homes     Microsoft Windows Network
연결 끊김              \\192.168.1.100\jhlee     Microsoft Windows Network
연결 끊김              \\192.168.1.100\IPC$      Microsoft Windows Network


네트워크 드라이버로 연결된 경우

C:\Users\JHLEE>net use
새 연결 정보가 저장됩니다.


상태         로컬      원격                      네트워크

-------------------------------------------------------------------------------
OK           Y:        \\192.168.1.101\homes     Microsoft Windows Network
사용 못함    Z:        \\192.168.1.100\homes     Microsoft Windows Network
명령을 잘 실행했습니다.

  • Window에서 Samba 연결제거
네트워크 문제가 있다면 이를 삭제하고 이를 재 연결을 해보자.

C:\Users\JHLEE>net use \\192.168.1.100\homes /delete  


6.3 Samba 기타 문제사항 

  • 문제사항-1 
만약 상위 설치도중(apt-get install samba)  웹주소가 제대로 안된다면,반드시 상위 apt-get update 이용후 다시 시도하자

  • 문제사항-2 
연결이 잠시는 되고 디렉토리도 들어가지만, 잠시후 아래 Message와 함께 접속이 끊기는 현상 apt-get upgrade 후 다시 시도



  http://idchowto.com/?p=34206
  http://nicejhong.tistory.com/entry/Ubuntu-Getting-Started-with-Virtual-box

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