自己動手寫作業系統(一)

來源:互聯網
上載者:User

從去年就想好好的讀一下這本書,跟著書上做一下,但是給耽擱了,現在就好好的開始探索這麼書吧。

雖然我很想在這裡吹一段這本書有多麼的厲害,但是。我第一章都沒有看完,吹不了。。。等我讀的個七七八八再回來吹吧。

我是在搜尋嵌入式的學習路線中發現的這本書,當時他們說這本書很有趣,操作能力強,對作業系統的理解很有協助,於是上網準備買一本。然鵝,它已經絕版了。好在圖書館可以借到,破費一番周折之後,終於弄到了這本書。這本書的作者很有趣,他所提出的在實踐中學習很值得我們學習。

囉嗦了這麼多,下面開始對這本書的第一章開始進行總結。

首先介紹一下我使用的環境:VMware + ubuntu,版本分別是10.0.1/14.04(ubuntu版本查看方式 cat /stc/issue)

翻開書的第一章,WTF。。。第一個要求就是準備一張磁碟片。磁碟片是我們電腦基礎老師用來憶苦思甜的玩意兒了好嗎。我去哪裡弄塊磁碟片來。有問題問度娘,發現這個問題很好解決嘛,用虛擬機器就不沒事了,虛擬磁碟嘛。但是操作方法嘛,我這裡提供一種在linux系統內實現的方法。

使用下列工具,就可以實現磁碟片引導。

1.dd:在指定大小內對一個檔案進行拷貝,並在拷貝的同時進行指定的轉換。

http://www.cnblogs.com/dkblog/archive/2009/09/18/1980715.html

這個連結對dd進行了詳細的講解。

2.nasm:彙編的編譯工具,可以產生.bin檔案。

3.qemu:通過閱讀一些大牛的部落格,我現在將它大致理解為虛擬機器。

http://www.cnblogs.com/youxia/p/linux019.html

這個連結對qemu進行了概述。

好了,既然環境、工具都準備好了,那我們便開始編寫Helloworld吧。

1.編寫Helleworld的代碼

1.1.建立asm檔案


vi boot.asm


1.2.編寫boot.asm檔案


        org 07c00h
        mov ax,cs
        mov ds,ax
        mov es,ax
        call DispStr
        jmp $
DispStr:
        mov ax,BootMessage
        mov bp,ax
        mov cx,16
        mov ax,01301h
        mov bx,000ch
        mov dl,0
        int 10h
        ret
BootMessage:    db "Hello,OS world!"
times 510-($-$$) db 0


dw 0xaa55



1.3.編寫boot.asm檔案並產生boot.bin檔案

nasm boot.asm -o boot.bin

1.4.產生boot.img鏡像檔案

dd conv=sync if=boot.bin of=boot.img bs=1440k count=1

1.5.將helloworld跑起來

qemu-system-x86_64 -fda boot.img -boot a -m 64 -localtime

好了,這樣helloworld就能跑起來了,這和我們以往的編程是不同的,它是在裸機上面啟動並執行,不依賴任何軟體。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.