Kernel hacking
Show timing information on
printks
- printk 함수를 사용하여 출력할 경우
[00123.222356]같은 형태의 시간 정보가 함께 출력된다. 즉 실행되는 시간 정보가
자동으로 출력되는 형태
Magic SysRq key
- Magic SySRq key : [Y]로 설정할 경우 시스템이 심각한
문제가(craSheS) 있어도 통제할 수 있습니다. 예를 들면 버퍼
캐시를 디스크로 옮기고, 시스템을 리부트하거나 상태 정보를 표시합니다.
이 기능은"<aLt>+<SysRQ>"를 누른 채 k, r, s 등
<command key>를 눌러 사용합니다. SysRQ 키가
없는 키보드는 PrtSc 키를 누르면 됩니다.
Enable unused/obsolete exported
symbols
- 모르겠다; 해석이 안됨;
Kernel debugging
- 드라이버를 개발하거나 디버깅을 하거나 커널의 문제를 확인하기 위해서
필요하다.
(17) Kernel log buffer size (16 =>
64KB, 17 => 128KB)
- log buffer size
17 => 128 KB for S/390
16 => 64 KB for x86 NUMAQ or IA-64
15 => 32 KB for SMP
14 => 16 KB for uniprocessor
13 => 8 KB
12 => 4 KB
Detect Soft Lockups
- Software Lockups의 경우는 흔히 Hang이라고 표현한다.
누구나 알다시피 특정 Application이나 서비스가 OS의
점유권을 가져간채 Job 완료 유무와 관계 없이 계속해서 OS에게
점유권을 돌려주지 않은체 가지고 있는 상황.
이런 경우에는 Panic이나 Blue Screen조차 발생하지 않으며
그저 무응답 상태로 멈춰 있게 된다.
Detect Hung Tasks
- 어떤 환경에서 커널의 태스크가 인터럽트 할 수 없는
슬립상태(D-state)에 영구적으로 빠질 수 있으며 그에 따라
시스템을 종료하지 못할 수도 있다. 이러한 상태에 빠진 태스크를 감지하기
위한 옵션.
Panic (Reboot) On Hung
Tasks
-Hung Tasks가 발생하면 커널 패닉이
발생한다.
Collect scheduler
statistics
- 스케쥴러의 활동이나 /proc/schedstat 등에서 제공되는
스케쥴러에 코드를 추가시키거나 자료 수집에 관련된
루틴을 삽입할 수 있다. 이같은 자료는 스케쥴러를 튜닝하거나 디버깅하는데
이용될 것이다.
Debug slab memory
allocations
- kernel에서 메모리를 할당하는 방법중 하나로 동적 메모리 할당을
위한 장치다.
RT Mutex debugging, deadlock
detection
- RT Mutex의 경우 deadlock이 발생한 어플이 충돌한후
잠금을 적절히 해제 하는 문제를 해결하기 위한 장치.
Built-in scriptable tester for
rt-mutexes
-rt mutex의 테스터를 위한 기능
Spinlock and rw-lock debugging: basic
checks
- Spinlock : 다른 쓰레드가 lock을 소유 하고 있을 경우 그
lock이 반환 될때까지 계속해서 확인하며 대기
rw-lock : read작업은 동시에 가능, write는 값을 변경
할 수 있으니 하나에만. read중에는 변경 금지.
라는 기본적인 3가지를 지키지 위해 만들어진
장치.
NMI watchdog과 함께 사용하면 spinlock 및
deadlock까지 디버깅할 수 있다.
Mutex debugging: basic
checks
- mutex semantics violations를 찾고 기록하기 위한
기능.
RW-sem debugging: basic
checks
- read-write semaphore semantics
violations를 찾고 기록하기 위한 기능.
Lock debugging: detect incorrect freeing
of live locks
- 각 lock들의 안정성을 검사하기 위한 옵션.
Lock debugging: prove locking
correctness
- deadlock이 일어나기 까지 일어난 모든 locking에 대한
report를 제공한다.
Lock usage statisitics
- tracking lock에 대한 논점이다.
자세한
것은 Documentation/lockstat.txt
Spinlock debugging:
sleep-inside-spinlock checking
- 각종 루틴들이 sleep에 의한 오류를 발생시키고 있을때
spinlock으로 하여금 그 오류를 해결 하도록한다.
Locking API boot-time
self-tests
- bootup 때 커널은 간단한 self-test를 수행한다. 이
test는 디버깅된 메커니즘이나 그외에서 locking bug가 발생했는지
확인하는 역할을 한다.
kobject debugging
- 몇몇 kobject들의 디버깅 메세지를 syslog에
기록
Highmem debugging
- high memory systems상의 error
checking
Compile the kernel with debug
info
- kernel image에 디버깅 정보가
포함된다.
--- Debug Filesystem
- debugfs는 커널 개발자들이 디버깅 파일 정보를 위해 사용하는
가상의 파일 시스템이다. 이같은 파일을 읽거나 쓸수 없다면
필요없을 것이다. 아래는 나도 전혀 모르거니와..아직은 필요없을 듯하여
다음을 기약함.
Debug VM
Debug linked list
manipulation
Compile the kernel with frame
pointers
Force gcc to inline functions marked
'inline'
Delay each boot message by N
milliseconds
torture tests for RCU
Sample kernel code --->
Check for stack overflows
Stack utilization
instrumentation
--- Page alloc debug is incompatible
with Software Suspend on i386
Write protect kernel read-only data
structures
Use 4Kb for kernel stacks instead of
8Kb
'Linux' 카테고리의 다른 글
두 디렉토리에서 Removed List 뽑아내기 (0) | 2010.12.08 |
---|---|
빈 디렉토리 찾아서 지우기 (0) | 2010.11.18 |
커널 메시지 보기 and 화면 로그 저장하기 전체공개 (0) | 2010.10.19 |
Ubuntu의 apt-get 명령어 정리 (0) | 2010.10.18 |
grep 과 find 2 (0) | 2010.10.17 |