나는 이 가이드를 따라 Linux 커널에 나만의 사용자 정의 시스템 호출을 추가했습니다."Linux 커널에 Hello World 시스템 호출 추가".
5단계에서는 다음을 입력하여 시스템 호출 테이블을 수정하도록 요청합니다.
/usr/src/linux-headers-xxx-xx/arch/x86/entry/syscalls/
내 시스템을 살펴보니 OS 버전은 Ubuntu 20.04.1이고 커널 버전은 5.4.0-42인데 특정 디렉터리에는 세 개의 파일만 있습니다.
Makefile
syscallhdr.sh
syscalltbl.sh
온라인으로 검색한 결과 최신 버전의 Linux는 이 bash 스크립트를 사용하여 syscalltbl.sh
모든 시스템 호출 번호가 포함된 필수 파일을 생성하는 것으로 나타났습니다. 그래서 이 파일을 실행하고 싶었지만 권한 문제로 인해 실행할 수 없었습니다. (저는 Linux를 처음 접했기 때문에 내용에 너무 많이 노출되는 것은 좋은 생각이 아니라고 생각했습니다.)
위에서 언급한 가이드는 2년쯤 된 자료라 다른 가이드를 찾아보니 이 영상 튜토리얼은 4개월 전에 제작된 것이었습니다."Linux 커널에 자신만의 시스템 호출을 추가하세요.".
여기서 그 사람은 syscall_64.tbl
이미 존재하는 파일( .sh
파일도 존재함)을 사용했기 때문에 내 컴퓨터에 문제가 있을 수 있다고 생각했습니다.공식 GitHub 저장소.tbl
" 에는 bash 스크립트와 함께 이 파일도 포함되어 있습니다 .
커널을 최신 버전 5.9.0-050900-generic으로 업그레이드했지만 디렉터리가 여전히 존재합니다.
/usr/src/linux-headers-5.9.0-050900/arch/x86/entry/syscalls
Makefile이 있는 bash 파일만 가능합니다.
syscall_64.tbl
그렇다면 시스템에서 정확히 어디에서 찾을 수 있나요?
머릿속에 떠오르는 것은 위에 제공된 파일을 사용하여 syscall_64.tbl
위 디렉터리에 자신을 생성하는 것뿐입니다.syscall_64.tbl
GitHub. 그러나 나는 그것이 좋은 생각이라고 생각하지 않습니다. 그것과 관련된 위험이 있을 수 있는데, 나는 그것에 대해 아무것도 모릅니다.
답변1
이 파일은 Linux 커널의 소스 코드에 있습니다. 다음에서 최신 버전의 타르볼을 얻을 수 있습니다.kernel.org.
Linux 커널을 수정하고 싶다면 (메인 시스템과 별도로) 새 커널을 구축하고 이를 QEMU와 같은 가상 머신에서 실행하면 됩니다. 인터넷에서 다음과 같은 다양한 가이드를 찾을 수 있습니다."Qemu에서 최소 Linux/Busybox 시스템 구축 및 실행"소규모 개발 환경을 시작하고 실행하는 방법을 보여줍니다.