Orange


 
 
2010-04-05 21:33

《Orange’s 一個操做系統的實現》實驗筆記

生成軟盤鏡像文件a.img的方法html

Windows 平臺linux

1.       使用WinHex軟件,新建大小爲1474560bytes的文件,而後保存。web

2.       使用WinImage軟件,新建大小爲1.44MB的文件,而後保存,注意,保存的類型爲「全部文件(*,*)」,文件名爲「a.img」。網絡

Linux平臺app

1.       使用dd命令:dd if=/dev/zero    of=a.img bs=512 count=2880jsp

Windows和linux若是安裝了borchs虛擬機,則還能夠經過bximage命令來生成一個鏡像。tcp

注意:以上方法中,使用winhex和dd命令生成的鏡像文件是原始的二進制文件,未被格式化,可是這個軟盤鏡像僅僅能用來啓動電腦,而不能用來存儲數據。因此不能被操做系統(例如msdos,linux)識別,例如linux不能掛載。而winimage軟件生成的文件是已被格式化成fat文件系統,能夠儲存數據,能夠被linux掛載,被msdos識別。ide

 

《Orange’s 一個操做系統的實現》第三章第一節的實驗筆記post

若是電腦啓動時,執行的是軟盤上的程序,則此軟盤是可啓動的。判斷一個軟盤是否能啓動,只要看*.img(泛指軟盤鏡像)的第一扇區的最後兩個字節是不是0x55,0xAA,若是是,則可啓動。怎麼查看*.img?linux下能夠用hexedit,Windows用winhex等。用WinHex和dd命令生成的軟盤鏡像的內容全是0,因此,咱們須要將a.img的第一個扇區的最後兩個字節修改成0X55,0XAA。ui

實驗一:將pmtest1.bin 寫入 a.img

這兩天在作《Orange’s 一個操做系統的實現》第三章第一節的實驗,碰到一些問題,使用dd命令將pmtest1.bin寫入軟盤鏡像a.img,但此鏡像卻不能再虛擬機中運行,我是這樣作的:

#生成一個空白的軟盤鏡像a.img

dd if=/dev/zero of=a.img bs=512   count=2880

#將pmtest1.asm編譯成bin格式

nasm pmtest1.asm –o pmtest1.bin

#將pmtest1.bin 寫入a.img

dd if=pmtest1.bin of=a.img bs=512 count=1 conv=notrunc

起初覺得是本身寫命令有問題,而後在網上找相關資料,《使用開源軟件—本身動手寫操做系統》是這樣作的:

dd if=pmtest1.bin of=a.img bs=512   count=1

dd if=/dev/zero of=a.img skip=1 seek=1 skip=1   bs=512 count=2879

以上兩種方法我試了N次都不行,最後發現,是由於生成的文件a.img是不可啓動,由於在a.img的第一個扇區的最後兩個字節是0x00,0x00,因此,我把這兩個字節改成0x55,0xAA,在虛擬機上運行成功!還有一個問題值得注意,做者使用的NASM版本比較老,我使用的是2.8版本的,兩個版本編譯源代碼生成的二進制文件很不同!但在虛擬機上運行結果倒是同樣的。做者所用的a.img是第一章的文件,因此第一個扇區的最後兩個字節已是0x55,0xAA。做者是把代碼用NASM編譯成.BIN格式(二進制格式),生成的二進制中除了你寫的源代碼以外,不包含其餘任何東西。這也意味着,程序執行時的內存映像和二進制文件映像是同樣的。

 

 

 

本文最近訪客

評論
 
 
unix網絡開發 unix網絡開發太感謝了。
2013-01-19 21:17
請問必須用軟盤鏡像或軟盤嗎,不能用光盤或光盤鏡像嗎。?求解答,如今沒有用軟盤的啊。
2013-01-19 21:16
太感謝你了,我終於知道哪錯了,哈哈……
2012-11-14 18:26
roothoo roothoo回覆justtheend:能夠用軟盤鏡像,而非真實的軟盤
2012-05-14 09:16
justtheend justtheend有沒有不用軟盤的替代方法??
2012-03-11 19:16
星夜落塵 星夜落塵哎,找到哪裏錯了,是vmware默認打開電源時會鏈接CD/DVD光驅而不是軟盤,因此要把CD/DVD的connect at power on的勾去掉,把floppy的connect at power on勾上才行。
2011-07-25 21:49
星夜落塵 星夜落塵哎,不對,img文件的第一個扇區(512byte)的最後兩個字節確實是0x55,0xAA ,但載入vmware就是死活運行不了,糾結。。。看來我得換個虛擬機了。
2011-07-25 21:43
niuwaqian niuwaqian當我沒說= =!
2011-02-06 21:26
niuwaqian niuwaqian請問你是怎麼改的
2011-02-06 20:49
 
百度空間,讓世界發現你
向世界展現本身,發佈喜好的圖片、文字和音樂
相關文章
相關標籤/搜索