RaspberryPi 개발환경구축 I 1 제 02 강 개발환경구축 I Single board Computer Wi-Fi망구축 ( 무선공유기 ) 개발툴 (PuTTY, NFS, FTP, samba, mstsc, DD for Win.) Linux 명령
하드웨어플랫폼 * 아두이노와라즈베리파이보드 RaspberryPi 개발환경구축 I 2
하드웨어플랫폼 ( 계속 ) * 라즈베리파이모델사양비교 RaspberryPi 개발환경구축 I 3
SBC * SBC(single board computer) RaspberryPi 개발환경구축 I 4 : 모니터, 키보드, 마우스연결해온전한하나의컴퓨터로활용 : 아래그림과같이구성
RaspberryPi 개발환경구축 I 5 SBC( 계속 ) * Raspbian 이미지다운로드 : https://www.raspberrypi.org/downloads/raspbian/ : Raspbian Stretch Lite 최신판다운로드후압축풀기 : 2018-11-18-raspbian-stretch-lite.zip : 이미지파일 (2018-11-18-raspbian-stretch-lite.img) : 혹은, 바탕화면 [IFC415] 폴더 2018-04-18-raspbian-stretch.img 활용
SBC( 계속 ) RaspberryPi 개발환경구축 I 6 * micro SD 기록툴다운로드 ( Tools.zip 에포함 ) : Etcher 다운로드및설치 https://etcher.io/ : PC와카드리더기 (SD 삽입 ) 연결 : Etcher 실행및기록할이미지파일선택 : Flash! 클릭 ( 기록및검증에 20여분소요 ) : 혹은, win32diskimager 툴활용가능 https://sourceforge.net/projects/win32diskimager/
SBC( 계속 ) * 하드웨어연결 ( 아래그림참조 ) RaspberryPi 개발환경구축 I 7 : 라즈베리파이보드에이미지기록된 micro SD 삽입 : 모니터 (DVI-HDMI 케이블활용 ), 키보드, 마우스연결 : 라즈베리파이보드에전원인가
RaspberryPi 개발환경구축 I 8 SBC( 계속 ) * 로그인 : 내정된로그인계정및암호 : pi / raspberry * 터미널실행 : 바탕화면마우스우클릭 open terminal : 리눅스명령활용하여시스템운영가능 * 로그아웃 : 산딸기아이콘 - shutdown 선택 : 혹은, 터미널창에서 logout, exit 등의명령어 $ logout
SBC( 계속 ) * 유선망연결 RaspberryPi 개발환경구축 I 9 : Win. PC 의랜케이블빼서라즈베리파이보드에연결!!
RaspberryPi 개발환경구축 I 10 SBC( 계속 ) * 현 IP 주소확인 $ apt install net-tools // ifconfig명령에서오류발생시설치 $ ifconfig eth0 // IP 주소확인 * IP 주소설정 ( 172.18.14.xx 가정, Win. PC 용 ) : /etc/dhcpcd.conf 편집 $ sudo nano /etc/dhcpcd.conf interface eth0 static ip_address=172.18.14.xx static netmask=255.255.255.0 static routers=172.18.14.254 static domain_name_servers=168.126.63.1 $ sudo reboot // 재부팅
SBC( 계속 ) * IP 주소확인 $ ifconfig eth0 RaspberryPi 개발환경구축 I 11 * 연결가능확인 : 라즈비안의 Firefox 웹브라우저활용 : Windows의명령행창에서 ping C:\> ping 172.18.14.xx
RaspberryPi 개발환경구축 I 12
초기환경설정 * pi 계정패스워드변경 RaspberryPi 개발환경구축 I 13 : 라즈베리파이환경설정명령인 raspi-config 사용 $ sudo raspi-config : 1 Change User Password 선택 : embedded 로통일!!!!!! : 이후로그인시 pi / embedded 활용
초기환경설정 ( 계속 ) * Wi-Fi 가능위해 RaspberryPi 개발환경구축 I 14 : 4 Localization Options - Wi-Fi Country 항목이 GB Britain (UK) 으로설정돼야함
초기환경설정 ( 계속 ) * micro SD 최대용량사용 : 7 Advanced Options 선택 : 서브화면에서 A1 Expand Filesystem 선택 RaspberryPi 개발환경구축 I 15 : 변경전후로 lsblk 명령으로확인가능 * 재부팅후로그인 : 변경된패스워드로로그인
네트워크구성 * 실습용유무선망구성도 RaspberryPi 개발환경구축 I 16
Wi-Fi 망구축 * 공유기 (iptime A304 모델 ) 활용 RaspberryPi 개발환경구축 I 17 : PC에연결됐던랜케이블을최좌측 (WAN) 잭에연결 : 추가랜케이블로 PC와나머지 4잭중하나간연결 : 공유기전원인가
RaspberryPi 개발환경구축 I 18 Wi-Fi 망구축 ( 계속 ) * 공유기접속 : Win. PC에동일대역 IP 주소 ( 192.168.0.10 ) 할당후, : Windows 웹브라우저주소창에 http://192.168.0.1/ 참고 ) 연결오류발생시 (Win. PC에 IP 미할당시 ) 연결문제진단클릭 - 이복구를관리자권한으로실행클릭 - 이해결방법을적용합니다클릭
Wi-Fi 망구축 ( 계속 ) * 망관리자로그인화면 RaspberryPi 개발환경구축 I 19 : 망관리자계정명 admin/admin( 초기암호 )/ 이미지문자로로그인 : 접속초기화면에서관리도구클릭
Wi-Fi 망구축 ( 계속 ) * 기본설정 - 시스템요약정보 RaspberryPi 개발환경구축 I 20 : 인터넷연결상태 : 인터넷연결시도중... 확인 ( 다음쪽참조 )
Wi-Fi 망구축 ( 계속 ) * 기본설정 - 인터넷설정정보 RaspberryPi 개발환경구축 I 21 : 고정 IP 방식체크 : IP정보 (Windows의 IP 주소정보 ) 설정후적용버튼클릭
RaspberryPi 개발환경구축 I 22 Wi-Fi 망구축 ( 계속 ) * 기본설정 - 무선설정 / 보안 : 5GHz 기본무선네트워크 Off 설정 ( 라즈베리파이지원않음 ) : 2.4 GHz 기본무선네트워크선택후다음정보설정 네트워크 SSID : IFC415_xxxx 네트워크이름알림체크인증및암호화 : ( 권장 ) 항목선택암호 : 000000xxxx 적용버튼클릭하여반영
Wi-Fi 망구축 ( 계속 ) RaspberryPi 개발환경구축 I 23 * 고급설정 - 네트워크관리 - 내부네트워크설정 : 사용중인 IP 주소정보확인가능
Wi-Fi 망구축 ( 계속 ) RaspberryPi 개발환경구축 I 24 * 고급설정 - 네트워크관리 -DHCP 서버설정 : DHCP 서버동작... 실행체크 : 게이트웨이주소기억할것!( 게이트웨이주소 )
Wi-Fi 망구축 ( 계속 ) * 기본설정 - 시스템요약정보 RaspberryPi 개발환경구축 I 25 : 인터넷연결상태 : 인터넷정상적으로연결됨확인
Wi-Fi 망접속 * 무선망 (Wi-Fi) 접속 RaspberryPi 개발환경구축 I 26 : 부팅후우상단화살표아이콘클릭하여무선망접속 : 접속하고자하는망 (IFC415_xxxx) 선택후, 암호 (000000xxxx) 입력
Wi-Fi 망접속 ( 계속 ) * 동적 IP 주소확인 $ sudo ifconfig wlan0 RaspberryPi 개발환경구축 I 27 * ping 혹은웹서핑 : 좌상단웹브라우저실행후특정사이트접속
실습환경용 IP 주소설정 RaspberryPi 개발환경구축 I 28 * 현재는 DHCP 서버에의해동적 IP가사용중임 * Windows의 IP 주소설정 ( 192.168.0.10 ) : 이더넷-어댑터옵션변경에서 : 설정하고자하는 IP 주소, 서브넷마스크설정 : 기본게이트웨이를 192.168.0.1로설정 ( 앞서기억하라고한것 ) : 기본설정 DNS 서버 : 168.126.63.1 : 시스템다시시작클릭하여재부팅
실습환경용 IP 주소설정 ( 계속 ) * Windows 의 IP 주소확인 RaspberryPi 개발환경구축 I 29 : 명령프롬프트창에서 ipconfig 로 ip 주소확인 : 웹브라우저통해특정사이트접속하여확인할것!!
실습환경용 IP 주소설정 ( 계속 ) * 라즈베리파이보드 RaspberryPi 개발환경구축 I 30 : 유선 IP( 192.168.0.30 ) 및무선 IP ( 192.168.0.40 )
실습환경용 IP 주소설정 ( 계속 ) * /etc/dhcpcd.conf 편집 ( 추가 ) $ sudo nano /etc/dhcpcd.conf interface eth0 static ip_address=192.168.0.30 static netmask=255.255.255.0 static routers=192.168.0.1 static domain_name_servers=168.126.63.1 interface wlan0 static ip_address=192.168.0.40 static netmask=255.255.255.0 static routers=192.168.0.1 static domain_name_servers=168.126.63.1 RaspberryPi 개발환경구축 I 31 $ sudo reboot
RaspberryPi 개발환경구축 I 32 Wi-Fi 망접속 ( 계속 ) * 고정 IP 확인 $ ifconfig eth0 $ ifconfig wlan0 * 네트워킹확인 : Windows 명령창에서 ping C:\> ping 192.168.0.30 C:\> ping 192.168.0.40 : 혹은, 웹서핑
IP 설정후 RaspberryPi 개발환경구축 I 33 * 고급설정 - 네트워크관리 -DHCP 서버설정 : 각단말장치의 IP 주소가수동설정인것을확인가능
RaspberryPi 개발환경구축 I 34
개발툴설치 * 시스템관자료공유를위한도구 : Tools.zip 파일참조 RaspberryPi 개발환경구축 I 35 PuTTY : CLI 제공 nfs(network file system) : 동종간공유 ( 다음주 ) FTP(file transfer protocol) : 파일전송 samba : 이종간공유 mstsc : GUI 제공 DD for Windows : SD카드백업및복구
RaspberryPi 개발환경구축 I 36 개발툴설치 ( 계속 ) * SSH(Secure SHell) : 암호통신을이용해서다른컴퓨터에접속한다음, 명령을실행하거나파일조작을행하기위한프로토콜 : 접속단말기에서 SSH 허용해야함 * SSH 활성화 $ sudo raspi-config : Interface - SSH * 재부팅 $ sudo reboot // 재부팅
PuTTY 원격접속 * PuTTY RaspberryPi 개발환경구축 I 37 : SSH기반원격접속 CLI(command line interface) 환경제공 * PuTTY 다운로드및설치 : https://www.chiark.greenend.org.uk/~sgtatham/putty/ : 다운로드한 PuTTY.exe 에대해바로가기만든후, 바로가기아이콘을사용편의를위해바탕화면에옮겨놓자
PuTTY 원격접속 ( 계속 ) * PuTTY 실행및접속정보설정 RaspberryPi 개발환경구축 I 38 : 좌측 Session을클릭 : 우측의 Host Name 에라즈베리파이의 IP 주소를입력 : Connection type 에 SSH 체크 : Open을클릭하여접속 : 설정정보는저장하였다재사용가능 (Load 버튼이용 )
PuTTY 원격접속 ( 계속 ) * PuTTY 실행및접속정보설정 : 접속한터미널창에서원격으로명령어활용 RaspberryPi 개발환경구축 I 39
SFTP 서비스 * FTP 서비스 : 파일송수신을위한서비스 RaspberryPi 개발환경구축 I 40 * FileZilla FTP 클라이언트 : 다운로드사이트 https://filezilla-project.org/ : FileZilla Client 다운로드후설치
SFTP 서비스 ( 계속 ) * FileZilla FTP 클라이언트실행 RaspberryPi 개발환경구축 I 41 : 좌측은클라이언트 (PC), 우측은서버측 (Pi)
RaspberryPi 개발환경구축 I 42 SFTP 서비스 ( 계속 ) * FTP 서버접속 : 메뉴의 파일 - 사이트관리자 항목을선택 : 호스트항에접속할시스템의 IP 주소입력 : 프로토콜항에 SFTP(SSH FTP) 선택 : 로그온유형항에비밀번호묻기선택 : 로그온사용자항에 pi 입력하고, 연결버튼클릭 * 좌측항목선택에새이름을부여하여등록하여재활용
SFTP 서비스 ( 계속 ) * FTP 서버접속 : 패스워드입력 (embedded) 후확인클릭 RaspberryPi 개발환경구축 I 43 : pi 계정의홈디렉터리로접속 : pi 계정의홈디렉터리범주내로파일송수신가능
RaspberryPi 개발환경구축 I 44 Samba 서비스 * Samba 서비스 : 이기종간의파일공유서비스 : Windows와리눅스간파일공유 * Samba 서버패키지설치 $ sudo apt-get update $ sudo apt-get upgrade $ sudo apt-get install samba $ sudo apt-get install samba-common-bin ( 선택적, 최신버전의 samba-common-bin 설치 )
Samba 서비스 ( 계속 ) * Samba 서버환경설정 $ sudo nano /etc/samba/smb.conf [pi] RaspberryPi 개발환경구축 I 45 comment = PI SAMBA SERVER path = /home/pi/ valid user = pi create mask = 0777 read only = no # 혹은, writable = yes browseable = yes public = yes * Samba 사용자계정및비밀번호 (embedded 통일 ) $ sudo smbpasswd -a pi New SMB password:embedded Retype new SMB password:embedded
Samba 서비스 ( 계속 ) * Samba 서버재실행 $ sudo /etc/init.d/samba restart * Samba 서버접속 RaspberryPi 개발환경구축 I 46 : Windows의웹브라우저주소창, : 또는윈도우즈의실행혹은검색창에삼바서버의 IP 주소를 \\192.168.0.40\ 와같이입력
RaspberryPi 개발환경구축 I 47 Samba 서비스 ( 계속 ) * 공유디렉터리의접근권한변경필요시 : chmod 명령사용 $ sudo cd /home/pi $ sudo mkdir my $ sudo chmod -R 777./my // 현작업디렉터리의./my 디렉터리및그하부에대해 // 접근권한을 777로설정 // Windows에서./my 디렉터리하부에파일생성 / 삭제등등가능
RaspberryPi 개발환경구축 I 48 mstsc 원격접속 * mstsc : Windows에서기본제공하는서비스 : GUI(graphic user interface) 환경제공 : SSH 서비스가활성화되어야함 : 접속할단말기에 xrdp 패키지가설치되어야함 * xrdp 패키지설치및재부팅 $ sudo apt-get update // 패키지업데그레... $ sudo apt-get upgrade $ sudo apt-get install xrdp // xrdp 패키지설치 $ sudo reboot // 재부팅
mstsc 원격접속 ( 계속 ) * Windows 의원격접속 RaspberryPi 개발환경구축 I 49 : 실행혹은검색에 mstsc 입력하여탐색 : mstsc.exe 파일을찾아바탕화면에바로가기만들기 : mstsc 실행, IP주소입력후연결클릭 : 로그인화면에계정명및패스워드입력하여접속
mstsc 원격접속 ( 계속 ) * 접속화면 (GUI) RaspberryPi 개발환경구축 I 50
DD for Win. * DD for Windows RaspberryPi 개발환경구축 I 51 : Linux의 dd 명령유사기능 : micro SD 카드의백업및복구에사용 : 다운로드 https://yeslab.tistory.com/37 : DDWin.exe 파일에우클릭하여관리자권한으로필실행
DD for Win.( 계속 ) * micro SD 의백업 RaspberryPi 개발환경구축 I 52 : Choose disk버튼눌러, SD 카드선택 : Choose file 선택하여경로및파일명지정 (.ddi확장자) : Backup 버튼눌러파일로백업
DD for Win.( 계속 ) * micro SD 로복구 RaspberryPi 개발환경구축 I 53 : Choose file 선택하여경로및파일명지정 (.ddi확장자) : Choose disk버튼눌러, SD 카드선택 : Restore 버튼눌러복구
Linux 명령 * 다음관련명령 : 유용한기능들 : 파일시스템관련 : 검색관련 : 네트워킹및기타관련 RaspberryPi 개발환경구축 I 54 * 실습을진행하면서추가명령숙지
RaspberryPi 개발환경구축 I 55 Linux 명령 ( 계속 ) * 유용한기능 : 히스토리기능 // 기존사용했던명령을유지, 자판의상하키활용 : 자동완성기능 // 긴파일명혹은디렉터리명의자동완성기능 // 선두문자입력후 <tab> 키활용 : 파이프기능 // 한명령의표준출력을다음명령의표준입력으로전달 // 로명령간구분 $ ls -al /usr/bin more // /usr/bin의파일목록을페이지단위출력 $ ls /usr/bin sort less // 파일목록을소팅하여페이지단위출력
: 절대경로및상대경로 // 절대경로는 / 부터명시 // 상대경로는. 혹은.. 로시작하여지정 RaspberryPi 개발환경구축 I 56 * 파일시스템관련 : 파일및디렉터리속성, ls l 로확인 pi@raspberrypi:~ $ ls -l drwxr-xr-x 2 pi pi 4096 Nov 13 2018 Desktop // 첫글자 : 파일유형 (d디렉터리, -일반파일, c문자장치, b블록장치,...) // 다음 3자리씩 (rwx) : 접근권한 (owner, group, others 별 3자리 ) : ls 명령 $ ls // 현재디렉터리의파일목록 $ ls -a // 모든파일 ( 히든파일포함 ) $ ls -l // 속성까지상세하게 $ ls -al // 모든파일 ( 히든파일포함 ) 을자세하게
RaspberryPi 개발환경구축 I 57 $ ls /usr/bin // /usr/bin/ 디렉터리의파일목록 $ ls *.txt // 특정파일만 ( 파일명이.txt로끝나는모든파일 ) $ ls -l /usr/bin/a* : pwd(present working directory) 명령 pi@raspberrypi:~ $ pwd /home/pi : mkdir(make directory) 명령 $ mkdir mydir $ mkdir p mydir/subdir/tmp // parents, 서브디렉토리까지생성 : cd(change directory) 명령 $ cd // 사용자의홈디렉터리로이동 $ cd.. //.. 은현디렉터리의부모디렉터리를의미 $ cd mydir // 현디렉터리내의서브디렉터리 mydir로 // $ cd./mydir과동일
$ cd /usr/bin // /usr/bin 로이동 ( 절대경로 ) RaspberryPi 개발환경구축 I 58 $ cd./../usr/bin // 홈디렉터리에서위명령과동일효과 ( 상대경로 ) : rmdir(remove directory) 명령 $ rmdir mydir $ rmdir p mydir/subdir // 여러계층의디렉터리삭제, 비어있어야함 : touch 명령 // 빈파일의생성혹은기존파일의생성일시를현시점으로통일 $ touch test1 test2 // 빈파일들을생성 $ touch * // 모든파일의생성일시를현재일시로변경 : nano 명령 $ nano test.c // 파일편집기, 가상머신에선이외에 gedit 제공 : more/less 명령
RaspberryPi 개발환경구축 I 59 // 파일의내용을한화면씩 (24라인) 보여줌, <space>, <b> 키활용 $ more test $ less test // more 명령과동일기능 : head 명령 $ head test // 기본 10 라인보기 $ head -20 test // 20 라인보기 : tail 명령 $ tail test // 기본 10 라인보기 $ tail -2 test // 끝의 2 라인보기 : rm(remove) 명령 // 파일및디렉터리삭제 $ rm test // test 파일삭제 $ rm -i test // 삭제확인질의후 $ rm -r mydir // 디렉터리삭제시
$ rm -rf mydir // mydir 와그하부를삭제 RaspberryPi 개발환경구축 I 60 : cp(copy) 명령 $ cp test testcopy // 파일복사 $ cp -r mydir yourdir // 디렉터리복사 $ cp -a /home/sample/tests. // 파일의속성유지한채복사, archive : mv(move) 명령 $ mv aaa bbb./mydir //./mydir은디렉터리로두파일이동 $ mv /etc/*./mydir // /etc/ 하부모든파일을./mydir로이동 $ mv test mytest // test를 mytest로변경, 파일혹은디렉터리 $ mv mydir yourdir // mydir 디렉터리명을 yourdir로변경 : chmod(change mode) 명령 $ chmod go-w filedir // filedir에 group, others의기록권한삭제 $ chmod a+x filedir // filedir에모두에게실행권한설정 $ chmod 755 filedir // filedir에 octal 표현, -rwxr-xr-x 설정
$ chmod R 777./filedir // 하부디렉터리까지설정 RaspberryPi 개발환경구축 I 61 : chown/chgrp 명령 $ chown root /home/pi/test // owner를 root로 $ chgrp root /home/pi/test // group을 root로 $ chown root.root /home/pi/test // 소유자및그룹함께변경 : ln(link) 명령 $ ln aaa.txt atext // 하드링크, 두파일내용동일유지, 별도공간 $ ln -s./mydir/subdir/test ltest // 심볼릭링크 $ cat ltest // 다른경로에있는파일을쉽게접근 $ ln -s /mnt/share/ share // 심볼릭링크, 디렉터리지정 $ ls share // 파일목록보기 $ cd share // /mnt/share 로이동
RaspberryPi 개발환경구축 I 62 : unzip 명령 $ unzip tools.zip : tar(tape archive) 명령 // 옵션시 붙이지않음 $ tar cvf my.tar./my //./my의모든파일을 my.tar파일로묶음 $ tar tvf my.tar // 풀지않고포함목록만확인 $ tar xvf my.tar // 풀기 $ tar cvfz my.tar.gz./my // 묶기와 gzip 동시에,.gz 확장자 $ tar xvfz my.tar.gz // 압축복원과풀기동시에 * 검색관련 : grep 명령 $ grep hello abc.txt // 파일내에 hello포함라인검색 $ ls -al grep test // 파일목록중에 test 포함된것출력
RaspberryPi 개발환경구축 I 63 : whereis 명령 pi@raspberrypi:~ $ whereis ifconfig ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz : find 명령 // 지정경로하부에서특정패턴의파일검색 pi@raspberrypi:~ $ find /usr -name wiringpi* /usr/include/wiringpii2c.h /usr/include/wiringpi.h /usr/include/wiringpispi.h * 네트워킹및기타관련 : ifconfig 명령 $ ifconfig // 현재 NIC의설정정보보기 $ ifconfig eth0 172.18.14.xx // IP 주소변경
RaspberryPi 개발환경구축 I 64 : ping 명령 $ ping 192.168.0.40 : hostname 명령 $ hostname : uname 명령 // 프로세서, 커널버젼등의정보확인 $ uname -a // 시스템의모든정보보기 $ uname -p // 프로세서확인 $ uname -r // 커널버젼확인
실습종료시...( 필 ) RaspberryPi 개발환경구축 I 65 * 매실습시간완료후 Windows의 IP 주소를초기 IP 주소설정상태로반드시재설정할것!!
실습과제 [ 실습 1] 개발환경툴 : 제시된개발환경툴의설치및활용숙지 PuTTY : CLI 제공 FTP(file transfer protocol) : 파일전송 samba : 이종간공유 mstsc : GUI 제공 DD for Windows : SD카드백업및복구 RaspberryPi 개발환경구축 I 66 [ 실습 2] Linux 명령 : 제시된기본리눅스명령을충분히숙지토록실습
RaspberryPi 개발환경구축 I 67