
라즈베리파이가 처음 세상에 나오던날이 엇그제 같은데 벌서 다양한 제품군을 이루고 있다.
나름 쌈지돈을 털어서 라즈베리파이2 모델B와 조우 한지 어느듯 일주일이란 시간이 흘렸다. 그 일주일 동안 microSD를 포맷한게 20번은 넘는듯..
현재 세팅에 나름 만족하고 있지만..
파이를 오븐에서 굽다가 타 버릴수도 있고(현재 오버클럭을 적용해서 사용중입니다. ㅎㅎ)
microSD가 수명이 다 하면 다시 재설치를 해야 하는데..
처음부터 다시? 그 생각만 해도.. 파이를 그냥 먹어 버리고 싶다 ㅎㅎ
그래서 훗날 또 다시 고생하는 수고를 덜고자.. 여기에 기록으로 남겨본다.
물론 구글링하여, 여기까지 온 당신에게도 아낌 없이 드리니… 맛나게 파이를 드시길.. ^^
그럼 이 글을 같이 한번 읽어 볼까요?
1. 첫번재로 microSD
Way? 아무거나 쓰면 안돼? 됍니다!
제가 가지고 있는 microSD는 이름도 유명하신 샌디스크.. 되는건 되고 안돼는건 안됍니다.
부팅 도중에 커널 에러 메세지를 방출하고..
혼자 재부팅 하고..
여기를 방문하시면 호환 가능한 microSD 리스트가 있으니 참고 하시길..
SD, SDHC, SDXC, microSD에서 몇몇 메모리들은 class 10 도 잘 지원되지만, 지원 잘 되는 것은 class 6 이하입니다.
본인은 Lexar / Class 6 / 8GB / MLC타입의 메모리를 인근 L마트에 가서 새로 구입 했습니다.
왜 굳이 MLC타입을 선택 했냐면, 읽고 쓰기의 반복 작업은 SD메모리의 수명과도 직결 돼기 때문에 긴수명을 자랑하는 MLC를 선택했지요…
2. 준비물
-라즈베리파이2 B
-microSD
-Win32 Disk Imager [다운로드] <- SD에 라즈베리안을 설치하는 도구
-SD Formatter [다운로드] <- 라즈베리안을 SD에 다시 설치 할 경우 SD를 포맷하는 도구
-USB Image Tool [다운로드] <- 설치 및 세팅 완료된 SD를 백업 및 복원하는 도구
3. 라즈베리안 설치
라즈베리 공식 사이트에 가서 최신 버전의 RASPBIAN WHEEZY를 다운로드합니다.
다운 받은 파일의 압축을 풀어서 나오는 리눅스 시스템 이미지 파일을 Win32 Disk Imager를 이용해서 SD카드로 복사를 합니다.
SD카드를 라즈베리에 장착시킨 후 모니터, 키보드, 마우스, 랜등의 주변기기 케이블을 연결합니다. 모니터의 전원을 먼저 넣고 라즈베리의 전원을 연결합니다.
참고로 기본 로그인 정보는 아래와 같습니다.
Username: pi
Password: raspberry
4. 초기설정
라즈베리파이가 처음 부팅하면, raspi-config가 자동으로 실행 됩니다.

– 1 Expand Filesystem은 지금은 설정 하지 않습니다. 나중에 Fdisk를 이용해 파티션을 설정 하도록 합니다.
– 2 Change User Password를 선택하여 (pi계정)암호를 바꾸어 줍니다.
– 3 Enable Boot to Desktop/Scratch를 선택하면, 3가지 항목이 나오는데 우리의 목적은 웹서버이기 때문에.. 리소스를 적게 차지하는 Console Text console, requiring login을 선택한다.
– 4 Internationalistion Options > Change Locale > ko_KR.EUC-KR EUC-KR > ko_KR.EUC-KR을 선택 하고 확인.
– 4 Internationalistion Options > Change Timezone > Asia > Seoul을 선택 하고 확인.
– 4 Internationalistion Options > Change Keyboard Layout > Generic 105-key (Intl) PC > Other > Korean > Korean – Korean (101/104 Key compatible)를 선택 하고 확인. 나머지 질문은 기본값 엔터.
– 7 Overclock 오버클럭이 필요하다면 원하는 옵션을 선택한다. (본인은 pi2를 선택)
– 8 Advanced Options > Hostname을 선택, 본인이 원하는 호스트명을 적는다.
– 8 Advanced Options > Memory Split을 선택, 공유할 비디오 메모리값 16을 적는다.(X윈도우를 사용하지 않는다는 조건)
Tab키를 Finish로 이동후 엔터를 누르면 라즈베리파이가 재부팅 한다.
잠시후.. 라즈베리파이가 콘솔 모드로 부팅한 모습이다.
오렌지색 상자의 경고 메세지는 나중에 해결하고, 일단 로그인을 한다.
pi입력후 엔터, 그리고 조금전 바꾼 암호를 입력하면 라즈베리안에 로그인 하게 된다.
raspi-config에서 로케일 설정을 한국어로 설정 하였기 때문에 폰트를 먼저 다운 받아야 한글을 제대로 읽을 수 있다.
-한글 표시용 유니폰트 설치
$ sudo apt-get install ttf-unfonts-core
보안을 위해 루트 계정의 암호를 바꾸고, 새로운 사용자를 추가하며 기존의 파이 계정을 삭제 한다.
-루트 암호 변경
$ sudo passwd root
암호입력
-새로운 계정 등록
$ sudo adduser admin (본인은 admin이란 계정을 추가 했다)
암호입력
사용자 정보 입력 (공백 처리 가능(그냥엔터))
-새로 만든 계정에 sudo 권한 추가
$ sudo nano /etc/sudoers
방금 만든 admin을 pi 아래에 추가 한다.
#includedir /etc/sudoers.d
pi ALL=(ALL) NOPASSWD: ALL
admin ALL=(ALL) NOPASSWD: ALL
팁1 – nano 에디터 간단 사용법.
Ctrl+W 검색
Ctrl+O 저장
Ctrl+X 종료
-재부팅
$ sudo reboot
-새로 만든 계정으로 로그인 후 기존 파이 계정 삭제
$ sudo deluser pi
-pi 계정의 폴더 삭제
$ cd /home
$ sudo rm -r pi
-키맵 관련 부팅속도 패치
$ sudo setupcon
-USB 속도 패치
$ sudo nano /boot/cmdline.txt
아래 내용을 추가 한다.
dwc_otg.speed=1
추가 후 저장.
-USB 전류제한 옵션 설정 (전원공급 장치가 2A(암페어)일때 적용 가능))
$ sudo nano /boot/config.txt
아래 내용을 추가 한다.
max_usb_current=2
safe_mode_gpio=4
추가 후 저장.
-부팅시 보여지는 경고문 해결..
kernel lacks cgroups or memory controller not avaiable, not starting cgroups……
(시그룹 커널이 없거나, 메모리 컨트롤러가 지원하지 않거나, 시그룹이 시작하지 못함 이란 뜻.. 자세한건 구글링 해 보시면 wikipedia에 잘 나옴)
해결책1 – 활성화
$ sudo nano /boot/cmdline.txt
아래 내용을 추가한다.
cgroup_enable=memory (before elevator=deadline)
해결책2 – 비활성화(본인은 비활성화(삭제)를 선택))
$ sudo update-rc.d -f cgroup-bin remove
$ sudo reboot
-기본 패키지 업데이트
$ sudo apt-get update && sudo apt-get upgrade
-불필요한 추천 패키지 자동 제거
$ sudo apt-get autoremove
-업데이트 후 재부팅
$ sudo reboot
-고정 IP주소 설정하기
$ sudo nano /etc/network/interfaces
아래 굵은 문자열을 수정 및 추가 해 준다.
auto lo
iface lo inet loopback
auto eth0
allow-hotplug eth0
iface eth0 inet static
address 192.168.0.100 #본인의 ip공유기 환경에 맞추어 설정
netmask 255.255.255.0
gateway 192.168.0.1 #ip공유기 주소
auto wlan0
allow-hotplug wlan0
iface wlan0 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
auto wlan1
allow-hotplug wlan1
iface wlan1 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
수정 및 추가 저장후,
네트워크 데몬을 재 시작한다.
$ sudo /etc/init.d/networking restar
5. 스왑 파티션 생성 및 microSD 전체 용량 확장 사용하기
라즈베리파이2에 microSD에 부팅 파일만 담고 실행하게 되면 1.8G정도의 용량을 사용한다. 최대 사용 용량은 이미 2G로 고정되어 있다.
그러나 raspi-config에서, 1 Expand-Filesystem을 실행하여 SD카드의 모든 용량을 사용할 수 있다.
하지만 이 때의 문제점은 남아있는 모든 용량(Sector)을 사용하기 때문에 Swap 파티션을 생성하지 못하는 문제가 있다.
반대로 먼저 Swap파티션을 생성하고 파티션을 확장 하려고 하면 그것도 되지 않는다. 왜냐면, 확장을 하려는 파티션이 무조건 마지막 파티션이어야 하기 때문이다.
이 문제를 해결하려면, 라즈비안 설정 도구인 raspi-config를 사용하지 않고 fdisk를 이용해 2번째 파티션을 새로 만들어서 재 설정하는 것이다.
-먼저 관리자 권한으로 Fdisk를 실행한다.
$ sudo fdisk -l
그러면 아래와 같이 디스크 정보가 표시된다.
본인의 microSD는 8GB이며, 참고로 디스크의 정보는 같은 용량이라 해도 제조사 마다 조금씩 다르다.

주의 – 아래 내용이 이해가 될때까지 몇번이라도 읽어 보길 바란다.
빨간색 사각형이 microSD의 전체 용량 15644672이다.
섹터의 시작이 0 이므로 마지막 섹터의 값은 전체 크기에서 1을 뺀 15644671이 된다.
스왑 파티션을 만들기 위해서 여기서 1G 만큼의 섹터를 빼야한다.(1G=2097152)
계산을 해보면 15644671-2097152=13547519
이 계산으로 나온 값 13547519이 스왑 파티션의 시작 섹터이다. 기억해둔다.
참고로 새로 만드는 2번째 파티션의 마지막 섹터는 13547519에서 1을 뺀 13547518이다.
노란색 사각형은 2번째 파티션의 시작 섹터 122880이다.
이 값을 기억해야 하는 이유는 2번째 파티션을 생성할 때 시작 섹터(First Sector)가 2048이 기본값이기 때문이다.
-기존 두번째 파티션을 지워 보자.
$ sudo fdisk -c -u /dev/mmcblk0
Command (m for help): d
Partition number (1-4): 2
-새로 2번째 파티션을 만든다.
Command (m for help): n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default e): p
Selected Partition (default 2): 2
First Sector (2048-15644671, default 2048): 122880
Last sector, +sectors or +size{K,M,G} (122880-15644671, default 15644671): 13547518
2번째 파티션 생성이 끝났다.
-파티션을 저장하고 종료한다.
Command (m for help): w
-재부팅 한다.
$ sudo reboot
-새로 만든 파티션을 인식 시킨다.
$ sudo resize2fs /dev/mmcblk0p2
-이제 스왑 파티션을 만들어 보자.
$ sudo fdisk -c -u /dev/mmcblk0
Command (m for help): n
Partition type:
p primary (2 primary, 0 extended, 2 free)
e extended
Select (default e): p
Selected Partition (default 3): 3
First Sector (2048-15523839, default 2048): 13547519
Last sector, +sectors or +size{K,M,G} (13426687-15644671, default 15644671): 15644671
Command (m for help): t
Partition number (1-4): 3
Hex code (type L to list codes): 82
Command (m for help): w
스왑 파티션의 생성이 끝났다.
-재부팅 한다.
$ sudo reboot
-스왑 파티션을 활성화 한다.
$ sudo mkswap /dev/mmcblk0p3
$ sudo swapon /dev/mmcblk0p3
-시스템 시작 커널에 등록한다.
$ sudo nano /etc/fstab
/dev/mmcblk0p2 아래에 아래의 내용을 추가 한다.
/dev/mmcblk0p3 swap swap defaults 0 0
$ sudo nano ~/.bashrc
맨 마지막 줄에 아래 내용을 추가 한다.
sudo dphys-swapfile swapoff
sudo dphys-swapfile uninstall
-재부팅 한다.
$ sudo reboot
-이제 용량 및 스왑 파티션이 완성 되었는지 확인하면 된다.
–디스크 용량 확인
$ df -h
–스왑 영역 확인
$ swapon -s
–메모리 확인
$ free -m
6. SAMBA 설치
-윈도우에서 라즈베리파이의 폴더 공유를 위해 samba를 설치한다.
$ sudo apt-get install samba samba-common-bin
사용자를 추가한다.(본인은 admin을 추가 하였음)
$ sudo smbpasswd -a admin
암호입력.
설정 파일을 수정한다.
$ sudo nano /etc/samba/smb.conf
아래 내용을 수정 및 추가한다.
[global]
workgroup = WORKGROUP
encrypt password = true
unix charset = utf-8
charset = utf-8
#dos charset = cp949
[admin]
comment = Raspberry pi
path = /home
valid user = admin
browseable = yes
read only = no
writable = yes
printable = no
public = yes
guest ok = no
추가 후 저장 한다.
삼바데몬 재시작
$ sudo service samba restart 또는 $ sudo /etc/init.d/samba restart

윈도우에서 탐색기 실행, 주소줄에 \\192.168.0.100\admin 입력후 엔터, 접속이 되는지 확인.(ip는 필자의 네트워크 환경이며, admin은 필자가 등록한 계정)
7. FTP 서버 설치
-FTP서버 프로그램을 설치한다.
$ sudo apt-get install proftpd
설치중 서버 유형 선택에서 standalone 선택
웹브라우저나 FTP클라이언트로 FTP서버에 접속이 되는지 확인한다.
FTP 서버의 로그인은, 라즈베리파이에 로그인할 때 사용하는 계정과 암호를 사용하면 된다.

8. 웹서버 설치하기(NginX + PHP5 + MySQL)
웹서버를 구성하기 위해 웹서버로 엔진엑스, 기본 언어로 php, DB로 mysql를 선택한다. 그리고 php를 FastCGI 모드로 동작하기 위해서 php-fpm을 추가한다. php5-gd은 GD라이브러리를 설치하여 이미지 리사지징, 워터마크 등도 웹사이트에서 가능하게 한다.
필요한 패키지를 설치 한다.
$ sudo apt-get install -y nginx php5-fpm php5-cli php5-curl php5-gd php5-mcrypt php5-mysql php5-cgi mysql-server

설치 중간에 mysql의 루트 관리자의 암호를 설정한다.
-mySQL 설정
$ mysql -uroot -hlocalhost -p
mysql의 루트 관리자의 암호를 입력
-사용자 데이타베이스(DB) 만들기.(본인은 design9을 생성)
mysql> CREATE DATABASE design9;
-사용자 등록.(본인은 사용자로 admin을 추가, 암호는 AAAA로 적음)
mysql> CREATE USER ‘admin’@’localhost’ IDENTIFIED BY ‘AAAA’;
-데이타베이스(design9)와 사용자(admin) 연결
mysql> GRANT ALL PRIVILEGES ON design9.* TO ‘admin’@’localhost’;
-새로운 설정을 적용
mysql> FLUSH PRIVILEGES;
mysql> exit
-재부팅 한다.
$ sudo reboot

웹브라우저에 아래의 주소로 접속을 하면 웹페이지가 뜨는 것을 확인 할 수 있다.
http://192.168.0.100/
참고로 엔진엑스는 기본적으로 다음과 같은 설정값을 가진다.
홈페이지 위치
/usr/share/nginx/www
설정 파일
/etc/nginx/nginx.conf
/etc/nginx/sites-available/
로그파일
/var/log/nginx/
-웹서버의 기본폴더를 /usr/share/nginx/www 에서 home/admin/www 로 변경해보자.
$ sudo nano /etc/nginx/sites-available/default
아래 내용을 변경한다.
root /usr/share/nginx/www;값을 root /home/admin/www;으로 변경한다.
client_max_body_size 20M; #업로드 파일크기 정의
PHP파일 동작을 위해서 index.php 를 추가한다. 
엔진엑스와 php-fpm연동을 위해 아래 코드처럼 주석을 제거한다.

-엔진엑스를 다시 시작한다.
$ sudo service nginx restart
-이제 /home/admin/www 디렉토리를 만들고 웹서버의 파일을 복사 해주면, 홈 이동이 완성된다.
$ cd ~
$ mkdir www
$ cd www
$ sudo cp /usr/share/nginx/www/* /home/admin/www
웹브라우저로 192.168.0.100으로 웹서버에 접속 해보자.

-php가 정상적으로 동작하는걸 확인하기 위해 아래의 코드를 index.php 파일에 넣고 웹서버에 접속 해보자.
$ nano index.php
아래 내용을 추가한다.
<?php
phpinfo();
?>
웹브라우즈로 192.168.0.100으로 접속하여 아래와 같은 내용이 뜬다면 정상적으로 php가 동작하고 있는 것이다.

9. GNUboard 5 설치
설치 전에 콘솔에서 작업을 잠깐 한다.
-홈페이지 폴더로 이동
$ cd /home/admin/www
-퍼미션 변경
$ chmod 707 www
-그누보드 데이터 폴더 생성
$ mkdir data
–퍼미션 변경
$ chmod 707 data
여기를 클릭하여 최신버전의 그누보드를 다운로드한다. 받은 파일의 압축을 풀면 아래와 같이 파일 목록이 나온다.

FTP 프로그램 또는 삼바를 이용하여 웹서버로 /home/admin/www로 압축을 푼 파일을 업로드 한다.

업로드가 끝나면, 웹브라우저로 192.168.0.100/install로 이동한다.

동의합니다에 체크한뒤 다음을 클릭한다.

mySQL의 관리자 정보와 mySQL에 등록한 데이타베이스(DB)를 입력한다. 그리고 그누보드 관리자 정보를 입력한다.
다만 TABLE명 접두사는 가능하면 변경 하지 말기를..

설치가 완료 되었다. 새로운 그누보드5로 이동을 클릭한다.

이제 로그인하여 게시판을 만들면 된다.
아니면, 여기로 이동하여 그누보드5 전용 홈페이지 빌더를 받아서 손쉽게 홈페이지를 구축할수도 있다.
10. USB Image Tool
설치 및 세팅이 완료된 라즈베리안 microSD를 윈도우즈PC에 연결하여, USB Image Tool로microSD를 백업 받으면 끝이다.

글을 적다보니.. 생각보다 더 많은 시간을 투자 했다.
이것도 나눔이라 좋게 생각하며 기분좋게 커피나 마시러 가야 겠다.
이글을 끝까지 읽은 님들도 고생 했어요 ^^