IOT 오픈소스 > 라즈베리파이
라즈베리파이 시스템 관리 (1)
 
제07강. 시스템 관리(1)

하드웨어 설정config.txt

라즈베리파이의 하드웨어는 /boot 디렉터리에 있는 config.txt파일에 담겨있는 설정 값들에 의해 제어된다. 이파일은 라즈베리파이가 다양한 입/출력들을 어떻게 설정하고BCM2835 칩과 연결된 메모리 모듈이 실행되어야 하는 속도를 알려준다.

그림 71:/boot 디렉터리의 안의 내용, config.txt 파일 선택 

라즈베리파이, raspberry pi, 라즈베리파이 실습, 라즈베리파이 예제, 라즈베리파이 교육 

 

그래픽 출력이 나오지 않거나 이미지가 스크린에 꽉 차지 않거나 넘치는 문제가 있다면 config.txt 파일을 수정하면 된다. 어떤 배포판에서는 이 파일이비어 있거나 없는 경우도 있는데 그것은 라즈베리파이가 사전 설정된 기본값을 사용하고 있다는 뜻이다. 값을변경하고 싶은데 파일이 없으면 그냥 config.txt 라는 이름의 새 텍스트 파일을 만들어주면 된다.

config.txt파일에서는 CPU GPU의 메모리 사용비율을 지정하는 부분을 제외한 대부분의 하드웨어 관련 부분을 제어할 수 있다. 메모리 사용 비율 부분은 이장의 뒷부분에 있는 메모리 파티셔닝– start.elf”에서 배우게 될 것이다

config.txt파일은 시스템이 처음 시작될 때 단 한번 읽혀진다. 실행 중에 변경된 내용은 시스템이 재시작할 때까지 반영되지 않는다. 변경된내용을 되돌리고자 할 경우 단순히 /boot에 있는config.txt파일을 삭제하면 된다. 값을 새로 변경한 후 라즈베리파이가 부팅되지 않으면 SD카드를 PC에 가져가서config.txt파일을 지운 후 다시 라즈베리파이에 넣고 부팅하면 된다.

디스플레이 설정

일반적으로 라즈베리파이는 연결된 디스플레이를 감지하여 설정을 그에 따라 자동으로 변경한다. 하지만 때대로 이런 자동 감지가 작동하지 않을 때가 있다. 라즈베리파이가한 나라의 구형 TV와 연결되어 사용되다가 다른 나라로 가져갔을 때 이런 일이 종종 일어난다. 라즈베리파이를 TV에 연결했는데 아무것도 표시되지 않으면 기본값들을바꿔줘야 할 필요가 있다.

config.txt의 다양한 설정 값들이 이러한 비디오 출력 문제를개선하는데 사용될 수 있다.

주의: HDMI 또는 컴포지트 출력 설정을 수동으로 조정하는 것은 라즈베리파이가모니터와 소통하는 것을 방해할 수 있다. 화면에 아무것도 출력되지 않을 때 일반적으로 가장 좋은 방법은라즈베리파이가 설정 값을 자동으로 감지하도록 내버려 두는 것이다.

overscan_left – 왼쪽 화면을 지정한 픽셀 수만큼 안쪽으로 표시. 표시되는텍스트가 경계 면에서 잘려서 표시된다면 지정된 픽셀 수만큼 지나서 표시되도록 하여 문제를 해결한다.

overscan_right – 오른쪽

overscan_top – 위쪽

overscan_bottom – 아래쪽

disable_overscan – HDMI를 통해 모니터나 TV를 사용하는경우 표시되는 이미지 주위에 검은색 여백이 생길 수 있다. 이 항목에 값을 1로 지정하여 기본 설정된 오버스캔을 비활성화 함으로써 이 여백을 없앨 수 있다.

framebuffer_width – 콘솔 화면의 가로 크기를 픽셀 단위로 지정.디스플레이 화면에 텍스트가 너무 작게 표시되면 이 값을 기본값보다 더 작은 값으로 바꿔준다.

framebuffer_height – 콘솔 화면의 세로 크기

framebuffer_depth – 콘솔 화면의 색상수를 픽셀 당 비트수로 지정.기본 값은 16 비트/픽셀 (65,536 색상) 이다. 8 비트/픽셀(256 색상), 24 비트/픽셀( 16.7 백만 색상), 32비트/픽셀(10억 색상)을 지정할 수 있다. 32 비트/픽셀을 지정하면 실제 이를 지원하는 디스플레이가 아직 흔치 않으므로 화면이 깨질 수 있다.

framebuffer_ignore_alpha – 1로 설정하면 콘솔 화면의 투명도를 제어하는 알파 채널을 비활성화한다. 알파 채널 비활성화는 일반적으로 필요하지 않지만framebuffer_depth 32 비트/픽셀로지정했을 때 발생하는 화면 깨짐을 해소할 수 있다.

sdtv_mode – 이 값은 아날로그 컴포지트 출력이 다양한 국가에 맞추어 동작할 수 있도록 해준다. 기본값으로 라즈베리파이는 NTSC 북미 비디오 표준을 사용한다. 다른 국가에서는 아날로그 TV를 이용하기 위해 이 값을 바꿀 필요가있을 것이다(한국은 NTSC 사용). 설정 값들은 다음과 같다:

0 – NTSC, 북미 비디오 표준

1 – NTSC-J, 일본 비디오 표준

2 – PAL, 영국 및 다른 국가 (주로 유럽) 비디오 표준

3 – PAL-M, 브라질 비디오 표준

sdtv_aspect – 아날로그 컴포지트 출력의 가로:세로 출력 비를조절. 콘솔 화면이 가로 또는 세로로 늘어나거나 찌그러진 것처럼 보이면 사용주인 TV의 가로:세로 비율에 맞추어 이 값을 조절. 가능한 설정 값들은 다음과 같다:

1 – 4:3, 일반적인 구형 기기

2 – 14:9, 비교적 작은 와이드스크린 TV

3 – 16:9, 일반적인 근래의 와이드스크린 TV

hdmi_mode – 아날로그 컴포지트 출력뿐만 아니라, HDMI 포트에대한 자동 감지 해상도도 수동으로 설정 가능. 좀 더 먼 거리에서 화면을 읽기 쉽도록 해상도를 낮춰설정하고자 할 경우에 간편. 참조 B, “HDMI DisplayModes”에 설정 가능한 값들의 목록이 있다.

hdmi_drive – HDMI 포트의 출력 전압을 변경할 수 있다. 이값은 HDMI-DVI 어댑터를 사용할 때 중요하다. HDMI DVI의 전압이 약간 다르기 때문이다. 화면이 너무 밝으면서 허옇거나바람에 날아간 것 같으면 이 설정을 바꿔본다. 가능한 값은 다음과 같다:

1 – DVI 출력 전압. 이 모드에서는 HDMI 케이블에 음성 신호가 출력되지 않는다.

2 – HDMI 출력 전압. 이 모드에서는 HDMI 케이블에 음성 신호가 포함되어 출력.

hdmi_force_hotplug – 라즈베리파이가 디스플레이를 감지하지 못했더라도 HDMI 포트를 사용하도록 강제한다. 0으로 설정하면 라즈베리파이가디스플레이 감지 시도를 할 수 있도록 허용한다. 반면에 1로설정하면 무조건 HDMI를 사용하도록 한다.

hdmi_group - HDMI그룹 모드를 CEA 또는 DMT로 설정한다. hdmi_mode를 이용하여 출력할 해상도와 주파수를설정하려고 하기 전에 사용하려는 디스플레이에 맞게 이 설정을 해주어야 한다. 두 개의 설정 값이 가능하다:

1 – HDMI 그룹을 미국 가전 협회(CEA; ConsumerElectronics Association of America)가 정의한 모드들의 그룹으로 설정

2 - HDMI 그룹을 영상기기 표준 협회(VESA; VideoElectronics Association of America)가 디스플레이 모니터 타이밍(DMT;Display Monitor Timings) 사양에서 정의한 모드들의 그룹으로 설정

htmi_safe – 라즈베리파이가 HDMI 포트에 연결된 디스플레이와호환되는 최대한의 호환성을 제공하도록 디자인 된 HDMI 설정의 사전 설정 집합을 사용하도록 강제한다. 이 값을 1로 설정하면hdmi_forces_hotplug=1, config_hdmi_boost=4, hdmi_group=1, hdmi_mode=1,disable_overscan=0으로 설정한 것과 같다.

config_hdmi_boost – 어떤 모니터들은 HDMI 출력에좀 더 많은 전력을 공급해야 정상 적으로 동작한다. 화면에 눈 덮인 것 같은 모습이면 이 값을 1(케이블이 짧을 때)에서 7(케이블이길 때)까지 줄 필요가 있다.

config.txt파일의 각 옵션들은 한 행에 기술되어야 하며 각옵션명칭 뒤에는 등호(=)를 붙이고 값을 쓴다.

부팅 옵션

리눅스 커널을 로딩하는 방법을 제어하는 것은 주로 cmdline.txt 파일에서설정하지만 config.txt 파일에서도 설정이 가능하다.

disable_commandline_tags – start.elf 모듈이 리눅스 커널이 로드 되기 전에 0x100번지 뒤로 채워지는 것을 건너 뛴다. 이 옵션은 비활성화되면리눅스가 비정상적으로 로드 되어 크래시가 발생한다.

cmdline – 리눅스 커널에 전달될 커맨드 라인 파라메터들./boot/cmdline.txt파일을 대신해서 사용될 수 있다.

kernel – 로딩될 커널파일 이름. 비상용 커널을 로딩하는 수단으로사용될 수 있다. “무제 해결장 참조

ramfsfile – 로딩 될 초기 RAM 파일 시스템(RAMFS) 이름. 실험용으로 초기RAM 파일 시스템을 만든 경우가 아니라면 거의 사용할 일이 없다.

init_uart_baud – 직렬 콘솔의 속도, 비트/. 기본 값은 115200이지만구형 하드웨어 직렬 터미널을 사용하고 있다면 속도를 낮춰서 연결해보는 것이 좋다.

오버 클럭킹

config.txt 파일을 이용하여 라즈베리이의 BCM2835 프로세서의 그래픽 출력을 제어할 수도 있지만 다른 부분들도 제어가 가능하다. 특히 부품들의 수명 단축을 감수한다면 칩이 실행되는 속도를 바꾸어 시스템의 성능을 높일 수도 있다 이러한 과정을 오버 클럭킹이라고 한다

주의: 이 섹션에 나열된 설정 값들을 변경하는 것은 라즈베리파이에 손상을 입힐수 있다. 특히 메모리, CPU, GPU의 전압과 관련된설정을 바꾸는 것은 실제 손상을 입히기 전에 원상 복귀하더라도 라즈베리파이의 사후 지원 보장을 무력화하는 퓨즈를 설정할 수 있다. 이러한 설정들을 사용하여 야기되는 손상은 라즈베리파이 재단 또는 사용자가 제품을 구매한 소매상에 의해 보상되지않을 것이다. 확신이 없으면 이 설정 값들을 바꾸지 말기 바란다. 오버클럭킹을 통한 성능 향상 이득은 위험성에 비해 그다지 크지 않다.

라즈베리파이에 사용되는 BCM2835 멀티미디어 프로세서는 시스템온칩(SoC)으로 크게 두 부분으로 나누어진다. 일상적인 프로세싱을 담당하는 CPU 2D 혹은 3D 그래픽을처리하는 그래픽 프로세서(GPU)이다.

config.txt 파일을 이용하면 두 부분을 모두 오버 클럭킹 할수 있다. 또한 메모리 모듈이 동작하는 속도도 높일 수 있다.

오버클럭킹 설정들

arm_freq – CPU 클럭 설정. 기본 값은 700 MHz

gpu_freq – GPU 클럭 설정. 기본 값은 250 MHz

core_freq – GPU의 코어 클럭 설정. 기본 값은 250 MHz

h264_freq – GPU의 하드웨어 비디오 디코더의 클럭 설정. 기본값은 250 MHz

isp_freq – GPU의 이미지 센서 파이프라인 클럭 설정. 기본값은 250 MHz

v3d_freq – GPU 3D 렌더링 하드웨어 클럭 설정. 기본 값은 250 MHz

sdram_freq – RAM의 클럭 설정. 기본 값은 400 MHz

init_uart_clock – UART의 클럭 속도 설정. 기본 값은 3000000

init_emmc_clock - SD카드 컨트롤러의 클럭 속도 설정. 기본값은 80000000

예를 들어, CPU 800MHz, GPU 280 MHz, RAM 420 MHz로오버 클럭킹 하려고 한다면 config.txt 파일에 다음 옵션들을 추가한다:

arm_freq=800

gpu_freq=280

sdram_freq=420

모든 설정 값들은 재부팅 후 적용된다. 원상 복귀를 원하면 config.txt파일 전체를 지우거나 해당 옵션행만 삭제한 후 재부팅하면 된다.

과전압(Overvoltage) 설정들

over_voltage – BCM2835의 코어 전압을 조정. 기본값(0)을 초과 또는 미달하는 전압의 0.025V의 배수(정수)로 지정. 최소 값은 -16, 최대 값은 8.

over_voltage_sdram – 메모리 칩에 주어지는 전압을 조정. 기본값(0). 최소 값은 -16, 최대 값은 8. 또한 각 메모리 컴포넌트들에 주어지는 전압을 개별 조절할 수 있다.

over_voltage_sdram_c – 메모리컨트롤러에 주어지는 전압 조절. 범위는over_voltage_sdram과 동일

over_voltage_sdram_i – 메모리입출력 시스템에 주어지는 전압 조절. 범위는over_voltage_sdram과 동일

over_voltage_sdram_p – 메모리물리 레이어(PHY) 컴포넌트에 주어지는 전압 조절. 범위는 over_voltage_sdram과 동일

예를 들어, BCM28350.05V을 더하여 1.25V를 가하고 메모리 칩에0.1V를 더하여 1.3V를 가하려 한다면config.txt파일에 다음 옵션 행을 추가한다:

over_voltage=2

over_voltage_sdram=4

L2 캐시 비활성화

라즈베리파이의 BCM2835 SoC 프로세서는 128KB Layer 2 캐시메모리를 가지고 있다. 이 메모리는 작지만 매우 빨라서 성능 향상을 위해 속도가 느린 메인 메모리와 프로세서 사이에서 데이터와 명령어들을임시로 보관하는 역할을 한다.

BCM2835는 원래 셋톱박스를 목표로 고안된 멀티미디어 프로세서이기때문에 L2 캐시는 오직 GPU에 의해 사용되도록 디자인되었다. 일반적인 프로세서들과는 달리 CPU는 자신을 위한 L2 캐시를 가지고 있지 않다.

config.txt를 이용해서BCM2835에게 CPU L2 캐시 메모리를사용할 수 있도록 지시할 수 있다. 이렇게 하면 때때로 성능 향상을 가져오기도 하지만 L2 캐시가 물리적으로 CPU보다는GPU에 비교적 가깝게 위치하고 있기 때문에 성능에 해를 끼치기도 한다.

L2 캐시 메모리를 이용하려면 캐시 메모리 사용을 전제로 컴파일 된리눅스 배포판을 사용해야 된다. 캐시가 비활성화된(GPU L2 캐시 사용) 일반적인 라즈베리파이를 위한 배포판에서 L2 캐시를 활성화(CPU L2 캐시사용)하면 비정상적인 동작을 일으킬 수 있다.

CPU L2 캐시를 사용하도록하려면 config.txt 파일에 다음 옵션 행을 추가한다.

disable_l2cashe=0

CPU L2 캐시 사용을비활성화 하려면 0 1로 바꾸어 재부팅 한다.

 

메모리 파티셔닝

라즈베리파이는 비록 512MB의 메모리만을 가지고 있지만 메모리를다양한 방법으로 배분하여 사용할 수 있다. BCM2835는 크게 두 영역: 범용 CPU와 그래픽용 GPU로나뉘어 진다. 두 영역이 모두 동작하는데 있어 메모리를 필요로 하므로 512MB의 메모리를 공유해야 된다.

일반적으로 배분 값은 기본 값으로 GPU64MB를 할당하도록 되어 있다. 이 값은 sudo raspi-config를 실행하여 Advanced Options> Memory split에 들어가서 GPU에 할당할 메모리 양을 지정하여 바꿔 줄수 있다(재 부팅 해야 된다).

어떤 배포판은 메모리를 반으로 나누어 128MB CPU에 나머지 128MB GPU에할당하여 그래픽 하드웨어가 충분히 성능을 발휘할 수 있도록 되어 있는가 하면 다른 배포판에서는 일반적인 작업의 수행능력을 높일 수 있도록 CPU에 더 많은 메모리를 배분해 두기도 한다.

주의: 3D 게임이나 고해상도 비디오 재생 소프트웨어 같은 그래픽 작업 부하가큰 응용프로그램들은 일반적으로 GPU 128MB이상의 메모리를필요로 한다. GPU 메모리 할당량을 줄이면 성능이 급격히 나빠질 수 있다.

대부분의 범용 배포판들은 192MB/64MB 배분에서 잘 실행되지만 224MB/32MB 배분으로 지정하면 응용프로그램을 위한 메모리를 좀 더 확보할 수 있다. 이렇게 하면 오버 클럭킹의 위험을 감수하지 않고도 일반적인 목적의 성능향상을 꾀할 수 있다.

config.txt 파일을 직접 편집하여 바꿀 수도 있다. gpu_mem=32와 같은 형식으로 GPU가 사용할 메모리 양을지정해 주면 된다.

그림 72 GPU가 사용할 메모리 양 지정 

라즈베리파이, raspberry pi, 라즈베리파이 실습, 라즈베리파이 예제, 라즈베리파이 교육 

  

라즈베리파이를 재부팅하면 ARM CPU에 더 많은 메모리가 할당되어있을 것이다. 사용 가능한 메모리 양을 확인하려면 터미널 창에서free 명령을 치면 된다.

그림 73 free 명령으로 사용 가능한 메모리 양 확인 

라즈베리파이, raspberry pi, 라즈베리파이 실습, 라즈베리파이 예제, 라즈베리파이 교육

커널 부팅 명령어 설정 cmdline.txt

라즈베리파이 하드웨어의 다양한 기능을 제어하는 config.txt 파일외에 또 다른 중요한 파일이 /boot 디렉터리에 있는데 그것은 바로cmdline.txt(그림 7‑3 참조) 파일이다. 이 파일은 커널 모드 라인(라즈베리파이가 부팅될 때 리눅스 커널에 전달되는 옵션들)을 담고 있다.

그림 74 /boot디렉터리의 cmdline.txt 파일 

라즈베리파이, raspberry pi, 라즈베리파이 실습, 라즈베리파이 예제, 라즈베리파이 교육 

리눅스 기반의 데스크톱 또는 랩톱 컴퓨터에서 이 옵션들은 일반적으로 자신의 설정 파일을 가지고 있는 부트로더로부터커널에 건네진다.

콘솔의 외관을 바꾸거나 어떤 커널을 로드할지를 지정하는 등 리눅스에 의해 지원되는 거의 모든 커널 옵션들을 cmdline.txt파일에 설정할 수 있다. 예를 들어 다음과 같은데비안 배포판의 cmdline.txt파일을 볼 수 있다. 전체가 한 줄이다.

그림 75 cmdline.txt 파일의 내용 

라즈베리파이, raspberry pi, 라즈베리파이 실습, 라즈베리파이 예제, 라즈베리파이 교육 

첫 번째 옵션 dwg_otg.lpm_enable은 라즈베리파이의 USB 컨트롤러로 하여금 OTG(On-The-Go)모드를 비활성화하도록한다. 운영체제의 적절한 지원 없이 해당 기능이 활성화 되면 문제가 발생할 수 있기 때문이다. 대부분의 라즈베리파이 리눅스 배포판들은 이 모드를 비활성화 한다.

console 옵션은 리눅스에게 지정 속도 동작하는 직렬 콘솔 장치 ttyMA0를 생성하도록 한다. 대부분의 경우 속도는 기본값인 115,200Kb/s (킬로바이트/)로 그대로 둔다. 라즈베리파이를 구형 장비와 같이 사용하는 경우 속도를줄여서 설정할 필요가 있을 수 있다.

kgdboc커널 옵션은 console파라메터에 의해 생성된 직렬 콘솔을 통한 리눅스 커널 디버깅을 활성화 한다. 대부분의 사용자들에게는불필요하지만 개발자들에게 있어서 직렬 접속을 통한 커널 디버깅은 가장 유용한 방법이기 때문에 대부분의 배포판들이 이 옵션을 활성화 해둔다.

두 번째 console 항목은tty1 장치를 생성한다. 이 장치는 라즈베리파이가 부팅될 때 보게 되는 텍스트가 가득찬 화면이다. 이 장치가 없으면 다른 장비를 이용하여 첫 번째console 항목에 의해 생성된 직렬 콘솔로 접속을 해야만 라즈베리파이를 사용할 수 있다.

root 옵션은 리눅스 커널에게 시스템이 동작하는데 필요한 모든 파일들과디렉터리들을 담고 있는 루트 파일 시스템이 어디에 있는지를 알려준다. 기본 데비안 배포판의 경우 루트파일 시스템은 SD카드의 두 번째 파티션(디바이스 mmcblk0p2)으로 지정되어 있다. 이 옵션은 상대적으로 속도가느린 SD 카드의 루트 파일 시스템 대신에 USB 외부저장장치로변경할 수 있다.

커널에게 루트 파일 시스템이 어디에 있는지를 알려주는 것 이외에 루트 파일 시스템의 파티션 포맷도 알려줄 필요가있다. 리눅스는 다양한 파일 시스템을 지원하므로 rootfstype 옵션으로데비안 배포판이 사용하는 EXT4 파일 시스템을 지정해주었다.

마지막으로 rootwait 파라메터는 커널이 루트 파일 시스템을 담고있는 장치가 사용가능해질 때까지 더 이상 부팅을 진행하지 말고 기다리도록 한다. 이 옵션이 없으면 상대적으로느린 SD카드가 충분히 준비되기도 전에 라즈베리파이가 부팅을 진행하다가 먹통이 될 수도 있다.

cmdline.txt파일의 부트로더 설정은 dwc_otg 설정만 제외하면 여느 다른 리눅스 배포판들과 특별히 다른 점이 없다.

일반적으로 cmdlien.txt파일은 건드릴 필요가 없다. 배포판 마다 그 버전을 위해 만들어진 것이기 때문에 조금씩 다를 수 있다. 페도라리믹스용의 옵션 항목들은 데비안에는 동작하지 않을 것이며 그 반대도 마찬가지이다. cmdline.txt에서사용 가능한 옵션들은 배포판에 어떤 커널이 포함되었는지, 커널이 빌드될 때 어떤 기능이 포함되었는지여부에 따라 달라진다.

커널 개발자인 경우 컴파일한 커널에 포함시킨 기능을 활성화하거나 비활성화하기 위한 파라메터를 cmdline.txt파일에 설정할 수 있다. config.txt의변경된 부분은 라즈베리파이를 재부팅할 때 적용된다.

소프트웨어설치 및 제거

소프트웨어를 설치하고자 할 때는 강력한패키지 매니저인 apt 도구를 사용

UI기반의 시냅틱 패키지 매니저도 있지만 메모리 부족으로 실행이 어려울 수 있어 커맨드 기반의 apt 도구사용을 권장

패키지 매니저는 소프트웨어 설치뿐만아니라, 제거, 업데이트 등 전반을 관리

주의:새로운 소프트웨어를 설치하고나 업그레이드할 때는 apt의 캐시가 최신 상황을 반영하고 있는지를확실히 하기 위해 sudo apt-get update를 해주는 것이 좋다.

소프트웨어 찾기

apt를통해 설치 가능한 소프트웨어의 목록인 캐시를 가지고 있는 있는 인터넷상의 서버를 리포지토리라고 한다.

캐시 목록을 관리하기 위해서는 apt-cache를 이용

제목 또는 설명에 game이라는 단어를 가진 소프트웨어를 검색

$apt-cache search game

결과가 너무 많을 수 있으므로 가능한세밀하게 하는 것이 좋다. 

그림 76:apt-cache "game" 검색 결과의 마지막 부분

라즈베리파이, raspberry pi, 라즈베리파이 실습, 라즈베리파이 예제, 라즈베리파이 교육 

결과가 너무 많을 때는 less 도구를 써서 페이지 단위로 멈춰서 볼 수 있다.

$ apt-cachesearch game | less

커서키로 상하 스크롤, q로 끝냄

소프트웨어 설치

소프트웨어를 설치할 때는 sudo를 써야 되며 apt-get 명령 사용, 예를 들어 thrust 게임을 설치하려면 다음과 같이 입력

$ sudoapt-get install thrust

apt패키지 매니저는 의존성을 자동으로 체크하여 필요한 패키지를 설치

그림 77: apt OpenOffice 패키지가 의존하는 패키지 목록을 표 

라즈베리파이, raspberry pi, 라즈베리파이 실습, 라즈베리파이 예제, 라즈베리파이 교육 

소프트웨어 설치 제거

apt-getremove 명령어를 사용하여 제거하면 더 이상 필요치 않은 의존관계 패키지까지 자동으로 제공

thrust패키지를 제거하려면 다음과 같이 한다

$ sudoapt-get remove thrust

remove명령은 설정 파일은 남겨두는 반면 purge 명령어를 사용하면 완전히 제거한다.

$ sudoapt-get purge thrust

소프트웨어 업그레이드

apt-getupgrade를 사용하면 설치된 소트웨어들의 최신 버그 수정과 보안 패치를 적용할 수 있다. 업그레이드를할 때는 캐시를 반드시 업데이트한 후 실행하는 것이 좋다.

$ sudoapt-get update

$ sudoapt-get upgrade

개별 패키지만 업그레이드하고자 할 때는해당 패키지를 다시 install 하면 된다. 이미 설치된패키지에 대해 install이 실행되면 패키지 매니저는 업그레이드 의사로 판단한다.

$ sudoapt-get install thrust

 

원격로그인

라즈베리 파이에 모니터와 키보드, 마우스를 연결하지 않더라도 PC의 터미널 에뮬레이터 소프트웨어를통해서 라즈베리 파이에 원격 로그인하여 사용이 가능하다. 라즈베리 파이에 모니터를 연결하지 않고 사용할때 헤드리스(headless)라는 용어를 사용한다.

윈도우에 기본 탑재되어 있는 하이퍼터미널을 사용해도 되지만 여러 가지 문제점을 가지고 있다. 가장 많이 사용되는 오픈 소스 프로그램인 putty를 사용해 보자.

http://www.chiark.greenend.org.uk/~sgtatham/putty/에서 내려 받을 수 있다. 이 글을 쓰는현재 최신 버전은 0.62이다.

내려 받은 putty.exe C:\Program Files 아래에 putty 폴더를 만든 다음 옮겨 놓는다. 단축 아이콘을 만들어 바탕화면이나 빠른 실행 아이콘으로 등록해두면 편리하다.

먼저 라즈베리 파이의 IP주소를 알아두어야 되는데 라즈베리 파이에 모니터와 키보드가 연결되어 있는 상태라면 ifconfig 명령으로 쉽게 IP 주소를 알 수 있다.

그림 78 ifconfig명령으로 IP주소 알아내기 

라즈베리파이, raspberry pi, 라즈베리파이 실습, 라즈베리파이 예제, 라즈베리파이 교육 

inetaddr: 뒤의 192.168.0.103이 라즈베리 파이의 IP 주소이다. 하지만 headless 상태에서는 다른 방법을 동원해야 한다. 인터넷 공유기에 연결된 경우에는인터넷 공유기의 관리자 페이지에 있는 커넥션 정보를 통해서 알아낼 수 있다. 라즈베리 파이에서 인터넷접속을 한 번이라도 하면 이 페이지에서 접속 정보가 표시된다

그림 79 인터넷 공유기의 커넥션 정보 화면 

라즈베리파이, raspberry pi, 라즈베리파이 실습, 라즈베리파이 예제, 라즈베리파이 교육 

putty를실행하면 PuTTY Configuration 화면이 나타난다.Host Name에는 접속하고자 하는 대상 호스트의 IP 주소나 호스트명을 입력한다. 포트 번호는 22가 기본값이므로 그대로 둔다. Connection type SSH로 그대로 둔다. 왼쪽의 Category에서Window > Translation을 선택하여 Remote character set UTF-8로 지정한다. 한글이 깨지는 것을 방지하기 위해서다. 다시 Category에서Session을 선택하고 Saved Sessions에 적당한 이름을 입력하고 ‘Save’ 버튼을 눌러 현재 설정한 값들을 저장해 둔다. 다음에 접속할때는 이 이름을 선택하고 ‘Load’ 버튼을 클릭하면 지금 설정한 값들을 다시 불러올 수 있다.

그림 710 PuTTY Configuration 화면 

라즈베리파이, raspberry pi, 라즈베리파이 실습, 라즈베리파이 예제, 라즈베리파이 교육 

‘Open’버튼을 클릭하면 라즈베리 파이에 접속을 시도한다. 접속이 되면 로그인 화면이 나타나고 로그인아이디에는 pi, 패스워드에는 raspberry를 입력하여로그인 한다.

그림 711 Putty를 이용한 원격 로그인

라즈베리파이, raspberry pi, 라즈베리파이 실습, 라즈베리파이 예제, 라즈베리파이 교육 

슈퍼유저 root 활성화 sudo passwd

우선 슈퍼유저 root 계정을 활성화 해 보자. 슈퍼유저 root 계정을 활성화 하기 위해서는 패스워드를 부여해주면 된다.

그림 712 슈퍼유저 root 활성화

 

라즈베리파이, raspberry pi, 라즈베리파이 실습, 라즈베리파이 예제, 라즈베리파이 교육 

여기서 sudo의 의미는 슈퍼유저의 권한으로 그 다음에 오는 명령을 실행하라는 의미이다. passwd root 명령은 root 계정에 패스워드를 지정하겠다는것이다. 슈퍼유저의 패스워드는 편의상 pi 계정과 동일하게‘raspberry’로 입력해둔다.

사용자계정 만들기 useradd

라즈베리파이는 기본적으로 일반 사용자계정 pi(패스워드는 raspberry)와 슈퍼 유저 계정 root가 있다. pi 계정을 그대로 사용해도 되지만 보안상의 이유로또는 새로운 사용자를 위해 새로운 계정을 만들어야 할 때가 있다. 새로운 계정을 만들 때는 다음과 같이한다.

기존의 pi 계정으로 로그인 한다.

pi계정이속해 있는 그룹을 확인한다.

그림 713 사용자 계정의 소속 그룹 확인

라즈베리파이, raspberry pi, 라즈베리파이 실습, 라즈베리파이 예제, 라즈베리파이 교육

새로운 사용자 계정을 만든다.

그림 714 useradd 명령

라즈베리파이, raspberry pi, 라즈베리파이 실습, 라즈베리파이 예제, 라즈베리파이 교육

pi2라는새로운 계정이 만들어 진다. 그룹을 나열할 때 쉼표(,) 사이에공백을 넣지 않도록 주의한다. 여기에서 –G 옵션은 그룹을, -m 옵션은 새로운 계정의 계정 홈 디렉터리를 만들라는 의미이다.

이제 새로운 계정에 패스워드를 지정한다.

그림 715 패스워드 부여

라즈베리파이, raspberry pi, 라즈베리파이 실습, 라즈베리파이 예제, 라즈베리파이 교육 

같은 패스워드를 2회 입력한다

새로 만들어진 계정이 속한 그룹을 확인해본다.

그림 716 새 계정이 속한 그룹 확인

라즈베리파이, raspberry pi, 라즈베리파이 실습, 라즈베리파이 예제, 라즈베리파이 교육 

 

네트웍설정

 

유선 이더넷 고정 IP 설정

대부분의 가정이나 사무실에서는 DHCP 서버가 자동으로 설정 값을 부여하므로 수동 설정이 필요 없지만 라즈베리 파이를 서버로 사용하고자 할때는 고정 IP 설정이 필요하다.

고정IP 설정을 위해서는 /etc/network/interfaces 파일을 수정해야 한다.

$ cd/etc/network

$ sudo cpinterfaces interfaces.org

$ sudonano interfaces

ifaceeth0 inet static           ß dhcp static으로 수정

[Tab]address xxx.xxx.xxx.xxx      ß 192.168.0.XY – 2 ~ 254

[Tab]netmask xxx.xxx.xxx.xxx     ß 255.255.255.0

[Tab]gateway xxx.xxx.xxx.xxx      ß 192.168.0.1

그림 717 나노에디터로 /etc/network/interfaces 파일 편집

라즈베리파이, raspberry pi, 라즈베리파이 실습, 라즈베리파이 예제, 라즈베리파이 교육 

네트웍 서비스를 재시작 한다.

$ sudoservice networking restart

IP주소가의도대로 설정되었는지 확인

$ifconfig

잘 안될 경우 시스템을 재부팅해 본다.

$ sudoshutdown –r now

그림 718 고정 IP 주소 설정 확인

라즈베리파이, raspberry pi, 라즈베리파이 실습, 라즈베리파이 예제, 라즈베리파이 교육 

eth0 inet addr: 항목이 192.168.0.5로 바뀐 것을 확인할수 있다.

 

DNS 서버 목록 등록

DNS서버는질의 받은 도메인 명에 해당하는 호스트의 IP주소를 알려주는 서버이다.DHCP 클라이언트인 경우 /etc/resolv.conf파일에 DNS서버 목록이 자동으로 채워진다. 수동으로 IP을 설정할 경우 직접 써넣어야 된다.

$ cd /etc

$ sudo cpresolv.conf resolv.conf.org

$ sudonano resolv.conf

domainketti.or.kr           ß 내 네트웍의 도메인 명

searchketti.or.kr            ß 호스트 명 만으로 찾을 때 검색할 도메인 명

nameserver192.168.0.1 ß 게이트웨이(공유기) dns 서버를 지정

nameserver8.8.8.8          ß 구글의 공개된 DNS 서버

nameserver8.8.4.4

저장 후 빠져 나온다.

$ sudoservice networking restart

$ pingwww.google.com

도메인명으로 연결이 가능함을 확인할수 있다.

$ ping –c3 www.google.com

그림 719: 도메인명으로연결 확인

라즈베리파이, raspberry pi, 라즈베리파이 실습, 라즈베리파이 예제, 라즈베리파이 교육 

 

이전글
리눅스에 발 들여 놓기 2014/07/12
라즈비안(Raspbian) 설치 및 구성 2014/07/12
다음글
라즈베리파이 시스템 관리 (2) 2014/07/12
아두이노 보드 2015/06/18