Chap#10 삽질
run_qemu.sh
- 이전에 i8086 architecture debugging을 위해 qemu를 i386으로 실행시킴
- qemu를 i386으로 실행시키고 IA-32e Mode 지원이 왜 안되지 하면서 1시간 삽질….
O_DEBUG="no"
while getopts d opts; do
case $opts in
d) O_DEBUG="yes"
;;
esac
done
if [ "${O_DEBUG}" = "yes" ]; then
qemu-system-x86_64 -L . -m 64 -fda /mnt/d/home/study/mint64os/Disk.img -rtc base=localtime -M pc -s -S
#qemu-system-i386 -L . -m 64 -fda /mnt/d/home/study/mint64os/Disk.img -rtc base=localtime -M pc -s -S
fi
if [ "${O_DEBUG}" = "no" ]; then
qemu-system-x86_64 -L . -m 64 -fda /mnt/d/home/study/mint64os/Disk.img -rtc base=localtime -M pc
#qemu-system-i386 -L . -m 64 -fda /mnt/d/home/study/mint64os/Disk.img -rtc base=localtime -M pc
fi
run_qemu.sh 수정
O_DEBUG="no"
O_ARCH="x86_64"
while getopts da: opts; do
case $opts in
d) O_DEBUG="yes"
;;
a) O_ARCH=$OPTARG
;;
esac
done
if [ "${O_DEBUG}" = "yes" ]; then
qemu-system-${O_ARCH} -L . -m 64 -fda /mnt/d/home/study/mint64os/Disk.img -rtc base=localtime -M pc -s -S
fi
if [ "${O_DEBUG}" = "no" ]; then
qemu-system-${O_ARCH} -L . -m 64 -fda /mnt/d/home/study/mint64os/Disk.img -rtc base=localtime -M pc
fi
+... 코드는 거짓말 하지 않는다...
왜인지는 모르겠지만 NULLDESCRIPTOR에 db 0x00 한 줄이 더 추가되어 있었다... 디버깅 끝에 jmp 0x18: 0x10020 에서 이상한데로 뛰는 것을 보고 오류를 찾을 수 있었는데 이것도 참 오래걸렸따.... 오류 찾고 디버깅 하고 수정하려면 오래걸리니까 처음부터 코드를 집중해서 잘 보도록 하자...