### 0.0.1 권한 문제 해결: dialout, plugdev 사용자 그룹 설정 및 udev 규칙(Rules) 작성법
멋지게 빌드를 100% 성공시켜 기계어 덩어리(.px4)를 뽑아내고도, 막상 드론 코어(Pixhawk)에 USB 케이블을 꽂고 make px4_fmu-vX upload 명령을 기입하면 빌드 스크립트가 타겟 하드웨어를 인지하지 못하고 “Permission Denied” 플래싱 실패 에러를 뿜으며 자폭하는 경우가 흔하다. 이것은 리눅스 커널 특유의 폐쇄적인 보안 장벽 때문이다.
시리얼 포트 통신 권한의 장벽: dialout 그룹
리눅스 운영체제는 기본적으로 USB를 통해 연결된 시리얼 장치(예: /dev/ttyACM0 또는 /dev/ttyUSB0)에 대한 읽기/쓰기 권한을 최고 관리자(root)에게만 독점 부여한다. 개발자가 평범한 권한(User)으로 터미널을 열고 펌웨어를 욱여넣으려 하면, 커널이 이를 해킹 시도로 간주하고 패킷 스트림을 잘라버린다.
이 장벽을 합법적으로 통과하기 위해서는 현재 로그인한 개발자 계정을 리눅스의 시리얼 통신 특권 그룹인 dialout (일부 배포판에서는 plugdev) 그룹에 소속(Append)시켜야만 한다.
명령어 sudo usermod -a -G dialout $USER를 실행하여 자신에게 영구적인 면책 특권을 부여하고, 이를 리눅스 세션 스케줄러가 인지할 수 있도록 재부팅(Reboot)이나 로그아웃 과정을 반드시 거쳐야 한다.
장치 인식의 마스터키: udev Rules 작성
사용자 계정에 권한을 줬음에도 불구하고 리눅스 하드웨어 매니저 자체에서 특정 벤더(Pixhawk, Holybro 등)의 USB 보드를 불순물로 여겨 올바른 디바이스 노드 생성을 거부하는 경우가 있다. 이를 타파하는 것이 바로 udev 규칙(Rules) 파일이다.
ubuntu.sh 구동 시 보통 자동으로 깔리지만, 수동으로 셋업 할 때는 /etc/udev/rules.d/99-pixhawk.rules 같은 텍스트 파일에 타겟 하드웨어의 혈통표(Vendor ID, Product ID)를 적어넣어야 한다.
ATTRS{idVendor}=="26ac", ATTRS{idProduct}=="0011", ENV{ID_MM_DEVICE_IGNORE}="1", SYMLINK+="pixhawk" 와 같은 마법의 주문을 기입한다.
이 규칙은 리눅스 커널에게 “idVendor 26ac로 들어오는 이 플라스틱 조각은 이상한 마우스나 모뎀이 아니니 절대 차단하지 말고, /dev/pixhawk 라는 직통 심볼릭 링크를 열어주어라“라는 절대 명령을 하달하는 것이다. sudo udevadm control --reload-rules 로 커널에 규칙을 각인시키는 순간, 플래싱 시스템과 하드웨어 간의 완벽한 0.1초 고속도로가 개통된다.