반응형

python 3.8.12, 3.x 버전 설치

버전 설치라고 하지만, 실제로는 빌드작업이다. 여기서는 3.8.12 버전을 빌드한다. 글을 적는 시점에서 최신버전인 3.9.x를 설치하더라도 버전 숫자만 바꿔서 진행을 해도 무난하다.

배경

간만에 방 구석에서 굴러다니는 raspberry pi3 를 2021년 9월 시점의 rasbian lite 버전을 설치했다. 여기에는 python 3.7.3 이 기본적으로 설치가 되어 있다. 얼마전 pyqt5 를 윈도에서 시험삼아서 테스트할 때 python3.8.10 이상이 되어야 다른 package에 문제가 없는 것을 확인했기 때문에 3.8.12를 설치하려 했다. 하지만, apt install 명령어는 기본적으로 이미 빌드가 되어 있는 파일을 설치하는 것이라 apt에 등록되어 있는 repository에 새로운 빌드된 것이 없다면, apt install 로 설치할 수 없다.

이 때문에 자신의 (독특하고 까다로운?) 입맛대로 버전을 바꿔서 설치를 하기 위해서는 필요한 python 3.8.12 소스파일을 직접 다운로드 받아서 직접 빌드 하여 설치하는 방법이 있다. 문제는 이 방법은 상당한 시간이 걸린다.

따라서 만약 해당 환경을 양산을 해야 한다면, deb package로 만들거나 img로 만들어 놓고 쓰는 것을 추천한다.

빌드 방법

우선 빌드에 필요한 빌드 도구들이 필요하다. python 공식 문서에서 찾을 수 있을 것이다(아마도).

sudo apt install -y build-essential tk-dev libncurses5-dev libncursesw5-dev \
    libreadline6-dev libdb5.3-dev libgdbm-dev libsqlite3-dev \
    libssl-dev libbz2-dev libexpat1-dev liblzma-dev zlib1g-dev \
    libffi-dev tar wget vim

python 소스코드 다운로드

https://www.python.org/ftp/python/ 에서 소스코드 압축 파일을 마우스 우클릭 한뒤 링크복사를 선택하여 복사한다음에 wget 명령어 뒤에 붙여넣어서 다운로드를 받자.

wget https://www.python.org/ftp/python/3.8.12/Python-3.8.12.tgz

빌드

다운로드된 압축파일을 풀고 해당 폴더에서 make 명령어를 순서대로 입력하면 된다.

sudo tar zxf Python-3.8.12.tgz
cd Python-3.8.12
sudo ./configure --enable-optimizations
sudo make -j4
sudo make altinstall

만약 sudo make -j4 진행중에 실패를 했다면 메모리 부족일 가능성이 높다. 이경우 -j 뒤의 숫자를 줄여서 다시 시도하면 된다. 자신이 상남자가 아닌 겁쟁이라면 처음부터 -j2로 해도 상관 없다.

설치 확인

그냥 python 버전으로 확인해보면 된다.

python3.8 -V

환경변수 설정

python 명렁어의 환경변수를 수정하여 3.8.12가 실행되도록 하자, 다음 명령어 한줄이면 된다. 만약 잘못 입력을 했다면, vim 혹은 nano 같은 편집 툴로 마지막줄을 수정하면 된다.

echo "alias python=/usr/local/bin/python3.8" >> ~/.bashrc
source ~/.bashrc
python --version

패키지 관리

pip 도 경로를 확인하고 환경변수를 변경해도 된다. 기본적으로 sudo apt install python3-pip 로 설치할 경우 3.7.3 버전에 해당되는 pip3가 설치된다. python -m pip install $package 형태로 사용하면 된다.

python -m pip --version

참조

 

How to install Python 3 - Raspberry Pi Forums

billintad wrote: As far as I am aware the recommended way to install a python package is to use : man says: NAME pip - A tool for installing and managing Python packages SYNOPSIS pip [options] pip3 [options] DESCRIPTION pip is a Python package installer, r

forums.raspberrypi.com

 

 

Updating Python 3.7 to 3.8 on Raspberry Pi

I recently updated my Raspberry Pi with sudo apt update and sudo apt full-upgrade to the system. Even if Python 3.8 is out, when I run python3 in terminal, it shows me version 3.7, instead of 3.8. ...

raspberrypi.stackexchange.com

 

[Python] 라즈베리파이에서 python 최신 버전 설치하기

라즈베리3b+를 기준으로 작성되었습니다.라즈베리파이에 Python 3.5.3 버전이 제공되고 있다python을 최신 버전으로 변경하는 방법은 아래와 같다 ( 3.8.5 버전을 기준으로 작성 )1. Python을 설치하기 전

power-of-optimism.tistory.com

 

반응형
반응형

[라즈베리 파이]비공식 멀티카메라 모듈 후기(ivport v2)

배경

 많은 수의 카메라 컨트롤을 해야 하는 프로젝트를 진행하고 있었기 때문에 카메라 수를 줄이고 싶었다.

 비공식적으로 터키에 소재하는 ivmech 업체에서 Ivport v2 라는 이름으로 단일 카메라 포트를 여러개의 pi camera로 확장하는 모듈을 제작했다. 기존에도 Ivport v1으로 pi camera v1에 대해서 멀티카메라 모듈을 제공한 적 있는 업체였다.

 ivport v2 중첩으로 연결이 가능하고 최대 4번 중첩하여 16개의 카메라 연결이 이론적으로 가능하다(실제로는 여러 에러사항 때문에 중첩하여 사용하지 않을 것을 권장한다).



모듈 드라이버

 제조사에서 드라이버를 제공하는데, Python으로 작성되어 있다(ivport 드라이버 링크). CSI(Camera Serial Interface)포트 하나와 GPIO 핀과 연결이 되어 있어야 한다. 드라이버의 역할은 GPIO의 신호를 바꿔서 Ivport v2 모듈에 신호를 줘서 연결되어 있는 카메라를 바꾸는 방식이다.


 만약 Python 이외에 다른 언어로 구현을 해야 하는 경우라면 직접 드라이버를 만들어야 할 것이다. 그렇다면 드라이버 코드를 보고 GPIO 신호를 바꿔주는 것을 구현해야 한다. 이에 적합한 건 C 라이브러인 Wiring이 있다.


 그 외 이미지 데이터를 얻는 방법은 공식 프로그램인 raspistill 과 같은 프로그램을 사용하거나 동일하게 제공는 라이브러리르 사용해서 얻을 수 있다.



원리

 드라이버에 대해서 분석이 되면, 눈치가 빠른 사람은 모듈이 한번에 하나씩 카메라에 접근하는 방식으로 동시에 카메라에 접근 할 수 없다는 것을 알게 될 것이다. 이는 카메라로 부터 얻는 이미지 데이터의 크기가 커질 수록 느릴 수 밖에 없다.



성능

 제조사 측에서는 스테레오 카메라로 라이브 스트리밍을 시연 동영상을 유투브에 올려놨는데, 중간에 일시 정지 해보면 0.03 ~0.05초 정도 차이가 나서 준수해 보이지만, 역시 화질과 이미지 사이즈를 언급이 안되어 있다(모니터에 보이는 큰 화면은 출력해서 resize한다면 큰 문제가 아니다).


 하드웨어 조건 고려해서 Pi Camera v2 의 최대 고화질 카메라 이미지 수신에 걸리는 시간을 계산했을 때 최대 약 0.05초 정도 걸린다는 걸 계산했었다. 이는 이론 값이니 실제로는 더 걸릴 것이다.


 해당 내용을 PM에게 보고 하자 제조사측에도 공식 문의를 하기로 결정했고, 그 결과 얻는 답변은 Low 단으로 수정했을 경우 2대의 카메라간 동기오차는 0.10 ~ 0.15초의 오차를 얻을 수 있을 것이라고 했다. 즉, 동기가 중요한 경우 그냥 여러대의 라즈베리 파이를 구매해서 신호 동기화를 시키는 게 낫다.


 또 테스트를 직접 했을 때 재미있는 현상이 몇 가지 있었는데, 1번 카메라가 없으면 모듈이 아예 인식이 안된다.



평가

 해당 모듈은 라즈베리 파이 재단에서 제작하지 않은 비공식적인 모듈이다. 해당 모듈은 라즈베리 파이 본체가 있어야 사용할 수 있는 모듈인데, 라즈베리 파이 본체보다 금액이 좀 더 비싸다. 물론 카메라 4대를 전부 연결해서 본체를 덜 구매 한다면 이득이지만, 동기화에 한계가 있다.

 심지어 ivport v2 모듈이 소모하는 전력이 의외로 많은지 4개의 카메라를 전부 연결하면 1개는 인식이 안되었다.


 취미로 하는게 아니라면, 오히려 제약이 많기 때문에 가능하면 사용하지 않는 것이 좋다.

반응형
반응형

라즈비안 : Pi Camera v2 에러 메시지


배경

 라즈베리 파이에서 공식적으로 제공하는 카메라의 경우 라즈비안의 raspistill 등 공개 표준 프로그램과 라이브러리가 함께 제공된다. 공식적으로는 Python 라이브러리만 제공되지만, C 라이브러리도 존재한다.


 라즈베리 파이와 같이 PC에 비해서 저사양의 불안정한 기기에서는 종종 소프트웨어에서 문제인지 아니면, 하드웨어에서 문제인지 판단해야 한다. 사실 오류(혹은 에러) 메시지를 잘 확인 하기만 해도 대부분의 문제의 원인을 알 수 있다. 따라서 필자가 경험한 오류 메시지에 대해서 사례로 기록을 한다.


 여기서 언급한 에러 메시지는 raspistill을 실행하다가 반환되는 에러 메시지를 적어 놓았다.



카메라 인식 문제

 에러 메시지1

mmal: Cannot read camera info, keeping the defaults for OV5647
mmal: mmal vc component create: failed to create component 'vc_ril.camera'(1:ENOMEM)
mmal: mmal component create core: could not create component 'vc.ril.camera'(1)
mmal: Failed to create camera component
mmal: main: Failed to create camera component
mmal: Camera is not detected. Please check carefully the camera module is installed correctly


 이 경우는 인식 아예 못하는 경우다.

 에러 메시지에서 확인할 수 있듯이 운영체제에서는 카메라에 접근하기 위해서 단계적으로 카메라에 관련되 드라이버와 컴포넌트를 생성을 하는데 이 모든 단계가 실패를 하게 된다. 대부분 이 경우 선이 연결이 잘못되었다던가 선이 문제가 있는 경우이다.


 아주 드문 경우로 만약 정상적으로 선으로 연결이 되었음에도 이 메시지가 뜬다면, 카메라 하드웨어 모듈내의 회선이나 끊어진 경우일 수 있다.



카메라 회신 문제(고장)

에러 메시지2

mmal: No data received from sensor. Check all connections, including the Sunny one on the camera board



 이 경우는 약 5초간 응답이 없다가 보게 되는 에러 메시지이다.

 이 경우는 하드웨어적으로 연결은 잘 된 상태이다. 그리고 드라이버도 잘 인식이 된 것이다. 하지만, 이미지 데이터를 요청을 해도 그 요청에 대해서 응답이 없는 상태이다. 이 경우 대부분 카메라 하드웨어 모듈에 문제(고장)이 있는 상태이다.


 아주 드물게 카메라 하드웨어 모듈의 점퍼 부분이 느슨하게 연결이 되거나 선이 연결이 되었지만, 느슨하게 연결되서 생길 수도 있지만, 말 그대로 아주 드물다.



참조자료

겸험과 오류 메시지 내용

반응형
반응형

라즈비안 : OpenCV를 쉘 스크립트로 설치

배경

 라즈비안에 OpenCV 설치 하는 방법에 대해서는 사실 많은 블로그에서 정리가 되어 있다. 하지만, 그 과정을 따라서 하는 것도 나쁘지는 않지만, 기본적으로 쉘에서 처리가 가능한 것들은 그냥 쉘 스크립트로 만들면 되지 않을까 하는 생각에서 작성하게 되었다.


 이번글은 작성중인 OpenCV 쉘 스크립트를 저장한 정도의 글이 될 것이다. 이후 추후에 쉘 스크립트 문법에 대해서 정리를 해 놓아야 될 것 같다.



OpenCV 설치 확인 및 제거 방법

 라즈비안이 우분투 커널을 사용하므로 마찬가지로 우분투에서 사용했었을 때 실행이 잘 되었다. 다만, 미리 설치가 되어 있을 경우 제거를 해줘야 한다.


pkg-config --modversion opencv
# 제거할 경우
cd {기본opecv 소스폴더의 build 폴더}
make uninstall


제거를 위와 같이 하지 않으면, apt-get purge로 삭제를 해도 pkg-config으로 검사할때 검출이 된다. 아마도 해당 정보를 지우지 못하는 버그가 있는 것 같다.



OpenCV 설치 쉘 스크립트(contirb포함)

 버전 수준으로 따지자면, 0.1 스크립트라고 봐야 할 것이다. 즉, 아직 부족하다고 생각 든다.

 OpenCV3.2.1외에 다른 버전이 필요한 사람이라면, OPENCV_VERSION의 숫자값을 변경하면 된다. 이미 다른 OpenCV가 설치가 되어 있다면, 설치가 진행되지 않는다. 또한, 일반적인 개발 환경으로 셋팅을 한 것이 기 때문에 실제로 배포를 하려고 할 경우는 필요한것만 빌드하도록 수정해야 한다.


#!/bin/bash

# Custom values
OPENCV_VERSION="3.3.1"
OPENCV_REPO=https://github.com/opencv/opencv/archive/"$OPENCV_VERSION".zip
OPENCVCONTRIB_REPO=https://github.com/opencv/opencv_contrib/archive/"$OPENCV_VERSION".zip

# check exit opencv modules
pkg-config --modversion opencv
if [ "$?" -eq 0 ]; then
  echo "You already install opencv"
  exit 0
fi

# Update Debian
sudo apt-get update && sudo apt-get upgrade -y
if [ "$?" -eq 1 ]; then
  echo "Faile Update or Upgrade"
fi

# Install need modules
DEPPKGS=(build-essential cmake)
DEPPKGS+=(pkg-config)
DEPPKGS+=(libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev)
DEPPKGS+=(libavcodec-dev libavformat-dev libswscale-dev libxvidcore-dev libx264-dev libxine2-dev)
DEPPKGS+=(libv4l-dev v4l-utils)
DEPPKGS+=(libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev)
# Qt4
DEPPKGS+=(libqt4-dev)
DEPPKGS+=(mesa-utils libgl1-mesa-dri libqt4-opengl-dev)
# Optimature lib
DEPPKGS+=(libatlas-base-dev gfortran libeigen3-dev)
DEPPKGS+=(python2.7-dev python3-dev python-numpy python3-numpy)

echo "=== Install depend packages ==="
for DEPPKGNAME in ${DEPPKGS[@]}; do
  dpkg -l | grep "$DEPPKGNAME"
  if [ "$?" -eq 1 ]; then
    sudo apt-get install -y "$DEPPKGNAME"
  fi
done
echo "=== End install depend packages ==="

PWD=`pwd`
WORKSPACE="$PWD"/opencv
if [ ! -d "$WORKSPACE" ]; then
  mkdir "$WORKSPACE"
  cd "$WORKSPACE"
fi

OPENCVZIP="$WORKSPACE"/opencv.zip
if [ ! -f "$OPENCVZIP" ]; then
  wget -O "$OPENCVZIP" "$OPENCV_REPO" \
  && unzip -o "$OPENCVZIP" 
  if [ "$?" -eq 1 ]; then
    echo "fail download '$OPENCVZIP'"
    exit 1
  fi
else
  upzip -o "$OPENCVZIP"
  if [ "$?" -eq 1 ]; then
    echo "fail unzip '$OPENCVZIP'"
    exit 1
  fi
fi

CONTRIBZIP="$WORKSPACE"/opencv_contrib.zip
if [ ! -f "$CONTRIBZIP" ]; then
  wget -O "$CONTRIBZIP" "$OPENCVCONTRIB_REPO" \
  && unzip -o "$CONTRIBZIP"
  if [ "$?" -eq 1 ]; then
    echo "fail download opencv_contrib.zip"
    exit 1
  fi
else
  unzip -o "$CONTRIBZIP"
  if [ "$?" -eq 1 ]; then
    echo "fail unzip '$CONTRIBZIP'"
    exit 1
  fi
fi

# OPENCVDIR="$WORKSPACE"/opencv-3.4.0
OPENCVDIR="$WORKSPACE"/opencv-"$OPENCV_VERSION"
if [ -d "$OPENCVDIR" ]; then
  cd "$OPENCVDIR"
else
  echo "does not have dir '$OPENCVDIR'"
  exit 1
fi

BUILDDIR="$OPENCVDIR"/build
if [ ! -d "$BUILDDIR" ]; then
  mkdir "$BUILDDIR" && cd "$BUILDDIR"
else
  cd "$BUILDDIR"
fi


cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D WITH_TBB=OFF \
-D WITH_IPP=OFF \
-D WITH_1394=OFF \
-D BUILD_WITH_DEBUG_INFO=OFF \
-D BUILD_DOCS=OFF \
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D BUILD_EXAMPLES=OFF \
-D BUILD_TESTS=OFF \
-D BUILD_PERF_TESTS=OFF \
-D ENABLE_NEON=ON \
-D WITH_QT=ON \
-D WITH_OPENGL=ON \
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-"$OPENCV_VERSION"/modules \
-D WITH_V4L=ON  \
-D WITH_FFMPEG=ON \
-D WITH_XINE=ON \
-D BUILD_NEW_PYTHON_SUPPORT=ON \
../

if [ "$?" -eq 1 ]; then
  echo "fail OpenCV cmake build '$PWD'"
  exit 1
fi

time make
if [ "$?" -eq 1 ]; then
  echo "fail OpenCV make"
  exit 1
fi

# only in raspberry
sudo make install
if [ "$?" -eq 1 ]; then
  echo "fail OpenCV install"
  exit 1
fi

echo "complete OpenCV install"
exit 0




후기

 라즈베리 파이3의 경우 듀얼코어(make 옵션의 -j2)까지는 에러가 발생하지 않지만, 마지막부분에서 문제가 있는지, 싱글코어로 빌드한것과 시간차이가 거의 없었다. 코어를 3개를 올릴 경우 빌드 막바지에서 메모리가 부족해서 빌드가 중단되는 문제가 있다.


 일부 후기에서 정정한다. swap 가상 메모리의 크기를 늘리면, 모든 코어를 빌드에 투입하여 시간을 단축 시킬 수 있다. 방법은 추후에 기회가 되면 정리 하도록 하겠다.


참조 자료

블로그 OpenCV3.4 설치




반응형
반응형

라즈베리 파이 한글문서(링크)

 기존 라즈베리 파이의 공식 문서(영문)을 비공식적으로 번역을 해놓은 페이지 이다. 영어 문서를 봐도 상관이 없겠지만, 아무래도 읽는 속도에서 차이가 나기 때문에 가능하면 한글 문서를 보는 것이 유리할 듯하여 기록을 남긴다.


유용했던 분은 이런 일 하는 분들의 문서에 추천을 눌러주자(여기글 말고 링크한 글)


링크

라즈베리 파이 문서(한글)




반응형
반응형

라즈비안 : Lite 버전 설치 및 초기 설정

알아야하는 이유

라즈베리 파이 뿐만 아니라 기존에 리눅스 계열의 서버나 제품을 만들 경우 흔히 개발중 혹은 학습과정에서 사용하는 GUI를 사용하지 않는다. 즉, 실제 배포 전단계에서는 Lite 버전으로 운영체제를 설치한 다음에 필요한 것만 설치 하여 운영을 한다. 이때문에 Lite 버전에서 환경을 설정하기 위한 기본적인 명령어는 알아야한다.


라즈비안Lite 다운로드

라즈베리파이 공식 웹페이지에서 다운로드 받을 수 있다. 또한 토렌트를 통해서 다운로드 받을 수도 있다. 토렌트 시드 파일을 받아서 다운로드 하면 된다.

링크

초기 설치 후 로그인 계정과 패스워드를 묻는데, 초기 기본정보는 pi/raspberry 인데, 보안상 적어도 패스워드는 반드시 바꾸도록 하자.


환경설정

sudo raspi-config



 초기 라즈비안 버전에서는 여기서 ssd의 저장공간을 확장했지만, 요즘에는 처음 실행시 자동으로 확장을 해준다. 여기서 보여지는 환경설정에서 Camera, ssh, p2c, serial port 등나 각종 센서에 필요한 인터페이스를 활성화해줘야 사용 가능하다.

 만약 Wifi를 사용해야 한다면, 국가를 US로 해줘야 한다. 이는 기존에 버그로 인해 공유기 인식이 안되서 해주는 것인데, 만약 해당 버그가 수정되었다면, 바꿔줄 필요가 없다.



반응형
반응형

라즈비안 : 배경 바꾸기

머리말

GUI 환경 환경에서는 바탕화면에서 우클릭을 한뒤에 설정을 하면 된다. 아주 쉽다. 하지만, 다수의 라즈비안에서 배경화면을 바꾸기 위해서는 일일히 키보드와 마우스를 갈아끼면서 바꾸는 건 상당히 많은 작업을 요한다. 때문에 GUI환경이지만, CUI에서 배경을 바꾸는 방법을 기록한다.


설정파일 위치

라즈비안도 운영체제이므로 한 운영체제에 여러 계정이 있을 수 있다는 것이 이제는 보편화 되어 있다. 그리고 바탕화면은 계정별로 독립적으로 지정할 수 있다는 것을 생각하면, 계정 폴더 안에 설정파일이 있을 것이라는 것이 추측이 된다.


공식 포럼에서 알려주는 위치는 다음과 같다.

~/.config/pcmanfm/LXDE/


하지만 실제로는 위의 결로에 폴더가 없고, 마지막 하위 폴더명이 달랐었다. 이는 버전에 따라서 조금씩 차이가 있는 것으로 생각된다. 실제 경로는 다음과 같다.

~/.config/pcmanfm/LXDE-pi/desktop-items-0.conf


파일명 역시 조금씩 차이는 있을 있다. 다만, 설정파일 항목중에서 

wallpaper=/usr/share/pixel-wallpaper/road.jpg


로 되어 있는 항목이 보이면 원하는 이미지 경로와 파일명을 수정하면 된다.

수정한뒤 리부트를 하면 적용이 된다.


하지만, 배경화면을 바꾸는데 리부트 하는 건 좀 아니다 싶다. 추후에 리부트 안하고 적용하는 방법이 있다면, 알려주시면 감사하다.


참조자료

라즈베라피이스택오버플로워(?)




반응형
반응형

라즈베리 파이3 : 라즈비안 : 절전모드 및 화면보호 끄기

라즈비안의 버그?

 데스크 탑(?) 모드에서는 바탕화면에서 간단하게 마우스 우클릭하여서 GUI에서 해제하는 방법이 있다. 반면, CUI의 경우는 파일을 수정해야 하는데, 스크린세이버 설정으로 보이는 옵션을 수정을 해도 여전히 시간이 지나면, 화면이 오프 되는 것을 확인할 수 있다.

 초기 포럼에서도 이슈가 되었던 내용인데, 이 글을 작성하는 시점에도 아직 해결이 안된것 같다.


일반적인 실패 방법

 급한 사람은 안읽어도 된다. 그럴듯 하나 실패하는 방법이다. /etc/kbd/config를 편집기로 열어서 3가지 항목을 수정하거나 추가를 하는 방법이다.

항목)

BLANK_TIME=0
BLANK_DPMS=off
POWERDOWN_TIME=0




결과는 미리 언급한대로 실패



직접 디바이스를 수정(?)

 /etc/lightdm/lightdm.conf 파일중에서 [xserver] 항목이 있는데 이 한줄을 수정하면 된다.

수정내용)

xserver-command=X -s 0 dpms




 대략 내용은 강제로 안꺼지게 하는 것으로 보인다. 포럼을 보면 실패한 방법과 성공한 방법이 순서대로 나온다.


참고자료

공식 포럼




반응형
반응형

라즈베리 파이3 라즈비안 : 화면 회전

알게된 배경

 진행하던 프로젝트에서 라즈베리 파이가 있는 자리와 코딩하는 자리의 거리가 먼관계로 좁은 책상에 비집고 자리를 만들어서 회전되는 모니터를 설치하고 라즈베리 파이에 연결했다. 자동으로 회전이 되면 좋겠지만, 라즈비안에서 설정을 새로 잡아 줘야 했다.


설정 방법

화면의 회전은 부팅할때 결정되는 듯 하다.

sudo nano /boot/config.txt


 파일의 마지막에 한줄을 추가를 하면 된다. 여기서 숫자는 0 = 0도, 1 = 90도, 2 = 180도, 3 = 270도 를 의미한다.

display_rotate=3


부트 설정 파일을 바꿨으니 이제 재부팅을 해보자.

sudo reboot


참조자료

PSNA Simulation 게시판 글

라즈베리파이 포럼


반응형
반응형

아파치(apche)2 루트디렉토리(경로) 설정

알아야 했던 배경

라즈베리 파이에서 촬영된 이미지를 다른 PC로 가져와야 하는 네트워크 프로그램을 만들어야 하지만 당시 사전지식 부족과 간단한 확인을 하기 위해 아파치 웹 서버를 활용하기로함


아파치2 설치

sudo apt-get install apache2

한 줄입력으로 설치가 시작된다. 


php도 사용해야 할 경우 다음 한줄을 입력해주자

sudo apt-get install php


한번에 인스톨하기 위해서는 다음과 같이 이어서 입력도 가능하다.

sudo apt-get install apache2 -y && sudo apt-get install php -y


의외로 시간이 지났지만, 라비안의 기본 브라우저를 열고 "localhost"에 접속했을 때 아파치에서 제공하는 기본 웹 페이지가 나오면, 설치가 잘 된 것이다.


아파치의 루트 디렉토리 변경

라즈비안의 아파치는 설치시하면 /var/www/html 이하의 폴더를 루트 디렉토리로 설정되어 버린다. 이를 변경하기 위해서는 2개의 설정파일을 변경해야 한다.

sudo nano /etc/apache2/apache2.conf

파일에서는 <directory /var/www/html>이라 되어 있는 부분을 수정하도록 하자. 그리고 아파치2 서버의 기본 설정중에 파일이 없을 경우 탐색기와 같은 index 화면을 보여주는데, 이는 보안에 취약성을 유발하는 옵션이므로 해당 위치 하단의 옵션 항목에서 indexes ~ 로 시작하는 옵션을 주석처리 혹은 삭제를 해준다.(주석처리는 해당 문장 앞에 #을 추가하면 된다)

sudo nano /etc/apache2/site-available/000-default.conf

해당 파일에서는 "Document /var/www/html" 부분을 수정하면 된다.


이 두파일을 수정한다음에 service를 재시작하거나 재부팅을 한뒤에 확인을 하면된다. 서비스 재시작은 다음과 같고(혹은 뒤에 restart로 한줄 명령어도 가능하다)

sudo /etc/init.d/apache2 stop
sudo /etc/init.d/apache2 start

혹은 아래 명령어로 아예 다시 시작하는 방법이 있다.

sudo reboot


반응형

+ Recent posts