도서 소개
진화된 리눅스 커널의 많은 기능 중에서 수요가 있는 것, 매우 흥미로운 주제를 선정해서 이것들에 대해 설명함과 동시에, 내부 동작이나 원리에 대해서도 해설하고 있다. 이를 능숙하게 다루기 위한 툴이나 설정방법, 튜닝에 대해서도 폭넓게 설명한다.
기능을 능숙하게 다루는 데 있어 필요한 정보나 명령도 다루고 있다. 커널 이외의 것이라도 관련된 것이라면 애플리케이션에 대해서도 다루고 있다. 기본적으로는 TUI를 기반으로 설명하고 있지만, 일부는 GUI 해설도 포함하고 있다.
버전은 주로 리눅스 커널 2.6.18부터 집필 시점에서 최신인 리눅스 커널 3.0까지의 정보를 싣고 있다. 일부에서는 Red Hat Enterprise Linux 4(RHEL4 : 리눅스 커널 2.6.9 기반)의 기능도 싣고 있다. 동작 확인은 업무에서도 많이 이용되고 있는 RHEL이나 누구나 이용할 수 있는 Fedora, CentOS 등으로 시행하고 있다.
출판사 리뷰
인터넷상에는 리눅스에 관한 정보가 넘쳐나고 있지만, 대단히 복잡하게 진화한 리눅스 커널을 능숙하게 사용하거나 리눅스 커널 개발에 참가하는 데 필요한 정보는 충분히 얻을 수 없는 현실에서 리눅스 기술자가 특히 흥미를 가지는 항목을 선택해서 한 권의 책으로 정리했다. 저전력화나 가상화에 관한 설명은 현재 시장의 요구에 맞으며, 고도화된 커널의 프로파일링 기능도 커널개발자의 필수 도구가 될 것이다.
이 책은 진화된 리눅스 커널의 많은 기능 중에서 수요가 있는 것, 매우 흥미로운 주제를 선 정해서 이것들에 대해 설명함과 동시에, 내부 동작이나 원리에 대해서도 해설하고 있다. 이를 능숙하게 다루기 위한 툴이나 설정방법, 튜닝에 대해서도 폭넓게 설명한다.
리눅스 커널은 오픈소스 소프트웨어이며 누구라도 개발에 참가할 수가 있다. 리눅스 커널의 코드는 수많은 노력과 시간이 깃들여있다. 각 분야에 대해서는 전문지식을 가진 메인테이너가 오랜 기간에 걸쳐 관리함으로써 계속해서 세련되어져 가고 있다. 메일 기반으로 개발이 이루어지고 있으므로 논의를 주고받거나 현재 코드에 이르게 된 경위를 볼 수도 있다. 리눅스 커널 코드를 봤을 때 그 지혜나 연구에 감탄함과 동시에 그 당시의 노고가 전해져 오는 듯할 때가 있다. 이 책을 계기로 꼭 그 훌륭한 세계에 이르러서 많은 커널 해커가 탄생하기를 기원한다.
기능을 능숙하게 다루는 데 있어 필요한 정보나 명령도 다루고 있다. 커널 이외의 것이라도 관련된 것이라면 애플리케이션에 대해서도 다루고 있다. 기본적으로는 TUI를 기반으로 설명하고 있지만, 일부는 GUI 해설도 포함하고 있다.
버전은 주로 리눅스 커널 2.6.18부터 집필 시점에서 최신인 리눅스 커널 3.0까지의 정보를 싣고 있다. 일부에서는 Red Hat Enterprise Linux 4(RHEL4 : 리눅스 커널 2.6.9 기반)의 기능도 싣고 있다. 동작 확인은 업무에서도 많이 이용되고 있는 RHEL이나 누구나 이용할 수 있는 Fedora, CentOS 등으로 시행하고 있다.
1장 『커널 입문』에서는 커널 Hack을 향해 내딛는 첫걸음으로써 필요한 이러한 사항들과 함께 리눅스 커널 특유의 기법에 대해서도 설명하도록 한다.
2장 『리소스 관리』에서는 리눅스 커널에서의 리소스 관리 기능에 대해 몇 가지를 설명하게 된다. 특히 리눅스 커널 특유의 Cgroup에 의한 리소스 제어는 가상화에서의 리소스 제어도 담당하고 있는 중요한 기능이다.
3장 『파일시스템』에서는 RHEL6 등에서 표준 파일시스템으로 채택된 ext4의 사용방법 및 튜닝, ext2/ext3로부터의 이행방법에 대해서 적고 있다. 또한, I/O의 벤치마크를 수행하기 위한 fio 및 유저 공간의 파일시스템 FUSE를 소개한다.
4장 『네트워크』에서는 네트워크에 관한 커널의 기능에 대해 설명한다. TUN/TAP 디바이스, 브리지 디바이스, VLAN 디바이스, Bonding 드라이버와 네트워크 스케줄러, dropwatch에 대해 다루고 있다.
5장 『가상화』에서는 KVM 및 Xen을 이용한 가상화 기술에 대해 설명한다. 컴퓨터의 역사를 살펴보면 다양한 것에 대한 가상화가 이루어져 왔다. 스케줄러에 의한 CPU 리소스 가상화나 메모리 관리에 의한 가상 메모리 등도 가상화의 일종이다. 여기서 다룰 가상머신 기술은 CPU, 메모리, I/O 디바이스를 포함한 시스템 전체를 가상화하는 기술이다. 저전력화 등을 목적으로 한 시스템 리소스 통합뿐만 아니라 레거시 OS 이용이나 동적 리소스 생성을 위해서도 이용된다. 여기서는 가상머신을 최대한 이용하기 위한 테크닉을 소개한다.
6장 『저전력화』에서는 요즘의 컴퓨터는 다양한 저전력화 기능이 탑재되어 있지만, 어디를 어떻게 손대야 저전력화인지 잘 모르는 때도 많이 있다. 여기서는 저전력화 지식을 높이기 위해 리눅스의 저전력화에 대해 소개한다.
7장 『디버그』에서는 커널 디버그 기능에
작가 소개
저자 : 오오이와 나오히로
미라클 리눅스 주식회사 소속의 소프트웨어 엔지니어. 대학에서는 휴대전화 등 안테나로 수신하는 무선 고주파수를 다루는 아날로그 회로를 연구했으며 소프트웨어를 전혀 모른 채 리눅스 업무에 종사함. 사회인이 되기까지 거의 책을 읽은 적이 없지만, 최근에는 잡지도 집필하고 있다.『Debug Hacks』저자로, 오라일리 재팬에서 Hacks 시리즈 두 권째 집필.
저자 : 이케다 무네히로
대학생 무렵, X68000의 gcc가 순정 컴파일러보다도 몇 배 빠른 코드를 생성하는 것을 목격한 뒤에 자유 소프트웨어/오픈소스 소프트웨어의 가능성을 확신한다. 그 후 찻집 점원, 생산기술자, 하드웨어 엔지니어 등 우여곡절을 겪은 후에 리눅스 커널 개발에 관여하게 된다. 회사도 국가도 뛰어넘어 세계 최고의 기술자와 경쟁하는 것이 이 세계의 가장 매력적인 부분이라고 느끼고 있다. 현재 미국거주. 취미는 음악연주. 드러머이자 보컬리스트지만 최근 몇 년은 베이스에 몰두하고 있다. 기술자로서의 실력과 마찬가지로 아직은 잘 나가고 있지 않지만, 본래 포기하지 않는 타입.
저자 : 시마모토 히로시
자칭 소프트웨어 엔지니어. 문제 분석이나 디버그를 전문으로 하고 있다. 트러블슈팅에 있어서 로그나 코어덤프로부터 소프트웨어의 오류를 찾아내는 것이 주된 업무라고 말할 수 없는 것은 아니다. 필연적으로 바이너리나 CPU 동작까지 고려한 작업이 많고 x86 아키텍처나 스케줄러 관련된 커뮤니티 활동을 하고 있다. 그러나 최근에는 커뮤니티 활동을 그다지 많이 하지 않고 현재는 가상화 관련된 활동을 계획하고 있다.
저자 : 다케베 아키오
Xen, KVM 등 가상화 관련 오픈소스 커뮤니티에서 개발에 참가. 주로 IA64 아키텍처나 RAS 계열, PCI path-through 개발을 담당. 오픈소스 커뮤니티에서 친해진 엔지니어가 저전력화 기술을 잘 아는 엔지니어여서 저전력화에도 관심을 두고 있다. 현재는 Ruby on Rails로 클라우드 관련 소프트웨어를 개발 중. 완성되지 않은 프로그램을 손대는 것이 취미.
저자 : 히라마츠 마사미
리눅스 커널트레이스 관련 메인테이너. perf나 ftrace의 동적 이벤트를 유지보수하고 있다. SystemTap 개발에도 참가하고 있는데 최근에는 게임 프로그래밍 등 전적으로 트레이스 이외에 시스템SystemTap 용도를 넓히는 데 열심이다. 주로 사용하는 것은 bash와 vim이지만 hjkl로 커서를 움직이지는 못하는 vim 유저. Ubuntu와 Fedora를 애용하고 있다. 현재 관심분야는 ARM Linux, Btrfs 등.
목차
1장 커널 입문
01. 리눅스 커널 구하기
02. 리눅스 커널 컴파일
03. 커널 모듈 작성법
04. Git 사용하기
05. checkpatch.pl로 패치의 서식 체크
06. localmodconfig로 커널 컴파일 시간 단축
2장 리소스 관리
07. Cgroup, Namespace, Linux 컨테이너
08. 스케줄링 정책
09. RT Group Scheduling과 RT Throttling
10. Fair Group Scheduling
11. cpuset
12. Memory Cgroup으로 메모리 사용량 제한
13. Block I/O 컨트롤러로 I/O 우선순위 설정
14. 가상기억 서브시스템 튜닝
15. ramzswap
16. OOM Killer의 동작과 원리
3장 파일시스템
17. ext4 이용하기
18. ext4로의 이행
19. ext4 튜닝
20. fio를 이용한 I/O 벤치마크
21. FUSE
4장 네트워크
22. 네트워크 대역제어
23. TUN/TAP 디바이스
24. 브리지 디바이스
25. VLAN
26. bonding 드라이버
27. Network Drop Monitor
5장 가상화
28. Xen 사용하기
29. KVM 이용하기
30. DVD를 사용하지 않고 OS 인스톨하기
31. 가상 CPU 할당방법을 변경해서 성능 높이기
32. Extended Page Tables(EPT)를 이용해서 게스트OS 성능 높이기
33. IOMMU로 게스트OS 고속화
34. IOMMU+SR-IOV