rc.local에 다음 문구 추가.
echo 1 > /proc/sys/kernel/panic
echo 1 > /proc/sys/kernel/panic_on_oops
0 - 재부팅안함.
1 - 1초 후 재부팅.
2 - 2초 후 재부팅 등.
한가지 더 최신 커널부터는 mtdoops기능이 추가되어 커널 패닉 후에 mtd에 패닉 로그를 기록할 수 있다.
linux-2.6.33/drivers/mtd/mtdoops.c 를 다음 내용을 알맞게 변경한다.
static unsigned long record_size = 4096;
static char mtddev[80]="1"; /* mtd1 => 1, mtd2 => 2 */
static int dump_oops = 1;
올바르게 적용하였으면 부팅시 아래와 같이 attach된 로그가 나온다.
Creating 3 MTD partitions on "mo2440-nor":
0x000000000000-0x000000050000 : "uboot"
0x000000050000-0x0000001f0000 : "kernel"
mtdoops: Attached to MTD device 1
0x0000001f0000-0x000000200000 : "reserved-env"
한가지 더 추가해야할 부분은 패닉시 로그를 write할 루틴인 panic_write함수를 연결해주는 일이다.
여기까지는 작업을 추가해보진 않았다.
앞으로 할 기회가 생기면 다음 코드부분을 부고 연결해주면 될듯싶다.
줏어 들은 말로는 panic_write함수 작성시 DMA및 interrupt를 사용하면 안되며, busy loop를 이용해야 한다. 또 패닉후 자동 재부팅을 너무 빨리 하게 되면 write하기 전에 재부팅이 되므로 적당한 타이밍을 주길 바란다. (관련 echo 1 > /proc/sys/kernel/panic)
linux-3.2.5/drivers/mtd/onenand/onenand_base.c
아래 함수 참조.
static int onenand_panic_write(struct mtd_info *mtd, loff_t to, size_t len,
size_t *retlen, const u_char *buf)
'OS' 카테고리의 다른 글
Linux 로그 종류 (0) | 2015.05.20 |
---|---|
[기본 명령어] - 윈도우 업타임 확인 (Windows Uptime) (0) | 2015.05.20 |
Linux disk I/O 스크립트(테스트중) (0) | 2015.05.20 |
CentOS 5 32bit - 메모리 4G 인식 (0) | 2015.05.20 |
vi편집기 - set 명령어 및 옵션 (0) | 2015.04.11 |