21 04 2015
라즈비안 설치 후 나의 기본 설정
라즈베리파이에 대해서는 이제 모르는 사람은 아무도 없겠지 싶다. 간단히 말하자면 담배갑 크기의 소형 컴퓨터… 뭐, 자세한건 위키백과라도 살펴보도록 하자 (…)
라즈베리파이를 구입한지는 거진 1년이 넘은거 같은데, 아직도 뭔가에 써먹지는 못하고 집구석에서 썩히고만 있다. 사실 아무 생각이 없는건 아니고, NAS + Torrent 머신 정도로 만들어볼 생각은 있는데, 어찌저찌 만든다고 하더라도 이미 혼돈의 카오스인 내 방은 그 어딘가에도 이걸 둘 자리가 없어서…
그래서 실질적인 활용은 거의 없고, 가끔가다 라즈베리파이에 꽂아둔 SD 카드의 내용을 다 지우고 라즈비안을 새로 설치해서 끄적대보곤 한다. 그런데, 난 사실 라즈비안을 설치하고 나서 처음 하는 설정들이 거의 정해져있는데, 내가 윈도우 이외의 운영체제에는 딱히 익숙치가 않다 보니 그때마다 인터넷에서 관련 자료를 검색하곤 한다. 그러다가 이젠 검색하는 것도 지겨워져서-_- 아예 이참에 그때마다 하던 짓들을 정리해둘까 한다.
이 글은 라즈비안 설치 후 내가 제일 처음 하는 설정들을 정리한 글이기 때문에, 인터넷에서 흔히 볼 수 있는 “어떤 목적을 위해 설정하는 방법”과 같은 글과는 다르다는 것을 먼저 명시해두고자 한다. 이 글은 어디까지나, 라즈비안 설치 후 내 기준으로 내가 바로 써먹을 수 있는 상태의 라즈비안으로 만드는 것에 목적이 있다.
이 글 쓰는 김에 라즈베리파이 카테고리를 새로 만들었는데, 저 카테고리가 갱신되는 날이 과연 오기는 올 것인가 (…)
라즈비안 (Raspbian)
라즈비안은 라즈베리파이 재단에서 제공하는, 아마도 라즈베리파이에서 가장 범용적으로 사용할 수 있는 운영체제이다. 라즈비안은 데비안 계열의 리눅스를 라즈베리파이에 맞게 수정한 리눅스이며, 데스크탑 환경은 구 Raspbian 홈페이지에 따르면 마테 데스크탑 환경을 포팅했다는 것 같다. 마테에 대해서는 한국어 위키백과에도 간략한 문서가 있으니까 여기서는 생략하고…
그나저나 라즈비안 재설치를 위해 오랜만에 라즈베리파이 재단 홈페이지에 접속해보니 NOOBS라는 것이 새로 추가되어 있었다. 이건 아마도 라즈비안을 자동으로 설치해주는 인스톨러 같은 느낌. 그리고 그 외에도 라즈베리파이 재단 홈페이지에서는 라즈베리파이용 Snappy Ubuntu Core나 OpenElec, 페도라를 라즈베리파이용으로 수정한 Pidora 같은 것이 제공되었는데, 나는 라즈비안 외에는 하나도 안써봐서 다 잘 모르겠다-_-
라즈비안 설치
- 라즈베리파이 재단의 Downloads 페이지에서 중간쯤에 있는 Raspbian 이미지를 다운로드 받는다. 2015년 2월 16일자 버전 기준으로, ZIP 파일은 약 1기가 가량 되며, ZIP 파일을 풀면 나오는 이미지 파일은 약 3기가 가량 된다.
- 이미지 파일을 SD 카드에 기록한다. 기록하는 방법은 운영체제마다 다른데, 라즈베리파이 재단의 Installing Operating System Image 문서를 참고한다. 일단 라즈베리파이 재단에서는 Win32 Disk Imager라는 프로그램을 이용하라고 명시되어 있지만, 디스크 이미지를 다루고 기록할 수 있는 어떤 프로그램이라도 관계없을거라고 생각된다.
- 기록이 완료되면 일단 설치는 끝났다. SD 카드를 라즈베리파이에 꽂고 HDMI 케이블을 연결하고, 키보드 입력은 있어야 하니 USB 키보드라도 연결한 뒤 라즈베리파이에 전원을 연결하면 부팅 과정이 지나간 후, 라즈베리파이 설정 화면이 표시된다.
무선 네트워크 설정
- 설정 화면이 표시되면 일단 ESC 키를 눌러서 빠져나간다. 참고로, 이 화면은 이후에라도
raspi-config
명령으로 다시 표시하고 설정할 수 있다.
cat /etc/network/interfaces
를 입력해서 interfaces 파일의 내용을 확인한다. 아마도 아래와 같이 기록되어 있을 것이다.
1 2 3 4 5 6 7 8 9 |
auto lo iface lo inet loopback iface eth0 inet dhcp allow-hotplug wlan0 iface wlan0 inet manual wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf iface default inet dhcp |
- interfaces 파일에서
allow-hotplug ~
로 시작하는 줄이 있는지 확인한다. 위 코드(?)에서는 아래에서 네번째 줄부터 끝까지가 해당하는 부분이다. 이 문단의 내용은 무선 랜카드의 이더넷 인터페이스 설정으로, 이 문단이 없으면 무선 랜카드를 이용할 수 없다. 라즈비안 2015년 2월 16일자 기준으로, 해당 내용은 기본으로 들어있는 것을 확인했지만 만약 없다면 추가해주자. - 사용할 와이파이의 SSID를 수동으로 지정하기 위해 nano 등의 에디터를 이용해서
/etc/wpa_supplicant/wpa_supplicant.conf
파일을 연 다음, 가장 아래쪽에 다음과 같은 내용을 추가한다.
1 2 3 4 |
network={ ssid="SSID 이름" psk="SSID의 암호" } |
근데 왠지 우리집은 이렇게 설정해줘야 인터넷이 됬었다 (…)
1 2 3 4 5 6 7 8 9 |
network={ ssid="SSID 이름" psk="SSID의 암호" scan_ssid=1 proto=RSN key_mgmt=WPA-PSK pairwise=CCMP auth_alg=OPEN } |
- wpa_supplicant.conf 파일을 위와 같이 고치고 저장한 뒤에 잠시 기다리면 무선 인터넷이 연결된다. 단, 당연히 라즈베리파이에 무선 랜카드가 설치되어 있어야 한다.
2015년 5월 13일 수정. 4번째 라인의 scan_ssid 항목을 추가했다. 해당 항목에 대한 설명은 숨겨진 SSID(Hidden SSID) 접속이 잘 안될때를 참고하자. - 만약 아무리 기다려도 무선 인터넷이 연결되지 않는다면,
sudo ifdown wlan0
을 입력하고 다시sudo ifup wlan0
을 입력해서 인터페이스를 재시작해보자(만약 설정이 잘못 되었다면 이 과정에서 오류가 발생할 것이다). 이도저도 아니라면 아예sudo reboot
를 입력해서 라즈베리파이를 재시작해보자 (…) 웃기게 느껴질 수도 있겠지만, 라즈베리파이 재단의 Setting WiFi up via the command line 문서에 그대로 나와있는 내용이다.
라즈베리파이 환경설정
sudo raspi-config
를 입력해서 라즈베리파이 환경설정 화면으로 진입한다. 위아래 방향키로 항목 이동 후 엔터키를 누르거나, TAB 키를 누른 후 Select에서 엔터키로 항목을 선택할 수 있다.
- 제일 먼저
Expand Filesystem
을 선택한다. 라즈베리파이 재단에서 제공하는 라즈비안의 이미지는 기본적으로 3GB의 파일 시스템에서 사용하도록 파티션이 설정되어 있다. 이것을 SD 카드의 전체 공간을 사용할 수 있도록 파티션을 재설정해준다. Internationalisation Options
>Change Timezone
을 선택한 다음,Asia
>Seoul
을 선택해서 표준시간대를 서울로 변경한다. 이 화면에서 로케일 설정도 가능한데, 아래에서 다시 언급한다.Advanced Options
>SSH
>Enable
을 선택해서 SSH를 활성화한다. 2015년 2월 16일자 버전 기준으로, SSH는 기본으로 설정되어 있으니 굳이 설정하진 않아도 된다.- 첫 화면으로 돌아가서, Finish를 선택해서 환경설정을 종료한다. 자동으로 라즈베리파이가 재시작된다. 참고로 여기서 그냥 ESC를 눌러서 환경설정을 종료할 수도 있는데, 이 경우 환경설정이 완료되지 않은 것으로 간주되어, 로그인할 때마다 NOTICE: the software on this Raspberry Pi has not been fully configured. Please run ‘sudo raspi-config’라는 메시지가 표시되며 환경설정이 완료되지 않았다며 경고한다.
원격접속용 VNC Server 설치
사실은 SSH 설정하는 부분까지 묶어놓고 “원격관리를 위한 SSH와 VNC 서버 설치”라는 이름으로 작성하고 싶었는데, 하필 SSH가 기본 설정이어서-_-… 여하튼;;;
- PuTTY 등 SSH를 지원하는 클라이언트를 이용해 라즈베리파이로 접속한다. 라즈베리파이의 IP를 확인하기 위해서는 라즈베리파이에서 ifconfig 명령어를 이용한다.
- 라즈베리파이의 기본 계정은 pi / raspberry 이므로, 접속시엔 이걸 입력한다
- PuTTY로 접속하면 경고창이 뜨는데, 접속하려는 서버가 등록되어 있지 않으므로 보안을 보장할 수 없다는 의미. 그냥 무시하고 접속하자.
- 예(Y)를 선택한 경우, 이 접속이 안전하다고 저장한 뒤 접속함. 이후 다시 접속할때는 이 경고가 뜨지 않는다.
- 아니오(N)를 선택한 경우, 접속은 하지만 이 접속이 안전하다고 저장하지는 않는다. 이후 다시 접속할때 같은 경고가 또 뜬다.
- 취소를 선택한 경우, 접속을 취소하며 PuTTY는 종료된다.
sudo apt-get update
명령으로 패키지 목록을 업데이트한다.sudo apt-get upgrade
명령으로 설치된 패키지들을 업그레이드한다.sudo apt-get install tightvncserver
명령으로 TightVNC 서버를 설치한다.vncserver
를 실행해서 외부에서 VNC로 접속할 수 있도록 한다. vncserver 최초 실행시에는 접속시에 사용할 패스워드를 묻는다.- 패스워드 입력 후에는 Would you like to enter a view-only password (y/n)? 이라고 묻는데, 걍 n을 입력한다.
- VNC 서버는 5901 포트에서 실행된다. 만약 VNC 서버가 실행중인지 확인하기 위해서는
sudo netstat -tulpn | grep 5901
이나sudo netstat -tulpn | grep vnc
을 입력해서 확인할 수 있다.
- VNC 서버가 실행되고 있다면 외부에서 VNC 뷰어 프로그램을 이용해서 접속할 수 있다. VNC는 서버 주소를
IP:세션번호
의 형태로 입력받으므로, 접속할 서버의 주소를127.0.0.1:1
의 형태로 입력한다. - VNC 서버를 종료할 때에는
vncserver -kill :1
의 형태로 입력한다.:1
은 세션번호. 띄어쓰기를 주의하자.-kill
과:1
사이에 공백 한칸이 있다. - 만약 부팅시 자동으로 VNC 서버가 실행되기를 원한다면 라즈베리파이 활용 강좌 : 라즈베리파이 원격제어(TigerVNC)라는 글의 Tip.2를 참고하자.
한글로 설정하고 한글 입력기 설치
사실 라즈비안을 한글로 쓸 필요는 딱히 없다. 기본 메시지가 모두 한글화 되어 있는 것도 아니고… 그래도 기왕이면 다홍치마라고-_- 난 왠지 꼭 한글로 설정해놓고 쓰는 편이다.
sudo raspi-config
로 환경설정 화면을 띄운다.Internationalisation Options
>Change Locale
을 선택한다.Change Locale
화면이 나타나면en_GB.UTF-8 UTF-8
과en_US.UTF-8 UTF-8
,ko_KR.UTF-8 UTF-8
을 찾아서 선택하고 Ok를 선택한다.- 이어서 나타나는 화면에서
ko_KR.UTF-8
을 선택한다. 참고로ko_KR.UTF-8
을 고르면 라즈비안이 한글로 나오고,en_GB.UTF-8
이나en_US.UTF-8
을 고르면 영어로 나온다. 알아서 선택. - 첫 화면이 나오면 Finish를 눌러서 빠져나간다.
- 이후 SSH로 새로 접속해보면 몇몇 메시지들이 한국어로 표시된다. 만약 한글이 깨져보일때는 SSH 프로그램의 인코딩을 변경해준다. PuTTY의 경우, 처음 실행하자마자 나오는 환경설정 화면에서
Window
>Translation
에서 우측의Use font encoding
을UTF-8
로 변경한다.
sudo apt-get install ibus ibus-hangul
을 입력해서 iBus 입력기와 iBus 한글 입력기를 설치한다.- iBus 설치가 완료되었다면, VNC Server를 새로 실행해서 VNC로 접속해본다. 만약 VNC Server가 이미 실행중이라면 종료 후 다시 실행하던가, 새로운 세션을 만들어서 접속한다.
- 데스크톱 상단에 키보드같은 아이콘이 새로 생겼는데, 이 아이콘을 마우스 우클릭한 뒤
기본 설정(Preferences)
을 클릭한다. 괄호 안은 언어가 영어일때 표시되는 메시지. iBus 환경설정(iBus Preferences)
창이 나타나면입력방식(Input Method)
탭으로 이동한다.입력 방식을 선택합니다(Select an input method)
>한국어(Korean)
>Korean
순으로 선택한 뒤, 우측의추가(Add)
버튼을 클릭한다.일반(General)
탭으로 돌아와서,활성화 또는 비활성화(Enable or Disable)
의 우측에 있는...
버튼을 클릭한다.- 여기서 등록하는 키가 한/영 변환키가 되는데, 등록할 수 있는 키는 6개가 한계인건지, 6개가 이미 등록되어있는 기본 상태에서는 등록이 안된다. 어차피 읽어봐도 뭔 키인지도 잘 모르겠는데-_- 그냥 다 지워버리자.
- 나는 원래 한/영 변환에 Shift+Space 조합을 선호하는 편인데, 이 조합을 그대로 등록(키 코드(Key Code)에는 직접
space
라고 입력하고, 수정자(Modifiers)는Shift
를 선택한 뒤추가
버튼)하고 나서 직접 Shift+Space를 눌러보면, 이 키 조합이 먹히질 않는걸 확인할 수 있다.
- 키 코드 우측의
...
버튼을 클릭해서 직접 Shift+Space를 눌러보면 키 코드가 Kana_Shift 라는 식으로 조금 이상하게 표시되는데, 아마도 VNC 클라이언트의 오류가 아닌가 싶다. 이 상태에서추가
>확인
버튼을 클릭하고,iBus 환경설정(iBus Preferences)
화면에서닫기
버튼을 눌러 빠져나온다.
- Text Editor라도 열어서 Shift+Space 조합으로 한글/영문 상태가 변경되는지 확인한다. 변경될때마다 우측 상단의 키보드 아이콘이 변경된다.
사실 이렇게 설정해놔도, 테스트해보니 한글이 엉망으로 입력되서 거의 써먹지 못할 수준이었다. 어차피 라즈베리파이 쓰면서 굳이 VNC로 접속까지 해가면 한글 입력할 일은 없을거 같기는 하다만(…) 일단 VNC가 아니라, 라즈베리파이에 직접 모니터와 키보드를 연결해서 입력해보면 멀쩡하게 잘 입력되는걸 봐서는, Real VNC의 VNC Viewer에 문제가 있는 것 같다.
기타 등등
난 보통 라즈비안을 설치하면 딱 여기까지 설정하는데, 그 외 기타등등(…) 내가 안쓴다지만 그래도 내가 알아두면 나쁘진 않겠다 싶은걸 몇개 더 기록해두려고 한다.
raspi-config
위에서도 언급했듯이, raspi-config는 라즈베리파이의 환경설정을 위한 툴이다. 위에서는 내가 꼭 하는 것들만 지나가듯이 명시해 뒀는데, 자세한 설명은 아래 문서들을 참고하자. 다만, 라즈베리파이 공식 홈페이지의 문서 외에는 버전 차이로 최신 버전과 다른 내용이 있을수도 있다.
- raspi-config
- 라즈베리파이 공식 홈페이지의 raspi-config 설정
- 라즈베리파이 Raspbian raspi-config 설정 | BERRRYCRACKER
- 작은항해자의 항해 :: 기본환경설정(raspi-config)
계정 설정
나는 아직 라즈베리파이로 뭔가 대단한걸 하고 있는건 아니어서-_- 그냥 기본 제공되는 pi 계정만으로 그냥 사용하고 있지만, 만약 사용자를 관리해야 한다면 아래 명령어들을 사용한다.
- 사용자 추가
- sudo adduser {사용자 이름}
- 사용자 삭제
- sudo userdel {사용자 이름}
- -r 옵션을 붙여서 sudo userdel -r {사용자 이름} 형태로 입력하게 되면, 홈 디렉토리도 함께 삭제된다.
- 패스워드 변경
- sudo passwd {사용자 이름}
- 패스워드 삭제
- sudo passwd {사용자 이름} -d
- Sudoers 등록
- 데비안 계열에서는 sudo를 사용할 수 있는 사용자를 Sudoers라고 하는데, Sudoers로 지정된 사용자 외에는 sudo 명령어를 이용할 수 없다. sudo를 이용할 수 없으므로, 당연히 관리자 권한을 얻을 수도 없고 시스템 관리도 할 수 없다.
- Sudoers로 등록하기 위해서는 sudo visudo라는 명령어를 입력하면 nano 에디터로 /etc/sudoers 파일을 수정하는 화면이 표시된다.
- 만약 visudo 실행시 사용할 편집기를 변경하고 싶다면, sudo update-alternatives –config editor를 실행해서 시스템 기본 편집기를 변경해준다.
- 기본 계정인 pi가 Sudoers이므로, pi ALL= ~ 와 비슷하게 생긴 라인을 찾아서, 해당 라인과 비슷하게 Sudoers를 등록해준다.
- 사실 root 계정이랑 pi 계정은 raspi-config 화면에서 패스워드를 변경할 수 있으므로, 딱히 passwd 명령어로 변경할 필요는 없지 않은가 싶다. 마찬가지로, root 계정은 기본적으로 패스워드가 비활성화 되어 있으므로(=로그인이 안됨) 딱히 변경할 필요가 없지 않은가 싶다.
VNC Server 패스워드 변경
- VNC Server의 패스워드는 vncpasswd 명령어로 변경할 수 있다.
- vncpasswd ~/.vnc/passwd
- 사실 별다른 옵션 없이 vncpasswd만으로도 변경되는걸 확인하기는 했다. 근데 사실 VNC 서버의 패스워드는 $HOME/.vnc/passwd에 저장되는데, 별다른 옵션 없이 사용한 vncpasswd는 때때로 /root/.vnc/passwd 파일을 변경하려 드는 경우가 있었다. 평소에도 passwd 파일의 경로를 직접 지정해주는 것이 좋을 것 같다.
간단한 리눅스 명령어 모음
이 글을 작성하면서 알게 된 건데, 라즈베리파이 재단의 문서가 굉장히 잘 되어 있다. 작성하면서 참고한 페이지들은 참고자료 항목에 명시하기로 하고, Linux Commands 문서는 리눅스의 기본적인 명령어들 몇 가지가 설명되어 있기 때문에, 리눅스 사용(특히 리눅스의 터미널 사용)에 익숙하지 않다면 한번쯤 훑어보는 것도 좋다.
특히 상위 문서인 Linux라는 문서를 죽 훑어보면 전반적인 리눅스 시스템에 대한 감을 잡을 수 있겠다 싶다. 난 안읽어봤다 (…)
참고자료
이 글은 아래 문서들을 참고했다.
- sonhc’s Inventorys :: [Raspberry Pi] raspbian 개인 서버 설정팁 #2 : 기본셋팅
- 내 글과 비슷하게, 첫 기본 설정에 관한 문서
- Linux Users
- 라즈베리파이 공식 문서 중 리눅스에서 사용자를 관리하는 방법에 대한 문서
- 머가필요해 :: Ubuntu – sudoers visudo
- visudo의 사용법
- 태효의 세상 사는 이야기 : sudoers 파일
- Sudoers 및 visudo에 관한 문서들
- TightVNC: Manual Page for vncpasswd(1)
- VNC Server의 패스워드를 바꾸는 명령어인 vncpasswd 명령어 문서
- 개발, 검색, 함수 :: update-alternatives
- 리눅스 기본 명령어들의 심볼릭 링크를 변경하는 update-alternatives 명령어에 관한 설명
- 라즈베리파이 기초강좌 : 한글 키보드 및 언어설정 하기 | Raspberry Pi Village
- 산딸기마을의 한글 키보드 및 언어 설정법 문서
- Linux : InputMethod [권남]
- 리눅스에서 한글 입력을 지원하는 여러 입력기들이 소개되어 있다.
- 리눅스 민트 UIM 입력기 사용하기 – 리눅스 포럼
- 처음에는 iBus 입력기 말고 UIM 벼루 입력기를 사용하려고 했었고, 그때 참고했던 페이지. 하지만 결국은 iBus 입력기로 되돌아오고 말았다-_-
Apache와 Python 연동하기 삽질, 삽질, 삽질… 삽질의 연속