- Today
- Total
목록프로그래밍 (Programming)/네트워크 스택 (24)
Byeo

지난 포스트에서 추가한 리눅스 시스템콜을 사용하기 위해서는 위에서 기술된 2번 항목처럼 syscall에 syscall_no를 넣어주면서 호출을 했어야 했는데요. C언어에서 byeo_hello(string, strlen)을 직접 호출하고 싶으면 어떻게 해야 할까요? 그 방법은 사실 커널보다는 glibc의 수정에 있었습니다. 이번 포스트에서는 시스템콜 함수명을 직접 이용해 호출할 수 있도록 설정을 해볼 예정입니다. 0. syscall( ) 흐름 시작 전에, syscall() 함수는 어떻게 실행될지 잠깐 살펴보려고 합니다. 이 함수는 glibc의 sysdeps/unix/sysv/linux/x86_64/syscall.S에 있는 함수입니다. 해당 함수는 syscall number를 별도의 register에 빼낸 ..

개요 리눅스 코드를 살펴보고 구현해보는 과정을 간단히 체험해보기 위해서 가장 쉬운 시스템 콜 추가하기를 해봅니다. 해당 과정을 위해 [블로그]와 [커널 문서]를 참고하였습니다. 커널 문서에서는 시스템 콜 구현 디자인 가이드라인을 제공하고 있습니다. 내용 1. syscall_64.tbl linux-5.15/arch/x86/entry/syscalls/syscall_64.tbl 파일에는 x86 아키텍쳐에서 사용할 수 있는 시스템콜이 나열되어 있습니다. 형태는 다음과 같습니다. # The format is: # 가장 마지막에 있는 448 다음에 우리가 추가할 시스템 콜 이름과 실제 커널 내에서 호출할 함수 명을 나열해줍시다. 449commonbyeo_hellosys_byeo_hello 2. sys_byeo_he..

개요 VSCode를 통해서 linux source code를 살펴보려고 C/C++ extension을 설치했습니다. 그래도 여전히 빨간 줄 투성이군요. 검색해보니 https://github.com/amezin/vscode-linux-kernel가 해결책이 될 수 있겠다 싶어서 시도해봅니다. 내용 Linux Kernel 소스코드를 보기 전, C/C++ Extensions을 설치했는데도 빨간 줄이 사라지지 않습니다. 막상 ctrl + 해당 변수를 누르면 define된 곳으로 잘 이동하는데 말이죠. 그래서 설치해봅니다! 설치: Visual Studio Code project for Linux kernel sources https://github.com/amezin/vscode-linux-kernel GitHu..

개요 실제 리눅스 네트워킹 스택을 깊게 파보고 싶다는 생각은 있었으나 실천은 못하고 있던 찰나, 적절히 참고할만한 블로그를 발견해서 한 번 진행해보려고 합니다. 가장 먼저 해보려고 하는 것은 깊이 들여다보기 전에, 테스트 환경을 갖춰보려고 해요. 그래서 직접 커널 코드를 수정해 보면서 알아갈 수 있도록 해보려고 합니다. 포스트를 계속 이어가면서, 제가 리눅스 커널 코드를 아주 간단하게 수정하고 빌드했을 때 올바르게 반영이 되는지까지 확인해보겠습니다. 내용 과정은 크게 2가지입니다. 커널 빌드, rootfs 생성. 환경 약 4년 전, 대학원 입학 전에 구매했던 갤럭시 이온 노트북이 이제는 놀고 있습니다. 여기에 Ubuntu 멀티부팅을 세팅하여 진행하였습니다. 물리 코어 4개, 논리 코어 8개 (하이퍼스레드..