[리눅스커널] 커널 동적 타이머를 사용해 실행 시각을 측정해보기
By Guillermo Austin Kim | 2019년 12월 8일 |
이번에는 조금 더 재미있는 패치 코드를 같이 볼까요? 다음은 패치 코드의 내용입니다. diff --git a/kernel/workqueue.c b/kernel/workqueue.cindex cd8b61b..128c998 100644--- a/kernel/workqueue.c+++ b/kernel/workqueue.c@@ -49,7 +49,7 @@ #include <linux/uaccess.h> #include <linux/sched/isolation.h> #include <linux/nmi.h>-+#include <linux/sched_clock.h> #include "workqueue_internal.h" enum {@@ -2029,6 +2029,18 @@
리눅스에서 시스템 로그를 메모리에만 기록하기 (journald.conf)
By 반달가면 | 2022년 8월 23일 |
우선, journalctl을 통해서 리눅스에서 시스템 로그를 확인하는 방법은 이전 게시물을 참고하자. 여기로 만약 시스템 로그를 더 이상 기록하지 않고자 한다면 설정 파일을 편집해야 한다. /etc/systemd/journald.conf 파일이다. 이 파일을 루트 권한으로 열어서 편집한다. sudo vi /etc/systemd/journald.conf 파일 내용에 [Journal] 항목 하위에 있는 Storage 옵션을 아래와 같이 volatile로 지정하고 저장한다. Storage=volatile 이제 systemd-journald를 재기동하면 시스템 로그를 더 이상 디스크에 기록하지 않고 메모리에만 저장할 것이다. # systemd-journald 재기동 sudo sys
[리눅스커널][디버깅] 유저공간 High Memory Zone 페이지 할당 과정
By Guillermo Austin Kim | 2019년 3월 18일 |
커널 크래시가 발생한 콜스택은 다음과 같습니다.프로세스는 이름은 Debugger인데 유저 프로세스입니다.-001|__dabt_svc(asm)-->|exception-002|__list_del(inline)-002|list_del(inline)-002|buffered_rmqueue(inline)-002|get_page_from_freelist(?, ?, order = 0, ?, high_zoneidx = 0, alloc_flags = 449, pref-003|__alloc_pages_nodemask(gfp_mask = 33685722, order = 0, zonelist = 0xC1731380, nodema-004|__alloc_zeroed_user_highpage(inline)-004|alloc_zer
[bash: sed] 16진수값(hex) 대체하기
By 반달가면 | 2017년 11월 14일 |
sed에서 문자열이 아니라 16진수값을 대체할 수도 있다. 따라서 텍스트 파일뿐만 아니라 바이너리 파일에 대해서도 대체 기능을 사용할 수 있다(sed를 이용한 문자열 대체의 기본은 이전 게시물을 참고하자. 여기로). 아래의 예시를 보자. # my_file.dat에서 모든 0xff를 0xf0으로 대체, my_file.mod.dat로 저장 sed 's/\xff/\xf0/g' my_file.dat > my_file.mod.dat 16진수를 나타내기 위해 'x'를 사용하는데, 문자 x를 의미하는 것이 아니므로 역슬래시(\)를 추가해 주어야 한다. 즉 \xff는 0xff를 의미하게 된다. 만약 연속되는 16진수값을 대체할 경우에는 각 값마다 \x를 붙인다. 아래의 예시를 보자. # my_fi