목록LINUX (8)
0xFF
cpp-httplib를 활용하여 로컬 영상 스트리밍을 테스트하던 중 서버가 불규칙적으로 잘 돌아가다가 죽는 문제를 확인했다.(약 30분~1시간 정도?)처음에는 단순히 재시작하기만 했는데 몇 번 이상 같은 자리에서 반복하여 문제가 생기는 것을 확인하여 아무래도 수정이 필요할 것 같았다.위의 send 함수에서 문제가 발생했는데 스택트레이스에는 SIGPIPE 시그널을 받았다고 나와 있었다.SIGPIPE란 무엇일까? 아마 시그널의 한 종류인 것 같은데 manpage에서 찾아보자. man 7 signal 명령을 사용하면 이렇게 SIGPIPE의 정의를 확인할 수 있다."write to pipe with no readers."즉, 리더가 없는 파이프에 쓰려고 한 경우 발생하는 시그널이라고 한다.그렇다면 거의 확실히 ..
curl -fsSL | sh위와 같이 Ollama 설치 이후ollama run ed-neo4j/t2c-gemma3-4b-it-q8_0-35k --verbose위와 같이 t2c-gemma3-4b-it-q8_0-35k 모델을 설치한다.오피셜 gemma3:4b를 사용하지 않은 이유는 위 모델이 Q8_0 양자화 적용으로 오피셜 4b 모델의 Q4_K_M 양자화 대비 약간 더 성능이 높을 것이라 판단했기 때문이다.개발 완료 후 성능보다 속도가 더 중요하다고 판단되면 더 가벼운 모델로도 바꿔봐야겠다.[Unit]Description=Ollama ServiceAfter=network-online.target[Service]ExecStart=/usr/local/bin/ollama serveUser=ollamaGroup=..
리눅스 보드에서 AP 구동을 위해 사용 중인 USB 동글이 커넥터 불안정으로 인해 드라이버에서 잦은 타임아웃이 발생하는 것을 확인했다.[ 1810.128976] usb 2-1: USB disconnect, device number 38[ 1810.261956] ath: phy9: Could not kill baseband RX[ 1810.286093] ath: phy9: Failed to wakeup in 500us[ 1810.297940] ath: phy9: Failed to wakeup in 500us[ 1810.320928] usb 2-1: ath9k_htc: USB layer deinitialized처음에는 동글을 뺐다가 다시 꽂은 뒤 hostapd 데몬을 재시작도 해보고USB 포트를 바꿔 보기도..
필자가 진행 중인 프로젝트는 캡티브 포털을 이용하여 사용자가 Wi-Fi 네트워크에 접속하자마자 웹 페이지를 띄우고, 여기서 서비스를 제공한다.따라서 Wi-Fi 칩셋인 AR9271을 AP 모드(핫스팟)로 작동하게 해야 한다.이를 위해서는 hostapd가 필요한데, hostapd에는 IP 할당 기능이 없어 dnsmasq등의 DHCP 서버를 함께 사용하여 연결된 station 장치들에게 IP를 할당해 주어야 한다.$ apt install dnsmasq hostapd nginxDebian/Ubuntu 환경에서는 위와 같이 간단하게 설치할 수 있다.여기서 nginx는 captive portal 구현 단계에서 302 리다이렉트를 발생시키기 위해 설치하였다.# ip addr...3: wlxc01c3043146b: ..
젯슨 나노를 엣지 LLM 구동 전용 노드로 구성하고, 이를 메인 노드에서 접근할 수 있도록 하기 위해 이더넷을 사용해 1:1 연결이 가능하도록 해 보자.여기서 DHCP 서버 없이 동등한 네트워크 세그먼트 내에서 두 호스트가 통신하기 위해서는 이더넷 표준에 정의된 링크 로컬 주소라는 기능을 사용할 수 있다.우선 IP를 할당해줄 DHCP 서버가 없으므로 두 호스트에서 네트워크를 직접 구성해야 한다.필자는 IP 할당 명령을 systemd 서비스로 등록하였다.아래는 각각 두 보드에 등록한 service 파일의 내용이다.경로: /etc/systemd/system/set-linklocal.service[Unit]Description=set-linklocalAfter=network.target[Service]Type..
퀄컴 SoC는 QUP(Qualcomm Universal Peripheral)이라는 프로그래밍 가능한 범용 하드웨어 IO 모듈을 여러 개 내장하고 있다.여기서 범용이라는 것은 여러 인터페이스(SPI, I2C, UART 등)를 지원한다는 것이고,프로그래밍 가능하다는 것은 소프트웨어 레벨에서 하나의 QUP 블록이 어떤 인터페이스로 기능할지 변경이 가능하다는 의미이다.Dragon Q6A 보드에 탑재된 QCS6490도 퀄컴 SoC여서 spi를 활성화하려면 칩에 내장된 여러 QUP 모듈 중 하나를 SPI 버스로 작동하도록 설정해야 한다.먼저 Dragon Q6A의 핀아웃을 보고 원하는 위치의 SPI 버스를 하나 고른다.작성자는 6번 SPI를 사용하기로 했다.dtc -I dtb -O dts -o ~/my.dts /bo..