아래 링크에 잘소개 되어 있다.

https://www.digikey.kr/en/maker/projects/how-to-run-a-raspberry-pi-program-on-startup/cc16cb41a3d447b8aaacf1da14368b13

 

How to Run a Raspberry Pi Program on Startup

How to Run a Raspberry Pi Program on Startup Courtesy of Sparkfun Introduction The Raspberry Pi is a great single board computer, but like most computers, its functions rely mostly on human input. That means whenever you start up (or boot) your computer, i

www.digikey.kr

 

라즈베리 파이는 rc.local에 exit0 이전에 실행하고자 하는 명령어를 쓰면 잘된다.

그런데 python 스크립트나 node의 경우는 라이브러리 경로를 잘 명시해야 한다.

node의 경우 npm이 프로젝트 경로에 모아서 주니까 문제가 없는데 파이썬의 경우

기본적으로  rc.local이 root로 실행하기 때문에 아무런 PATH 설정이 없어서 library를 못찾는다.

따라서 pi 계정으로 실행하도록 해야 한다.

 

$ sudo vi /etc/rc.local

~~~

sudo -H -u pi python <my script path>

exit 0

 

이런식으로 실행해야 라이브러리를 찾는데 문제가 없을 것이다.

만약에 rc.local이 활성화 되지 않았다면 systemd를 이용해서 이를 활성화 해야한다.

http://blog.naver.com/PostView.nhn?blogId=kick8888&logNo=220922201750&beginTime=0&jumpingVid=&from=search&redirect=Log&widgetTypeCall=true

 

우분투 16.10 (systemd) 기반의 rc.local 활성화

우분투 최신버전은 systemd 기반으로 PID들이 관리된다, 필자는 rc.local을 부득이 하게 사용할 일이 생...

blog.naver.com

 

우분투 16.04를 설치하고 와이파이를 세팅하다가 아래와 같은 좋은 링크를 발견했다.

Wpa_supplicant로는 잘되었는데 이상하게 부팅시 자동실행은 잘 안되었다.

https://www.linuxbabe.com/command-line/ubuntu-server-16-04-wifi-wpa-supplicant

 

Using WPA_Supplicant to Connect to WPA2 Wi-fi from Terminal on Ubuntu 16.04 Server - LinuxBabe

In this tutorial, we are going to learn how to connect to Wi-fi network from the command line on Ubuntu 16.04 server and desktop using wpa_supplicant.

www.linuxbabe.com

그래서 삽질 끝에 부팅로그에서 systemd가 실행 실패하는 것을 보고 찾다보니 실행 속성을 줬어야 했다.

상기 링크 중에 wpa_supplicant를 systemd로 부팅시 자동실행하는 스크립트는 example에서 복사하는 부분이 있는데.

 

$ sudo cp /lib/systemd/system/wpa_supplicant.service /etc/systemd/system/wpa_supplicant.service

이렇게 실행 속성까지 추가해야 한다.

$ chmod +x /etc/systemd/system/wpa_supplicant.service

그리고 dhclient.service 스크립트도 만들고 나서 실행 속성을 주어야한다.

$ sudo nano /etc/systemd/system/dhclient.service

$ sudo chmod +x /etc/systemd/system/dhclient.service

 

그리고 중요한 부분이  ifconfig 해서 wifi network interface가 부팅시 자동으로 활성화가 되어 있어야 하는데

$ ifconfig

....
wlp2s0    Link encap:Ethernet  HWaddr 
          inet addr:192.168.0.111  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::b682:feff:fe8f:f52c/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:620 errors:0 dropped:0 overruns:0 frame:0
          TX packets:211 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:80781 (80.7 KB)  TX bytes:31352 (31.3 KB)

 

 

상기의 wlp2s0가 저의 컴터 와이파이 인터페이스 인데 이것을 /etc/network/interface에서 자동활성화 하고 ssid/psk 까지 정보를 주어야 한다.

$ sudo vi /etc/network/interface

 

그냥 ""없이 타이핑하면 된다. 아참 그전에 재부팅할때 오래 걸릴 수 있으니 아래 타임아웃을 기존 300초에서 10~15초로 300초면 5분이다. 네트웍 안잡히면 5분을 멍하니 기다려야 한다 ^^;; 아래처럼 줄여준다.

$ sudo vi /etc/dhcp/dhclient.conf

 

timeout = 10 # 300 -> 10~15

 

우분투 16.04 서버 부팅시 네트워크 연결이 안되어 있으면 네트워크 연결을 찾는데 기본 300초로 세팅되어 있다. 5분정도이다. 엄청 오래 걸린다. 이경우 아래 dhclient.conf파일에서 timeout 값을 10정도로 줄이면 된다.

 

~$ sudo vi /etc/dhcp/dhclient.conf

https://askubuntu.com/questions/773973/ubuntu-16-04-system-boot-waits-saying-raise-network-interfaces

 

Ubuntu 16.04 Server에서 apt-get update 할때 hash sum 에러 날때 아래와 같이 해결하였다.

 

$ sudo apt-get update

....생략..

 

Get:39 http://kr.archive.ubuntu.com/ubuntu xenial-updates/multiverse i386 Packages [15.9 kB]
Get:40 http://kr.archive.ubuntu.com/ubuntu xenial-updates/multiverse Translation-en [8,468 B]
Get:41 http://kr.archive.ubuntu.com/ubuntu xenial-backports/main amd64 Packages [7,280 B]
Get:42 http://kr.archive.ubuntu.com/ubuntu xenial-backports/main i386 Packages [7,288 B]
Get:43 http://kr.archive.ubuntu.com/ubuntu xenial-backports/main Translation-en [4,456 B]
Get:44 http://kr.archive.ubuntu.com/ubuntu xenial-backports/universe amd64 Packages [8,064 B]
Get:45 http://kr.archive.ubuntu.com/ubuntu xenial-backports/universe i386 Packages [7,744 B]
Get:46 http://kr.archive.ubuntu.com/ubuntu xenial-backports/universe Translation-en [4,328 B]
Fetched 30.4 MB in 27s (1,095 kB/s)
Reading package lists... Done
E: Failed to fetch http://kr.archive.ubuntu.com/ubuntu/dists/xenial-updates/main/binary-i386/by-hash/SHA256/62020de0b1eff8fed4184722f037b6812922ffbf76943dbd697015fd1f807c95  Hash Sum mismatch
E: Failed to fetch http://kr.archive.ubuntu.com/ubuntu/dists/xenial-updates/universe/binary-amd64/by-hash/SHA256/389afbf68ba66477471897f9ca4f2ba39e906a98a1d29c03bdcdd47a4c11e7b5
E: Some index files failed to download. They have been ignored, or old ones used instead.

 

sudo apt-get update -o Acquire::CompressionTypes::Order::=gz
sudo apt-get upgrade -y
sudo apt-get update

 

아래 링크를 참조하였다.

https://github.com/moby/moby/issues/30207

 

Hash Sum mismatch on Ubuntu 16.04 apt-get update · Issue #30207 · moby/moby

Description apt-get update fails on fresh Ubuntu image Steps to reproduce the issue: create the following dockerfile: FROM ubuntu:16.04 MAINTAINER b@example.com RUN apt-get clean \ && rm -r...

github.com

 

그리고 또다른 방법은 vagrant를 이용하는 방법이 있는데 이것도 해결된다고 한다.

먼저 vagrant를 설치해야 한다.

vagrant ssh node-01
sudo apt-get clean
sudo apt-get update

 

https://github.com/rancher/rodeo/issues/12

+ Recent posts