>> Edit article
이름
제목
패스워드
저는 집 데스크탑에는 리눅스만 깔아서 씁니다. 윈도 쓸일 있으면 노트북을 켜서 쓰지요.. 그런데, 이거 하루 죙일 켜놓다 보니까 밤엔 솔직히 시끄럽고 짜증나더군요.. 그렇지만 다시 부팅해서 엑스도 띄우고, 모질라도 띄우고, emacs도 띄우고.. 하는것도 하기 싫고.. 게으르죠? 그래서 찾아본 게 swsusp라는 커널 패치였습니다. 지금 쓸만한 버전은 2.2.18 버전에 맞는 패치였습니다. 2.4.1이나 2.5.2용 패치도 있는데, 이상하게 전 그걸로 패치해서 리줌에 성공한 적이 없더랍니다.. 서스팬드로는 잘 들어가 지는데요.. 이상하죠? 암튼, 전 2.4 커널이 꼭 있어야 하는건 아니니 2.2.18로 만족하고 쓰고 있습니다.. 사실 2.4로 올라가려면 지금 쓰고 있는 pppoed나 ipchains의 firewall rules같은것들도 다 고쳐야 할텐데.. 엄두가 안나더군요.. 아예 패키지로 업데이트를 하면 모를까요.. swsusp를 이용하기 위해서 필요한 건 kernel.org에서 구한 2.2.18 커널 소스, swsusp 홈페이지에서 구한 커널 패치, 그리고 컴파일러는 요즘 새로 나온 컴파일러로 컴파일을 하면 리줌할 때 에러가 나더군요. egcs-1.1.2-12 를 설치해서 커널을 컴파일 하면 됩니다. 이런것들 구하는 건 알아서 하세요.. 아직 갈길이 머니깐요.. 커널 컴파일 설명 역시 자세히 안하겠습니다.. 그냥 방향만 말씀 드리면, 적당한 자리에 커널을 풀고, 패치를 적용합니다. 그런 담에 컴파일 옵션을 조절해 주는데, prompt for development 옵션을 켜주시고, 커널 해킹에서 general setup에서 software suspend를 선택해 주면 기본적인건 됩니다. hardware state restore와 override apm suspend event도 선택해 주면 좋겠지요.. APM BIOS support도 켜주시면 좋겠습니다. 그런 담에 다른 옵션들도 적당히 맞추어서 켜 주시고, 컴파일을 합니다. 커널과 모듈을 인스톨 하고, 참, magic sysrq도 켜주시면 좋습니다. lilo까지 손 본 담에 재부팅을 하면 짜잔.. 하이버네이션이 되는 커스텀 빌드 커널이 완성된 거지요. 하이버네이션 시키는 방법은 여러가지인데, alt-prtst-d를 누르거나 apm -s로 들어갈 수 있고, 아니면 전원 버튼을 눌러도 됩니다. 하.. 여기까지 해서 아무런 문제가 없다면 제가 1원짜리 팁을 쓸 이유가 없지요.. 이제부터가 시작입니다.. 제 삽질의 시작.. 우선 몇번 서스팬드에 들어갔다 나와본 결과 init 프로시져가 모든 시퓨를 잡아먹고 폭주를 해버리는 것을 경험했습니다. 외국의 다른 사용자들도 경험하였던 것인데, 해결방법이 명확하지가 않았었습니다. 사실은 별거 아닌 방법으로 해결할 수 있는데, SysVinit 패키지를 재컴파일 시키면 됩니다. sysvinit-2.77 이나 비슷한 버전을 구해서 src 디렉토리에 들어갑니다. 그런 담에 init.h파일의 내용중 INITDEBUG값을 설정해 줍니다. 즉, #define INITDEBUG 1 요렇게 해주면 되지요.. 그런 담에 컴파일 하고, init 이라는 실행파일은 /sbin/ 밑에 복사해 줍니다. 이렇게 하면 init 프로시져가 맨 첨에 시작되면서 자신의 복제품을 하나 더 만들어서 모든 메시지 처리를 나중의 init에게 맡기는데, 서스팬드 들어갈 때 혹시나 생길수 있는 이밴트에 의한 init 프로시저의 웨이크업과 이에따른 폭주를 막을수가 있다고 합니다. (읽은 내용입니다.. 저도 자세한건 몰라요..) 그리고, 또 하나의 사소한 문제는 파워버튼을 눌러서 서스팬드로 들어갈 때 생기는데, 이게 첨에는 되는데, 두번째부턴 도대체 파워버튼을 눌러도 안들어가지죠. 커널 컴파일을 다시해야 합니다.. 소스를 고쳐서.. /usr/src/linux/arch/i386/kernel/apm.c (/usr/src 에 커널소스를 풀었었음) apm.c파일의 880줄을 찾아서 다음과 같이 바꿔줍니다. if (apm_bios_info.version > 0x100) apm_set_power_state(APM_STATE_REJECT); software_suspend (); waiting_for_resume = 0; // KKR apm_set_time(); // KKR } 물론 // KKR 이 들어간 줄이 제가 바꾼 줄이죵.. 그런 담에 커널을 컴파일 하고 이것 저것 하다보면 잘 동작함을 알 수 있을 겁니다. 이거 하면서 가장 중요한 건 인내심인 것 같습니다.. 사람들이 별로 안 써서 그런지, 몇가지 문제들이 있더군요.. 물론 다 해결 가능하구요.. 참, hanterm에도 문제가 있는데, 사실 xterm과 bash의 시그널 핸들링에 문제가 있어서 깨어났을 때 데드록이 생기는데요, 다행이도 이건 hanterm.org에 가셔서 최신 버전의 hanterm을 받아서 설치하시면 완전히 해결됩니다.. 깨끗이.. 신경쓰지 마시고 문제 있으면 새로 컴파일하시고 설치하세요. 이정도면 도움이 되실 분들도 간혹 있으시겠죠? 흠.. 그럼.. (전 3일밤 샜답니다..냐옹..)
Copyleft
1999-2026 by
JSBoard Open Project
Theme Designed by
IDOO
All right reserved