1 분 소요

source code 받을수 있는곳.

http://www.kernel.org/

source를 볼수 있는 site

http://lxr.linux.no

https://www.codeaurora.org/

kenel관련 싸이트

http://kldp.org  :각종 리눅스 관련 한글화된 문서가 있는 사이트

http://www.tldp.org :리눅스 관련 문서 프로젝트

linux부팅관련 자세히 알고 싶으면..

http://lfs.sourceforge.net/\

http://www.linuxfromscratch.org/

ㅋ.. 결국 아래 주소에서 safir books online을 들어가면 O’Relly 책들을 찾을수 있고 … 책 내용을 모두 볼수 있다.

http://www.xml.com/

아래에서도 무료 linux 도서를 볼수 있군…

http://www.linuxlinks.com/article/20090405061458383/20oftheBestFreeLinuxBooks-Part1.html

device driver : Linux Device Drivers, 2nd Edition  [http://www.xml.com/ldd/chapter/book/]

kernel : Understanding the Linux Kernel, Third Edition

kernel(2.6)의 device driver의 file system

sysfs

$mount -t sysfs sysfs /sys 를 이용하여 mount해서 볼수 있다.

device driver 만들때

mknod [디바이스 파일명][디바이스 파일형][주번호][부번호]

ex) 문자 디바이스 드라이버, 주번호240, 부번호1,  /dev/devfile 이라고 만들려면

$mknod /dev/devfile c 2401 1

$ls -al /dev/console

crw——– 1  root root  5,  1,  jan 1 10:00 /dev/console

c 는 문자디바이스를 뜻함

b 는 블록디바이스를 뜻함

5번 주번호, 1번 부번호

응용 플그램이 open()함수를 이용해서 해당 디바이스 파일에서 주번호를 얻어 이번호가 처리하는 디바이스 드라이버를 찾는다.

응용프로그램과 디바이스 드라이버가 연결되면 부 번호가 처리하고자 하는 실질적인 디바이스를 찾는다.

[디바이스 파일은 커지지는 않으나 디바이스에서 직접 데이터를 가져오거나 쓸수 있다.]

디바이서 파일에서 써야 하는 파일입출력 함수

open()

close()

read()

write()

lseek()

ioctl()

fsync()

모.. 이제 눈치챘겠지만.. mknod도 함수다.. int mknod(const char *pathname, mode_t mode, dev_t dev);

모듈 명령어 정리

insmod module.o   module을 커널에 적재한다.

lsmod                   적재된 module을 리스트한다.

rmmod module.o    module을 커널에서 제거한다.

depmod                 module간 의존성 정보를 생성한다.

modprobe              module을 커널에 적재하거나 제거한다.

모듈 : 시작된 이유는 디바이스 드라이버를 다 넣어서 빌드하거나 하면 부팅을 못하거나해서 테스트가 비효율적이된다.

이에 부팅후 적재와 제거를 손쉽게 해서 개발의 편이성을 높인것임.

모듈 심볼 테이블 보기

cat /proc/ksyms

#c0123a33 usbdriver_chrdev_R12dsfasf

usbdriver_chrdev()함수가 0xc1023a33 번지에 할당되어 있고 version은 _R12dsfasf라는의미다.

lsmod

module 이름,   size ,  사용여부,  해당 모듈 참고 모듈.

결국 디바이스 드라이버(어플이 접속해서 쓸수있는)는 mknod로 추가하는거고 이 디바이스 드라이버의 하드웨어 디펜던트한 제어용 함수는 모듈로 적제된다고 보면될듯

ps : process 리스트..

debug method

cat /proc/kmsg  : kernel message를 계속 저장하므로 보면 된다. 중지는 CTRL-C이다.

watch ipconfig

실행된 kernel message 마지막 50줄을 본다.

dmesg tail -n50