저는 Yocto 프로젝트를 사용하여 구축된 임베디드 시스템을 설정하고 있습니다. 루트 파일 시스템, 커널, u-boot 등이 출력됩니다. 보드에서 eMMC를 구성하기 위해 파티션, rootfs의 복사본, uboot 등을 사용하는 SD 카드에서 실행되는 설치 프로그램 스크립트가 있습니다. eMMC에서 시스템을 부팅할 때 부팅 가능한 파일을 생성합니다.
내가 겪고 있는 문제는 이더넷 드라이버에 있습니다. 기본적으로 시스템에 설치되지 않습니다. 설치 스크립트가 이를 복사 /lib/modules/4.14.98-imx8mq+gea48c83/kernel/drivers/net/ethernet/freescale/fec.ko
하면 직렬을 통해 로그인하고 수동을 사용하여 로드할 수 insmod
있으며 훌륭하게 작동합니다. 하지만 자동으로 로드하는 방법을 모르겠습니다.
Systemd는 /etc/modules-load.d/
로드할 모듈 목록을 찾지만 이 프로세스는 insmod 대신 modprobe를 사용하는 것으로 보입니다. modprobe 시스템은 아직 depmod를 실행하지 않았기 때문에 이더넷 드라이버를 실제로 이해하지 못합니다. 하지만 eMMC 대신 SD 카드 설치에 depmod를 설치하기 때문에 설치 프로그램에서 depmod를 실행할 수 없습니다.
여기서 가장 좋은 접근 방식은 무엇입니까? 설치 중에 depmod를 실행할 방법을 찾아야 합니까? 아마도 chroot를 사용하여 수행할 수 있을까요?
아니면 depmod/modprobe 시스템을 사용하지 않고 모듈을 자동으로 로드할 수 있는 좋은 방법이 있습니까?
여기에 대한 통찰력은 크게 감사하겠습니다.
답변1
내 게시물에 대한 사용자 icarus의 댓글이 정확합니다.
설치 스크립트에서 다음 명령을 실행했는데 작동하는 것 같습니다.
depmod -b /mnt/root1 -a 4.14.98-imx8mq+gea48c83
마지막 매개변수는 내가 부팅하는 SD 카드 시스템이 수정 중인 시스템과 다른 커널 버전을 갖고 있기 때문입니다.