You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

6.2 KiB

릴리스 노트 — Web Configurator v1.11.16

  • 배포일: 2026-06-23
  • 대상: 디바이스 BSP 이미지 포함용 (DP World Smart Solutions · IoT 디바이스)
  • 패키지: 내부 git 태그 v1.11.16 (커밋 히스토리가 없는 클린 스냅샷)
  • 이전 버전: v1.11.15

1. 한눈에 보기

이번 릴리스는 배포 패키지 정비 릴리스입니다. 앱 기능·디바이스 계약·UI는 v1.11.15와 동일하며, 다음 두 가지를 정비했습니다.

  1. MemoryMax 상향 (48M → 128M) — 운영 중 OOM-kill 위험 제거.
  2. BSP 통합 가이드 정비 — 네트워크-적용 하드닝 스크립트의 권장 통합 방식을 "펌웨어 원본 스크립트 직접 교체(BSP 베이킹)" 를 1차 방식으로 재구성.
  • Python 3 표준 라이브러리(stdlib)만 사용 — 외부 pip 패키지 없음
  • systemd 유닛 포함, nginx 설정은 optional sample → 이미지에 바로 포함 가능
  • 기존 디바이스 DB는 부팅 시 자동 변환(1회, 멱등) — 수동 작업 불필요

2. 주요 변경 (v1.11.15 → v1.11.16)

항목 변경
MemoryMax web-configurator.serviceMemoryMax48M → 128M 로 상향. 48M는 support-bundle(진단 zip, 메모리 빌드)과 UI 동시 사용 시 실측 피크 ~40-50MB로 OOM-kill 위험이 있었음. 128M = 실피크 ~2.5x 여유 + 누수 방지 캡 유지 (장비 RAM 3.4GB 대비 3.7%).
BSP 통합 방식 1차 = 직접 교체 네트워크-적용 하드닝본을 /usr/bin/dpworld-network-apply.sh 원본 이름으로 교체 설치하는 것을 BSP 베이킹의 기본 방식으로 명시. .service.d override 드롭인은 라이브 디바이스 후적용(over-the-top) fallback 으로 강등. (자세히 BSP-INTEGRATION.md §7 + docs/firmware-boot-hardening.md)
패키지 구성 정리 배포물을 repo 루트(flat)로 정리, 내부 전용 참조/링크 정돈. 런타임 코드 변경 없음.

앱 코드 자체는 v1.11.15와 동일합니다 (UI/기능 무변경). 본 릴리스는 배포 단위의 메모리 정책 + 통합 가이드 정비입니다.


3. 네트워크-적용 하드닝 — 통합 방식 (중요)

디바이스 펌웨어는 다음 base 구성을 제공합니다(firmware-native):

  • dpworld-network-apply.service / dpworld-network-seed.service (유닛)
  • /usr/bin/dpworld-network-apply.sh (base 스크립트)

이 base 스크립트에는 WiFi 국가 코드 변경 시 modprobe -r wlan 으로 모듈을 라이브 재로드하는 경로가 있어, QCA6490(cnss_pci)에서 PMU 워치독 재부팅 루프를 유발한 이력이 있습니다. 본 패키지의 dpworld-network-apply-hardened.sh 가 이 문제를 제거한 완전 대체본입니다.

① 권장 — BSP 베이킹(직접 교체): 펌웨어 이미지를 빌드하는 협력사는 deploy/dpworld-network-apply-hardened.sh 의 내용을 /usr/bin/dpworld-network-apply.sh 원본 이름으로 설치(펌웨어 원본 교체)하면 됩니다. base 서비스/시드 유닛이 이미 그 경로를 호출하므로 apply·--boot 모두 자동으로 하드닝 동작을 탑니다. 드롭인은 베이킹하지 않습니다.

② Fallback — 라이브 후적용(override): 이미 구워진 디바이스에 펌웨어 교체 없이 얹을 때만, 하드닝본을 별도 파일로 두고 dpworld-network-apply.service.d/ + dpworld-network-seed.service.d/ 드롭인으로 ExecStart를 교체합니다. (우리 개발용 scripts/deploy.ps1 가 이 방식을 사용)

→ 단계별 절차는 docs/firmware-boot-hardening.md "펌웨어 베이킹 (BSP) — 원본 교체 방법" 참조.


4. 호환성 · 주의사항

  • 디바이스 적용 시점: dpworldapp 재시작 시 새 계약값으로 config가 재적용됩니다.
  • nginx optional: deploy/nginx.conf는 BSP에서 :80 reverse proxy를 제공할 때 쓰는 sample입니다. scripts/deploy.ps1는 nginx를 설치/수정하지 않으며, 디바이스가 앱을 :9090으로 직접 접근하면 없어도 됩니다. sample을 쓸 경우 proxy_pass를 앱 포트 :9090으로 맞추세요.
  • 런타임 의존성: python3 stdlib만 필요 (RDEPENDS 목록은 BSP-INTEGRATION.md 참조). 외부 패키지 없음.
  • dpworldapp(텔레메트리 바이너리)는 firmware-native.

5. 배포 방법 (BSP)

  1. 패키지 입수: 내부 git 태그 v1.11.16 (또는 동봉 스냅샷)
  2. 레시피 작성: BSP-INTEGRATION.md의 샘플 bitbake recipe + 설치 경로표 사용
    • src//opt/web-configurator/src/
    • deploy/*.service → systemd 유닛 디렉토리
    • deploy/dpworld-network-apply-hardened.sh/usr/bin/dpworld-network-apply.sh (펌웨어 원본 교체, §3 ①)
    • deploy/nginx.conf → optional nginx sample site config
    • web-configurator.service enable
  3. 검증: 이미지 부팅 후 systemctl status web-configurator + curl http://127.0.0.1:9090/

6. 품질/검증

  • v1.11.16 변경은 앱 로직 무변경 — systemd 서비스 메모리 캡(MemoryMax) + 문서/주석/버전 문자열뿐입니다. 기능 동등 기준선 v1.11.15는 내부 테스트 스위트(Python + 프런트 .mjs)로 검증되었습니다.
  • 테스트 스위트는 내부 저장소에서 관리되며 본 배포물에는 포함되지 않습니다.
  • 패키지는 커밋 히스토리 없음(git archive 스냅샷) + 내부 분석/개발 자료 제외 (DELIVERABLE-MANIFEST.txt 참조).

7. 롤백

  • BSP recipe의 버전 핀(태그/SRCREV)을 v1.11.15로 되돌리면 이전 버전 배포.
  • 마이그레이션은 멱등 + 변경 전 자동 백업(config_safety)으로 보호됩니다.

버전 이력 (요약)

버전 일자 요약
v1.11.16 2026-06-23 MemoryMax 48M→128M + BSP 베이킹(직접 교체) 가이드 1차 정비 (앱 기능 무변경)
v1.11.15 2026-06-23 사이드바 System 그룹 monitor 아이콘 정리
v1.11.14 2026-06-23 사이드바 부모 그룹(System=Dashboard+Log / Firmware) 재편
v1.11.11 2026-06-23 config 쓰기 경로를 디바이스 config-reader 계약에 정렬 + 자동 마이그레이션
v1.11.10 2026-06-20 전체 코드리뷰 fix (37건)