Ksplice-리부팅 없이 커널 패치!!!
리눅스 관련 기사를 보다가 눈에 들어오는 기사 발견~
리부팅 없이 커널 패치가 가능하다는 Ksplice라는 프로젝트이다.
아직은 대충 내용을 봤기 때문에 정확한 작동방법은 파악하진 못했지만,
현재 사용하고 있는 커널과 패치된 새로운 커널의 컴파일된 object의
차이가 나는 코드를 별도의 object로 뽑아내 현재 사용하고 있는 커널에
run-time binding을 하는 구조인 것으로 보인다.
이러한 구조로 인해 커널 내부에 항상 사용하고 있는 자료구조가 변경되어야
하는 경우는 적용하기 어렵겠지만, 코드의 작동 방식의 변경은 함수단위의
binding을 통해 충분히 가능하리라고 생각한다.
이에 대한 자세한 내용은 별도의 실험자료에서 밝히고 있는데, 얼마간의 기간동안
나온 보안 패치를 적용해 본 결과 80%이상의 패치를 Ksplice를 통해 리부팅 없이
적용할 수 있었다고 한다.
긴급 패치인 경우에 상당히 유용한 기능을 제공할 수 있을 것으로 보이며,
만일 좀더 일반화 될 경우에는 Ksplice의 구조에 맞추어 애초에 패치가
쉬운 방향으로 코드를 만드는 방법도 있을 것으로 보인다.
한편으로는 이러한 생각을 해 본다.
커널 개발자들의 경우에 이 방법을 통해 쉽게 디버깅을 한다거나,
또는 자신이 만든 커널 소프트웨어의 문제점을 알았을 때,
downtime 없는 복구 방법을 만들 수 있을 것으로 보인다.
예전 생각이 좀 난다... 커널 펑션을 symbol table을 통해 hooking을 하여
임의의 용도로 변경을 할 수 있도록 간단한 테스트를 진행했던 적이 있었는데,
아무튼 이렇든 저렇든 재미있는 생각인것 같다~~~