LWN Weekly Report: 2026년 9월 17일 주요 뉴스

이번 주 LWN.net 위클리 에디션(9월 17일자) 주요 내용이다. Lorenzo Stoakes가 LLM의 도움을 받아 커널 빌드 시스템을 뜯어고친 23개 패치로 allmodconfig 빌드를 최대 36% 줄였고, PostgreSQL 19는 기능 동결 이후 버그 수정이 몰린 “무서운 패치”들 때문에 릴리스가 11월로 밀릴 공산이 커졌다. 커널 쪽에서는 blk-iocost I/O 컨트롤러의 비용 계산을 BPF 프로그램에 맡기는 RFC가 올라왔다. 여기에 원격지 서버의 디스크 암호화를 무인으로 푸는 방법을 정리한 FOSSY 발표, 2년 임기를 마친 Debian 프로젝트 리더 Andreas Tille의 회고까지 다룬다.

LLM과 함께 커널 빌드 가속하기

커널 개발자는 커널을 자주 빌드하고, 커널은 작은 프로그램이 아니라서 빠른 머신에서도 시간이 꽤 걸린다. 빌드 시스템은 복잡해서 제대로 이해하는 개발자가 드물고, 개선하겠다고 나서는 사람은 더 드물다. Lorenzo Stoakes가 LLM의 도움을 받아 여기에 손을 댔고, 23개 패치 시리즈의 커버 레터에 도구 사용 방식을 이렇게 밝혔다.

LLM으로 먼저 병목 지점을 찾고, 이어서 개선 방법을 찾았다. LLM은 많은 코드를 생성했고 그중 상당수는 끔찍했다. 나는 그 코드를 광범위하게 감사하고 많이 다시 썼으며, 커밋 메시지와 커버 레터, 주석도 대폭 손봤다. — Lorenzo Stoakes

결과는 “allmodconfig 빌드 최대 36%, 증분 빌드 최대 약 70%, 변경 없는 빌드 최대 약 90% 단축”이다. 개선은 한 곳이 아니라 빌드 과정 곳곳에 흩어져 있다.

대상변경 내용효과
kallsyms 압축어떤 토큰이 어떤 심볼에 나타나는지 추적해 치환 가능한 곳에서만 시도2~6%
kallsyms 출력37MB 어셈블리 파일 대신 어셈블러가 바로 읽는 바이너리 데이터 출력최대 11%
nm 호출불필요한 정렬 끄기, mksysmap sed 스크립트를 ELF 직접 파싱으로 대체2%, 최대 12%
중간 링크 단계필요 없는 재배치(relocation) 데이터 생략약 2%
의존성 검사파일마다 stat()을 한 번만 하는 depcheck 유틸리티 추가증분 빌드
컴파일러 기능 탐지지원 옵션 확인 결과를 설정 옵션으로 캐싱
modpost캐싱 추가, .mod.c 대신 어셈블리 직접 출력, 해싱 병렬화최대 12%, 11%
objtool / Rustobjtool 병렬화, rustc -Zthreads로 크레이트 병렬 빌드, C와 Rust 동시 빌드빌드에 따라 큼
커널 압축pigz가 있으면 병렬 압축에 사용

kallsyms는 커널의 모든 심볼(함수와 변수 이름) 테이블을 만드는 프로그램이다. 테이블이 메모리에 상주하므로 크기를 줄이려고 자체 압축을 쓰는데, 소스 주석이 설명하는 방식은 다음과 같다.

테이블 압축은 심볼에 쓰이지 않는 문자 코드를 모두 가져다 가장 많이 쓰이는 부분 문자열(토큰)에 대응시킨다. 예를 들어 문자 코드 0xF7을 “write_”에 대응시키면, “write_”가 나오는 모든 심볼에서 이를 0xF7로 바꿔 5바이트를 절약할 수 있다.

문제는 토큰 하나를 치환할 때마다 15만 개가 넘는 심볼 전부를 뒤졌다는 점이다. 특정 토큰은 일부 심볼에만 나타나므로, 어느 심볼에 어떤 토큰이 있는지 추적하기만 해도 빌드가 2~6% 빨라졌다.

modpost 쪽 개선은 규모가 더 크다. modpost는 모듈마다 디스크립터를 담은 C 파일을 만들고, 이 파일도 다른 커널 C 파일처럼 컴파일된다. 커버 레터의 설명은 이렇다.

x86-64 allmodconfig 빌드에서 *.mod.c 파일 11,189개가 빌드되고, 각각 컴파일에 약 0.24초의 CPU 시간이 든다. 모듈 마무리 단계 전체로는 6,300 CPU초, 128 스레드로 돌려도 벽시계 기준 64초다.

modpost가 어셈블리를 직접 출력하게 하면 컴파일 단계가 사라져 allmodconfig 빌드가 11% 빨라진다. 리누스 토발즈는 반기면서도 한 걸음 더 가자고 제안했다. kallsyms와 modpost 모두 어셈블러를 거치지 말고 ELF 오브젝트를 직접 쓰라는 것이다. 평소라면 아무도 그런 코드를 쓰고 싶어 하지 않겠지만 LLM이 있으니 “그 작은 도우미 봇에게 kallsyms 전체를 libelf-devel로 바꿔 오브젝트 파일을 직접 쓰게 하라고 시키면 된다”는 것이 그의 말이다.

depcheck에 대해서도 토발즈는 더 과감한 방향을 제시했다. make가 헤더 의존성을 단일 스레드로 검사하느라 시간을 쓰는데, 그 복잡한 트릭 자체가 이제 필요 없을 수 있다는 것이다. “그건 사반세기 전에 만든 것이고, 그 뒤로 아무도 그 코드를 들여다볼 엄두를 내지 못했다.” 더 나은 해법은 아예 제거하는 것일 수도 있다.

위험 요소는 Rust 병렬 빌드 하나 정도다. -Zthreads 옵션은 Rust 1.84에서 추가돼 커널의 최소 요구 버전(1.85)보다 약간 오래됐지만, Björn Baron은 rustc의 병렬 빌드가 아직 완전히 안정화되지 않아 기본값으로 쓸지는 불분명하다고 경고했다. C와 Rust 코드를 동시에 빌드하는 별도 패치는 훨씬 안전하다. modpost의 MD4 해싱을 파일 단위로 바꾼 패치(최대 6%)는 해당 기능이 modpost에서 제거될 예정이라 시리즈에서 빠진다.

Jonathan Corbet이 직접 적용해 본 결과는 좀 더 수수하다. ccache를 비운 전체 빌드는 약 960초에서 860초로 10% 정도 줄었고, ccache가 채워진 약 90초짜리 빌드에서는 몇 초 차이였다. 빈 ccache 조건은 재현이 쉬워서 골랐지만 실제 컴파일 시간이 지배적이라 개선 폭이 가장 작게 나오는 시나리오다. 전 세계 CI 시스템에서 돌아가는 커널 빌드 수를 생각하면 개발자 시간뿐 아니라 탄소 배출도 줄이는 작업이고, Corbet은 “진작 했어야 할 일”이라고 평했다.

PostgreSQL 19의 “무서운 패치 콘테스트”

PostgreSQL은 매년 9월 메이저 릴리스를 내는 전통이 있고, 19도 그럴 예정이었다. 기능 동결은 4월 8일이었고 이후 베타를 거쳐 안정화를 진행해 왔는데, 이번에는 버그 수정이 유난히 많았다. 8월 25일 Robert Haas가 “scary patch contest”라는 제목의 메일을 보냈다. 그는 “Claude에게 동결 이후 수정된 버그의 수와 종류를 기준으로 어떤 v19 패치가 가장 무서운지 평가해 달라”고 했고, 그 결과를 “LLM의 특히 신랄한 코멘트 몇 개는 빼고” 공유했다.

기능동결 후 수정현재 상태
외래 키 검사 fast path + 배칭 (Amit Langote, Junwang Zhao)약 16건 (잘못된 FK 강제 5종, 트랜잭션 모델 재설계)배칭은 19에서 제거, 행 단위 fast path는 다음 베타에 유지
REPACK 명령과 CONCURRENTLY 옵션 (Antonín Houska)28건 (데이터 손실, ACL 보안 수정 2건 포함)카탈로그 테이블 대상 사용 금지 패치 논의 중
온라인 데이터 체크섬 켜기/끄기 (Daniel Gustafsson, Magnus Hagander)약 25건 (거짓 체크섬 실패 포함)되돌리기 패치는 올라왔으나 다음 베타에는 포함
SQL 속성 그래프 쿼리 PGQ (Peter Eisentraut, Ashutosh Bapat)17건19와 master 모두에서 제거
시간 테이블용 FOR PORTION OF (Paul A. Jungwirth)30건 이상 (보안 수정 3건 포함)제거 논의 없음

Haas가 가장 걱정한 것은 외래 키, REPACK, 데이터 체크섬 세 가지였다. 특히 체크섬에 대해서는 “손상을 감지하는 기능이 거짓 양성을 내는 것은 정확히 잘못된 실패 방식”이라고 지적했다. Gustafsson은 되돌리기를 준비하겠다고 답했지만, Haas는 “진심으로 대화를 시작하려던 것이지 결론으로 바로 뛰어들려던 것이 아니다”라고 한발 물렀다. 결국 체크섬 기능은 되돌리기 패치를 공개해 둔 채 다음 베타에 들어간다.

PGQ는 Tom Lane이 “상당히 두렵다”고 한 기능이다. 아직 논의 중인 수정 중에 카탈로그 버전(catversion)을 올려야 하는 것이 있었기 때문이다. catversion이 바뀌면 19.0으로 만든 데이터베이스가 19.1과 호환되지 않는다. Lane은 “v19에 이걸 넣으면 v20 전까지 고칠 수 없는 버그가 릴리스 후 발견된다는 데 저녁 내기를 걸겠다”고 했고, Haas도 지금 시점에 catversion 변경이 필요한 기능은 19에 들어갈 자리가 없다고 못박았다. 릴리스 관리팀의 판단에 Eisentraut도 동의해 PGQ는 빠졌다.

FOR PORTION OF는 Andres Freund가 문제 삼았다. 복잡한 상호작용이나 경쟁 조건을 놓친 것과 달리 “누락이 꽤 광범위하다”는 것이다. 게다가 권한이 낮은 사용자도 쓸 수 있는 기능이라 공격자가 슈퍼유저 권한 없이도 악의적인 일을 할 수 있다. 이후 Noah Misch가 LLM 조사로 추가 버그를 찾았고 Tomas Vondra가 메모리 누수를 보고해 수정 건수는 30건을 넘겼지만, 아직 제거 얘기는 없다.

LLM이 버그를 더 빨리 찾게 해 준 덕분에 수정이 늘어난 것이냐는 논의도 있었다. 릴리스 관리팀의 Melanie Plageman은 그 가능성을 물었고, Nathan Bossart는 LLM 덕에 동결 시점의 기능이 더 안정적일 줄 알았는데 그렇지 않았다고 했다. Gustafsson은 19의 큰 기능 대부분이 AI 도구가 지금 수준이 되기 전에 작성·리뷰·테스트됐다며 20은 다를 것이라고 봤다. Haas는 다른 원인을 짚었다. 수정이 몰린 기능은 모두 4월 동결 직전에 커밋됐고, 2025년 8월에 커밋됐다면 지금쯤 버그 대부분이 드러났을 것이라는 얘기다.

Bruce Momjian은 큰 기능 여러 개를 되돌리면 그 기능이 있다고 가정하고 만든 다른 변경에 어떤 영향이 갈지도 모른다며 “전례 없는 상황”이라고 했다. Jonathan S. Katz는 9월 24일 추가 베타를 발표했고, RC와 정식 릴리스 날짜는 미정이다. Joshua Drake는 북반구 여름 휴가철에 테스트 기간이 걸리는 문제도 해결할 겸 릴리스를 2027년 봄으로 미루자고 제안했지만 반응은 없다. 네 번째 베타는 최근 기억에 없던 일이고, 베타 기간과 RC 이후 2~3주를 더하면 정상 진행되더라도 11월 릴리스 가능성이 크다.

blk-iocost에 BPF 비용 모델 붙이기

blk-iocost는 SSD 시대를 겨냥한 cgroup I/O 컨트롤러다. 각 cgroup에 장치 대역폭의 일정 비율을 할당하고, 모든 I/O 요청에 “장치 시간을 얼마나 쓸지”로 표현한 비용을 매긴다. 장치와 cgroup은 각자 가상 시계(vtime)를 가지며, I/O를 실행하면 요청한 그룹의 vtime이 비용만큼 전진한다. 그룹의 vtime이 장치 vtime보다 충분히 뒤처져 있어야 요청이 디스패치된다. 구조는 두 단계로 나뉜다.

단계주기역할이번 패치
비용 계산요청마다미리 계산한 파라미터로 요청의 비용을 빠르게 산출BPF로 교체 가능
계획(planning)몇 밀리초마다쓰지 않는 그룹의 대역폭을 바쁜 그룹에 재분배, 장치 vtime 속도 조절변경 없음

Tao Cui가 지적한 문제는 현재 비용 모델의 순차/랜덤 판별 휴리스틱이다. 랜덤으로 판정된 요청은 순차 요청보다 112배 높은 비용을 받는데, 이 판정이 모든 워크로드에 맞지는 않는다. 한 그룹 안에서 프로세스 두 개가 각자 순차 I/O를 해도 요청이 뒤섞이면 랜덤으로 보여 불이익을 받고, 반대로 좁은 범위 안의 랜덤 I/O는 순차로 판정돼 부당한 이득을 본다. I/O 종류나 위치에 따라 다르게 동작하는 장치 특성도 반영하지 못한다.

해법은 역시 BPF다. 비용 계산 부분을 struct_ops 프로그램으로 바꿀 수 있게 하는 새 구조체가 핵심이다.

struct iocost_model_ops {
    u64 (*calc_cost)(u64 opf, u64 nbytes, sector_t sector,
                     struct blkcg *blkcg, u64 model_flags);
    void (*blkcg_online)(struct blkcg *blkcg);
    void (*blkcg_offline)(struct blkcg *blkcg);
    /* model name, used to select the model through io.cost.model */
    char name[16];
};
항목필수설명
calc_cost()요청 비용을 반환. opf는 읽기/쓰기·캐시 플러시 등 플래그, nbytes는 크기, sector는 위치, model_flags에는 기존 요청에 병합되는 경우 IOCOST_COST_F_MERGE가 들어온다
blkcg_online() / blkcg_offline()아니오cgroup에 컨트롤러가 붙거나 떨어질 때 호출돼 BPF 프로그램의 정리 작업에 쓴다
namecgroup 디렉터리의 io.cost.model 파일에 이 이름을 써야 실제 장치에 적용된다

패치에 포함된 예제 프로그램은 앞서 말한 “여러 프로세스의 순차 I/O가 뒤섞이는” 문제를 겨냥한다. BPF 맵으로 최대 네 개의 I/O 스트림을 추적하고, 요청이 그중 하나에서 순차로 보이면 순차 비용을 매긴다. 랜덤 I/O가 섞이면 추적하는 스트림 수는 줄어든다. 9월 8일 첫 버전 이후 인터페이스가 많이 바뀌어 지금은 세 번째 RFC이고, 병합 전까지 더 바뀔 가능성이 크다. 그래도 결국 받아들여져 BPF로 동작을 바꿀 수 있는 핵심 서브시스템이 하나 더 늘어날 것으로 보인다.

서버 데이터를 암호화하는 방법들

FOSSY 2026에서 Romeo Solano가 서버 암호화를 주제로 발표했다. 노트북 디스크를 암호화하는 것은 이제 표준 관행이지만, 부팅할 때 키보드 앞에 있을 수 없는 원격지 서버는 사정이 다르다. 서버를 암호화하지 않는 이유는 보통 두 가지다. 재부팅할 때마다 누군가 디스크 암호를 입력해야 한다는 것, 그리고 성능 저하다. 휴가 중에 서버가 재부팅되면 “여보 미안, 2주 동안 Jellyfin은 못 봐”라고 해야 하는데, 그건 설득하기 어렵다는 것이 그의 농담이었다.

성능 쪽은 2020년 Cloudflare 블로그 글의 수치를 인용했다. 비암호화 656MB/s 대 암호화 147MB/s였는데, Ignat Korchagin이 쓰기 요청이 디스크에 닿기 전 큐 네 개를 거친다는 것을 찾아내 우회하는 패치를 만들었고, 696MB/s 대 640MB/s까지 좁혔다. 이 패치는 이미 업스트림에 있다. 기사 댓글에서 dilinger가 구체적인 설정을 짚었는데, /etc/crypttab에 dm-crypt 워크큐 우회 옵션을 넣으면 된다.

somedisk UUID="aaaaa-bbbbb-cccc-dddd" /etc/crypt.key luks,no-read-workqueue,no-write-workqueue

다만 개선 효과는 작은 I/O에 한정되고 큰 I/O에서는 오히려 더 나빠질 수 있다. Solano가 상정한 위협 모델은 영화 같은 데이터 센터 침입이 아니라 누군가 서버나 디스크를 가져가는 상황이다. 공개 커뮤니티 서버는 사용자 한 명이 범죄 혐의를 받는 것만으로 압수돼 몇 년씩 돌아오지 않는 일이 잦다. 콜드 부트 공격이나 이블 메이드 공격은 실재하지만 드문 표적 공격이라 범위에서 뺐다. 그가 소개한 선택지를 정리하면 다음과 같다.

방법동작한계
리모트 핸즈호스팅 업체 기술자가 대신 암호 입력“최악의 방법”. 뇌물·절도·법적 압박에 대한 보호 의지가 약하고 홈랩에는 없음
IPMI 가상 콘솔서버의 별도 관리 포트에 VPN으로 접속해 웹 브라우저로 콘솔 사용BMC 펌웨어 보안 업데이트가 드물어 인터넷 노출 금지, 업체가 VPN을 안 해 주기도 함
initramfs 속 Dropbear정적 링크된 소형 SSH 서버를 initramfs에서 띄워 원격으로 암호 입력관리자가 깨어 있어야 함
Clevis + Tang네트워크의 Tang 서버와 협력해 무인으로 키 유도Tang 서버의 접근 제어에 보안이 달림
fscrypt / systemd-homed전체 디스크 대신 디렉터리 단위 암호화파일시스템 지원 필요 (ext4 등)

SSH로 접속하고 싶어도 sshd는 암호화된 루트 파일시스템 안에 있다는 닭과 달걀 문제가 있다. Dropbear는 의존성이 없는 정적 바이너리라 initramfs에 넣기 쉽고, Ubuntu에서는 패키지 두 개와 설정 몇 개면 된다. SSH 키로 로그인하면 BusyBox 셸이 뜨고 거기서 암호를 넘긴다.

# 서버: initramfs에 Dropbear와 BusyBox를 넣는다
sudo apt install dropbear-initramfs busybox-initramfs
# 접속 허용할 공개 키 등록 후 initramfs 재생성
sudo update-initramfs -u

# 재부팅 후 원격에서 접속해 디스크 암호 입력
ssh root@server
cryptroot-unlock

IPMI와 Dropbear는 관리자가 직접 암호를 입력해야 한다는 공통 한계가 있다. 자고 있거나 입원 중이면 서버가 부팅되지 않는다. 무인 해제를 원하면 Clevis와 Tang을 쓴다. Tang은 다른 호스트에서 도는 서버, Clevis는 initramfs에서 도는 클라이언트다. 둘이 만나야 복호화 키가 유도되지만, 어느 쪽도 키 자체를 갖고 있지 않다. Tang은 키 지문이나 Clevis에 대한 상태를 전혀 저장하지 않으며, Solano의 표현으로는 “완전히 무상태이고 익명이며 로그도 기록도 없다”. 여러 Tang 서버 중 N개가 응답해야 풀리도록 구성할 수도 있다.

# Tang 서버: 패키지 하나면 80번 포트로 서비스된다
sudo apt install tang

# 클라이언트: LUKS 볼륨을 Tang 서버에 바인딩
sudo apt install clevis clevis-luks clevis-initramfs
sudo clevis luks bind -d /dev/sda3 tang '{"url":"http://tang.example.lan"}'

질의응답과 댓글에서 가장 많이 나온 질문은 “서버를 통째로 가져가서 네트워크에 연결하면 Tang이 그냥 키를 풀어 주지 않느냐”였다. 답은 Tang 서버가 응답할 대상을 제한하는 것이다. 특정 IP나 사설 서브넷에서만 응답하게 하거나, 원격지 Tang을 하나 두고 모든 Tang의 응답을 요구하는 식이다. 한 댓글 작성자의 회사는 보호 대상 장치의 MAC 주소가 연결된 스위치 포트만 Tang에 닿는 VLAN으로 보내고, 다른 VLAN에서 Tang에 접근하면 IT팀에 알림이 가게 해 두었다.

전체 디스크 암호화가 어려운 경우도 있다. 서버가 계속 떠 있어야 하거나, 데이터가 너무 커서 복제해 암호화할 공간이 없거나, VPS가 디스크 암호화를 지원하지 않는 경우다. Ubuntu가 12년 넘게 제공해 온 홈 디렉터리 암호화는 eCryptfs 기반인데, 관리되지 않아 곧 폐기될 전망이다. 대체재인 fscrypt는 “귀여운 로고나 마스코트가 없다는 것만 빼면 똑같은 일을 하지만” 메인테이너가 있다. ext4에서는 tune2fs로 암호화 기능을 켠 뒤 fscrypt로 특정 디렉터리를 암호화한다. 한 댓글은 eCryptfs처럼 부팅 후에도 별도 암호로만 풀리는 용도라면 fscrypt보다 gocryptfs가 더 맞는 대체재라고 반박했다. 발표 영상과 Solano의 설정 노트가 공개돼 있다.

Debian 프로젝트 리더로서 배운 것

올해 두 번의 임기를 마치고 물러난 Andreas Tille가 MiniDebConf Winterthur에서 DPL 시절을 돌아봤다. 전 DPL이 된 기분이 어떠냐는 질문을 자주 받는데, 해 봐야 안다며 “예상보다 부담이 적었다. 그러니 한번 해 보라”고 청중 중의 미래 DPL에게 권했다. 발표 전체를 관통한 주제는 사람들과 대화하는 일의 중요성이었다.

과제결과
Bug of the Day (신규 기여자 유입)새 Debian 메인테이너 3명 배출, 하지만 “너무 수줍은” 사람들의 장벽은 넘지 못함
ftpmaster 팀 분리trixie 릴리스 후 Archive Operations 팀과 DFSG 팀으로 분리, new 큐 처리가 빨라지고 투명해짐
기한부 위임모든 위임을 10월 만료로 전환, 사전 소통 부족으로 반발을 삼
Salsa 이전Salsa 밖 패키지를 4,000개 이상에서 약 1,700개로 줄여 목표(2,000개 이하) 달성
엄격한 패키지 소유권 완화실패

기한부 위임은 데이터 보호 팀 세 명이 모두 “더 이상 이 일을 하고 싶지 않다”고 공개적으로 밝힌 일에서 출발했다. 흔치 않은 일이었고, 덕분에 새 팀으로 매끄럽게 넘어갔다. 보통은 자원봉사자가 사정이 바뀌어도 동료에게 그만둔다고 말하지 못한다. Tille는 물러나는 것 자체가 “번아웃된 사람이 해야 하는 능동적인 과정”이라는 점이 문제라고 보고, 먼저 계속할지 묻는 편이 “아니오”라고 답하기 쉽다고 판단했다. 2월 “Bits from the DPL”에 이 아이디어를 올렸을 때 아무 반응이 없어 합의가 된 줄 알았는데, 실제로 발표하자 일부 위임자들이 “우리에게 먼저 물었어야 한다”며 불신으로 받아들였다. 그의 결론은 “거버넌스는 어렵고, 침묵은 해석하기 어렵다”였다.

엄격한 패키지 소유권은 가장 아쉬워한 부분이다. 패키지가 500~1,000개이던 시절에는 메인테이너 필드의 이름이 곧 전문가였지만, 41,000개가 넘는 지금은 그렇지 않다. 몇 년째 손대지 않은 패키지가 버려진 것인지 할 일이 없는 것인지 알 수 없고, 메일에 답하지 않는 메인테이너도 있다. 물리학자이면서 Debian Med에서 의료·생물정보학 패키지를 다루는 Tille 자신은 어떤 패키지의 메인테이너 필드에도 이름을 올리지 않고 팀 유지보수만 한다. 2024년 말에는 기본값을 뒤집어 debian/dont_touch_my_package 파일이 없는 패키지는 누구나 손댈 수 있게 하자고 제안했지만 채택되지 않았다. “DPL이 아니어도 Debian의 무엇이든 바꿀 수 있다”며 나중에 다시 시도하겠다고 했다.

LLM에 대한 입장도 밝혔다. 독일인인 그는 외국어인 영어로, 직설적인 독일식 화법이 잘 받아들여지지 않는 문화 속에서 소통해야 했다. DPL은 “늘 친절한 메일만 받는 자리가 아니라서” 감정적으로 답하지 않기 위한 완충재로 LLM을 썼다고 한다.

LLM에게 “메일 초안을 써 줘”라고 하지 않는다. 내가 쓰는 글의 의도는 내 것이고, LLM은 올바른 표현을 찾도록 돕는다. 편집자로 쓰되 저자로 쓰지는 말라. — Andreas Tille

LLM과 무관한 조언도 덧붙였다. 같은 날 답하지 말고, 초안을 써서 하룻밤 자고 다음 날 보내거나, 더 좋게는 다음 날 지우라는 것이다. Debian의 LLM 일반 결의(GR)는 “생성형 AI의 책임 있는 사용” 안이 이겼는데, 그는 이를 기존의 품질·정확성·유지보수성 기준을 지키겠다는 뜻으로 읽었다. 제한 쪽 제안들은 “하면 안 된다”는 말을 싫어하는 Debian 문화에서 과반조차 얻지 못했다. 마지막 교훈으로는 DPL의 말은 무엇이든 “DPL이 하는 말”로 해석된다는 것, 그리고 1년이 지나서야 일을 이해했으니 임기가 1년 단위인 게 다행이라는 것을 꼽았다. 처음부터 2년이 걸린다는 걸 알았다면 나서지 않았을지도 모른다고 했다.

짧은 소식

커널 — 7.3-rc3가 9월 13일 나왔다. 토발즈는 “또 꽤 큰 rc이고, 이번에도 평소보다 파일시스템 쪽 비중이 크다”고 했다. 7.3은 현재까지 개발자 2,638명의 논-머지 체인지셋 16,533개를 받았고 그중 599명이 첫 기여자다. 안정 커널은 9월 11일 7.2.5·6.18.51, 14일 7.2.6·6.18.52·6.12.110·6.6.157·6.1.188·5.15.221·5.10.270이 나왔다. 이번 주 인용문은 Android Binder 이야기다.

드디어 그날이 왔다. Binder IPC 드라이버의 레거시 C 구현을 버리고 Rust 버전으로 간다. 15년 넘게 C 드라이버는 점점 복잡해져서 취약점을 건드리지 않고 유지보수하거나 새 기능을 넣기가 엄청나게 고통스러웠다. (…) Android 기기에서 한동안 성공적으로 돌아갔으니 더 이상 “실험”이라고 부를 수 없다. — Carlos Llamas

  • Emacs 임의 코드 실행 취약점 재발 — CVE-2024-53920의 원래 수정이 불완전했다. Bas Alberts가 Lisp 모드가 아닌 다른 모드에서 신뢰할 수 없는 파일을 보거나 편집해도 임의 코드가 실행될 수 있음을 발견했다. Emacs 24 이후 전 버전이 영향을 받으며, 수정은 Emacs 31.2에 들어가고 업스트림은 구버전에 백포트하지 않는다.
  • Forgejo 16.0.4 / 15.0.8 — 템플릿 저장소로 새 저장소를 만들 때 변수 확장을 악용해 .git 폴더를 만들어 넣으면 호스트에서 임의 파일을 읽고 프로세스를 실행할 수 있는 치명적인 원격 코드 실행 취약점을 고쳤다. 변수 확장 후 .git 폴더를 지우고 저장소를 초기화하도록 바뀌었다.
  • Fedora 45 베타, kmscon 채택 — 커널 내장 텍스트 콘솔을 10년 넘게 개발돼 온 유저 공간 터미널 에뮬레이터 kmscon으로 대체했다.
  • GNU coreutils 9.12 — 21주 동안 16명이 288개 커밋. 모든 출력에 라벨을 붙이는 uname -A가 생겼고, stattail이 failfs·nullfs를 인식한다. 파일이 동시에 삭제되는 중에 디렉터리를 순회하면 일부 유틸리티가 실패하던 “태초부터 있던” 버그도 고쳤다.
  • Julia 1.13 — 패키지 사전 컴파일 가속, REPL 개선, 버전 관리자 Juliaup의 그래픽 인터페이스.
  • PostgreSQL 개발 활동 통계 — Tomas Vondra가 1990년대 말부터의 커밋 추이를 분석했다. 현재 주당 약 50개로 2010년의 두 배이며, 같은 기간 활동 커미터 수도 두 배가 됐다.
  • EuroPython 2026 영상 공개 — 7월 크라쿠프에서 열린 행사의 전체 영상과 정리 글이 올라왔다.

이번 주 개발 인용문 중에는 NLnet Labs의 Alex Band가 LLM 생성 기여를 “공짜 강아지”에 비유한 글이 눈에 띈다. 좋은 뜻이지만 받는 순간 몇 년짜리 책임이 생긴다는 것이다. 리뷰에서는 기여자와 설계 선택을 두고 논의할 수 있어야 하는데, 코드에 대해 물으면 거의 언제나 “몰라요, Claude가 그렇게 짰어요 🤷”라는 답이 돌아와서 받아들일 수 없다고 했다.

행사로는 21~23일 파리 Kernel Recipes, 22~24일 예테보리 Reproducible Builds Summit, 28~30일 토론토 X.Org Developers Conference, 30일~10월 1일 베를린 All Systems Go!가 이어진다. 10월 첫 주에는 프라하에 GNU Tools Cauldron, Linux Plumbers Conference(5~7일), Open Source Summit Europe과 Embedded Linux Conference Europe(7~9일), Linux Security Summit Europe(8일)이 몰려 있다. CFP 마감은 GStreamer Conference가 9월 21일, OpenFest 2026과 Ubuntu Summit 26.10이 10월 1일이다.

이번 주 핵심 요약

  • 커널 빌드 가속 시리즈는 LLM을 “병목을 찾는 도구”로 쓰고 코드는 사람이 다시 쓴 사례다. 개별 개선은 2~12%씩이지만 쌓이면 증분 빌드 70%, 무변경 빌드 90% 단축이 된다. ccache를 쓰는 일상 빌드에서는 체감이 크지 않을 수 있으나, CI에서 반복 빌드를 돌리는 환경이라면 병합 여부를 지켜볼 만하다.
  • PostgreSQL 19는 일정보다 품질을 택하는 중이다. PGQ가 빠졌고 외래 키 배칭도 빠진다. 수정이 몰린 기능이 모두 동결 직전 커밋됐다는 Haas의 관찰은 PostgreSQL만의 교훈이 아니다. 19 도입을 계획 중이라면 11월 이후를 기준으로 잡고, 데이터 체크섬과 FOR PORTION OF는 초기 마이너 릴리스까지 지켜보는 편이 안전하다.
  • blk-iocost BPF는 스케줄러(sched_ext), TCP 혼잡 제어에 이어 struct_ops로 커널 정책을 교체하는 흐름의 연장선이다. 아직 세 번째 RFC라 인터페이스가 바뀔 여지가 크지만, 여러 순차 스트림이 섞이는 워크로드에서 cgroup I/O 불이익을 겪고 있다면 참고할 만하다.
  • 원격 서버 암호화는 Dropbear로 원격 해제, Clevis/Tang으로 무인 해제가 가능하다. 다만 Tang의 보안은 결국 “Tang에 누가 닿을 수 있느냐”에 달려 있으니 네트워크 접근 제어를 함께 설계해야 한다. dm-crypt 성능이 문제라면 no-read-workqueue, no-write-workqueue 옵션부터 확인할 것.
  • Tille의 회고에서 가져갈 것은 “침묵은 해석하기 어렵다”는 교훈이다. 반응이 없다고 합의로 여겨 기한부 위임을 밀어붙였다가 반발을 샀다. 오픈소스 거버넌스에서 변경은 공지만으로 부족하고 당사자와 직접 이야기해야 한다.

원문: LWN.net Weekly Edition for September 17, 2026

답글 남기기