앞서 wiringPi 라이브러리를 활용하여 라즈베리파이에서 실행할 수 있는 프로그램을 간단히 코딩해 보았는데 그렇다면 이렇게 개발한 프로그램을 부팅할 때 마다 자동으로 실행시켜 주려면 어떻게 해야할까? 이 문제는 의외로 코드 몇줄 추가하는 것 만으로 간단히 해결할 수 있다. 리눅스 환경에서는 프로그램을 자동으로 실행시켜 줄 수 있는 다양한 방법을 지원하므로 각기 알맞는 방법을 알아보고 사용해보자.



1. rc.local


자동실행 방법 중에 간단하면서도 효과적인 방법 중 하나로서 여기에 명령을 적어주게 되면 라즈베리파이가 부팅시에 자동으로 root 권한을 가지고 프로그램을 실행시켜준다. 주의해야할 점으로는 시스템과 관련된 명령을 입력할 경우에 rc.local의 실행이 더 빠르기 때문에 실행되지 않을 수 있으며 프로그램에 에러가 있는 상태에서 명령어 뒤에 & 문자를 입력하지 않을 경우에는 부팅이 완료되지 않을 수 있으므로 유의해야 한다. 


  $ sudo nano /etc/rc.local


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will “exit 0” on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
# Print the IP address
_IP=$(hostname -I) || true
if [ “$_IP” ]; then
printf “My IP address is %sn” “$_IP”
fi
/home/pi/Desktop/Work/usbSerial & 
exit 0
cs


파일을 열면 다음과 같은 내용이 보일 것이다. 여기서 추가하고 싶은 명령어를 'fi' 와 'exit 0' 사이에 입력하면 된다. 앞서 언급했던것 처럼 rc.local은 root권한을 가지기때문에 sudo 나 su를 입력할 필요가 없다.(여기서 sudo가 쓰이는 경우는 다른 사용자로 프로그램을 실행시킬 경우에만 사용됨) 따라서 실행할 프로그램의 경로만 적어준 뒤에 &기호를 추가하면 자동실행 등록이 완료된다. &는 등록한 프로그램과 시스템 부팅이 별개의 프로세스로 진행되도록 분리해주는 역할을 한다.



2. LXDE


LXDE란 리눅스 환경에서 사용할 수 있는 오픈소스 데스크탑 환경을 의미하며 쉽게 말해 라즈비안에서 startx 명령어를 통해 나타나는 GUI환경을 의미한다. 이 방법은 라즈베리파이가 부팅되면서 xwindow 실행시 자동으로 실행하도록 설정해주는 방식이며 앞서 언급한 rc.local 자동실행보다 한 박자 느리게 실행된다. 설정 방법은 매우 간단하며 다음과 같은 명령어를 통해 파일을 읽어온 뒤 @문자를 붙인상태에서 실행할 프로그램의 경로를 지정해주면 된다. 경로를 설정할 때는 밑의 @xscreensaver 라인 전에 적어야 한다.


  $ sudo nano /etc/xdg/lxsession/LXDE-pi/autostart


1
2
3
@lxpanel --profile LXDE-pi
@pcmanfm --desktop --profile LXDE-pi
@xscreensaver -no-splash
cs




3. 스크립트 파일


보통 특정 프로그램을 가동할때 많이 사용하는 방식이며 부팅시에 스크립트가 자동으로 실행되는 폴더인 profile.d 경로에 원하는 파일을 만들어서 사용할 수 있다. 활용 방법은 2가지가 있으며 직접 /etc/profile.d 경로에 들어가 스크립트 파일을 넣어 자동으로 실행하게 하거나 profile 파일을 편집하여 스크립트 파일을 직접 실행시키게 할 수 있다. 


  $ sudo nano /etc/profile


해당 파일의 맨 마지막 라인에 .을 찍고 한칸 띄어쓰기 한 후 실행할 스크립트 파일의 경로를 적어주면 된다.

ex) . /home/pi/Desktop/Work/usbSerial.sh