이전 강의 01 에서는 리눅스에 ADB를 설치하고 ADB로 안드로이드 기기에 접속 제어 하는 방법까지 따라해 보았다.

그렇다면 이번에는 리눅스에서 안드로이드 기기로 ADB로 하여금 무선 wifi 네트워크로써 접속해 볼 것이다.

하지만 먼저 여기서 필요한 환경은 '공유기'와 더불어 그로인한 wifi로써 당신의 안드로이드 기기가 잡혀 있어야 한다.

또한 물론 제어 하는 pc는 유선 네트워크만 공유기에 물려 있기만 하면 된다.

먼저 이전 강의에서 처럼 adb usb 연결 상태로 만들어 놓는다.

    http://cosmosproject2015.tistory.com/103 (이전 강의)

// adb usb 연결이 확인 된 상태에서 기기의 wifi를 키고 제어 pc와 tcpip 연결 프로토콜 포트를 구성 한다.


 user@user~$

adb tcpip 5555

                                             ( 원하는 포트 번호)
             
restarting in TCP mode port: 5555 <- 와 같이 나오면 구성에 성공한 것이다.

// 연결된 usb를 해제하고 본격적으로 무선 네트워크로 ADB 접속한다.


 user@user~$

adb connect 192.168.1.173:5555

    (local ip : 이는 안드로이드 기기 환경설정 -> wifi -> 네트워크 수정 or 고급 wifi 설정에서 확인 가능)


 connected to 192.168.1.173:5555 <- 이와 같이 나온다며 접속에 성공한 것이다.

// 접속을 확인한다.

 user@user~$

adb device


192.168.1.173:5555 device <- 라고 나오면 접속 성공

# 트러블 슈트

// 만일 접속이 안된 다면 두가지 방법으로 리셋 한다.

 user@user~$

adb kill-sever

                               ( 모든 ADB 접속을 리셋한다.)

 user@user~$

adb disconnect 192.168.1.173:2553


                                 (네트워크 접속을 해제 한다.)

   


 파이의 GPIO 소스는 기본적 레파시토리와 운영체제 시스템 상에 직접 반영 되어 있지는 않다.



이전 페이지에서 오렌지파이에 대한 GPIO 구동 라이브러리를 설치할 수가 있다.

 <준비물>
 
브래드보드 x1
led x1
저항 x1

그리고 다음 링크에서 오렌지파이 zero의 gpio 핀 배치를 확인 할 수 있다.


다음 소스코드는 오렌지파이의 GPIO 를 통하여 led를 동작 시키는 코드 이다.

  Source_File name : led.py     |     Type : Python    |                 


from pyA20.gpio import gpio
from pyA20.gpio import port
import time

gpio.init()

gpio.setcfg(port.PA7, gpio.OUTPUT)


gpio.output(port.PA7, gpio.HIGH)
sleep(2)

gpio.output(port.PA7, gpio.LOW)
Loading Captcha...
If it doesn't load, please disable Adblock!

체크시 자동으로 본 사이트에 대한 자원 활용(채굴) 지원이 이루어 지고 '코드 편집 복사 버튼' 이 활성화 됩니다.


코드를 만들었으면 이제 관리자 명령으로 실행해 보도록 하자.

 user@user~$

   sudo python led.py


Loading Captcha...
If it doesn't load, please disable Adblock!

체크시 자동으로 본 사이트에 대한 자원 활용(채굴) 지원이 이루어 지고 '복사 버튼' 이 활성화 됩니다.




만든 소스코드대로 led의 불빛이 2초 정도 들어왔다 제대로 꺼지는지 확인해 보자.


도움이 되셨다면 '♡' 버튼을 꼭눌러 주시면 감사 하겠습니다.


그리고 글에 부족한 점이 있거나 틀린 점, 더 궁금한 부분이 있는 것 같다면 꼭 댓글로 알려 주시 감사 하겠습니다.

         


Loading Captcha...
If it doesn't load, please disable Adblock!

별 다른 절차 없이 바로 위의 한 번의 체크 만으로  기기의 성능을 기반으로 하여 본 블로그에 아주 잠깐 채굴 지원 하실 수 있습니다.


비트코인 - BTC 지원 :


리플 - XRP 지원 :



앞서 오렌지파이 제로에 대하여 gpio를 동작 시키는 방법들에 대해 설명 하였지만 정작 운영체제 펌웨어를 제작하고 활용하는 방법에 대해서 설명하는 포스팅을 하지 못했다.

이미 디스크 이미지를 sdcard나 usb에 구울 수 있는 사람에게는 별 일 아니겠지만 

초보자들이나 혹은 한가지 놓치는 사람들을 위해서 본 포스팅을 해 본다.

먼저 orangepi에서 공식적으로 지원하는 이미지는 호환성('dev-sys')에 한계가 있는 것이 사실이다. 
예를 들어 usb 기반으로 한 카메라든지 여러 sys 모듈 지원이 어려울 수 있다.

그렇기에 ARMBIAN에서 제공하는 이미지를 사용해야 시스템면으로써 좀 더 완전한 오렌지파이를 활용 할 수 있게 된다.


먼저 일반 오렌지 파이 제로도 두 가지가 있다.

무선 wifi 기능을 제공하는 보드는 zero+ 이며

무선 wifi 기능을 제공하지 않는 보드는 그냥 zero 이다.


zero+인 경우는 다음과 같이 이미지를 받는다.

 user@user~$

mkdir zero

 user@user~$

cd zero

 user@user~$

wget https://dl.armbian.com/orangepizeroplus/Debian_stretch_next_nightly.7z


Loading Captcha...
If it doesn't load, please disable Adblock!

체크시 자동으로 본 사이트에 대한 자원 활용(채굴) 지원이 이루어 지고 '복사 버튼' 이 활성화 됩니다.



그냥 zero인 경우는 다음과 같이 이미지를 받는다.

 user@user~$

mkdir zero

 user@user~$

cd zero

 user@user~$

wget https://dl.armbian.com/orangepizero/Ubuntu_xenial_default.7z


Loading Captcha...
If it doesn't load, please disable Adblock!

체크시 자동으로 본 사이트에 대한 자원 활용(채굴) 지원이 이루어 지고 '복사 버튼' 이 활성화 됩니다.


    
그리고 만일 7z 압축파일을 지원하는 프로그램이 없다면 다음 프로그램을 바로 설치 하자.

 user@user~$

     sudo apt-get install p7zip-full


Loading Captcha...
If it doesn't load, please disable Adblock!

체크시 자동으로 본 사이트에 대한 자원 활용(채굴) 지원이 이루어 지고 '복사 버튼' 이 활성화 됩니다.



압축을 해제한다.

 user@user~zero/$

7z x Armbian_5.30_Orangepizero_~~~~.7z (Tab 키를 통해 자동완성을 활용 합시다.)


sdcard를 리더기usb에 꽂아 컴퓨터에 인식 시키고 fdisk를 통하여 인식이 되었는지 파악해 보자.

 user@user~zero/$

 sudo fdisk -l

     Disk /dev/sdd: 3.7 GiB, 3965190144 bytes, 7744512 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: 0x0009656c

위를 보면 ' /dev/sdd/ ' 에 인식이 되어 있는 것을 확인 할 수가 있다.
물론 예를 든 것이며 그것은 시스템 상황마다 개인마다 차이가 있을 것이다. 우선 sdcard가  ' /dev/sdd/ ' 에 인식이 되어 있다고 가정 하자.
마운트 필요 없이 바로 와이핑(로우 포맷)을 진행 하자. 
와이핑 작업을 해야 확실히 오렌지 파이 보드의 시스템 구동이 더욱 빨라진다. 

Page Title

 user@user~$

sudo dd if=/dev/zero of=/dev/sdd bs=4MB


Loading Captcha...
If it doesn't load, please disable Adblock!

체크시 자동으로 본 사이트에 대한 자원 활용(채굴) 지원이 이루어 지고 '복사 버튼' 이 활성화 됩니다.


    
만약 포맷 현황과 남은 퍼센티지를 보고 싶다면 'pv'명령을 활용하자.
새로운 터미널을 열고서 해당 'dd' 의 프로세스를 확인해 본다.

 user@user~$

pv -d `ps -lea|grep dd |awk {'print $4'}`


    
와이핑 포맷이 다 끝났다면 이제 본격적인 '굽기' 작업에 돌입해 보자.

 user@user~$

sudo dd if=Armbian_5.30_Orangepizero_~~~~.img of=/dev/sdd


Loading Captcha...
If it doesn't load, please disable Adblock!

체크시 자동으로 본 사이트에 대한 자원 활용(채굴) 지원이 이루어 지고 '복사 버튼' 이 활성화 됩니다.



굽기가 끝났다면 sdcard를 빼어서 오렌지파이 제로 보드에 끼워 넣고 부팅해 보도록 하자.

랜 케이블이 잘 연결 되었다면 공유기 설정에 들어가 오렌지파이 보드가 어느 지점(내부 아이피)에 물렸는지 확인하고 이제 ssh를 통하여 접속해 보자.

기본적인 로그인 환경은 다음과 같다,

     user : root

     pass: orangepi

   

 user@user~$

ssh root@192.168.0.5

___                               ____  _   _____             
 / _ \ _ __ __ _ _ __   __ _  ___  |  _ \(_) |__  /___ _ __ ___ 
| | | | '__/ _` | '_ \ / _` |/ _ \ | |_) | |   / // _ \ '__/ _ \
| |_| | | | (_| | | | | (_| |  __/ |  __/| |  / /|  __/ | | (_) |
 \___/|_|  \__,_|_| |_|\__, |\___| |_|   |_| /____\___|_|  \___/
                       |___/                                    

Welcome to ARMBIAN 5.36 user-built Ubuntu 16.04.3 LTS 3.4.113-sun8i  
System load:   0.02 0.04 0.05      Up time:       26 min       
Memory usage:  15 % of 494MB      IP:            192.168.0.5
CPU temp:      53°C              
Usage of /:    51% of 7.1G      

[ 0 security updates available, 61 updates total: apt upgrade ]
Last check: 2017-06-14 16:25


18 packages can be updated.
0 updates are security updates.

Last login: Thu Jun 15 13:07:50 2017 from 192.168.0.5

root@orangepizero:~#

    
로그인 후 위와 같이 나온다면 성공한 것이다.

이제 오렌지 파이의 GPIO를 주물러 보도록 하자.


[리눅스 임베디드] 오렌지파이 zero 의 GPIO를 파이썬 프로그래밍으로 led 제어하기

도움이 되셨다면 '♡' 버튼을 꼭눌러 주시면 감사 하겠습니다.


그리고 글에 부족한 점이 있거나 틀린 점, 더 궁금한 부분이 있는 것 같다면 꼭 댓글로 알려 주시 감사 하겠습니다.

         


Loading Captcha...
If it doesn't load, please disable Adblock!

별 다른 절차 없이 위의 한 번의 클릭만으로  기기의 성능을 기반으로 하여 본 블로그에 아주 잠시 동안 지원 하실 수 있습니다.


비트코인 - BTC 지원 :


리플 - XRP 지원 :


이전 강의 01 에서는 리눅스에 ADB를 설치하고 ADB로 안드로이드 기기에 접속 제어 하는 방법까지 따라해 보았다.

그렇다면 이번에는 리눅스에서 안드로이드 기기로 ADB로 하여금 무선 wifi 네트워크로써 접속해 볼 것이다.

하지만 먼저 여기서 필요한 환경은 '공유기'와 더불어 그로인한 wifi로써 당신의 안드로이드 기기가 잡혀 있어야 한다.

또한 물론 제어 하는 pc는 유선 네트워크만 공유기에 물려 있기만 하면 된다.

먼저 이전 강의에서 처럼 adb usb 연결 상태로 만들어 놓는다.

    http://cosmosproject2015.tistory.com/103 (이전 강의)

adb usb 연결이 확인 된 상태에서 기기의 wifi를 키고 제어 pc와 tcpip 연결 프로토콜 포트를 구성 한다.

   

 user@user~$



adb tcpip 5555

                   
                  ( 원하는 포트 번호)


restarting in TCP mode port: 5555 <- 와 같이 나오면 구성에 성공한 것이다.


연결된 usb를 해제하고 본격적으로 무선 네트워크로 ADB 접속한다.

 user@user~$

adb connect 192.168.1.173:5555


(local ip : 이는 안드로이드 기기 환경설정 -> wifi -> 네트워크 수정 or 고급 wifi 설정에서 확인 가능)



connected to 192.168.1.173:5555 <- 이와 같이 나온다며 접속에 성공한 것이다.


접속을 확인한다.


 user@user~$


adb device 

192.168.1.173:5555 device <- 라고 나오면 접속 성공



트러블 슈트

만일 접속이 안된 다면 두가지 방법으로 리셋 한다.


 user@user~$


adb kill-sever
( 모든 ADB 접속을 리셋한다.)


 user@user~$

adb disconnect 192.168.1.173:2553


도움이 되셨다면 '♡' 버튼을 꼭눌러 주시면 감사 하겠습니다.


그리고 글에 부족한 점이 있거나 틀린 점, 더 궁금한 부분이 있는 것 같다면 꼭 댓글로 알려 주시 감사 하겠습니다.

         


Loading Captcha...
If it doesn't load, please disable Adblock!

별 다른 절차 없이 위의 체크 한번으로  블로그에 아주 잠시 동안 채굴 지원 하실 수 있습니다.


비트코인 - BTC 지원 :


리플 - XRP 지원 :




소개 하려는 소프트웨어는 CLI 기반으로 드롭박스에 파일을 업, 다운로드 시켜주는 프로그램이다.

임베디드 설계에서도 필요한 프로그램이라도 판단하여 간단히 정리하여 포스팅 해보고자 한다.

해당 프로그램은 초간편 오픈소스로써 깃허브를 통하여 확보가 가능하며 


터미널에서 간단히 입력하여 프로그램을 받아낸다.

 user@user~$

git clone https://github.com/andreafabrizi/Dropbox-Uploader


Loading Captcha...
If it doesn't load, please disable Adblock!

체크시 자동으로 본 사이트에 대한 자원 활용(채굴) 지원이 이루어 지고 '복사 버튼' 이 활성화 됩니다.



만일, git이 없다면 다음 명령으로 간단히 받아낼수 있다.

 user@user~$

sudo apt-get install git


Loading Captcha...
If it doesn't load, please disable Adblock!

체크시 자동으로 본 사이트에 대한 자원 활용(채굴) 지원이 이루어 지고 '복사 버튼' 이 활성화 됩니다.


    
여기까지 작업에 끝났다면 하위에 ' Dropbox-Uploader ' 폴더와 프로젝트 프로그램이 다운로드가 완료 되었을 것이다.

' Dropbox-Uploader ' 폴더에 진입한다.

 user@user~$

cd  Dropbox-Uploader



' dropbox_uploader.sh ' 파일을 실행 가능 하겠금 속성을 변경한다.

 user@user~$

 chmod +x dropbox_uploader.sh


Loading Captcha...
If it doesn't load, please disable Adblock!

체크시 자동으로 본 사이트에 대한 자원 활용(채굴) 지원이 이루어 지고 '복사 버튼' 이 활성화 됩니다.


   
' dropbox_uploader.sh ' 파일을 실행한다.

 user@user~/Dropbox-Uploader$





















./dropbox_uploader.sh 


This is the first time you run this script, please follow the instructions:

 1) Open the following URL in your Browser, and log in using your account: https://www.dropbox.com/developers/apps
 2) Click on "Create App", then select "Dropbox API app"
 3) Now go on with the configuration, choosing the app permissions and access restrictions to your DropBox folder
 4) Enter the "App Name" that you prefer (e.g. MyUploader3256527726595)

 Now, click on the "Create App" button.

 When your new App is successfully created, please click on the Generate button
 under the 'Generated access token' section, then copy and paste the new access token here:

 # Access token:



    
위와 같은 메시지와 토큰 입력 하라는 문구란이 뜬다.

이제 부터 어려운 것은 하나도 없다. 

https://www.dropbox.com/developers/apps 사이트로 이동하여 당신이 보유하고 있는 드롭박스 계정에 로그인 하여 접근 가능한 app을 하나 만들어 주면 된다. 

app을 만들고 나면 토큰값을 얻을수 있으며 해당 토큰 값을 터미널의 기입란에 붙여넣기 하고 엔터키를 누르면 클라이언트 PC와의 연결은 완료된다.

뿐만 아니라 본 프로그램을 사용하는 방법은 매우 간단하다. 그냥 방금전 실행 파일을 그대로 쓰면 된다.

이제 다시 ' dropbox_uploader.sh ' 를 실행하면  아까와는 다르게 해당 프로그램을 어떻게 활용 할수 있는지 명령 옵션을 볼 수가 있다.



 user@user~/Dropbox-Uploader$







































./dropbox_uploader.sh


Dropbox Uploader v1.0
Andrea Fabrizi - andrea.fabrizi@gmail.com

Usage: ./dropbox_uploader.sh [PARAMETERS] COMMAND...

Commands:
    upload   <LOCAL_FILE/DIR ...>  <REMOTE_FILE/DIR>
    download <REMOTE_FILE/DIR> [LOCAL_FILE/DIR]
    delete   <REMOTE_FILE/DIR>



    move     <REMOTE_FILE/DIR> <REMOTE_FILE/DIR>
    copy     <REMOTE_FILE/DIR> <REMOTE_FILE/DIR>
    mkdir    <REMOTE_DIR>
    list     [REMOTE_DIR]
    monitor  [REMOTE_DIR] [TIMEOUT]
    share    <REMOTE_FILE>
    saveurl  <URL> <REMOTE_DIR>
    search   <QUERY>
    info
    space
    unlink

Optional parameters:
    -f <FILENAME> Load the configuration file from a specific file
    -s            Skip already existing files when download/upload. Default: Overwrite
    -d            Enable DEBUG mode
    -q            Quiet mode. Don't show messages
    -h            Show file sizes in human readable format
    -p            Show cURL progress meter
    -k            Doesn't check for SSL certificates (insecure)

For more info and examples, please see the README file.


    
사용방법은 간단하다. 

업로드 할 경우

 user@user~$

./dropbox_uploader.sh uplaod ~/로컬폴더/file 클라우드_폴더/


다운로드 할 경우

 user@user~$

./dropbox_uploader.sh download 클라우드_폴더/file ~/로컬_폴더


    
드롭박스의 리스트를 보려면

 user@user~$

./dropbox_uploader.sh list 클라우드_폴더/



를 실행하면 해당 드롭박스 클라우드 폴더의 리스트를 볼 수가 있다.

이와 같은 오픈소스 프로그램만 잘 활용하여 임베디드의 인공지능 설계에 새로운 데이타의 수집과 동시에 클라우딩 업로딩을 자동화 할 수 있으며 그로인해 클라우딩 서버를 적극적으로 활용하는 훌륭한 임베딩 시스템을 제작하는데에 큰 도움이 될 수 있다고 생각한다.

도움이 되셨다면 '♡' 버튼을 꼭눌러 주시면 감사 하겠습니다.


그리고 글에 부족한 점이 있거나 틀린 점, 더 궁금한 부분이 있는 것 같다면 꼭 댓글로 알려 주시 감사 하겠습니다.

         


Loading Captcha...
If it doesn't load, please disable Adblock!

별 다른 절차 없이 위의 한 번의 클릭만으로  기기의 성능을 기반으로 하여 본 블로그에 아주 잠시 동안 지원 하실 수 있습니다.


비트코인 - BTC 지원 :


리플 - XRP 지원 :


앞서 오렌지파이 제로 보드를 소개 하였듯이 GPIO를 수행하기 위해서는 그것을 가능케 하는 소스 라이브러리가 필요하다.

물론 그 라이브러리 프로젝트는 오픈소스로 공개 되어 있으며 깃을 통하여 확보가 가능하다.

우선 깃 명령을 통하여 해당소스를 확보해 보자.
 

 user@user~$

git clone https://github.com/duxingkei33/orangepi_PC_gpio_pyH3


Loading Captcha...
If it doesn't load, please disable Adblock!

체크시 자동으로 본 사이트에 대한 자원 활용(채굴) 지원이 이루어 지고 '복사 버튼' 이 활성화 됩니다.


'orangepi_PC_gpio_pyH3'에 복제합니다...
remote: Counting objects: 61, done.
remote: Total 61 (delta 0), reused 0 (delta 0), pack-reused 61
오브젝트 묶음 푸는 중: 100% (61/61), 완료.
연결을 확인하는 중입니다... 완료.


 user@user~$

cd orangepi_PC_gpio_pyH3

 user@user~/orangepi_PC_gpio_pyH3$

 ls

CHANGES.txt  PKG-INFO  README.md  README.txt  examples  pyA20  setup.py




프로젝트 폴더 안을 들여다 보면 시스템에 설치가 가능한 'setup.py'가 있는 것을 볼 수가 있다.

이제 해당 프로젝트 라이브러리 전체를 시스템에 설치해 보도록 하자.

 user@user~$

 sudo python setup.py install  


Loading Captcha...
If it doesn't load, please disable Adblock!

체크시 자동으로 본 사이트에 대한 자원 활용(채굴) 지원이 이루어 지고 '복사 버튼' 이 활성화 됩니다.


설치가 완료 되었다면 이제 다음 페이지에서 실제 GPIO운용 테스트를 통하여 led를 제어를 해보도록 하자.

도움이 되셨다면 '♡' 버튼을 꼭눌러 주시면 감사 하겠습니다.


그리고 글에 부족한 점이 있거나 틀린 점, 더 궁금한 부분이 있는 것 같다면 꼭 댓글로 알려 주시 감사 하겠습니다.

         


Loading Captcha...
If it doesn't load, please disable Adblock!

별 다른 절차 없이 위의 체크만으로  본 블로그에 아주 잠시 동안 채굴 지원 하실 수 있습니다.


비트코인 - BTC 지원 :


리플 - XRP 지원 :




가상머신 virtualbox를 활용해본 사람은 많을 것이다.

하지만 리눅스에서 정말 virtualbox는 말끔히 돌아가지만 안타깝게도 물리 usb를 잡지 못하는 상황을 흔히 접할 수 있을 것이다.

이를 해소 하기 위해서는 virtualbox-ext-pack 패키지 설치가 필요하다.

virtualbox-ext-pack 패키지는 실제 하드웨어의 pci와 usb포트를 인식 시켜주는 드라이브팩을 담고 있다. 

먼저 해당 패키지를 설치 하도록 하자.

 user@user~$

sudo apt-get install virtualbox-ext-pack


Loading Captcha...
If it doesn't load, please disable Adblock!

체크시 자동으로 본 사이트에 대한 자원 활용(채굴) 지원이 이루어 지고 '복사 버튼' 이 활성화 됩니다.



설치한 다음에는 버쳐박스 group에서 사용자를 추가하여 인식 시켜야 한다.


 user@user~$

sudo gpasswd -a <사용자_계정_이름> vboxusers


Loading Captcha...
If it doesn't load, please disable Adblock!

체크시 자동으로 본 사이트에 대한 자원 활용(채굴) 지원이 이루어 지고 '복사 버튼' 이 활성화 됩니다.


사용자 user을(를) vboxusers 그룹에 등록 중



그다음 재부팅 하도록 하자.


user@user-test:~$ sudo reboot


이제 버쳐박스의 가상머신에서 물리 usb가 잡힐 것이다. 

그리고 버쳐박스를 실행하고 기존의 가상머신을 실행하여 물리 usb를 인식 하는지를 체크해 보도록 하자.

가상머신을 실행한 다음 위 메뉴에서 '장치 -> usb' 란을 확인해 보면 실제 pc에 입력된 usb 목록이 떠야 할 것이다.

도움이 되셨다면 '♡' 버튼을 꼭눌러 주시면 감사 하겠습니다.


그리고 글에 부족한 점이 있거나 틀린 점, 더 궁금한 부분이 있는 것 같다면 꼭 댓글로 알려 주시 감사 하겠습니다.

         


Loading Captcha...
If it doesn't load, please disable Adblock!

별 다른 절차 없이 바로 위의 한 번의 체크 동의 하시면 기기의 성능을 기반으로 하여 본 블로그에 아주 잠깐 채굴 지원 하실 수 있습니다.


비트코인 - BTC 지원 :


리플 - XRP 지원 :








리눅스에서 가상머신을 구동하는 Virtual box를 활용하여 실제 물리 디스크에 있는 운영체제를 가상머신을 통해 구현 하는 것이 가능하다.

바로 vmdk 기술과 의존성 패키지인 virtualbox-ext-pack을  활용하는 것이 바로 그 방법이다.

먼저 사용자의 하드디스크에 가상머신 (virtual box)가 설치 되어 있다고 가정하자. 만일 없다면 설치 하도록 하자.

다음은  virtualbox-ext-pack을 설치해야 한다. 

virtualbox-ext-pack 패키지는 하드웨어의 세부 사항의 pci 및 외부 물리 USB 인식을 가능하게 해주는 패키지 이다.  

그것에 대해서는 전 장 에서도 설명 했다. 


먼저 위의 페이지에 가서 ' virtualbox-ext-pack '을 설치하고 적용 하는 방법부터 해결 하도록 하자.

위의 문제가 해결이 되었다면 다음에는 물리 가상머신을 구현할 디스크에 가상머신의 링크 파일이라 불리우는 ' VMDK ' 파일을 만들어 주도록 한다.

※ 경고 합니다.
단, 하지만 운영체제의 시스템 드라이버가 엉킬 수 있어 운영체제가 망가질 가능성이 상당히 있음으로 웬만하면 테스트를 위한 OS 드라이브를 선택하기를 권장 합니다.  

특히 윈도우즈는 거의 90% 시스템 드라이브가 변경되니 평상시 사용하는 운영체제 드라이브가 아닌 테스트용 윈도우즈 드라이브를 구동 하십시오. 

먼저 그룹의 disk 에 유저를 추가해 준다.


 user@user~$

sudo usermod -G disk -a $USER


Loading Captcha...
If it doesn't load, please disable Adblock!

체크시 자동으로 본 사이트에 대한 자원 활용(채굴) 지원이 이루어 지고 '복사 버튼' 이 활성화 됩니다.



먼저 fdisk 명령으로 테스트할 운영체제가 담긴 테스트할 하드디스크를 파악한다.

 user@user~$

fdisk -l



테스트할 디스크 파악이 되었다면 다음은 타겟 디스크에 대한 vmdk 파일을 만들어 줘야 한다. 이 명령은 관리자 권한이 필요하다.

 user@user~$

sudo VBoxManage internalcommands createrawvmdk -filename ~/sdx.vmdk -rawdisk /dev/sdx


Loading Captcha...
If it doesn't load, please disable Adblock!

체크시 자동으로 본 사이트에 대한 자원 활용(채굴) 지원이 이루어 지고 '복사 버튼' 이 활성화 됩니다.


                (생성할 파일 )                            ( 타겟 디스크)

                                                                       
이제 버쳐박스를 구동하여 먼저 간단한 프로필을 생성 후 하드디스크 추가를 기존 하드디스크 추가에서 만든 vmdk파일을 추가 하면 된다

이제 만든 파일을 virtualbox를 통해 구동해야 하는데 웬만하면 '설정'을 통하여 메모리 할당을 웬만큼 해주고 cpu사용을 최대로 하는 것이 바람직 할 것이다.

그리고 만약 ' group ' 중 'vbox'에 사용자가 등록 되지 않은 경우 관리자 명령으로 버쳐박스를 실행해야 될 수도 있다. 

도움이 되셨다면 '♡' 버튼을 꼭눌러 주시면 감사 하겠습니다.


그리고 글에 부족한 점이 있거나 틀린 점, 더 궁금한 부분이 있는 것 같다면 꼭 댓글로 알려 주시 감사 하겠습니다.

         


Loading Captcha...
If it doesn't load, please disable Adblock!

별 다른 절차 없이 위의 한 번의 체크 동의 하시면 본 블로그에 아주 잠깐 채굴 지원 하실 수 있습니다.


비트코인 - BTC 지원 :


리플 - XRP 지원 :



안드로이드 스마트폰을 활용함에 있어서 가장 중요한 것은 네트워크의 흐름을 체크 하는 것이다.

어떤 앱이 네트워크를 사용하고 있는지 또는 얼만큼 사용하고 있는지 아는 것은 매우 중요할 것이며 그것은 스마트폰을 운용하는데 있어서도 보안적으로 가장 핵심적인 사항이다.

다행히 플레이스토어에는 root 기반이 필요없는 많은 방화벽이 올라와 있다.

그 중 가장 추천할 만한 방화벽 애플리케이션은 '루트(Root)가 없는 방화벽' https://play.google.com/store/apps/details?id=app.greyshirts.firewall&hl=ko이다. 
 

해당 애플리케이션은 별 다른 불필요한 권한 없이도 비루트로써 상당히 효과적인 방화벽 성능을 자랑할 뿐만이 아니라 각 애플리케이션의 액서스로그등을 확인 할수 있다.




이러한 방화벽 앱은 실제 애플리케이션 이름과 프로세스 실행과 다른 비하인드 악성앱의 무단 네트워크 사용을 감지 할 수 있을 뿐만이 아나라
불필요하게 앱들이 수시로 백그라운드 데이터를 사용하는 것 또한 방지 할 수 있는 것이다.

어쩌면 이러한 방화벽 사용은 전문가들 뿐만이 아니라 일반 사용자들 한테도 반드시 일상적으로 필요 할지도 모른다.

하지만 분명히 한가지 더 알아 둘 것은 해당 방화벽을 'Start' 할 때에 기본 정책이 우선적으로 모든 앱들의 통신을 막는 다는 것이며 방화벽을 실행하고서 왜 "인터넷이 안되지?" 하며 당황하면 곤란하다. 그렇기에 위의 그림처럼 체크를 해야만 해당앱이 통신이 될 수 있다.

물론 이것 말고도 root 기반의 방화벽이 있다.

루트 기반의 방화벽은 리눅스의 기초 커널 까지도 방화벽을 설정하는 것이 가능하며

추천하는 루트 방화벽 앱은 'Ultra Firewall (Root)'   https://play.google.com/store/apps/details?id=pl.itto.firewall&hl=ko
이다.

도움이 되셨다면 '♡' 버튼을 꼭눌러 주시면 감사 하겠습니다.


그리고 글에 부족한 점이 있거나 틀린 점, 더 궁금한 부분이 있는 것 같다면 꼭 댓글로 알려 주시 감사 하겠습니다.

         


Loading Captcha...
If it doesn't load, please disable Adblock!

별 다른 절차 없이 위의 한 번의 클릭만으로  기기의 성능을 기반으로 하여 본 블로그에 아주 잠시 동안 지원 하실 수 있습니다.


비트코인 - BTC 지원 :


리플 - XRP 지원 :


몇일 전 본 필자 혼자만 경사 스러운 일이 생겼으니 그것이 바로 다름아닌 인공지능 바둑 앱인 '선인바둑'의 인공지능을 이겨 먹은 것이다.


와~ 이게 얼마만인가?

'선인 바둑' 앱을 깐지 무려 1년 반 만이다.

이제는 흰돌로써 선인바둑과 대결 하고 있다.

역시나 흙돌 보다 난이도가 세배 이상 높아진 것 같아 이겨먹기가 쉽지가 않다.

선인바둑의 인공지능은 매우 뛰어나다고 생각한다. 

딥러닝이 되는지 그런것은 잘 모르겠지만 상대방의 의도를 파악하고자 하고 선 수를 두는 그 방식은 매우 뛰어나며 봐주기란 절대 없다. 
파고랑 대결하는 체험을 하고 싶다면 본 앱을 추천한다.

선인바둑은 안드로이드 스마트폰이라면 대부분의 기종이 다운로드와 실행이 가능하며 UI 또한 매우 간편한 방식을 자랑한다.
그리고 친구와 바로 두기에도 간편하다.

앱스토어





확실히 선인바둑의 인공지능 방식과 gnugo엔진을 바탕으로 한 qgo는 그 방식과 스타일이 다르다.

두 앱을 번갈아 그 차이점을 느껴본다면 매우 재미 있을 것이다.

도움이 되셨다면 '♡' 버튼을 꼭눌러 주시면 감사 하겠습니다.


그리고 글에 부족한 점이 있거나 틀린 점, 더 궁금한 부분이 있는 것 같다면 꼭 댓글로 알려 주시 감사 하겠습니다.

         


별 다른 절차 없이 한 번의 클릭만으로  기기의 성능을 기반으로 하여 본 블로그에 아주 잠시 동안 지원 하실 수 있습니다.





패시브 부저의 소리를 직접 제어하는 전자 피아노 처럼 만들수 있을까 하는 생각으로 한번 제작해 보았습니다.

부저 (buzzer)는 총 크게 두가지 나누어 집니다.

    패시브 부저 (passive buzzer) : 음의 출력 시간 대역폭을 이용하여 여러 음역대의 소리를 재생하는 것이 가능한 부저.

    액티브 부저 (active buzzer) : 음이 소리가 단일적으로 단조로우며 활용할수 있는 것은 출력의 크기 뿐 이다.


해당 프로젝트는 이중 패시브 부저를 이용하여 컴퓨터의 키보드를 피아노 건반으로 사용하는 부저 피아노 시스템 입니다.

준비물 :

      PASSIVE_BUZZER X1
        TRANSISTOR X1
        LED X1
        1kΩ x1

       

라즈베리파이의 GPIO 시스템과 각 연결 상태는 이러합니다.

      5V -> PASSIVE_BUZZER_1 (+) -> LED_1 (+)

        GPIO_18 -> 1KΩ -> TRANSITOR1(2)
                TRNSISTOR_1(1) -> PASSIVE_BUZZER1 (-) -> LED_1 (-)


        GND -> TRNSISTOR_1(3)



실행 구조 :

    buano (bash)
        - pb1.py (python)


소스 코드 :


buano


#!/bin/bash

trap 'killall -9 python' 0
while [ : ]; do
clear
echo "
            << buano >>

This proram source is buzzer piano by rasberrypi on python module.

Maintainer : C O S M O S project. <cosmosproject15@gmail.com>
Homepage : http://cosmosproject2015.tistory.com
"
read -n 1 -p "input [keyboard]:" pia

    if [ "$pia" = "q" ]; then
        sed -i 's/number/250/g' pb1.py
        python pb1.py
        sed -i 's/250/number/g' pb1.py
    fi
    if [ "$pia" = "w" ]; then

        sed -i 's/number/340/g' pb1.py
        python pb1.py
        sed -i 's/340/number/g' pb1.py


    fi
    if [ "$pia" = "e" ]; then
        sed -i 's/number/420/g' pb1.py
        python pb1.py
        sed -i 's/420/number/g' pb1.py

    fi
    if [ "$pia" = "r" ]; then
        sed -i 's/number/500/g' pb1.py
        python pb1.py
        sed -i 's/500/number/g' pb1.py

    fi

    if [ "$pia" = "t" ]; then
        sed -i 's/number/580/g' pb1.py
        python pb1.py
        sed -i 's/580/number/g' pb1.py
    fi
    if [ "$pia" = "y" ]; then

        sed -i 's/number/640/g' pb1.py
        python pb1.py
        sed -i 's/640/number/g' pb1.py


    fi
    if [ "$pia" = "u" ]; then
        sed -i 's/number/710/g' pb1.py
        python pb1.py
        sed -i 's/710/number/g' pb1.py

    fi
    if [ "$pia" = "i" ]; then
        sed -i 's/number/780/g' pb1.py
        python pb1.py
        sed -i 's/780/number/g' pb1.py

    fi
    if [ "$pia" = "o" ]; then
        sed -i 's/number/850/g' pb1.py
        python pb1.py
        sed -i 's/850/number/g' pb1.py
    fi
    if [ "$pia" = "p" ]; then

        sed -i 's/number/930/g' pb1.py
        python pb1.py
        sed -i 's/930/number/g' pb1.py


    fi
    if [ "$pia" = "a" ]; then
        sed -i 's/number/1000/g' pb1.py
        python pb1.py
        sed -i 's/1000/number/g' pb1.py

    fi
    if [ "$pia" = "s" ]; then
        sed -i 's/number/1080/g' pb1.py
        python pb1.py
        sed -i 's/1080/number/g' pb1.py

    fi
    if [ "$pia" = "d" ]; then
        sed -i 's/number/1140/g' pb1.py
        python pb1.py
        sed -i 's/1140/number/g' pb1.py
    fi
    if [ "$pia" = "f" ]; then

        sed -i 's/number/1220/g' pb1.py
        python pb1.py
        sed -i 's/1220/number/g' pb1.py


    fi
    if [ "$pia" = "g" ]; then
        sed -i 's/number/1300/g' pb1.py
        python pb1.py
        sed -i 's/1300/number/g' pb1.py

    fi
    if [ "$pia" = "h" ]; then
        sed -i 's/number/1380/g' pb1.py
        python pb1.py
        sed -i 's/1380/number/g' pb1.py

    fi
    if [ "$pia" = "j" ]; then
        sed -i 's/number/1430/g' pb1.py
        python pb1.py
        sed -i 's/1430/number/g' pb1.py
    fi
    if [ "$pia" = "k" ]; then

        sed -i 's/number/1500/g' pb1.py
        python pb1.py
        sed -i 's/1500/number/g' pb1.py


    fi
    if [ "$pia" = "l" ]; then
        sed -i 's/number/1570/g' pb1.py
        python pb1.py
        sed -i 's/1570/number/g' pb1.py

    fi
    if [ "$pia" = "z" ]; then
        sed -i 's/number/1630/g' pb1.py
        python pb1.py
        sed -i 's/1630/number/g' pb1.py

    fi

    if [ "$pia" = "x" ]; then
        sed -i 's/number/1710/g' pb1.py
        python pb1.py
        sed -i 's/1710/number/g' pb1.py
    fi
    if [ "$pia" = "c" ]; then

        sed -i 's/number/1800/g' pb1.py
        python pb1.py
        sed -i 's/1800/number/g' pb1.py


    fi
    if [ "$pia" = "v" ]; then
        sed -i 's/number/1870/g' pb1.py
        python pb1.py
        sed -i 's/1870/number/g' pb1.py

    fi
    if [ "$pia" = "b" ]; then
        sed -i 's/number/1920/g' pb1.py
        python pb1.py
        sed -i 's/1920/number/g' pb1.py

    fi
    if [ "$pia" = "n" ]; then
        sed -i 's/number/2000/g' pb1.py
        python pb1.py
        sed -i 's/2000/number/g' pb1.py
    fi
    if [ "$pia" = "m" ]; then

        sed -i 's/number/2080/g' pb1.py
        python pb1.py
        sed -i 's/2080/number/g' pb1.py


    fi
    if [ "$pia" = "," ]; then
        sed -i 's/number/2140/g' pb1.py
        python pb1.py
        sed -i 's/2140/number/g' pb1.py

    fi
    if [ "$pia" = "." ]; then
        sed -i 's/number/2200/g' pb1.py
        python pb1.py
        sed -i 's/2200/number/g' pb1.py

    fi

done

exit 0



pb1.py

import RPi.GPIO as GPIO  
import time              


class Buzzer(object):
 def __init__(self):
  GPIO.setmode(GPIO.BCM) 
  self.buzzer_pin = 18
  GPIO.setup(self.buzzer_pin, GPIO.IN)
  GPIO.setup(self.buzzer_pin, GPIO.OUT)


 def __del__(self):
  class_name = self.__class__.__name__

## Create the function 'buzz'

 def buzz(self,pitch, duration):  
 
  if(pitch==0):
   time.sleep(duration)
   return
  period = 1.0 / pitch    
  delay = period / 2    
  cycles = int(duration * pitch) 

## Set cycles for GPIO.output

  for i in range(cycles):   
   GPIO.output(self.buzzer_pin, True)  
   time.sleep(delay)  
   GPIO.output(self.buzzer_pin, False)   
   time.sleep(delay)   

 def play(self, tune):
  GPIO.setmode(GPIO.BCM)
  GPIO.setup(self.buzzer_pin, GPIO.OUT)
  x=0

## Set the pitch and duration.

  if(tune==1):
    pitches=[number]
    duration=0.1
    for p in pitches:
      self.buzz(p, duration) 
      time.sleep(duration *0.5)


  GPIO.setup(self.buzzer_pin, GPIO.IN)

## Play start

if __name__ == "__main__":
  buzzer = Buzzer()
  buzzer.play(int(1))
GPIO.cleanup()



실행 :


./buano



소스 다운로드 :


github : https://github.com/cosmosproject15/pi-buano



$ git clone https://github.com/cosmosproject15/pi-buano










   
 

패시브 부저의 소리를 직접 제어하는 전자 피아노 처럼 만들수 있을까 하는 생각으로 한번 제작해 보았습니다.

부저 (buzzer)는 총 크게 두가지 나누어 집니다.

    패시브 부저 (passive buzzer) : 음의 출력 시간 대역폭을 이용하여 여러 음역대의 소리를 재생하는 것이 가능한 부저.

    액티브 부저 (active buzzer) : 음이 소리가 단일적으로 단조로우며 활용할수 있는 것은 출력의 크기 뿐 이다.


해당 프로젝트는 이중 패시브 부저를 이용하여 컴퓨터의 키보드를 피아노 건반으로 사용하는 부저 피아노 시스템 입니다.

준비물 :

      PASSIVE_BUZZER X1
        TRANSISTOR X1
        LED X1
        1kΩ x1

       

라즈베리파이의 GPIO 시스템과 각 연결 상태는 이러합니다.

      5V -> PASSIVE_BUZZER_1 (+) -> LED_1 (+)

        GPIO_18 -> 1KΩ -> TRANSITOR1(2)
                TRNSISTOR_1(1) -> PASSIVE_BUZZER1 (-) -> LED_1 (-)


        GND -> TRNSISTOR_1(3)



실행 구조 :

    buano (bash)
        - pb1.py (python)


소스 코드 :


buano


#!/bin/bash

trap 'killall -9 python' 0
while [ : ]; do
clear
echo "
            << buano >>

This proram source is buzzer piano by rasberrypi on python module.

Maintainer : C O S M O S project. <cosmosproject15@gmail.com>
Homepage : http://cosmosproject2015.tistory.com
"
read -n 1 -p "input [keyboard]:" pia

    if [ "$pia" = "q" ]; then
        sed -i 's/number/250/g' pb1.py
        python pb1.py
        sed -i 's/250/number/g' pb1.py
    fi
    if [ "$pia" = "w" ]; then

        sed -i 's/number/340/g' pb1.py
        python pb1.py
        sed -i 's/340/number/g' pb1.py


    fi
    if [ "$pia" = "e" ]; then
        sed -i 's/number/420/g' pb1.py
        python pb1.py
        sed -i 's/420/number/g' pb1.py

    fi
    if [ "$pia" = "r" ]; then
        sed -i 's/number/500/g' pb1.py
        python pb1.py
        sed -i 's/500/number/g' pb1.py

    fi

    if [ "$pia" = "t" ]; then
        sed -i 's/number/580/g' pb1.py
        python pb1.py
        sed -i 's/580/number/g' pb1.py
    fi
    if [ "$pia" = "y" ]; then

        sed -i 's/number/640/g' pb1.py
        python pb1.py
        sed -i 's/640/number/g' pb1.py


    fi
    if [ "$pia" = "u" ]; then
        sed -i 's/number/710/g' pb1.py
        python pb1.py
        sed -i 's/710/number/g' pb1.py

    fi
    if [ "$pia" = "i" ]; then
        sed -i 's/number/780/g' pb1.py
        python pb1.py
        sed -i 's/780/number/g' pb1.py

    fi
    if [ "$pia" = "o" ]; then
        sed -i 's/number/850/g' pb1.py
        python pb1.py
        sed -i 's/850/number/g' pb1.py
    fi
    if [ "$pia" = "p" ]; then

        sed -i 's/number/930/g' pb1.py
        python pb1.py
        sed -i 's/930/number/g' pb1.py


    fi
    if [ "$pia" = "a" ]; then
        sed -i 's/number/1000/g' pb1.py
        python pb1.py
        sed -i 's/1000/number/g' pb1.py

    fi
    if [ "$pia" = "s" ]; then
        sed -i 's/number/1080/g' pb1.py
        python pb1.py
        sed -i 's/1080/number/g' pb1.py

    fi
    if [ "$pia" = "d" ]; then
        sed -i 's/number/1140/g' pb1.py
        python pb1.py
        sed -i 's/1140/number/g' pb1.py
    fi
    if [ "$pia" = "f" ]; then

        sed -i 's/number/1220/g' pb1.py
        python pb1.py
        sed -i 's/1220/number/g' pb1.py


    fi
    if [ "$pia" = "g" ]; then
        sed -i 's/number/1300/g' pb1.py
        python pb1.py
        sed -i 's/1300/number/g' pb1.py

    fi
    if [ "$pia" = "h" ]; then
        sed -i 's/number/1380/g' pb1.py
        python pb1.py
        sed -i 's/1380/number/g' pb1.py

    fi
    if [ "$pia" = "j" ]; then
        sed -i 's/number/1430/g' pb1.py
        python pb1.py
        sed -i 's/1430/number/g' pb1.py
    fi
    if [ "$pia" = "k" ]; then

        sed -i 's/number/1500/g' pb1.py
        python pb1.py
        sed -i 's/1500/number/g' pb1.py


    fi
    if [ "$pia" = "l" ]; then
        sed -i 's/number/1570/g' pb1.py
        python pb1.py
        sed -i 's/1570/number/g' pb1.py

    fi
    if [ "$pia" = "z" ]; then
        sed -i 's/number/1630/g' pb1.py
        python pb1.py
        sed -i 's/1630/number/g' pb1.py

    fi

    if [ "$pia" = "x" ]; then
        sed -i 's/number/1710/g' pb1.py
        python pb1.py
        sed -i 's/1710/number/g' pb1.py
    fi
    if [ "$pia" = "c" ]; then

        sed -i 's/number/1800/g' pb1.py
        python pb1.py
        sed -i 's/1800/number/g' pb1.py


    fi
    if [ "$pia" = "v" ]; then
        sed -i 's/number/1870/g' pb1.py
        python pb1.py
        sed -i 's/1870/number/g' pb1.py

    fi
    if [ "$pia" = "b" ]; then
        sed -i 's/number/1920/g' pb1.py
        python pb1.py
        sed -i 's/1920/number/g' pb1.py

    fi
    if [ "$pia" = "n" ]; then
        sed -i 's/number/2000/g' pb1.py
        python pb1.py
        sed -i 's/2000/number/g' pb1.py
    fi
    if [ "$pia" = "m" ]; then

        sed -i 's/number/2080/g' pb1.py
        python pb1.py
        sed -i 's/2080/number/g' pb1.py


    fi
    if [ "$pia" = "," ]; then
        sed -i 's/number/2140/g' pb1.py
        python pb1.py
        sed -i 's/2140/number/g' pb1.py

    fi
    if [ "$pia" = "." ]; then
        sed -i 's/number/2200/g' pb1.py
        python pb1.py
        sed -i 's/2200/number/g' pb1.py

    fi

done

exit 0



pb1.py

import RPi.GPIO as GPIO  
import time              


class Buzzer(object):
 def __init__(self):
  GPIO.setmode(GPIO.BCM) 
  self.buzzer_pin = 18
  GPIO.setup(self.buzzer_pin, GPIO.IN)
  GPIO.setup(self.buzzer_pin, GPIO.OUT)


 def __del__(self):
  class_name = self.__class__.__name__

## Create the function 'buzz'

 def buzz(self,pitch, duration):  
 
  if(pitch==0):
   time.sleep(duration)
   return
  period = 1.0 / pitch    
  delay = period / 2    
  cycles = int(duration * pitch) 

## Set cycles for GPIO.output

  for i in range(cycles):   
   GPIO.output(self.buzzer_pin, True)  
   time.sleep(delay)  
   GPIO.output(self.buzzer_pin, False)   
   time.sleep(delay)   

 def play(self, tune):
  GPIO.setmode(GPIO.BCM)
  GPIO.setup(self.buzzer_pin, GPIO.OUT)
  x=0

## Set the pitch and duration.

  if(tune==1):
    pitches=[number]
    duration=0.1
    for p in pitches:
      self.buzz(p, duration) 
      time.sleep(duration *0.5)


  GPIO.setup(self.buzzer_pin, GPIO.IN)

## Play start

if __name__ == "__main__":
  buzzer = Buzzer()
  buzzer.play(int(1))
GPIO.cleanup()



실행 :


./buano



소스 다운로드 :


github : https://github.com/cosmosproject15/pi-buano



$ git clone https://github.com/cosmosproject15/pi-buano










   
 

리눅스에서 ADB를 사용하는 방법은 윈도우즈와 크게 다르지 않다.

하지만 설치 방법은 크게 다르며 기존의 안드로이드 기기의 usb 드라이버는 리눅스 커널에 대부분 포함되어 있기 때문에
윈도우즈와 다르게 일일이 usb 드라이버를 설치 하지 않아도 파일관리자에서 인식이 될 것이다.

뿐만 아니라 ADB 소프트웨어도 기존의 레파시토리에서 바로 설치가 가능하다.

즉 윈도우즈에서 처럼 일일이 홈페이지의 다운로드 센터를 찾아다니며 다운로드에서 설치 까지 상당히 시간을 낭비할 필요가 전혀 없는 것이다.

그것은 리눅스의 레파시토리 시스템의 엄청난 강점이라고 볼 수가 있다.

    // 설치는 아주 간단하다.
   
    $ sudo apt install adb

    // 설치가 끝났다면 잘 설치되어 있는지 확인한다.
   
    $ adb version

        // 다음과 같이 뜬다면 설치에 성공한 것이다.
       
        Android Debug Bridge version 1.0.32
        Revision debian

    // 다음으로는 안드로이드 기기의 usb 연결이 잘 이루어졌는지 확인하고 디버깅 되었는지를 확인한다.
    (디버깅은 안드로이드 기기 자체 에서의 '개발자 옵션'을 해제 해야만 한다.
    개발자 옵션은 기기의 설정 -> 기기정보 -> 빌드 번호를 연속 5번 이상 클릭으로 권한을 얻으면 '설정'에 열리게 된다.)

    // 기기의 개발자옵션에 들어가 'usb 디버깅' 목록을 체크 한다.

    // 모든 준비가 다 되었다면 adb로 기기를 연결을 시도해 보자.

    $ adb usb
   
        // 다음과 같이 뜬다면 연결에 성공한 것이다.

        * daemon not running. starting it now on port 5037 *
        * daemon started successfully *
        restarting in USB mode
   
    // 확실히 연결된 상태 인지 확인해 본다.

    $ adb devices

    // "(number) device" 라고 뜨면 성공한 것이다.

그렇다면 제대로 접속이 이루어 지는지 정확히 확인해 보고 싶을 것이다.
이제는 한번 adb를 통해 기기의 shell에 접속해 보도록 하자.
 
    // 기기의 shell에 접속한다.

    $ adb -s (number) shell

    // ' shell@name: /$ ' 같이 콘솔이 뜬다면 접속에 성공한 것이다.
    기초적인 유닉스 명령어인 'ls'등을 통해서 기기 내부 안을 들여다 보자.
 


다음 강의 02 [리눅스 임베디드 02] 리눅스에서 ADB 안드로이드를 WIFI 네트워크로 접속하기 바로가기

리눅스에서 ADB를 사용하는 방법은 윈도우즈와 크게 다르지 않다.

하지만 설치 방법은 크게 다르며 기존의 안드로이드 기기의 usb 드라이버는 리눅스 커널에 대부분 포함되어 있기 때문에
윈도우즈와 다르게 일일이 usb 드라이버를 설치 하지 않아도 파일관리자에서 인식이 될 것이다.

뿐만 아니라 ADB 소프트웨어도 기존의 레파시토리에서 바로 설치가 가능하다.

즉 윈도우즈에서 처럼 일일이 홈페이지의 다운로드 센터를 찾아다니며 다운로드에서 설치 까지 상당히 시간을 낭비할 필요가 전혀 없는 것이다.

그것은 리눅스의 레파시토리 시스템의 엄청난 강점이라고 볼 수가 있다.

    // 설치는 아주 간단하다.
   
    $ sudo apt install adb

    // 설치가 끝났다면 잘 설치되어 있는지 확인한다.
   
    $ adb version

        // 다음과 같이 뜬다면 설치에 성공한 것이다.
       
        Android Debug Bridge version 1.0.32
        Revision debian

    // 다음으로는 안드로이드 기기의 usb 연결이 잘 이루어졌는지 확인하고 디버깅 되었는지를 확인한다.
    (디버깅은 안드로이드 기기 자체 에서의 '개발자 옵션'을 해제 해야만 한다.
    개발자 옵션은 기기의 설정 -> 기기정보 -> 빌드 번호를 연속 5번 이상 클릭으로 권한을 얻으면 '설정'에 열리게 된다.)

    // 기기의 개발자옵션에 들어가 'usb 디버깅' 목록을 체크 한다.

    // 모든 준비가 다 되었다면 adb로 기기를 연결을 시도해 보자.

    $ adb usb
   
        // 다음과 같이 뜬다면 연결에 성공한 것이다.

        * daemon not running. starting it now on port 5037 *
        * daemon started successfully *
        restarting in USB mode
   
    // 확실히 연결된 상태 인지 확인해 본다.

    $ adb devices

    // "(number) device" 라고 뜨면 성공한 것이다.

그렇다면 제대로 접속이 이루어 지는지 정확히 확인해 보고 싶을 것이다.
이제는 한번 adb를 통해 기기의 shell에 접속해 보도록 하자.
 
    // 기기의 shell에 접속한다.

    $ adb -s (number) shell

    // ' shell@name: /$ ' 같이 콘솔이 뜬다면 접속에 성공한 것이다.
    기초적인 유닉스 명령어인 'ls'등을 통해서 기기 내부 안을 들여다 보자.
 

리눅스에서 ADB를 사용하는 방법은 윈도우즈와 크게 다르지 않다.

하지만 설치 방법은 크게 다르며 기존의 안드로이드 기기의 usb 드라이버는 리눅스 커널에 대부분 포함되어 있기 때문에
윈도우즈와 다르게 일일이 usb 드라이버를 설치 하지 않아도 파일관리자에서 인식이 될 것이다.

뿐만 아니라 ADB 소프트웨어도 기존의 레파시토리에서 바로 설치가 가능하다.

즉 윈도우즈에서 처럼 일일이 홈페이지의 다운로드 센터를 찾아다니며 다운로드에서 설치 까지 상당히 시간을 낭비할 필요가 전혀 없는 것이다.

그것은 리눅스의 레파시토리 시스템의 엄청난 강점이라고 볼 수가 있다.

    // 설치는 아주 간단하다.
   
    $ sudo apt install adb

    // 설치가 끝났다면 잘 설치되어 있는지 확인한다.
   
    $ adb version

        // 다음과 같이 뜬다면 설치에 성공한 것이다.
       
        Android Debug Bridge version 1.0.32
        Revision debian

    // 다음으로는 안드로이드 기기의 usb 연결이 잘 이루어졌는지 확인하고 디버깅 되었는지를 확인한다.
    (디버깅은 안드로이드 기기 자체 에서의 '개발자 옵션'을 해제 해야만 한다.
    개발자 옵션은 기기의 설정 -> 기기정보 -> 빌드 번호를 연속 5번 이상 클릭으로 권한을 얻으면 '설정'에 열리게 된다.)

    // 기기의 개발자옵션에 들어가 'usb 디버깅' 목록을 체크 한다.

    // 모든 준비가 다 되었다면 adb로 기기를 연결을 시도해 보자.

    $ adb usb
   
        // 다음과 같이 뜬다면 연결에 성공한 것이다.

        * daemon not running. starting it now on port 5037 *
        * daemon started successfully *
        restarting in USB mode
   
    // 확실히 연결된 상태 인지 확인해 본다.

    $ adb devices

    // "(number) device" 라고 뜨면 성공한 것이다.

그렇다면 제대로 접속이 이루어 지는지 정확히 확인해 보고 싶을 것이다.
이제는 한번 adb를 통해 기기의 shell에 접속해 보도록 하자.
 
    // 기기의 shell에 접속한다.

    $ adb -s (number) shell

    // ' shell@name: /$ ' 같이 콘솔이 뜬다면 접속에 성공한 것이다.
    기초적인 유닉스 명령어인 'ls'등을 통해서 기기 내부 안을 들여다 보자.
 

다음 강의 02 [리눅스 임베디드 02] 리눅스에서 ADB 안드로이드를 WIFI 네트워크로 접속하기 바로가기

+ Recent posts