임베디드시스템 2 강 2013. 03. 22
학습목표 1. 리눅스의이해 2. 임베디드리눅스의이해 3. 리눅스기본명령어의이해 4. VI 명령어의이해 2/30
목차 1. 리눅스 리눅스 (Linux) 정의리눅스국내배포판 2. 임베디드리눅스 임베디드리눅스의정의임베디드리눅스의특징 3. 리눅스기본명령어 4. vi 편집기명령어 3/30
리눅스 리눅스 (Linux) 정의 (1) 유닉스 (unix) 타입의운영체제 (2) 핀란드대학원생 Linus Torvals 에의해커널이최초로개발 - 1991 년 version 0.01 발표 - 1996 년 2.0-1999 년 2.2 버전발표, 엔터프라이즈환경에진입할수있는초석마련 (3) 이후전세계의수많은프로그래머들에의해지속적으로개발 (4) 사용범위 - 개인용데스크탑유형 - 워크스테이션유형 - 서버유형 - 임베디드시스템 - 클러스터링환경 4/30
리눅스 리눅스 /GNU 를만들어가는사람들 5/30
리눅스 GNU (GNU s not Unix) (1) 80년대초반리차드스톨만 (Richard Stallman) 에의하여시작 (2) GPL (GNU Public License) - GPL에의거한모든소프트웨어는무료 - 변경사항을포함해서재판매하는것은허용하나소스는공개해야함 - 프로그래머는자신의소프트웨어로발생하는어떤위험이나손해에대한법률적책임이없음 (3) Linux에 gcc, emacs 등을이식 (4) BSD의많은유용한유틸리티를포함하게하는게기가됨 (5) 리눅스는 GPL에의거하여배포 6/30
리눅스 커널버전 (1) 역사 : http://www.linux.org/dist/kernel.html (2) 버전숫자 : X.Y.ZZ - X : 커널의버전 - Y : 릴리즈번호, 홀수-> 개발중, 짝수-> 안정된버전 - ZZ : Modifications, 사소한변화를의미 (3) 최신버전 - 새로운다양한기능이이미추가되어있음 - 크기가매우크다는단점이있음 커널버전의선택 (1) 임베디드시스템의크기, 기능및확장성을고려 7/30
리눅스 리눅스 (Linux) 특징 (1) 리눅스장점 - 유닉스와완벽하게호환가능 - 공개운영체제 / 무료 : 가격경쟁력우수 - PowerPC, ARM, MIPS 등다양한 CPU Platform 지원 - 하드웨어의기능을효과적으로사용 - 강력한네트워크구축가능 - 다양한응용프로그램을제공 - 다중사용자 / 다중작업시스템 - 인터넷의모든기능을지원 (2) Linus Torvals 에의해커널이최초로개발 - 공개운영체제이기때문에문제점발생시보상의어려움 - 공개운영체제이기때문에보안에취약할것이라는선입관이존재 - 리눅스커널이자주, 빨리변화 8/30
리눅스 리눅스해외배포판 (1) 슬랙웨어 (Slackware) - 초창기의배포판 : 패트릭볼거딩이개발 / 보급 - CD ROM : 커널쉘애플리케이션인스톨러포함 - 프트웨어대부분을소스컴파일로설치 : 초보자에게난해 (2) 레드햇 (Red hat) - 레드햇소프트웨어사에서공급 - 쉬운인스톨러 (RPM: redhat package manager) 와관리툴 (3) 데비안 (Debian) - 데비안프로젝트에의해서발전 : 다양한개발자들이참여 - 패키지에문제점이발견되면몇일후에바로수정패키지가만들어져보급 (4) 리눅스 - 맨드레이크 (Linux-Mandrake) - 다양한그래픽환경을제공친숙한윈도우환경제공 9/30
리눅스 리눅스국내배포판 (1) K 리눅스 - 레드햇기반의리눅스로리눅스인터내셔널에서출시 - 한글입력기, 인터넷을통한자동업데이트인스톨러제공 (2) 엑셀리눅스 - 레드햇기반의리눅스로 KDE 환경을기본데스크탑으로채용 - 다양한하드웨어드라이버지원과한글화작업 (3) 알짜리눅스 - 기업을위한상용버전으로적합, 레드햇기반, 아나콘다를도입하여한글화 (4) 미지리눅스 - 데스크탑용으로개발 : 문서작성, PC 통신, 웹브라우저, 그래픽툴등을기본제공 - 서버용프로그램이많이빠져있음 (5) 파워리눅스 - 리눅스코리아에서공급, 암호화및보안을강화 - 서버의최적화기능과관리를실현 : 거의모든서버용소프트웨어를갖추고있음 - 웹기반의통합관리시스템제공 : 기업전산환경에적합 10/30
임베디드리눅스 (1) 임베디드리룩스정의 - 저성능프로세서와소용량의메모리를가진임베디드시스템용으로개발된리눅스 (2) 임베디드시스템용으로리룩스사용하는이유 - 안정된운영체제의제공 ( 멀티태스킹의제공 ) - 강력하고다양한네트워크환경의제공 - 확장성의다양함과용이함의제공 - 다양한형태의파일시스템과실행파일포맷지원 - Free software (3) 임베디드리눅스가가져야하는필수조건 - 리눅스자체크기와기능의최소화, 경량화 - 목표로하는시스템에맞게쉽게재구성이가능 - 저성능프로세서를위한성능의최적화 (4) 임베디드리룩스한계 - 윈도우기반의데스크탑환경의극복 - 연구개발인력의부족 ( 커널, 디바이스드라이버등의개발인력 ) 11/30
임베디드리눅스 (5) 임베디드리눅스의개발붐 - 정보가전이라통칭되는새로운임베디드시스템의등장과이를위한운영체제의필요 - 새롭게생겨나는기능적요구와고품질의창조형서비스의적시공급의필요성증대 (Q) 일반상용리룩스란? - 고성능프로세서와대용량메모리를장착하고있는범용컴퓨터시스템용으로개발된리눅스 (Q) 임베디드리눅스종류 - 국내개발 : 타이눅스 (Tynux), 임베닉스 (Embenix), 리누엣 (Linuette) 등 - 해외개발 : minirtl, 임베딕스 (Embedix), 레드햇 (redhat), 하드햇 (hardhat), 터보리눅스, 리눅스웍스, Emeralds 등 12/30
리눅스설치 (1) 타겟시스템을위한개발환경구축을위해 Linux를호스트 PC에설치 - 호스트 PC는개발할때사용할 PC를일컫는다 (2) Linux는 RedHat 9 버전을설치 ( 전체설치 ) - 임베디드리눅스실험키트 (IN-DVK-P255B) 에호환성이좋은버전 (3) 리눅스를설치방법소개 - 직접파티션을나누어 Linux 병행설치 -> 물리하드개수에따른파티션작업방법 - 가상환경 (VMware) 상에서설치 ( 이방법으로진행 ) - Linux 설치방법소개 13/30
리눅스설치방법 (1) 직접파티션을나누어 Linux 병행설치 - 물리하드개수에따른파티션작업방법 HDD 1 1 개의 HDD partition Windows C Linux D 다수의 HDD HDD 1 partition HDD 2 partition Windows C Linux D 14/30
(1) 직접파티션을나누어 Linux 병행설치 ( 계속 ) - Grub 를이용한멀티부팅 Power On 멀티부팅 GRUB Windows - C: Linux - D: 15/30
(2) 가상환경 (VMware) 상에서설치 - VMware 를이용하여리눅스설치 VMware (Application) Linux (OS) Windows (OS) 16/30
(2) 가상환경 (VMware) 상에서설치 ( 계속 ) - VMware 다운로드 -> http://www.vmware.com/ 에서회원가입 -> E-mail 로 30 일이용가능한 license key 획득 -> VMware Workstation for Windows 다운로드 - VMware 를설치 -> 다운받은설치파일실행하여설치 -> 설치종료후 E-mail 로받은 license key 입력 -> 30 일이후에는 VMware Player 를다운하여사용 1 2 3 4 클릭클릭클릭클릭 5 6 7 8 클릭클릭클릭 license key 17/30
(2) 가상환경 (VMware) 상에서설치 ( 계속 ) - VMware 실행 -> 시작 프로그램 VMware VMware Workstation -> License 동의 - VMware 에 Linux RedHat9 을위한 VM 이미지생성 -> 새로운 Virtual Machine 이미지생성하기 클릭 18/30
(2) 가상환경 (VMware) 상에서설치 ( 계속 ) - VMware 실행 -> 시작 프로그램 VMware VMware Workstation -> License 동의 - VMware 에 Linux RedHat9 을위한 VM 이미지생성 -> 새로운 Virtual Machine 이미지생성하기 클릭 19/30
(2) 가상환경 (VMware) 상에서설치 ( 계속 ) - VMware에 Linux RedHat9을위한 VM 이미지생성 ( 계속 ) 1 2 3 Linux 설정 클릭 클릭 RedHat Linux 설정 5 4 Bridged 설정 클릭 클릭 6 7 용량 15G 조절 클릭 만약 Fedora 8 을설치할경우에는 Other Linux 2.6.x kernel 선택 클릭 클릭 20/30
(2) 가상환경 (VMware) 상에서설치 ( 계속 ) - Embedded Linux RedHat9을위한 VM 환경설정 1 3 Serial, Parallel Port 추가 2 클릭 4 5 클릭 클릭 클릭 21/30
(2) 가상환경 (VMware) 상에서설치 ( 계속 ) 1 - Embedded Linux RedHat9 을위한 VM 환경설정 ( 계속 ) 2 메인메모리의절반을할당 RedHat9 DVD 이미지삽입 ( 이미지교체없이 Install 가능 ) 이미지다운로드주소 인터넷주소창에복사후엔터 ftp://ftp.sayclub.com/pub/linux/redhat/ archive.redhat.com/redhat/linux/9/en/ iso/i386/shrike-i386-dvd1.iso 22/30
(2) 가상환경 (VMware) 상에서설치 ( 계속 ) - VMware에 RedHat9 설치시작 1 시작 23/30
(3) RedHat9 설치 설치진행중 VMware 내에서커서를꺼내고자할때에는 Ctrl + Alt 키를동시에누르면, 윈도우상으로다시나옵니다. 부팅 1 Enter 키누르세요 24/30
(3) RedHat9 설치 1 Skip 선택 25/30
(3) RedHat9 설치 1 클릭 26/30
(3) RedHat9 설치 언어선택 1 한국어선택 2 클릭 27/30
(3) RedHat9 설치 키보드설정 1 영문자판선택 2 클릭 28/30
(3) RedHat9 설치 마우스설정 1 기본설정유지 2 클릭 29/30
(3) RedHat9 설치 1 개인데스크탑 설치유형 2 클릭 30/30
(3) RedHat9 설치 드라이브파티션설정 31/30
(3) RedHat9 설치 수동파티션설정 32/30
(3) RedHat9 설치 파티션추가 33/30
(3) RedHat9 설치 부트로더설정 1 클릭 34/30
(3) RedHat9 설치 네트워크설정 1 호스트 PC 이름을기재 ( 스스로정함 ) 2 클릭 35/30
(3) RedHat9 설치 1 [ 방화벽을사용하지않음 ] 선택 방화벽설정 2 클릭 36/30
(3) RedHat9 설치 언어지원설정 1 클릭 37/30
(3) RedHat9 설치 시간대설정 1 클릭 38/30
(3) RedHat9 설치 계정설정 1 암호입력 2 클릭 39/30
(3) RedHat9 설치 패키지그룹선택 1 스크롤바최하단으로내리기 2 전부설치선택 3 클릭 40/30
(3) RedHat9 설치 패키지설치 1 클릭 41/30
(3) RedHat9 설치 부팅디스켓제작 1 클릭 2 클릭 42/30
(3) RedHat9 설치 그래픽환경설정 1 클릭 43/30
(3) RedHat9 설치 모니터설정 1 클릭 44/30
(3) RedHat9 설치 그래픽사용자설정 1 클릭 45/30
(3) RedHat9 설치 그래픽사용자설정 1 클릭 46/30
(4) 리눅스시작 - 부트로더 - GRUB 1 Enter 47/30
(5) 초기설정 2 1 클릭클릭 1 클릭 1 클릭 1 1 클릭 클릭 2 클릭 1 클릭 48/30
(6) 설정완료 1 클릭 49/30
(7) 리눅스시작 - 로그인 1 2 사용자이름으로 root 입력 비밀번호입력 50/30
(8) 리눅스설치완료 51/30
리눅스기본명령어 whoami - 현재리눅스시스템을사용하고있는사용자계정명을표시하는명령어 who am I - 사용자의사용환경에대한정보를출력하는명령어 man - 리눅스에서사용하는매뉴얼명령어 passwd - 사용자의암호를변경하는명령 - 최소 6자이상, 반드시 1개이상의문자포함 52/30
리눅스기본명령어 cd - 디렉토리이동명령어 -> 디렉토리의구분자로서 / 사용 -> 절대경로와상대경로중편리한경로로사용 -> 현재계층 (. ), 상위계층 (.. ) -> 현재디렉토리확인명령어 : PWD (Q) 리눅스계층구조? - 파일 6 의절대경로표시 : / 디렉토리 1/ 디렉토리 3/ 파일 6 - 파일 4 기준으로 파일 3 의위치를상대경로표시 :../ 디렉토리 1/ 파일 3 < 리눅스의계층적인파일구조 > 53/30
리눅스기본명령어 mkdir - 새로운디렉토리형성시키는명령어 - 옵션 -p : 계층구조를갖는여러디렉토리를동시에생성 rmdir - 비어있는디렉토리를삭제시키는명령어 - 옵션 -p : 계층구조를갖는여러디렉토리를동시에삭제 touch - 파일이존재할경우 : 파일의수정날짜를변경 - 파일이존재하지않을경우 : 크기가 0인빈파일생성 54/30
리눅스기본명령어 ls - 현재사용자의작업디렉토리에존재하는파일과디렉토리들을보기위한명령어 - 명령어옵션 55/30
리눅스기본명령어 cp - 파일복사명령어 - 옵션 -r : 디렉토리와디렉토리내부의파일을한꺼번에복사 -f : 복사대상파일이있으면강제로삭제후재복사 -a : 원본파일의속성, 링트정보들을그대로유지하면서하위디렉토리를포함한모든것을복사 rm - 파일혹은디렉토리삭제명령어 - 옵션 56/30
리눅스기본명령어 mv - 파일과디렉토리의이름을변경하거나파일이놓인경로를변경하는명령어 # mv aaa bbb ccc abcd - 옵션 cat / more - cat : 텍스트로작성된파일내용을화면에출력할때사용하는명령 - more : 텍스트로작성된파일내용을페이지단위로화면에출력할때사용 57/30
리눅스기본명령어 gzip/bzip2/compress - 파일압축하는명령어 : 공통적으로명령어 + 압축할파일명 - 옵션 -d : 압축된파일의압축풀기 ( 혹은 gunzip/bunzip2/uncompress) tar - 여러가지파일과디렉토리들을하나의파일로묶어주는역할을하는명령어 # tar < 옵션 > < 파일명 > < 소스파일 / 디렉토리 > - 옵션 c : creat 생성의미 v : verbose 화면에진행사항을표시 f : file 로묶으라는의미 - tar 파일을원래상태로풀어내는경우 : 옵션 x (extract) 사용 - tar 파일을풀기이전에미리보는경우 : 옵션 t 사용 - tar 명령어를이용하여압축하는경우 : 옵션 z (gzip), 옵션 j (bizp2) 사용 - tar 명령어를이용한압축파일을풀경우 : 옵션 x 와옵션 z( 혹은 j) 동시사용 58/30
리눅스기본명령어 파일 / 디렉토리허가모드, 소유자변경, 그룹변경에관한명령어 1 파일의종류 ( 속성 ) 영역 - : 일반적인파일을의미 d : 디렉토리를의미 l : 심볼릭링크 (symbolic link) 되어있음을의미 c : 터미널, 네트워크, 프린트, 마우스등의장치관련캐릭터디바이스용도의장치파일 p : 파이프 s : 소켓 2 파일의허가모드영역 -> 소유자, 소유자가속한그룹의사용자들, 그밖의사용자들에대하여각각허가모드를부여 -> 읽기허용 (r), 쓰기허용 (w), 실행및접근허용 (x) -> 파일허가권의변경 : chmod (change mode) -> 옵션 -R : 해당디렉토리및하부디렉토리의모든파일및디렉토리의모드변경 59/30
리눅스기본명령어 3 하드링크되어있는파일의개수 4 파일의소유권을가진사용자계정명 -> 사용자의변경 : chown (change owner) -> 옵션 -R : 해당디렉토리및하부디렉토리의모든파일및디렉토리의사용자소유권변경 5 파일이속한그룹의이름 -> 소유그룹의변경 : chgrp (change group) -> 옵션 -R : 해당디렉토리및하부디렉토리의모든파일및디렉토리의그룹소유권변경 6 파일의크기를 byte 단위로표시 7 파일을마지막으로수정한월, 일, 시간을표시 8 파일이름 60/30
리눅스기본명령어 ln - 복잡한파일명 / 경로명을단순화하여이용하기위한명령어 # ln < 옵션 > < 실제파일 > < 링크파일 > - 옵션 -s : symbolic 형성 (-s 없이 ln 사용하면 hard link) (Q) Symbolic link? - 특정한파일을다른파일이가리키도록연결시키는기법 - 윈도우의바로가기와같은개념 - 특정디렉토리가길경우링크를만들어손쉽게이동이가능 (Q) Hard link - 동일한 inode 사용하는파일 - 복제파일수정하면원본파일도수정 ( 일반복사명령어인 CP 와의차이점 ) 61/30
리눅스기본명령어 chmod - 파일 / 디렉토리의허가모드에관한사항을변경 - 기호에의한변경 # chmod o+wx testfile # chmod a=r testfile < 파일 / 디렉토리의허가모드를변경할수있는기호 > 62/30
리눅스기본명령어 - 숫자에의한변경 # chmod 761 testfile < 파일 / 디렉토리의허가모드를변경할수있는숫자 > 63/30
리눅스기본명령어 Pipe : - 명령어에서나온결과값을바로다음명령어의인수로전달하는명령어 -> 파이프를통해명령어 / 프로그램에서출력되는값을다음명령어의입력값으로활용가능 # ls /usr/bin more 입 / 출력리다이렉션 (redirection) : > - 파일을읽어서다른값 ( 다른파일혹은다른출력장치 ) 으로변경 -> 표준출력장치로사용될파일이이미존재한다면해당파일의내용이덮어쓰여짐 # cat a.txt > b.txt - >> : 이미존재하는파일에새로운내용을추가 64/30
리눅스기본명령어 Filter : grep - 해당파일내에서특정단어가들어있는라인을검색하는명령어 # grep sshd /var/log/secure - 옵션 -v : 특정단어가포함된라인을제외한모든라인을출력 -l : 특정단어가포함된파일을현재작업디렉토리에서찾아출력 -n : 특정단어가포함된라인을찾아라인번호를붙여출력 (Q) grep 명령어에서주로사용되는와일드카드 65/30
리눅스기본명령어 mount - 여러개의파일시스템을가진블록장치들을운영체제가인식할수있도록하는과정 - 파일시스템의한디렉토리를할당해서다른파일시스템이사용할수있도록허락해주는것 - 블록장치 : 하드디스크, CD-ROM, USB 저장장치등과같은저장매체 - 사용방법 : # mount < 옵션 > < 파일시스템유형 > < 장치 > <mount 포인트 > -> 옵션 -t : 파일시스템유형, -v : 자세한출력모드, -f : mount 가능여부출력, -w : 읽기 / 쓰기모드로 mount 진행 -> 파일시스템유형 : ext, ext2, vfat, hpfs, iso9660, minix, ntfs -> 장치 : ` 장치들이하나의파일로서 /dev 밑에존재 -> mount 포인트 : 파일시스템을마운트할때어느지점으로마운트할것인지결정 ( 예 ) /mnt/floppy, /mnt/cdrom 66/30
리눅스기본명령어 - 예 -> cdrom mount # mkdir /mnt/cdrom # mount t iso9660 /dev/cdrom /mnt/cdrom -> usb mount # mkdir /mnt/usb # mount t vfat /dev/sda1 /mnt/usb -> floppy 디스켓 mount # mkdir /mnt/floppy # mount t vfat /dev/fd0 /mnt/floppy - umount : 마운트된장치를다시제거하는과정 # umount /mnt/cdrom 67/30
vi 편집기명령어 vi (visual editor) - 윈도우의메모장과같은텍스트편집기 - 리눅스시스템에서가장보편적으로사용하는편집기 - 사용법 : # vi < 파일명 > - vi 편집기의 3 가지모드 : 입력 ( 편집 ) 모드 / 명령모드 / 실행모드 -> vi 편집기를처음수행할때에는명령모드상태 -> 입력 ( 편집 ) 모드로변경해야글자의입력이가능 -> 실행모드 : 파일편집도중에 i 종료하지않고셀에명령어를전달해야하는경우사용 -> 명령모드에서입력모드로의변환 : <a> <i> -> 입력모드에서명령모드로의변환 : <esc> -> 입력모드 / 명령모드에서실행모드로의변환 : <:>+ 해당기능을수행하는키입력 - 파도움말 : <F1> 혹은실행모드에서 help : (help) -> 편집모드로의변환 : < ctrl> + ww 68/30
vi 편집기명령어 커서의이동 - 문자의이동 - 단어의이동 69/30
vi 편집기명령어 - 행의이동 - 페이지이동 70/30
vi 편집기명령어 입력모드 - 입력모드키 - 입력모드에서는방향키로서커서의이동이가능하므로주로 i, o 키사용 71/30
vi 편집기명령어 명령모드 - 입력모드에서 <esc> 통한일반모드에서명령모드관련키입력으로수행 - 삭제관련키 72/30
vi 편집기명령어 - 복사 / 잘라내기 / 붙여넣기관련키 - 치환 / 변환관련키 73/30
vi 편집기명령어 - 검색관련키 - 복구관련키 74/30
vi 편집기명령어 실행모드 - 입력모드에서 <esc> 통한일반모드에서콜론 (:) 입력후해당명령어를입력하여수행 - 치환관련명령어 %s/usr/\usr/bin/g 75/30
vi 편집기명령어 - 파일관련명령어 - 기타 -> 라인번호생성명령어 : :set number (nu) -> 라인번호제거명령어 : :set nonumber (nonu) 76/30
감사합니다!