라즈베리파이 배포판 업그레이드 (jessie -> stretch)

라즈베리파이에 워드프레스를 설치하여 이 페이지를 운용중이다. 언제부터인가 워드프레스를 업데이트 하려면 php 버전 7 이상이 필요하다며 업데이트가 안되었다. 시간이 좀 있어서 php7을 설치해보기로 했다.

좀 검색을 해보니 지금 사용하는 jessie 배포판은 좀 오래된 버전으로 php5를 포함하고있다. 최신판인 stretch를 설치하면 php7을 포함하므로 자연스럽게 업그레이드가 될 것 같아서 배포판 업그레이드를 하기로 결정했다.

Raspberry Pi - Raspbian-Update "Jessie" to "Stretch"
Upgrade Raspbian “Stretch”

배포판 업그레이드는 https://www.datenreise.de/en/raspberry-pi-raspbian-update-update-jessie-to-stretch/ 페이지를 보면서 따라가면 별 문제 없이 할 수 있다. 몇 가지 패키지에 문제가 있었는데 사용하지 않는 패키지라 지워버리고 진행하니 문제가 없었다.

배포판 업그레이드 후 첫 번째 문제는 php5가 남아있다는 것이다. phpinfo를 보니 php5가 출력이 되었다. php5를 지우고 php7관련 패키지들을 다시 설치하여 php7으로 넘어갈 수 있었다. php7.0-pdm 패키지가 설치되면서 mysql, apache등이 연동이 되었던 것 같다.

이렇게 php7이 설치되니까 워드프레스도 자연스럽게 업데이트가 되어 잘 동작했다.

그런데 따로 만들어둔 페이지들이 하나도 동작하지 않았다. 좀 찾아보니 mysql_* 함수들을 mysqli_* 함수들로 변경해야 한다고. 그래서 일일이 찾아서 바꿔주니 에러는 나지 않았는데 쿼리 결과가 NULL이 리턴되었다. mysqli_query 함수를 찾아보니 mysqli 인자를 필수로 넘겨줘야 하는 것 같았다. mysqli_query($query) -> mysqli_query($conn, $query)로 변경해주니 쿼리 결과가 제대로 넘어왔다.

이걸 일일이 다 바꿔주는 방법밖에 없는건지 모르겠지만 일단 급하니 하나하나 바꿔줘야 할 듯… 여튼 라즈베리파이의 배포판을 업그레이드하였으니 큰 일 하나 해낸 듯.. 🙂

라즈베리파이 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을 걸어두고 쓰면 더 오래 쓸 수 있지 않을까 싶어서 걸어두기로..