사용자 개발 모듈 개발

해담·2024년 12월 4일

간단한 사용자 개발 모듈을 만들고 입출력하기




커널 버전에 맞는 개발 모듈의 소스 파일 작성

  • 예를 들어, mac80211_hwsim.c 파일을 수정 개발해야 한다고 하면, 아래 링크에 가서 커널 버전에 맞는 mac80211_hwsim.c 파일을 다운로드해서 특정 무선 환경에 맞게 수정하는 개발 과정이 필요

  • 개발 우분투 커널 버전이 v5.4.150 확인하였으며 이 버전 맞는 mac80211_hwsim.c 파일을 다운로드하는 것으로 소스 파일을 작성하는 것으로 대체함

    • 예: 사용자 모듈은 사용자의 의도대로 프로토콜 표준 (예: 블루투스)에 기반하여 코딩(mininet에서는 c 기반)을 작성함
    • 블루투스 모듈을 라즈베리 파이 커널 버전에 맞게 개발하려고 계획하였지만, 변경 사항과 고려 사항이 많아짐으로 인해 계획을 수정함
    • 블루투스 5.2 (2020) 및 5.3 (2021)
    • 2020년에 지정된 블루투스5.2는 이전 프로토콜이 제공하는 속도와 범위를 업그레이드하는 동시에 향상된 보안 암호화를 제공하여 사용자 데이터가 손상되지 않도록 보호함.
    • 블루투스 5.2는 또한 IoT 애플리케이션에서 여러 장치의 동시 사용을 위해 더 많은 동시 연결을 지원함.
    • 한편 블루투스 5.3은 보다 나은 효율성과 보안, 안정성을 추구하기 위해 2021년에 출시되었으며 소폭 업그레이드 되었음.
    • 블루투스 5.2에서 가장 큰 변화는 주변 장치(Peripheral device, Slave)가 중앙장치(Central device, Master)처럼 원하는 기본 채널을 설정할 수 있음
    • 이전 버전에서는 중앙 장치만 채널을 설정할 수 있음.
  • 참조 사이트: https://medium.com/@zoyi_product/bluetooth-low-energy-ble-84b03705ffca![](https://velog.velcdn.com/images/nnyouung/post/69df4274-2abc-4c3e-b361-190147cefa54/image.jpg)

  • 개발하고자 했던 블루투스 프로토콜 스택

    • L2CAP : IP Layer에 해당

다시 Mininet으로 돌아와서 sudo gedit mac80211_hwsim.c 를 이용하여 소스 파일 대용으로 사용함

  1. mkdir myModule

  2. cd myModule

  3. sudo gedit mac80211_hwsim.c

  4. sudo gedit Makefile 명령어를 이용하여 Makefile 파일을 작성함

  • gedit에서 tab 을 사용하여 make 명령어 입력
  1. make 명령어를 수행함
  • make 이용

  • 에러가 나타나면 해당 에러를 수정하도록 함

    • mac80211_hwsim.h 파일이 없을 때 나타나는 에러를 수정함
    • 이 외에 다양한 에러가 존재할 수 있음
  • 에러 수정 필요

  1. 에러 수정을 위해 해당 h 파일을 가져옴
  1. make 시 발생되는 에러 표시 및 수정 (데브옵스 기술이 여기에 사용됨)

  2. 다시 make 를 수행함

  • 컴파일이 제대로 수행될 때 나타나는 mac80211_hwsim.mod.o 파일 확인

  • mac80211_hwsim.mod.o 파일 확인

  • mac80211_hwsim.ko 파일 확인

  • make 수행 전의 파일들

  • make 수행

  • make 수행 후의 파일들

  • myModule1 디렉토리에 가서 생성된 파일 확인

  • ls 명령어로 생성된 파일 확인

  • modinfo ./mac80211_hwsim.ko 명령어로 새로 생성된 모듈 정보 확인하기

sudo insmod ./mac80211_hwsim.ko 명령어 사용으로 정상적으로 모듈이 장착되는지 확인함

  • insmod는 insert module의 약자

  • dmesg를 통해서 내 모듈이 장착된 메시지를 확인 할 수 있다.

    • dmesg | tail

여기까지 모듈 개발을 마치고, 실제 모듈이 사용되는 예제를 실행함

  • Mininet-WiFi 에뮬레이터에서 무선 채널의 특성을 모델링하는 모듈은 두 개가 있음
  • mac80211_hwsim 모듈과 wmediumd 모듈이 있음
  • mac80211_hwsim 모듈에서는 rssi를 계산할 때, 측정된 rssi 값에서 50을 마이너스하는 것으로 개발됨



기존 mac80211_hwsim 모듈의 특성

  • x1@x1-ThinkPad-X1-Carbon-Gen-8:~/myModule$ sudo mn --wifi --topo single,3 --position --plot

  • 기존 mac80211_hwsim 모듈의 특성은 signal: -36.00 dBm으로 나오는 것을 확인함

  • 특정 환경에 따른 rssi 값을 변경하기 위해 mac80211_hwsim.c 모듈을 수정함

  • 다시 make 를 수행함

    • 필요에 따라 sudo rmmod mac80211_hwsim 명령어 사용하며, 기존 -50dBm의 모듈을 삭제하는 역할을 수행함

    • make 수행

    • sudo insmod ./mac80211_hwsim.ko : 새로운-40 dBm의 모듈을 장착함

  • 특정 환경에 대한 rssi 채널을 새롭게 만들었으니, sudo mn --wifi --topo single,3 --position --plot 명령어를 통해 토포롤지를 구성하고 rssi를 확인함

  • 변경 후 dBm: -26dBm 확인
    • 이전 dBm: -36 dBm
    • sta1 iw dev sta1-wlan0 scan 명령어를 사용하여, rssi가-26dBm으로 변경된 것을 확인할 수 있음
profile
해담이를먹여살리기위한..

0개의 댓글