Linux,Unix,BSD 147

[RPi] 인터넷 없는 환경에서 전원 차단으로 인하여 시스템 시계가 초기화되는 문제

문제점 및 증상 라즈베리파이가 설치되는 현장에서 인터넷을 연결할 수 없는 상황이었습니다. 이 경우 문제가 되는 것이 라즈베리파이 내에 RTC가 없기 때문에 전원이 오랫동안 공급되지 않는 경우, 내부 시스템 시각이 전원이 공급되지 않는 동안에 멈춰 있기 때문에 점차 시간이 틀어진다는 점입니다. 게다가 전원 공급이 차단되기 전에 정상적으로 shudown을 하면 그나마 셧다운되는 시각이 남아 다음에 전원을 공급하면 셧다운 시각부터 시스템 시각이 시작됩니다. 하지만, 정상적인 셧다운이 아니라 전원 공급을 그냥 차단해 버린리고 난 후, 다시 전원을 공급하여 라즈베리파이가 부팅될 때는 마지막 셧다운 시각으로 되돌아 가기 때문에 전원을 끄는 시점이 아닌 정상적으로 셧다운한 과거의 시각으로 되돌아가는 심각한 문제가 있..

[Jetson] AGX ORIN 핫스팟(Hot Spot) 설정하기

개요 Jetson AGX ORIN도 데비안 계열이라서 "라즈베리파이에 무선 공유기(Routed Wireless Access Point)를 설정" 하는 글을 참고하여, "hostapd", "dnsmasq"를 이용하여 시도해 보았으나 무선 공유기 기능이 정상적으로 동작하지 않았습니다. 구글을 검색하여 보니, 무선 공유기 보다는 핫스팟(Hot spot) 기능으로 알려져 있었는데, 핫스팟을 GUI로 손쉽게 설정할 수 있었습니다. Jetson AGX ORIN에서 무선 공유기(Routed Wireless Access Point) = 핫스팟(Hot Spot) 기능을 활성화하는 방법을 정리해 둡니다. GUI로 핫스팟(Hot spot) 활성화 Settings > Wifi 창을 열고 오른쪽 상단의 "..."을 선택하면 "..

[Jetson] NVIDIA TensorRT 버전 확인하는 방법

개요 NVIDIA TensorRT를 이용하던 중, 버전이 일치하지 않으므로, 다시 빌드 하라는 오류를 만났습니다. ERROR: [TRT]: 6: The engine plan file is not compatible with this version of TensorRT, expecting library version 8.4.0.9 got 8.4.0.11, please rebuild. ERROR: [TRT]: 4: [runtime.cpp::deserializeCudaEngine::49] Error Code 4: Internal Error (Engine deserialization failed.) 그래서 현재 이용중인 TensorRT의 버전을 확인하는 방법을 정리해 둡니다. dpkg 다음과 같이 "nvinfe..

[RPi] 라즈비안 OS용 부팅 매체 만들기

라즈베리파이에 대한 부팅용 매체(USB 메모리 또는 SD 카드)를 새로 만들기 위해서 다음 사이트에 접속하여 "Raspberry Pi Imager"를 다운로드 받아서 설치합니다. https://www.raspberrypi.com/software/ 설치된 "Raspberry Pi Imager"를 실행합니다. 운영체제를 "Raspberry Pi OS (32-BIT)"로 선택합니다. SD 카드가 들어있는 매체를 선택합니다. "쓰기"를 실행합니다. SD 카드에 Raspbian OS를 만듭니다. 새로 만들어진 Raspbian OS 매체를 검사합니다. 매체에 쓰기가 완료되면, PC에서 분리한 다음에 라즈베리파이에 장착하여 부팅을 하시면 됩니다.

[linux] 일반 계정으로 80 포트로 웹 서비스하는 방법들

개요 파이썬 Flask를 이용하여 웹 서비스를 개발하였고, 기본적으로 일반 사용자 계정에서 5000번 포트로 정상적으로 잘 운영이 되었습니다. 하지만, 실제 고객에게 전달하려다 보니, 일반 http 포트가 아닌 5000번 포트로 서비스를 운영하다 보니, URL 마지막에 ":5000/"을 붙여야 하는 불편함이 생길 수밖에 없었습니다. 이런 불편을 해소하기 위하여 일반 사용자 계정으로 80포트로 웹 서비스를 구동하는 방법들을 정리해 두고, 실제 적용한 방법을 살펴 보겠습니다. 일반 계정으로 80 포트로 웹 서비스 운영하는 방법들 대부분의 방법들이 바로 적용이 어렵고, 특정한 패키지를 설치해야만 적용이 가능합니다. iptables 80 포트를 사용하지 않고 있다면 가장 간단한 방법이 아닐까 싶습니다. dnat..

Linux,Unix,BSD 2022.06.24

[shell] Bad Substitution(bash)

개요 쉘 스크립트를 실행했을 때 다음과 같은 오류가 발생하였습니다. pi@raspberrypi:~ $ sudo /opt/hbesthee/bin/setup-rwap.sh 20220719T20:01:36 MAC_ADDR=e4:5f:01:89:08:30 /opt/hbesthee/bin/setup-rwap.sh: 20: /opt/hbesthee/bin/setup-rwap.sh: Bad substitution 해결방법 오류가 발생한 코드는 다음과 같습니다. #!/bin/bash SSID_SURFIX=${MAC_ADDR:(-5)} SSID_SURFIX=${SSID_SURFIX/:/} 일반 쉘(sh)에서는 지원하지 않는 "bash" 쉘 방식으로 문자열 잘라내기를 하고 있는 코드입니다. "sudo" 명령로 실행하면, ..

Linux,Unix,BSD 2022.06.23

[RPi] SD card 및 USB memory serial 정보 구하기

라즈베리 파이에서 SD card 및 USB memory 들의 serial 정보를 얻는 방법들을 정리해 둡니다. 기본 명령 기본으로 제공되는 "lsblk" 및 "udevadm" 명령을 이용하여 serial 정보를 얻어올 수 있습니다. pi@raspberrypi:~ $ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 1 28.7G 0 disk ├─sda1 8:1 1 256M 0 part /boot └─sda2 8:2 1 28.4G 0 part / pi@raspberrypi:~ $ lsblk --nodeps NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 1 28.7G 0 disk pi@raspberrypi:~ $ lsblk..

[RPi] 무선 공유기 모드 설정하기(Routed Wireless Access Point)

개요 본 글에서는 라즈베리파이를 이용하여 무선 공유기(Routed Wireless Access Point) 기능을 설정하는 방법을 정리합니다. 필수 패키지 설치 AP 관리 패키지인 "hostapd" 및 "dnsmasq"를 설치합니다. pi@raspberrypi:~ $ sudo apt update -qq All packages are up to date. pi@raspberrypi:~ $ sudo apt install -y hostapd dnsmasq 다음과 같이 "hostapd" 서비스를 활성화합니다. pi@raspberrypi:~ $ sudo systemctl unmask hostapd Removed /etc/systemd/system/hostapd.service. pi@raspberrypi:~ $ s..

[shell] 문자열 잘라내기(substring)

개요 쉘 스크립트 작업시 문자열을 잘라내는 방법을 정리해 둡니다. 범위(옵셋 및 길이) 지정 방법 문자열에 대한 범위(옵셋 및 길이)를 지정하는 방법은 다음과 같습니다. $:옵셋:길이 길이가 생략되면 문자열의 끝까지 반환됩니다. 다음과 같이 범위를 지정하여 손쉽게 문자열을 잘라낼 수 있습니다. pi@raspberrypi:~ $ STRING="test string" pi@raspberrypi:~ $ echo "${STRING: 0:4}" test pi@raspberrypi:~ $ echo "${STRING: 5}" string 뒤에서부터 문자열을 잘라낼 때는 옵셋에 음수값을 입력하면 됩니다. pi@raspberrypi:~ $ echo "${STRING: -8:3}" t s pi@raspberrypi:~ $..

Linux,Unix,BSD 2022.06.13

맥주소(Media Access Control ; MAC)를 얻는 방법

개요 쉘 스크립트 작업시 맥주소(Media Access Control ; MAC)를 얻는 방법을 정리해 둡니다. ifconfig 명령 활용 "ifconfig" 명령을 수행하면 다음과 같이 현 장비의 모든 이더넷 장치 정보 목록을 출력합니다. pi@raspberrypi:~ $ ifconfig eth0: flags=4163 mtu 1500 inet 192.168.0.43 netmask 255.255.255.0 broadcast 192.168.0.255 inet6 aaaa::aaaa:9f50:10f7:629 prefixlen 64 scopeid 0x20 ether aa:aa:01:88:4f:dd txqueuelen 1000 (Ethernet) RX packets 343 bytes 33342 (32.5 KiB)..

Linux,Unix,BSD 2022.06.12
728x90