LINUX
Posts
487 posts[라즈베리파이] 시스템 콜 - 매개 변수 점검(시스템 콜 핸들러)
리눅스 커널 시스템 콜 핸들러 인터페이스 함수를 열어 보면 수 많은 예외 처리 코드를 볼 수 있습니다. 유저 모드에서 시스템 콜을 호출할 때 잘못된 인자(스트링 갯수, 메모리 주소)를 전달할 수 있기 때문입니다. 먼저 write() 이라는 리눅스 시스템 저수준 함수를 살펴보겠습니다. write() 함수를 호출할 때는 다음 6번 째 줄 코드와 같이 세 가지 인자를 전달해야 합니다.[https://android.googlesource.com/platform/system/core/+/master/init/uevent_listener.cpp]1 ListenerAction UeventListener::RegenerateUeventsForDir(DIR* d,2
[ESXi 6.5] Photon OS 설치하여 Docker Host로 운영하기
거의 지난 주말부터 ESXi 서버에 대해서 살펴보고 있습니다. ESXi 서버는 그 안에 필요한 VM을 하나 하나 설치하는 것이니,쉽게 말해 나만의 IaaS 를 구축한다고 할 수 있겠습니다.(ESXi 서버가 https 포트만 포트포워딩 시켜 놓으면 외부에서도 작업을 거의 다 할 수 있는 것이 환상입니다) 그런데 CaaS 처럼 구축하기 위해서는 역시나 ESXi 서버에 Docker Host 기능을하는 Linux를 설치하여야 합니다. 여기에서도 잠깐, 아주 오래전 (약 10년전) 우분투 설치를 하다보면"최소 가상머신 설치" 라는 것이 있었습니다.JeOS (쥬~스 라고 발음했던 기억이) 라고 Just Enough OS 라고 불려최소로 설치하는 것을 의미했습니다. 마치 Docker에서 image 를 최소화 하
[라즈베리파이] 시스템 콜 - 커널 공간에서 시스템 콜 테이블 확인하기
시스템 콜 테이블은 sys_call_table 심볼에 저장돼 있습니다. 쉽게 설명을 드리면 전역 변수라고 봐도 무방합니다. T32 프로그램으로 시스템 콜 테이블을 확인하면 다음과 같습니다.d.v %y.l sys_call_table________address||value______|symbolNSD:80107FC4| 0x8012C6F4 \\vmlinux\kernel/signal\sys_restart_syscallNSD:80107FC8| 0x801212C0 \\vmlinux\exit\sys_exitNSD:80107FCC| 0x8011C100 \\vmlinux\fork\sys_forkNSD:80107FD0| 0x8026AB24 \\vmlinux\read_write\sys_readNSD:80107FD4|
[라즈베리파이] 시스템 콜 - 커널 모드에서 시스템 콜을 어떻게 실행할까?
이번 절에서는 커널 공간에서 시스템 콜을 어떻게 실행하는지 살펴보겠습니다.다음 그림 전체 흐름도에서 검은색으로 표시된 부분을 눈여겨봅시다. 위 그림에서 검은색으로 된 부분입니다. 유저 공간에서 소프트웨어 인터럽트를 유발했으니 소프트웨어 인터럽트 벡터인 vector_swi 레이블이 실행합니다. 유저 공간에서 “svc 0x0” 이란 명령어를 실행하면 vector_swi 이란 시스템 콜 처리용 인터럽트 벡터로 프로그램 카운터를 이동하는 것입니다. 유저 공간에서 지정한 시스템 콜 번호는 r7 레지스터에 실려서 옵니다. 이 시스템 콜 번호를 통해 시스템 콜 테이블에 접근한 후 시스템 콜 핸들러로 분기합니다. ARM 프로세서 관점으로 시스템 콜을 실행하면 커널 공간에서 다음과 같은 동작을 수행합니다.1>
![[CV] [Comi] 'ダンダダン'(단다단) 24권. 레드 바론](https://img.zoomtrend.com/2026/06/11/1781228393-EB829CED8380.jpg)

