|
파일 시스템 fat |
|
|
|
a1: http://ji007.tistory.com/entry/FAT32-File-System |
|
a2: http://egaoneko.github.io/os/2015/05/24/linux-starter-guide-4.html |
|
a3: http://cappleblog.co.kr/135 |
|
|
|
|
|
b1: http://snsmo.tistory.com/28 |
|
b2: https://www.linux.co.kr/home/lecture/index.php?cateNo=&secNo=&theNo=&leccode=10213 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
******************************************************** |
|
* 코드 파일은 아래에 있습니다. |
|
* 코드 파일과 Makefile 파일을 작성 하시고 |
|
* 밑 내용대로 명령어를 실행 하시면 됩니다. |
|
******************************************************** |
|
|
|
make을 하여 my_module.ko 준비한다. |
|
아래 # 부터는 리눅스 터미널 창에서 명령어 입력을 하시면 됩니다. |
|
|
|
root@linux-VirtualBox:#cat /proc/devices |
|
----------------화면 표시 ------------------- |
|
Character devices: |
|
1 mem |
|
4 /dev/vc/0 |
|
4 tty |
|
4 ttyS |
|
5 /dev/tty |
|
5 /dev/console |
|
5 /dev/ptmx |
|
5 ttyprintk |
|
7 vcs |
|
10 misc |
|
13 input |
|
21 sg |
|
29 fb |
|
108 ppp |
|
116 alsa |
|
128 ptm |
|
136 pts |
|
180 usb |
|
189 usb_device |
|
|
|
226 drm |
|
250 hidraw |
|
251 bsg |
|
252 watchdog |
|
253 rtc |
|
254 tpm |
|
---------------------------------- |
|
화면에 /proc/devices 안에 리스트에서 inode값이 200이 비었는 것을 확인 한다. |
|
root@linux-VirtualBox:#mknod my_module c 200 0 |
|
노드를 생성 한다. |
|
root@linux-VirtualBox:#ls my_module |
|
----------------화면 표시 ------------------- |
|
my_module |
|
--------------------------------------------- |
|
my_module 등록 시킬 노드의 이름 |
|
c 디바이스의 종류 |
|
200 메이저 넘버 |
|
0 마이너 넘버(부)넘버 |
|
--------------------------------------------- |
|
root@linux-VirtualBox:#man mknod 명령어로 확인 할 수 있다. |
|
--------------------------------------------- |
|
root@linux-VirtualBox:#insmod mydev_dev.ko |
|
드라이버를 삽입 한다. |
|
root@linux-VirtualBox:#cat /proc/devices |
|
정상 적으로 드라이버가 등록이 되었는지 확인 |
|
Character devices: |
|
1 mem |
|
4 /dev/vc/0 |
|
4 tty |
|
4 ttyS |
|
5 /dev/tty |
|
5 /dev/console |
|
5 /dev/ptmx |
|
5 ttyprintk |
|
7 vcs |
|
10 misc |
|
13 input |
|
21 sg |
|
29 fb |
|
108 ppp |
|
116 alsa |
|
128 ptm |
|
136 pts |
|
180 usb |
|
189 usb_device |
|
200 my_module <=== 등록됨 |
|
226 drm |
|
250 hidraw |
|
251 bsg |
|
252 watchdog |
|
253 rtc |
|
254 tpm |
|
root@linux-VirtualBox:#dmesg |
|
dmesg로 디바이스 모듈이 초기화 되었는지 확인 |
|
----------------화면 표시 ------------------- |
|
[ 39.216216] audit: type=1400 audit(1434439820.368:75): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/cupsd" pid =2091 comm="apparmor_parser" |
|
[ 39.216401] audit: type=1400 audit(1434439820.368:76): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/cupsd" pid =2091 comm="apparmor_parser" |
|
[ 1827.535625] my_module init |
|
--------------------------------------------- |
|
root@linux-VirtualBox:#gcc app_my_module.c |
|
app_my_module.c를 컴파일하여 a.out를 생성 한다. |
|
root@linux-VirtualBox:#./a.out |
|
어플리케이션인 a.out를 실행 시킨다. |
|
root@linux-VirtualBox:#dmesg |
|
dmesg로 어플리케이션이 실행 확인 |
|
----------------화면 표시 ------------------- |
|
[ 39.216216] audit: type=1400 audit(1434439820.368:75): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/cupsd" pid =2091 comm="apparmor_parser" |
|
[ 39.216401] audit: type=1400 audit(1434439820.368:76): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/cupsd" pid =2091 comm="apparmor_parser" |
|
[ 1827.535625] my_module init |
|
[ 2917.340530] my_open |
|
[ 2917.340541] my_close |
|
--------------------------------------------- |
|
정상적으로 실행이 되었으면 my_open, myclose가 뜬다. |
|
이제 모듈을 해제해 보자. |
|
root@linux-VirtualBox:#rmmod my_module |
|
root@linux-VirtualBox:#dmesg |
|
dmesg로 해제가 되었는지 확인 |
|
----------------화면 표시 ------------------- |
|
[ 1827.535625] my_module init |
|
[ 2917.340530] my_open |
|
[ 2917.340541] my_close |
|
[ 3268.243758] my_module exit |
|
--------------------------------------------- |
|
my_module exit 라고 표시가 되면 해제가 완료. |
|
이제 다시 proc/devices에서 inode값이 없어 졌는지 확인해 보자. |
|
root@linux-VirtualBox:#cat /proc/devices |
|
----------------화면 표시 ------------------- |
|
Character devices: |
|
1 mem |
|
4 /dev/vc/0 |
|
4 tty |
|
4 ttyS |
|
5 /dev/tty |
|
5 /dev/console |
|
5 /dev/ptmx |
|
5 ttyprintk |
|
7 vcs |
|
10 misc |
|
13 input |
|
21 sg |
|
29 fb |
|
108 ppp |
|
116 alsa |
|
128 ptm |
|
136 pts |
|
180 usb |
|
189 usb_device |
|
|
|
226 drm |
|
250 hidraw |
|
251 bsg |
|
252 watchdog |
|
253 rtc |
|
254 tpm |
|
---------------------------------- |
|
화면에 /proc/devices 안에 리스트에서 inode값이 200이 비었는 것을 확인 한다. |
|
비어 졌으면 정상적으로 해제가 되었다. |
|
아래는 어플리케이션 파일임. |