cover-image

vmlinux 란?

vmlinux 란? 리눅스 커널을 한 번이라도 빌드한 경험이 있다면 vmlinux와 vmlinuz라는 파일을 본 경험이 있을 것입니다. 빌드 경험이 없더라도, 리눅스 루트 파일시스템을 돌아다니다가 /boot 디렉토리 내에 있는 vmlinuz 혹은 bzImage를 보았을 수도 있고요. 이번 글에서는 위 파일들이 무엇이며, 어떤 역할을 하는지 한 번 알아보도록 하겠습니다. vmlinux 우선 리눅스 커널은 다른 프로그램과 마찬가지로 하나의 실행 가능한 프로그램입니다. gcc를 통해 c언어 소스코드 main.c를 빌드했을 때 a.out 이름의 ELF 바이너리가 나오는 것 처럼 커널도 빌드하면 ELF 바이너리가 나오게 됩니다. 그리고 이 바이너리가 vmlinux입니다. ...

September 29, 2025 · 3 min · 457 words · Me
cover image

QEMU로 Ubuntu VM에 커스텀 커널 올리기

가상화(Virtualization)를 하는 방법에는 하이퍼바이저를 통한 서버 가상화와 Docker로 익숙한 OS레벨의 컨테이너 가상화가 있습니다. 최근에는 컨테이너 가상화의 경량성과 이식성을 통해, 쿠버네티스를 필두로 한 마이크로서비스 운영 방식이 표준으로 자리잡았습니다. 하지만, 컨테이너 환경은 커널을 공유한다는 특징으로 인해 유연성이 떨어지고, 격리(Compartmentalization)의 측면에서 보안성이 떨어집니다. 따라서 컨테이너를 맹목적으로 선호하기보다는 VM도 다룰 줄 아는 것이 좋은 방향이라고 생각합니다. 다만, QEMU를 통해 Ubuntu VM을 실행하고 커스텀 커널을 올리는 것은 실제 서비스 환경에서 VM을 운영하기 위한 것은 아닙니다. VM을 실행하는 것보다 커스텀 커널을 올리는 과정이 더 복잡하며, 이는 커널 개발을 위한 환경 설정을 하는 과정이라고 생각하면 될 것 같습니다. 호스트 머신의 성능을 통해 커널을 빌드하고, Ubuntu라는 mainstream 배포판에서 해당 커널을 테스트하는 환경을 설정하는 방법을 알아보도록 하겠습니다. ...

August 5, 2025 · 4 min · 719 words · Me