Forums
노트북의 콘솔에서 ./reboot 명령은 제대로 실행되지만 엑스윈도에서 ./reboot 명령을 실행하면 잠시 후 액정화면이 A4용지 백지처럼 변합니다.
노트북 액정에 아무런 내용도 출력되지 않고 흰 화면만 나타난 줄 알았는데 액정을 비스듬히 빛에 비춰보면 reboot 명령이 실행되서 grub 화면이 나타납니다.
이러한 상태에서 리눅스로 부팅해서 콘솔에 reboot 명령(아래 소스의 reboot가 아닙니다.)을 입력하면 다시 컴퓨터를 시작해도 화면이 허~옇게 나옵니다.
전원 버튼을 눌러서 컴퓨터를 강제로 재시작해야 그제서야 화면 색이 제대로 출력됩니다.
뭔가 이상한거 같아서 제 데스크탑의 콘솔, 엑스윈도에서 ./reboot 명령으로 테스트 해봤는데 정상적으로 작동합니다.
제 노트북이 똥컴이라서 그런건지.. 왜 그런지 이유를 모르겠네요. 시스템을 재시작하는 어셈블리 소스입니다.
globl _start
_start:
movl $88, %eax
movl $0xfee1dead, %ebx
movl $672274793, %ecx
movl $0x1234567, %edx
movl $0, %esi int $0x80
위 소스를 reboot.s 파일로 저장합니다. 그리고, 아래 두 명령을 프롬프트에 입력합니다.
as -gstabs -o reboot.o reboot.s
ld -o reboot reboot.o
./reboot 명령을 콘솔과 엑스 윈도에서 실행합니다.
(./reboot 를 일반 사용자 계정으로 실행하면 segmentation fault 에러가 발생합니다. root로 실행해야 segmentation fault가 발생하지 않습니다.)
그리고, 콘솔과 엑스윈도에서 제대로 작동하는지 아래 답글로 남겨주시면 감사하겠습니다.
./reboot
답글 답니다.
lenny + asus EEEPC에서 테스트 해보았습니다. x에서, 콘솔에서 해보았는데 둘 다 정상적으로 작동하였습니다.
//소스 코드에서 .global에 a가 빠졌더군요! 고쳐주시면 어셈을 모르시는 분들도 테스트해주실 수 있을거라 생각합니다. : )
감사합니다.
.globl은 오타가 아닌 듯 합니다. .globl 또는 .global으로 작성해도 프로그램은 정상적으로 작동합니다.
gdb로 확인해보면 ecx 레지스터에 20이 저장되었습니다. :)
http://lh6.ggpht.com/_o8c3Ao4fxbQ/S6XCcV4HbZI/AAAAAAAAAJ0/DRxXKaLvO0M/l…
좋은 것 알았습니다.
-----------------------------------------------------------------
아;; 저는 .global만 알고있었는데 둘다 사용되네요.
찾아보니 둘 다 호환성을 위해 허용한다네요. :) 좋은 것 알았습니다.
원인이 조만간 밝혀지길 바랄께요~