## 0.1 Linux (Ubuntu 22.04/24.04 LTS) 네이티브 환경 완벽 해부

## 0.1 Linux (Ubuntu 22.04/24.04 LTS) 네이티브 환경 완벽 해부

PX4 코어 메인테이너들이 밤낮으로 커밋(Commit) 트리를 굴리며 자동화 테스트(CI)를 가동하는 제1 티어, 티끌만 한 타협점 없는 기준점의 성지가 바로 Ubuntu Long Term Support(LTS) 리눅스 커널 위상이다. 다른 그 어떤 파생 운영체제도 파일 시스템 접근 속도와 드라이버 투명성 측면에서 우분투 네이티브(Native) 배포판의 성능에 도달하지 못한다.

설정 스크립트 실행의 역학 구조 (ubuntu.sh)
PX4 저장소를 거점(Clone) 딴 후, 엔지니어는 가장 먼저 소스트리의 루트 디렉토리 안에 수납되어 있는 ./Tools/setup/ubuntu.sh 설치 셸 스크립트를 총기 구동하듯 발포하게 된다. 이 파일은 단순한 apt-get 묶음 패러다임이 아니라 우분투 환경을 PX4 빌딩 머신으로 완전 영구 개조하는 권한 설정의 칼날이다.

  1. 시스템 빌드 툴킷 이식 (build-essential, cmake, ninja-build): 가장 기초가 되는 호스트 측역 네이티브 빌더와 파이썬 3 환경, 깃(Git) 도구 등 융통성 없는 패키지 리스트를 PPA 레포지토리를 뒤져가며 업데이트한다.
  2. 크로스 컴파일러 인젝션 (gcc-arm-none-eabi): 앞서 설명한 타겟 기종(Cortex-M) 펌웨어를 잉태하기 위한 필수적인 ARM 임베디드 코어용 오프라인 도구 상자를 다운로드하여 우분투의 깊은 Path 계층 구조에 박아 넣는다.
  3. USB 통신 모뎀 매니저의 무장 해제 (Udev 규칙): 가장 간과하기 쉬우나 극도로 치명적인 실무 영역 지식이다. 리눅스 데몬인 modemmanager 는 보드(Pixhawk)가 USB 포트에 꽂히는 순간 이 포트를 옛날 호일 모뎀(3G/LTE)으로 착각해 통신 커넥션을 스내칭(Snatching) 해버리는 고질병을 앓고 있다. 스크립트는 이 모뎀 매니저를 사살(Uninstall)하고, 타겟 보드의 고유한 시리얼 벤더 ID(VID/PID)를 등록하여 리눅스가 USB 접속자를 /dev/ttyACM0 보드 장치로 투명하게 넘기도록 강제하는 udev 룰셋 파일(.rules)을 시스템 루트에 통보한다. 이로써 make px4_fmu-vX upload 시 QGC를 거치지 않고도 터미널이 직접 USB 인터페이스에 펌웨어를 쏴 갈길 수 있는(Flashing) 백도어가 개통된다.