
저는 멀티스트랩을 사용하여 구성된 ARM CPU 및 Debian Jessie가 포함된 임베디드 장치에서 작업하고 있습니다. 해당 시스템에 약간 패치된 ModemManager 버전을 설치해야 할 것 같습니다. 제가 요청하는 것은 설치 방법에 대한 지침입니다.
지금까지 시도한 것은 multistrap으로 생성된 rootfs로 chrooting하고, apt-get을 사용하여 ModemManager의 소스 코드를 다운로드하고 chrooted로 빌드하는 것입니다. 지금까지는 만족할 수 없는 종속성으로 인해 구성 스크립트를 통과하지도 못했습니다.
모뎀용 직렬 포트를 검색하여 하드웨어를 혼동시킬 수 있는 ModemManager의 알려진 문제를 해결하려면 패치가 필요합니다. udev 규칙을 통해 장치를 블랙리스트에 추가하여 이 문제를 해결하는 방법이 있지만 이 경우 직렬 포트는 블랙리스트가 지원되지 않는 tty 하위 시스템의 일부입니다. ModemManager의 소스 코드에서 이를 확인했습니다.
나는 또한 이 문제를 더 쉽게 해결할 수 있는 방법에 대해 매우 개방적이지만 지금까지 이를 발견하지 못했습니다.
답변1
이 구체적인 질문은 오래되었지만 멀티스트랩을 사용할 때 멀티스트랩이 생성한 데비안 rootfs에 일부 소프트웨어의 수정된 버전을 추가하는 것은 일반적인 문제입니다.
멀티스트랩에 의해 생성된 chrootfs에서 소프트웨어를 컴파일하는 것은 너무 힘들기 때문에 크로스 컴파일과 멀티스트랩을 혼합하지 않을 것입니다.
대신 수정된 소프트웨어를 쉽게 편집할 수 있는 곳에서 컴파일하겠습니다. 대상 ARM 아키텍처에 대한 크로스 컴파일 환경이 이미 있을 수 있지만 그렇지 않은 경우 현재 IMO(및 2016년에도) 가장 쉬운 방법은 원하는 대상 OS가 있는 Raspberry Pi와 같은 단일 보드 Linux/ARM 컴퓨터를 사용하는 것입니다. , 필요한 빌드 도구를 설치하고 수정된 소프트웨어를 컴파일하십시오. 네이티브 컴파일을 사용하므로 크로스 컴파일을 설정할 필요가 없습니다. 컴파일되면 생성된 바이너리를 PC의 멀티스트랩 환경에 복사합니다.
멀티스트랩을 정상적으로 실행하고 실행한 후 chroot에 모든 패키지를 구성한 후 대상 하드웨어에서 rootfs를 사용하기 전에 수정된 바이너리를 rootfs에 복사하기만 하면 됩니다.
여기서 "바이너리"는 컴파일된 실행 파일만 의미할 수도 있지만 사용자 정의 .deb 패키지(복사하는 대신 마지막에 chroot에 dpkg를 사용하여 설치)를 의미할 수도 있습니다. 후자는 수정 사항에 대해 더 많은 보호를 제공할 수 있습니다. 그런 다음 .deb 버전 번호를 수정하여 나중에 apt update; apt upgrade
임베디드 시스템이 실행되는 동안 소프트웨어 업데이트를 검색할 수 있는 경우 수정 사항이 되돌려지지 않도록 할 수 있기 때문입니다.