Ubuntu에 Docker Engine 설치 후 설정

Docker Engine을 설치하고 나면 바로 몇 가지 불편과 위험이 드러난다. 일반 계정으로 docker ps를 치면 권한 오류가 나고, 컨테이너 로그는 기본 설정에서 크기 제한 없이 디스크를 채운다. Docker 데몬을 재시작하면…

Continue ReadingUbuntu에 Docker Engine 설치 후 설정

QEMU 공유 파일시스템 virtiofs vs virtio-9p — 설정과 실측 비교

게스트에 소스를 올려 빌드하거나 호스트가 만든 산출물을 게스트에서 바로 읽으려면 디스크 이미지에 복사하는 것보다 호스트 디렉터리를 그대로 공유하는 쪽이 편하다. QEMU에는 이걸 하는 방법이 두 가지 있다. 오래된 virtio-9p(-virtfs)와, FUSE…

Continue ReadingQEMU 공유 파일시스템 virtiofs vs virtio-9p — 설정과 실측 비교

Podman으로 rootless 컨테이너 운영하기 — UID 매핑, 볼륨 권한, Pod, Quadlet

Docker는 root 권한으로 도는 dockerd 데몬에 명령을 보내는 구조라서, docker 그룹에 사용자를 넣는 순간 그 사용자는 사실상 root가 된다. docker run -v /:/host로 호스트 파일시스템 전체를 마운트할 수 있기 때문이다.…

Continue ReadingPodman으로 rootless 컨테이너 운영하기 — UID 매핑, 볼륨 권한, Pod, Quadlet

QEMU(arm64) 임베디드 리눅스 타깃 만들기 (6) — 커널 모듈, gdb 원격 디버깅, NFS 루트

4편까지 오면 타깃은 완성됐다. 남은 것은 이 타깃을 실제 개발에 쓰는 방법이다. 실물 보드에서 하던 일 — 드라이버를 고쳐 올리고, 부팅이 이상하면 붙잡아 들여다보고, 빌드 결과를 매번 굽지 않고 바로…

Continue ReadingQEMU(arm64) 임베디드 리눅스 타깃 만들기 (6) — 커널 모듈, gdb 원격 디버깅, NFS 루트

QEMU(arm64) 임베디드 리눅스 타깃 만들기 (5) — Yocto로 타깃 이미지 빌드

1편부터 4편까지는 디스크 이미지를 자르고, U-Boot을 빌드하고, 커널을 컴파일하고, 루트 파일 시스템을 손으로 채웠다. 제품용 타깃이라면 이 과정을 재현 가능하게 자동화해야 하는데, 그 자리에 쓰는 것이 Yocto다. 레시피와 설정 파일에서…

Continue ReadingQEMU(arm64) 임베디드 리눅스 타깃 만들기 (5) — Yocto로 타깃 이미지 빌드

QEMU raspi4b로 라즈베리파이 4 에뮬레이션하기 — 되는 것과 안 되는 것

라즈베리파이 4용으로 뭔가를 고칠 때마다 보드에 SD 카드를 꽂았다 뺐다 하는 건 번거롭고, 보드가 손에 없으면 아예 막힌다. QEMU는 8.2까지 라즈베리파이 3B(raspi3b)가 최신이었는데 9.0부터 raspi4b 머신이 들어왔다. 다만 Pi 4는…

Continue ReadingQEMU raspi4b로 라즈베리파이 4 에뮬레이션하기 — 되는 것과 안 되는 것

QEMU(arm64) 임베디드 리눅스 타깃 만들기 (4) — 루트 파일 시스템과 패키지 설치

3편에서 커널이 ext4 루트를 마운트하는 데까지 갔지만 그 안이 mkfs 직후 상태라 No working init found로 멈췄다. 이제 그 빈 파티션을 채운다. 두 단계로 간다. 먼저 BusyBox 하나로 셸이 뜨는…

Continue ReadingQEMU(arm64) 임베디드 리눅스 타깃 만들기 (4) — 루트 파일 시스템과 패키지 설치

QEMU(arm64) 임베디드 리눅스 타깃 만들기 (3) — 커널 크로스 컴파일과 부팅

2편까지 오면 타깃에 부트로더가 올라가 디스크에서 파일을 읽어 실행하는 데까지 된다. 이제 그 자리에 올릴 커널이 필요하다. 실물 보드라면 벤더가 준 커널 소스를 받아 크로스 컴파일하고 SD 카드에 복사하는 단계인데,…

Continue ReadingQEMU(arm64) 임베디드 리눅스 타깃 만들기 (3) — 커널 크로스 컴파일과 부팅

QEMU(arm64) 임베디드 리눅스 타깃 만들기 (2) — U-Boot 올리기

1편에서 만든 디스크 이미지는 아직 아무도 읽어주지 않는다. virt 머신에는 x86의 BIOS/UEFI 같은 내장 펌웨어가 없어서, 전원을 넣어도 실행할 코드가 없으면 한 글자도 나오지 않기 때문이다. 실물 보드라면 SoC의 부트…

Continue ReadingQEMU(arm64) 임베디드 리눅스 타깃 만들기 (2) — U-Boot 올리기