라즈베리파이 1 키오스크 모드

기존에 사용하던 라즈베리파이가 어느날부턴가 부팅이 되지 않아 확인해보니 SD카드가 깨졌다. 다시 파티션하고 포멧해보려 해도 할 수 없다며 에러가 출력된다.

할 수 없이 다시 만들어야 해서 이것 저것 다시 찾아보게 되어 여기에 정리를 해 둔다. 설정이 완료되면 SD 카드를 백업해 두고 나중에 다시 사용할 수 있도록 해야 할 것 같다.

FullPageOS 설치

설치해봤으나 커널 패닉이 뜨면서 부팅이 되지 않는다. 문서를 좀 읽어보니 라즈베리파이 1은 지원하지 않는다.

라즈베리파이 2 이상을 사용한다면 이게 가장 간단한 방안이 아닐까 싶다. boot 파티션의 파일들을 통해서 네트워크 설정, 웹 페이지 설정이 가능하다.

Jessie Lite 설치

lightDM 등 가볍게 X 환경을 설치한 후 chromium-browser를 설치하려했는데 apt-get을 통해서는 설치할 수가 없었다. 수동 설치 방안이 있는 것 같았으나 일이 복잡해질 것 같아서 패스.

Jessie Full 버전 설치

PIXEL 데스크탑 환경이 포함되어있는 이미지를 다운로드하여 설치했다. 기본적으로 chromium-browser가 설치되어있어서 자동으로 실행되게 하기만 하면 된다.

이미지를 SD카드에 풀어낸 후 부팅을 한 후 먼저 WiFi 설정을 한다. 유선을 사용한다면 별로 필요없을 것 같고, 무선랜을 사용한다면 /etc/wpa_supplicant/wpa_supplicant.conf 파일에 다음과 같이 추가해준다.

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
 
network={
    ssid="ssid name"
    psk="password"
    key_mgmt=WPA-PSK
}

화면을 보니 full screen으로 출력이 안된다. 강제로 1920×1080으로 출력하도록 /boot/config.txt를 다음과 같이 수정한다.

# uncomment to force a specific HDMI mode (this will force VGA)
hdmi_group=2
hdmi_mode=82

chromium-browser를 실행해보면 한글이 깨져나오는데 아래와 같이 ttf-unfonts-core를 설치해준다.

$ sudo apt-get install ttf-unfonts-core

그다음 마우스 커서를 없애기 위해 unclutter 패키지를 설치한다.

$ sudo apt-get install unclutter

이제 chromium-browser가 자동으로 실행되도록 설정한다. ~/.config/lxsession/LXDE-pi/autostart 파일을 열어서 아래 라인을 추가한다. screen save 관련 옵션을 코멘트 처리하거나 지운다.

@xset s off
@xset s noblank
@xset -dpms

@chromium-browser --noerrdialogs --kiosk --incognito http://page.to/show

이제 재부팅 후 제대로 나오는지 확인한다. 제대로 페이지가 출력이 되면, SD카드를 백업한다. 다시 SD카드에 문제가 생기면 백업해둔 이미지를 SD카드에 풀어넣으면 된다.

$ diskutil unmountDisk /dev/disk# (#은 SD카드 번호)
$ sudo dd bs=1m if=/dev/disk# of=./pi1.img

혹시나 싶어 SD카드를 Lock 걸고 켜봤는데 그래도 잘 동작한다. Lock을 걸어두고 쓰면 더 오래 쓸 수 있지 않을까 싶어서 걸어두기로..

라즈베리파이 모니터 없이 최소 설치

호스팅을 직접 라즈베리파이에 해 보면 어떨까 싶은 마음에 사용하지 않고있던 라즈베리파이2를 꺼내보았다. 웹 서버를 운용할 것이라서 데스크탑 환경은 필요가 없기 때문에 무작정 RASPBIAN JESSIE LITE 버전을 다운로드하여 MicroSD 카드에 이미지를 풀어냈다.

시행 착오 및 검색을 통해 부팅 전 다음과 같은 사항이 필요하다는 것을 알아냈다.

Raspberry Pi

고정 IP

모니터, 키보드는 연결하지 않을 것이므로 항상 동일한 IP를 갖도록 하는 것이 필요했다. boot 파티션에 보면 cmdline.txt 라는 파일이 있는데, 이를 열어 ip=xxx.xxx.xxx.xxx를 입력해주면 된다.

pi@raspberrypi:/boot $ cat cmdline.txt 
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes ip=10.0.1.100 rootwait

SSH enable

기본적으로 LITE 이미지는 ssh가 disable 되어있다. 이를 enable 하기 위해서는 boot 파티션에 ssh 라는 이름의 빈 파일을 넣어주면 된다. touch ssh 식으로 하나 만들어준다.

위와 같이 두가지 설정을 해 주면 ssh를 통해서 라즈베리파이에 접속할 수 있다. 기본 계정은 pi/raspberry 이다. 접속 후 패스워드를 변경해주고 apt-get update/upgrade를 먼저 해 둔다.

이제 APM을 설치하여 웹서버를 운용하면 된다.