2017-12-30 53 views
1

라즈베리 파이에 연결된 7 세그먼트 디스플레이 용 드라이버 인 연구 조사 프로젝트 용 커널 모듈을 작성했습니다 (커널 개발에 익숙하지 않았습니다). 모듈을 영구적으로 설치하고 컴파일 할 때 부팅 할 때로드하고 싶습니다. 따라서 사용자가 직접 컴파일하고 설치할 수있는 Makefileinstall 타겟을 추가했습니다. 부트시 리눅스 커널 모듈을로드하십시오.

나는 모든 커널 모듈이 /lib/modules/<kernel version>/kernel 내부 어딘가에있는 것을 발견, 그래서 난 그냥 modules.ordermodules.dep 파일에 모듈을 하위 디렉토리에 컴파일 된 모듈을 복사하고 나열하는 줄 알았는데. 그러나이 방법은 효과가 없었고 그 주제에 대한 자료를 찾을 수 없었기 때문에 필사적입니다.

# All source files are inside the src directory 
obj-m := src/sevenseg.o 

all: 
    make -C /lib/modules/$(shell uname -r)/build EXTRA_CFLAGS=-I$(PWD)/src M=$(PWD) modules 
    mv src/sevenseg.ko . 

install: 
    make -C /lib/modules/$(shell uname -r)/build EXTRA_CFLAGS=-I$(PWD)/src M=$(PWD) modules 
    mkdir -p /lib/modules/$(shell uname -r)/kernel/drivers/sevenseg 
    cp src/sevenseg.ko /lib/modules/$(shell uname -r)/kernel/drivers/sevenseg 
    echo "kernel/drivers/sevenseg/sevenseg.ko:" >> /lib/modules/$(shell uname -r)/modules.dep 
    echo "kernel/drivers/sevenseg/sevenseg.ko" >> /lib/modules/$(shell uname -r)/modules.order 
    insmod src/sevenseg.ko 
    make clean 

clean: 
    rm -rf src 

어떻게 내가 부팅시 모듈 sevenseg.ko를로드해야 커널을 알 수 있습니까 :

이 내 메이크 현재 모습입니다?

답변

0

tldr;

# echo 'my-module-name' >> /etc/modules 

긴 설명 :

insmodmodprobemodprobe.conf을 설명서를 참조하십시오. 불행하게도 https://www.cyberciti.biz/faq/linux-how-to-load-a-kernel-module-automatically-at-boot-time/

+0

, 도움이되지 않았다 :

여기 괜찮은 튜토리얼입니다. 이제'modprobe sevenseg'라고 입력하면 이전과 같은 오류 메시지가 나타납니다 :'modprobe : FATAL : 모듈 7seg가/lib/modules/4.9.59 디렉토리에 없습니다 '그리고 모듈이 여전히 부팅시에로드되지 않습니다 . – Sandtler

+0

'uname -r'이 리턴하는 것은 무엇입니까? 하나의 커널을 실행하는 모듈을 만들었지 만 나중에 다른 모듈로 부팅 할 수 있습니까? 설치된'* .ko' 파일에 대한 표준 경로는 무엇입니까? – rubicks