양산 로봇 Linux 시스템 패키지
Bear Robotics Servi 로봇용 Linux 시스템 설정 프레임워크: 하드웨어 추상화, 공장 자동화, 멱등성 배포
system
개요
Bear Robotics Servi 시리즈 로봇에 배포된 Linux 시스템 설정 패키지입니다. 여러 하드웨어 구성(Advantech, ASUS 메인보드)과 Linux 배포판(Ubuntu Bionic, Jammy)을 단일 코드베이스로 지원합니다.
역할: 시스템 엔지니어 - package/ 모듈 개발 (16개 모듈)
담당 범위
| 영역 | 모듈 |
|---|---|
| 네트워크 | 0400-network, 0410-lte |
| 디바이스 관리 | 0300-udev-rules |
| 보안 | 0500-factory, 2006-firewall, 2008-ssh |
| 디스플레이 | 1000-kiosk, 1010-plymouth |
| 시스템 기반 | 0200-base, 0125-scripts |
기술 하이라이트
PCI 해시 기반 네트워크 인터페이스 매핑
인터페이스 이름(eth0, enp2s0 등)이 보드/OS 조합마다 다릅니다.
# 하드웨어 핑거프린트 생성
lspci | grep -E '(Ethernet|Network)' | sort | md5sum | cut -c1-20
- 해시를 시맨틱 이름(
baseboard,lidar등)으로 매핑하는 테이블 - 설치 시점에 실제 인터페이스 이름으로 치환
시간 기반 공장 계정 자동 잠금
/home/factory 비활성 7일 후 자동으로 보안 전환합니다.
if ((now - last_modified > 604800)); then # 7일
usermod --lock factory
idp_rm /home/factory/wifi.*
fi
- 수동 개입이 필요 없음
- WiFi 인증 정보 자동 삭제
센서 디바이스 추상화를 위한 udev 규칙
USB 연결 순서와 관계없이 일관된 디바이스 경로를 보장합니다.
| 센서 | USB ID | 심볼릭 링크 |
|---|---|---|
| IMU | 10c4:ea60 | /dev/penny/imu |
| 모터 허브 | 2890:0213 | /dev/penny/motor |
- 9종 센서 지원
- 모터 허브 연결 시 초기화 스크립트 자동 실행(
RUN+=)
템플릿 기반 동적 방화벽
플레이스홀더가 있는 UFW 규칙을 설치 시점에 치환합니다.
# <ETH_BASEBOARD> → enp2s0 (Advantech Jammy)
modify_rule_files "ETH_BASEBOARD" "${ETH_BASEBOARD}" ${rule_files}
모든 하드웨어 구성에 동일한 보안 정책을 적용합니다.
멱등성 스크립트 아키텍처
모든 모듈이 idp_commands.sh 래퍼를 사용합니다:
idp_install: 내용이 다를 때만 설치idp_changed: 변경 시 서비스 재시작idp_print_result: “CHANGE APPLIED” / “No change” 출력
OTA 업데이트 중 재실행해도 안전합니다.
기술 스택
Bash systemd udev NetworkManager UFW Bazel