日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

《自己动手写操作系统》—— 工作环境搭建

發布時間:2023/12/9 windows 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《自己动手写操作系统》—— 工作环境搭建 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
最近在看《自己動手寫操作系統》 于淵著,看第一頁頭就蒙了,書上說要準備一張空白軟盤,都2010年了,上哪去找軟盤啊,自從接觸計算機以來我還沒見過軟盤呢,估計要到科技博物館才找得到吧,呵呵。 其實在第二章-搭建你的工作環境 中作者提到其實并不需要用真正的軟盤,用虛擬軟盤映像就可以了,也就是*.IMG文件,反過來想想,連計算機都可以虛擬,軟盤當然也可以虛擬了。軟盤映像文件并不需要自己制作,隨書附贈的光盤中的源代碼里面就有(TINIX.IMG),將自己寫的匯編源代碼編譯成*.bin文件后使用作者提供的軟盤絕對扇區讀寫工具FloppyWriter將*.bin寫入到TINIX.IMG,這樣一張虛擬的引導盤就完成了。FloppyWriter工具在光盤的Tools文件夾中。如果沒有光盤也不要緊,可以在博文視點網站下載,網址是:http://www.broadview.com.cn/01577 (需要先登錄),也可以在http://osfromscratch.org/downloadcn 下載源代碼。
???
一、 開始搭建工作環境:
??? 1. 一臺計算機(Windows操作系統)
??? 2. 虛擬機 VirtualBox
?????? 可以在官網下載,下載地址:http://www.virtualbox.org/wiki/Downloads
?????? 之所以選擇VirtualBox是因為它是開源免費的,速度也可以,作者使用的虛擬機是Virtual PC 5.0,該虛擬機是商業軟件,5.0版本的比較難找,網上可以找到5.2版本的,但我下載安裝后不能正常運行,提示不能在PAE模式下運行,雖然網上可以找到解決方案,需要對電腦做些配置,但覺得麻煩,個人還是喜歡用VirtualBox,下載安裝后沒有任何問題。
??? 3. NASM 匯編編譯程序
????? 下載地址:http://sourceforge.net/projects/nasm
????? 或者官網下載:http://www.nasm.us/pub/nasm/releasebuilds/
????? 這個是用來編譯我們寫的匯編程序的,以前常用MASM,但作者推薦這個。
??? 4. 軟盤絕對扇區讀寫工具 FloppyWriter.exe
?????? 在隨書附贈的光盤中提供,在OS/Tools/FloppyWriter/Release文件夾下,運行 該程序有兩個按鈕可以選擇,使用軟盤映像的話使用下面那個Write File To Image。前面提到,如果沒有光盤,可以去網上去下載光盤中的內容。
??? 5. 源代碼編輯器
?????? 可以用記事本,也可以用其他編輯工具。

二、寫一個小的“操作系統”
???? 1.編寫源代碼:(書上有)
????? ?;boot.asm
????? org 07c00h????? ;告訴編譯器程序加載到7c00處
?????? mov ax, cs
?????? mov ds, ax
?????? mov es, ax
?????? call DispStr??? ;調用顯示字符串例程
?????? jmp $?????????? ;無限循環
DispStr:
?????? mov ax, BootMessage
?????? mov bp, ax?????? ;es:bp=串地址
?????? mov cx, 33
?????? mov ax, 01301h?? ;ah=13, al=01h
?????? mov bx, 000ch??? ;頁號為0(bh=0) 黑底紅字(bl=0ch,高亮)
?????? mov dl, 0
?????? int 10h????????? ;10h 號中斷
?????? ret
BootMessage:?????? db? "Hello lijie, Welcome to OS World!"
times? 510-($-$$)? db 0 ;填充剩下的空間,使生成的二進制代碼恰好為512字節
dw???? 0xaa55?????????? ;結束標志

???
???? 2. 編譯 boot.asm
????? 安裝或解壓縮NASM后,將NASM的安裝目錄加到PATH環境變量中后就可以在命令行的任何目錄下使用NASM命令。進入到源代碼所在目錄,輸入命令 nasm boot.asm -o boot.bin 后回車便完成了源代碼的編譯。
???? 3.將boot.bin寫到TINIX.IMG
?????? 從光盤源代碼中復制TINIX.IMG文件到你的源代碼目錄下,運行FloppyWriter.exe,點擊Write File To Image,分別在彈出窗口中選擇boot.bin和TINIX.IMG,提示成功 OK。
???? 4. 在虛擬機中運行
?????? a.在虛擬機中新建一臺PC
??????? 啟動VirtualBox->新建->名稱任意取,操作系統選Other,Version選Other/Unknown->內存默認(可改變)->創建新的虛擬硬盤->動態擴展->選擇虛擬硬盤的保存地址或默認,大小默認(可改變)->完成。
?????? b.將TINIX.IMG注冊到VirtualBox
??????? 管理(F)->虛擬介質管理(V)->虛擬軟盤(F)->注冊(A)->在彈出窗口中找到剛剛制作完成的TINIX.IMG打開->確定。
?????? c.運行剛剛創建的PC

??????? 選擇剛剛創建的PC->開始->首次運行向導->下一步->介質類型選軟驅,介質位置選剛剛注冊的TINIX.IMG->下一步->完成。OK,應該可以看到哪一行黑底紅字了吧,呵呵。


第二種方法:

最近在業余閱讀時找到一本《自己動手編寫操作系統》覺得不錯,視角很新穎,是有關操作系統書籍中為數不多的看了不想睡覺的讀本。

?

由于這本書的出版時間較早,書中引導盤還使用的是軟盤,所以在跟隨做的第一個實驗代碼時就遇到些小困難。最后實驗成果后在此做個記錄。

?

書中第一個實驗就是編寫一段匯編代碼作為引導程序,編譯后將二進制文件寫入到引導盤(書中采用的是軟盤),然后讓電腦從軟盤啟動進而執行我們的引導程序。

?

首先給出書中的引導程序——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


下面則需要對這段匯編代碼進行編譯,于是我們就遇到了第一個問題:選擇什么樣的編譯器?如何編譯代碼?

書中推薦了使用NASM,至于為什么要選擇NASM,大家可以百度一下NASM誕生的故事,它的誕生就是因為諸多匯編編譯器的種種劣勢,最后催生出NASM這個比較好用的編譯器。

安裝NASM。NASM沒有圖形化界面,要么裝在DOS下,要么裝在Linux下。本人的電腦是WIN8+Ubuntu的虛擬機,所以果斷選擇在Ubuntu中安裝了NASM只需要在終端敲上apt-get install nasm,然后等著安裝完成即可。安裝后測試下:

?

安裝完成編譯器后將windows下編寫好的代碼拷貝到Ubuntu中用編譯器編譯,發現出錯。編譯生成的二進制文件boot.bin大小為0,并不是我們期望的512字節。 于是便在Ubuntu下用vi打開我們的匯編代碼查看一下,發現: 在代碼中出現了很多的“^M”字符。 哦,原來我用了DOS格式的文件放在了UNIX下面進行了編譯,難怪編譯器不認識。 注意:在DOS格式下面,回車換行是0x0D0A,而UNIX下是0x0A,所以當DOS格式文件到了UNIX下面后0x0D則會變成“^M”這個控制字符。 這個問題的解決也有很多種方法,而本人是直接在UE中把文件都改成用UNIX格式編輯了: 修改了格式以后,在Ubuntu下可以正確編譯了!生成了一個512字節大小的二進制文件boot.bin。 下面就該是制作啟動盤的問題了。要知道,現在的電腦想要用軟盤啟動已經是不可能了。但是我們有個東西叫虛擬機——它可以給我們提供一個“軟盤”接口,不過同樣也是個虛擬接口。 虛擬機我用的是VM Player,并沒有去用workstation,因為新版本的player已經功能夠強大了。如下圖一步步建立自己的虛擬機,但是在驅動選擇時,選從軟盤啟動。 我們得為軟盤提供一個image文件,但之前對boot.asm文件編譯后得到的是二進制文件boot.bin。網上也有很多提出的方法如何將bin文件打包成img文件,其實我們簡單分析一下會發現,兩者的轉換其實只需要在windows下改一下后綴名!!!原因是:img文件也就是鏡像文件,原本就是對軟盤中的數據進行二進制級別的拷貝備份,而我們的bin文件本身就是二進制文件,所以對于內存或者存儲設備來說,在這個地方img和bin文件是完全一樣的。 將boot.bin改后綴變成boot.img后就可以讓虛擬機去加載它了。 然后去啟動你的“操作系統”吧!

總結

以上是生活随笔為你收集整理的《自己动手写操作系统》—— 工作环境搭建的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。