본문 바로가기

Computer/0x02 운영체제

OS 개발하기 - 1

OS 개발하기 - 1




 협소설을 보면, 강호에는 고수들의 절대무공과 내공이 펼치는 향연의 세계관에 흠뻑 빠지게 됩니다.

그래서 이런 생각을 하곤 합니다. 만약 실제로도 존재한다면 어떨까?


그런데 그런 세계가 실제로 존재 했으니 저는 그것을 바로 '해킹의 세계'라고 말할 수 있습니다.

이곳에서는 크게 2가지 부류의 사람이 있습니다.


화이트해커: 순수하게 공부와 학업을 목적으로 해킹을 하는 사람으로, 정보보안 전문가 라고 합니다.

블랙해커: 이해관계나 명예를 위해 다른 사람의 컴퓨터 시스템이나 네트워크에 침입하는 해커나 크래커

를 말합니다.


저는 화이트해커가  되는 것이 목적이기 때문에 해킹을 순수한 공부를 위해 공부하고 있습니다.

그러나 이와는 반대되는 목적으로 블랙해커가 있습니다.


똑같이 열정적이고 해킹을 배우고 같은 기술을 사용한다는 점은 공통점이나, 목적과 윤리의식의

차이로 인하여 많이 다른 세계를 살아가게 됩니다.


무협속에 등장하는 '강호의 세계'에는 정말 많은 무술들이 등장하고 저마다 특색있는 단체에 소속되게

됩니다.


소림사,마교 라던지 말이죠..


그런데 이들의 실력을 가늠하는 기준이 되는 것중 하나가 바로 '내공' 입니다.

해킹의 세계에서 깊은 내공을 쌓는 방법중 하나가 바로 'Low Level'을 파는 것입니다.





운영체제 공부하기



저두 운영체제개발 공부를 이제 시작하면서 주문한 책들 입니다.

앞으로 포스팅도 공부한 내용을 요약ㆍ정리 하는 포스팅을 작성 할 예정입니다.


복습과 정리가 됨과 동시에 오류가 있을시에 친절한 방문객(?) 분들이 지적도 해주셔서 

트러블슈팅도 해결함과 동시에 시간이 지났을때도 기록이 남아 있기 때문에

공부한 것을 리마인드 할 수도 있구요.


아무튼 저위에 책들을 병행해서 공부를 한후에, '리눅스 커널의 이해' 를 보면 이해가

정말 잘 된다고  합니다. 참고하세요.







OS개발 실습


운영체제 만드는거 저두 예전부터 하고 싶었던 거구. 내공이 부족하다는 핑계로 미루어 왔지만

이제는 조금씩 같이 만들어 가는 겁니다. 여러분은 혹시 '코끼리를 먹는 방법' 을 알고 계시나요?

코끼리를 비유로 들어서 코끼리 한테 미안하지만, 정답은 '나눠서' 먹는 겁니다.


한번에 너무 많이 먹으면 소화가 안되니 말이죠^^;





▲ VM웨어를 여시고 (없는 분들은 검색으로 구하시길 바랍니다 ) 위의 그림과 같이 

'New Virtual Machine...' 클릭  ~!






▲ 그 다음 운영체제 종류 아무거나 선택하고 계속 Next 클릭하다 위에 화면에서는

C드라이브 처럼 간단한 경로에다가 폴더 하나 만드시고 이름을 만드신후에 Next 클릭 ~!

그다음도 계속 Next! 로 진행후에 마지막  Finish 클릭





▲ 플로피 디스크 더블 클릭! 





▲  Use flopy image file => Browse.. (경로지정하기) 

(★ 여기서 'connect power on' 꼭 체크하세요. 빨간색 테두리 안쳤는데 체크 하셔야 합니다.)






▲ 실습을 위한 위의 위의 첨부파일을 다운로드 받습니다.




▲ 다운받은 bin파일을 경로로 지정합니다.

이떄 주의하실 점은 'All files'를 클릭해야 보인다는 것입니다.






어셈블리 코딩



▲  메모장을 여신후에 위와 같이 코딩을 합니다.

저장하실떄는 확장자가 .s 입니다.




[ 해석 ]


; <= 주석처리 

1번째랑 두번째 줄은 우리의 첫번째 OS를 만들자,

X를 출력해 보자 이런뜻 이구요.


mov ax, 0xb800

: 비디오 메모리가 매핑된 특별한 주소인 0xb0800 를 ax에 복사 합니다.


mov es, ax

: ax의 값을 es에 복사 합니다.


mov di, 0

: 0값을 di에 복사


mov byte [es:di], 'X'

:  출력 'X'




더 궁금하신분은 저의 예전 포스팅 '리버스 엔지니어링' 카테고리를 참조하시면 좋습니다.

[ ▶ 바로가기 ◀ ]




포스팅이 너무 길어지는 것 같아 이쯤에서 중요이론은 다음 시간에 다루기로 하구요.

이번시간에는 컴파일후에 'X' 를 출력 해 보겠습니다.





나만의 운영체제 만들기: X를 출력하기





▲ CMD창을 열고 cd 명령어로 os 폴더에 들어갑니다.

(CMD창 여는방법: 윈도우키 + r ) 




[ 컴파일을 위한 첨부파일 ]


nasm.exe



▲ 위의 첨부파일을 다운받아 우리가 현재 작업중인 os 폴더에 넣어주시구요.

(다른 이름으로 만드셨으면 해당 이름의 폴더에 넣어주세요^^)



그다음 설치 진행해 주시면 됩니다.

음 그런데 저는 nasm.exe를 설치를 nasm 폴더에 설치한 관계로  nasm 으로 이동해서

컴파일 하겠습니다. 





▲ 정상적으로 컴파일 된 모습


nasm -o 1.bin 1.s  

파일명이 저랑 같은시에 위와 같이 하시면 정상 컴파일 됩니다.

자 그러면 VM웨어를 구동 시켜 봅니다.

코딩을 수정하거나 반영이 안될시에는 VM웨어 파워를 껐다가 다시 구동 시키면 됩니다.


과연 X는 출력 될것인가?





1








2










3






두둥!!!








해냈어 ㅠ.ㅠ  


X를 시작으로 조금씩 운영체제 이론과 실습을 병행하면서 만들어 가봅시당

언젠가는 그래픽 화면도 출력 시키겠죠? ^^