매직 SysRq 키

[섬네일|[SysRq 키]]

**매직 SysRq 키**(Magic SysRq key)는 리눅스 커널이 이해하는 키 조합으로, 시스템 상태와 관계없이 사용자가 다양한 낮은 수준의 명령을 수행할 수 있게 한다. 이는 종종 시스템 멈춤에서 복구하거나, 파일 시스템을 손상시키지 않고 컴퓨터를 재부팅하는 데 사용된다.

이 키 조합은 재해 복구를 위한 기능에 접근할 수 있게 한다. 이러한 의미에서, 이는 이스케이프 시퀀스의 한 형태로 볼 수 있다. 제공되는 주요 명령은 파일 시스템을 강제로 언마운트하고, 프로세스를 종료하며, 키보드 상태를 복구하고, 기록되지 않은 데이터를 디스크에 쓰는 수단이다.

매직 SysRq 키는 커널 패닉이나 커널이 제대로 실행되는 것을 방해하는 하드웨어 오류와 같은 특정 조건에서는 작동할 수 없다.

## 구현
리눅스 커널에는 매직 SysRq 기능을 구현하는 `sysrq.c`가 포함되어 있다. 매직 SysRq 기능은 드라이버 코드의 낮은 수준에서 직렬 장치에 의해 호출된다.

## 명령
키 조합은 와 명령을 제어하는 또 다른 키로 구성된다.  키를 계속 누르고 있는 한, 명령 키를 누르기 전에  키를 놓을 수 있다.

이 조합은 항상 QWERTY 키보드 레이아웃을 전제로 한다. 예를 들어, 드보락 자판에서는 시스템을 종료하는 조합이  키 대신  키를 사용한다. 또한, 일부 키보드에는 별도의  키가 없을 수 있다. 이 경우, 별도의  키가 있어야 한다.

일부 장치, 특히 랩톱에서는 매직  키를 사용하기 위해  키를 눌러야 할 수 있다. 예를 들어, 씽크패드 카본 X1에서는 가 를 동시에 누른 다음, 를 계속 누른 상태에서 과 를 놓으면 활성화된다.

SysRq 기능은 키보드 없이도 접근할 수 있다. 아래의 를 참조한다. 일부 명령은 `/proc/sys/kernel/sysrq`의 비트마스크 값에 지정된 대로 기본적으로 비활성화될 수 있다는 점에 유의한다.

 명령의 예시 출력:

```text
sysrq: HELP : loglevel(0-9) reboot(b) crash(c) terminate-all-tasks(e) memory-full-oom-kill(f) kill-all-tasks(i) thaw-filesystems(j) sak(k) show-backtrace-all-active-cpus(l) show-memory-usage(m) nice-all-RT-tasks(n) poweroff(o) show-registers(p) show-all-timers(q) unraw(r) sync(s) show-task-states(t) unmount(u) force-fb(v) show-blocked-tasks(w) dump-ftrace-buffer(z) dump-sched-ext(D) replay-kernel-logs(R) reset-sched-ext(S)
```


## 설정
이 기능은 커널 구성의 컴파일 시간 옵션인 와 Sysctl 커널 매개변수인 에 의해 제어된다.

최신 커널 (2.6.12 이후)에서는 매직 SysRq 키가 어떻게 사용될 수 있는지에 대해 더 세밀하게 제어할 수 있다. 이러한 시스템에서는 에 기록된 숫자가 0, 1 또는 1보다 큰 숫자일 수 있으며, 이는 어떤 기능을 허용할지를 나타내는 비트마스크이다. 우분투에서는 부팅 시 에 정의된 값으로 설정된다.

## 용도
저널링 파일 시스템이 등장하기 전에는 매직 SysRq 키의 일반적인 용도 중 하나는 잠긴 리눅스 컴퓨터를 안전하게 재부팅하는 것 (**REISUB**이라는 니모닉으로 표시되는 키 누름 시퀀스 사용)으로, 파일 시스템 손상 위험을 줄였다. 최신 파일 시스템에서는 동기화 및 언마운트가 플러시되지 않은 데이터를 디스크에 강제로 쓰는 데 여전히 유용하지만, 파일 시스템 손상을 방지하는 데 더 이상 필요하지 않다 (그리고 멈춤이 커널의 불량 상태로 인해 발생하는 경우 손상 위험을 증가시킬 수 있다). 우분투와 데비안 같은 배포판에서 kernel.sysrq의 기본값은 각각 176 (동기화, 언마운트, 재부팅 기능 허용) 및 438 (동기화, 언마운트, 재부팅 기능 외에 로그레벨, 언로우, 나이스-올-RT-태스크 허용)으로 유지된다.

과거의 또 다른 용도는 정지된 그래픽 프로그램을 종료하는 것이었다. 이는 X 윈도 시스템이 그래픽 모드와 입력 장치에 대한 완전한 제어권을 가지고 있었기 때문이다.

 명령을 포함하지 않는 배포판에서는  키 시퀀스가 텍스트 콘솔로 강제 전환할 수 있다. 일부 시스템에서는  대신  또는 을 사용해야 할 수 있다.

## 매직 SysRq를 호출하는 다른 방법
매직 SysRq 키는 원래 디버깅을 위해 커널의 키보드 핸들러의 일부로 구현되었지만, 이 기능은 proc 파일 시스템을 통해서도 노출되었으며, 헤드리스 및 원격 시스템에 확장된 관리 기능을 제공하는 데 일반적으로 사용된다. 사용자 공간 프로그램 (예: 명령줄 셸)에서 SysRq는 에 쓰기(예: )를 통해 접근할 수 있다.

많은 임베디드 시스템에는 키보드가 연결되어 있지 않지만, 실행 중인 시스템에 텍스트를 입력/출력하기 위해 직렬 콘솔을 사용한다. 직렬 브레이크 신호를 보낸 다음 원하는 키를 눌러 직렬 콘솔을 통해 매직 SysRq 기능을 호출할 수 있다. 브레이크를 보내는 방법은 직렬 콘솔에 연결하는 데 사용되는 터미널 프로그램이나 하드웨어에 따라 다르다. 이 기능을 활성화하려면 Sysctl 옵션을 설정해야 한다.

리눅스 데몬  및 은 일반 텍스트 암호로 인증한 후 TCP 연결을 통해 SysRq 기능에 접근하는 방법을 제공한다.  데몬은 시스템 부하 평균이 특정 임계값을 초과할 때 미리 구성된 SysRq 트리거를 호출한다.

젠 하이퍼바이저는  명령을 통해 호스트된 도메인에 매직 명령을 전송하는 기능을 가지고 있다. 또한,  뒤에 원하는 키를 보내는 브레이크 시퀀스를 통해 젠 파라버추얼 콘솔에서 SysRq 명령을 호출할 수 있다.

KVM 하이퍼바이저는  명령을 통해 호스트된 도메인에 매직 명령을 전송하는 기능을 가지고 있다.
예:

```text
virsh send-key --domain domainname --keycode KEY_LEFTALT KEY_SYSRQ KEY_S
```


크롬북에는 키보드가 있지만 전용 SysRq 키는 없다. 대신  ()을 사용한다. 하지만 일부 키는 다른 기능을 가지고 있다.

IBM 파워 시스템즈 서버는 하드웨어 관리 콘솔에서  뒤에 원하는 키를 사용하여 매직 SysRq 기능을 호출할 수 있다.

IBM 메인프레임 파티션은 3270 또는 HMC에서  뒤에 원하는 키를 사용하여 매직 SysRq 기능을 호출할 수 있다.

## 같이 보기
* Stop-A, 썬 마이크로시스템즈의 오픈 펌웨어 (OpenBoot)에 접근하는 데 사용되는 키 시퀀스
* 콘솔 서버
* KVM 스위치
* 시스템 콘솔

## 각주

## 외부 링크

* 
* 
* 
* 
* 

분류:시스템 관리
분류:리눅스 커널 특징