[리눅스] 라즈베리파이 시스템 콜 추가하기


라즈베리 파이에 시스템 콜을 추가해보도록 하겠습니다.

순서

과정1.크로스 컴파일 설정

과정2.시스템 콜 추가

1.라즈베리파이 시스템 콜 추가


과정1.크로스 컴파일 설정

1.작업을 진행할 디렉토리를 생성합니다.

2.git 및 개발도구를 다운로드합니다.

3.커널 소스를 다운로드 하고 다운로드한 커널 버전을 확입합니다.

4.디렉토리를 옮겨 크로스 툴체인을 다운로드합니다.

5.크로스 컴파일러를 실행해봅니다.

6.환경변수 PATH에 실행 경로 추가한 뒤 실행경로 테스트해 봅니다.

7.크로스 컴파일 prefix를 설정하고 설정파일을 만듭니다.

8.#make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage modules dtbs -j5 명령어로 zImage를 만들고 확인해봅니다.

9.#lsblk로 연결 된 블록 디바이스 목록을 보고 sd카드 연결을 확인합니다..

10.마운트 시킬 디렉토리를 만들고 sd카드와 마운트 시킵니다.

11.모듈을 sd카드에 복사합니다.

12.커널 이미지를 백업하고 복사합니다. Device Tree blobs도 복사하고 마운트를 해재하고 미니컴으로 라즈베리파이를 연결합니다.

13.(minicom)커널 버전을 확인합니다.

과정2. 시스템 콜 추가하기

1.시스템 콜 번호를 arch/arm/include/uapi/asm/unistd.h에 추가합니다.

1-1.총 시스템 콜의 갯수를 확인합니다. 392개라고 적혀있습니다.

2.arch/arm/kernel/calls./s에 시스템 콜 처리함수를 등록합니다.

3.include/linux/syscalls.h에 시스템 콜 함수 원형을 선언합니다.

4.커널에 포함되어 컴파일 해야하므로 kernel아래에 mysyscall.c함수를 작성합니다.

5.Makefile을 수정합니다.

6.커널 컴파일을 진행합니다.

7.sd카드와 연결을 확인합니다.

8.디렉토리를 마운트하고 커널 이미지 백업, 복사, dtb복사를 합니다.

9.마운트를 해제합니다.

10.(minicom)미니컴에서 응용프로그램을 작성합니다.

11.(minicom)컴파일하고 결과물을 실행합니다.

12.(minicom)커널 메세지를 확인해보니 정상적으로 작동합니다.

2.마치며


라즈베리파이에도 시스템콜을 추가해보았습니다. 시스템 콜 추가라는게 사실은 리눅스 기반의 OS에서는 대동소이 합니다. 크로스 컴파일이라는 기능은 쉽게 말해 다른 시스템의 기계에서 실행될수 있도록 컴파일 하는 것을 말합니다. 크로스컴파일을 통하면 여러가지 기계에서 쓸 수 있는 프로그램을 만들 수 있겠지요.

좋은하루되세요!


2023년 새해에는 성장하고 함께하고 싶다면?

Pre A 단계 이상의 스타트업 C 레벨들이 모여서 커뮤니티를 만들었습니다. 같이 스터디하고 친해질 일잘러를 찾습니다.




© 2017. by isme2n

Powered by aiden