Q&A 게시판

리눅스 커널에 대한 Q&A 게시판 입니다. (비밀글 체크는 꼭 필요한 경우에만)

모듈 드라이버 실행 순서 변경 문의 건.

작성자
sevil
작성일
2021-04-07 12:24
조회
171
안녕하세요. BSP 개발을 담당하는 엔지니어입니다.

모듈 드라이버 실행 순서를 변경하기 위해서 찾다가 문C 블로그를 보고 Q&A를 남깁니다.

문C 블로그에 do_initcalls() 페이지를 보면 아래 define 처럼 호출 순서를 변경 할 수 있는 방법을 알았습니다.

early_initcall()
core_initcall()
postcore_initcall()
arch_initcall()
subsys_initcall()
fs_initcall()
device_initcall()
late_initcall()

다만 저 위의 방법들은 빌트인 된 모듈에서만 적용이 되는 것 같고 별도 모듈 드라이버(CONFIG_XXXX_DRIVER=m)에서는 실제 적용이 되지 않는것 같습니다.

별도의 모듈 드라이버에 device_initcall(test_driver_init)과 core_initcall(test_driver_init)를 적용해서 테스트해보니 실행되는 시간이 크게 차이가 없었습니다.
(임베디드 환경에서 별도의 Make file을 만들어서 모듈 드라이버를 생성하여 부팅시 auto load 되도록 만들었습니다.)

제가 테스트를 잘 못 한건지 아님 CONFIG_XXXX_DRIVER=m 에서는 별도의 다른 방법으로 모듈 드라이버의 호출 시간을 변경 할 수 있는 방법이 있는지 문의드립니다.
전체 3
  • 2021-04-08 08:02
    안녕하세요?

    모듈 방식을 택하게 되면, 커널 부트 시에 로드하지 않습니다.
    커널 부트가 끝난 후엔 init 등의 유저 application으로 부팅 절차를 넘깁니다.
    그 후 init 절차는 각 리눅스 패키징마다 다릅니다.
    가장 많이 사용하는 것은 system v 의 init과 systemd 방법등이 있습니다.
    자신의 시스템에서 어떠한 방법을 사용하는지 파악한 후에 해당 런레벨에 맞춰 스크립트를 변경해주시면 순서를 조절할 수 있습니다.
    감사합니다.

    문영일 드림.

    • 2021-04-13 10:13
      빠른 답변 감사드립니다.

      저희는 systemd를 쓰고 있는데 해당 스크립트를 변경하여 테스트해보겠습니다.

  • 2021-04-13 10:25
    네. 응원합니다. ^^