[OS64][031]實驗操作:程序7-3 移植到物理平臺 U盤啟動

學習筆記

使用教材(配書源碼以及使用方法)
《一個64位操作系統(tǒng)的設計與實現(xiàn)》
http://www.ituring.com.cn/book/2450
http://www.reibang.com/p/28f9713a9171

源碼結構

  • 配書代碼包 :第7章 \ 程序 \ 程序7-3
  • 參考目錄:7.4 U盤啟動

實驗操作

零故痊、將U盤制作成 USB-FDD 啟動模式 + FAT12文件系統(tǒng)

  • 參見書本 《7.4 U盤啟動》挠阁,使用軟件 DiskGenius绰播,將U盤制作成USB-FDD 啟動模式 + FAT12文件系統(tǒng)

http://www.diskgenius.cn/

一评架、 根據(jù)U盤信息蚌铜,修改配書包里的源碼

  • 黃色標注部分嗓节,我的U盤總容量32MB临燃,簇大小默認是8192字節(jié)
查看自己制作好的U盤的信息

參照U盤的信息修改源碼

  • ;注釋部分是配書源碼的數(shù)值 以及 一些說明)

boot.asm

SectorNumOfRootDirStart equ 19      ;SectorNumOfRootDirStart    equ 25 根目錄區(qū)起始扇區(qū)號
SectorBalance       equ 23          ;SectorBalance      equ 23  其實是用不到了诗力,后面會有代碼專門算這個值


    BPB_SecPerClus  db  0x10        ;BPB_SecPerClus db  0x8  每簇扇區(qū)數(shù)
    
    BPB_TotSec16    dw  0xbc43      ;BPB_TotSec16   dw  0x7d82 總扇區(qū)數(shù)
    BPB_Media   db  0xf0
    BPB_FATSz16 dw  0x9             ;BPB_FATSz16    dw  0xc FAT扇區(qū)數(shù)
    BPB_SecPerTrk   dw  0x3f        ;BPB_SecPerTrk  dw  0x3f  每磁道扇區(qū)數(shù)
    BPB_NumHeads    dw  0xff        ;BPB_NumHeads   dw  0xff 磁頭數(shù)
    
Label_Go_On_Loading_File:
    add bx, 0x2000  ;add    bx, 0x1000 ;add bx, [BPB_BytesPerSec] 這里要填入簇的大小

  • BPB_SecPerClus db 0x10 每簇扇區(qū)數(shù) 等于 簇大小 8192 除以 每扇區(qū)字節(jié)數(shù)512 = 16,寫成十六進制0x10
  • 我的U盤總容量32MB凭峡,制作成USB-FDD啟動模式+FAT12文件系統(tǒng)之后拙已,一簇有16個扇區(qū),即每調用一次讀軟盤功能call Func_ReadOneSector摧冀,都會讀入16個扇區(qū)的數(shù)據(jù)倍踪,也就是十進制8192字節(jié)(0x2000)系宫,從而緩沖區(qū)的偏移在一次讀操作后要add bx , 0x2000

fat12.inc 與 boot.asm 保持一致

SectorNumOfRootDirStart equ 19      ;SectorNumOfRootDirStart    equ 25
    BPB_SecPerClus  db  0x10        ;BPB_SecPerClus db  0x8
    BPB_TotSec16    dw  0xbc43      ;BPB_TotSec16   dw  0x7d82
    BPB_FATSz16 dw  0x9             ;BPB_FATSz16    dw  0xc

loader.asm 每讀一簇就是8192字節(jié)=2000h字節(jié)

Label_Go_On_Loading_File:
. . .
    mov cx, 2000h       ;mov    eax,    0x1000 這里應該填入簇的大小
. . .

    loop    Label_Mov_Kernel

二、開啟虛擬機

  • 鼠標聚焦在虛擬機建车,再插入U盤扩借,CentOS識別后,桌面會出現(xiàn)圖標


    U盤圖標
  • 進行命令行操作缤至,兩個make潮罪,一個dd/dev/sdb 就是U盤設備
[anno@localhost 7-3 32MB]$ ls
bootloader  kernel

[anno@localhost 7-3 32MB]$ cd bootloader
[anno@localhost bootloader]$ make
nasm boot.asm -o boot.bin
nasm loader.asm -o loader.bin
 
[anno@localhost bootloader]$ sudo dd if=boot.bin of=/dev/sdb bs=512 count=1 conv=notrunc
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.00673206 s, 76.1 kB/s

[anno@localhost bootloader]$ ls
boot.asm  boot.bin  fat12.inc  loader.asm  loader.bin  Makefile

[anno@localhost bootloader]$ cd ../
[anno@localhost 7-3 32MB]$ cd kernel
[anno@localhost kernel]$ make


[anno@localhost kernel]$ ls
cpu.h    gate.h       interrupt.h  linkage.h  memory.h  ptrace.h  trap.c
entry.o  head.o       interrupt.o  main.c     memory.o  system    trap.h
entry.s  head.s       kernel.bin   main.o     printk.c  task.c    trap.o
entry.S  head.S       Kernel.lds   Makefile   printk.h  task.h
font.h   interrupt.c  lib.h        memory.c   printk.o  task.o

  • 將生成的 loader.bin 以及 kernel.bin 復制到U盤

手動復制或者使用cp命令都可以


將生成的 loader.bin 以及 kernel.bin 復制到U盤
  • 完成后领斥,選擇彈出U盤

三嫉到、將真實機器的啟動模式設置成 USB-FDD

  • 需要注意的是,平常裝系統(tǒng)月洛,一般都是選擇USB-HDD為首選何恶,但是這里現(xiàn)在的U盤我們模擬的是USB-FDD啟動模式,也就是模擬它是一個軟盤嚼黔,在BIOS的啟動首選項里面细层,要選擇USB-FDD啟動為最優(yōu)先的
將真實機器的啟動模式設置成USB-FDD

四、關機狀態(tài)下唬涧,插入U盤

關機狀態(tài)下疫赎,插入U盤

五,再開機

  • 看到熟悉的畫面碎节,各種信息都順利輸出了


    再開機
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末虚缎,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子钓株,更是在濱河造成了極大的恐慌实牡,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件轴合,死亡現(xiàn)場離奇詭異创坞,居然都是意外死亡,警方通過查閱死者的電腦和手機受葛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進店門题涨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人总滩,你說我怎么就攤上這事纲堵。” “怎么了闰渔?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵席函,是天一觀的道長。 經(jīng)常有香客問我冈涧,道長茂附,這世上最難降的妖魔是什么正蛙? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮营曼,結果婚禮上乒验,老公的妹妹穿的比我還像新娘。我一直安慰自己蒂阱,他們只是感情好锻全,可當我...
    茶點故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著录煤,像睡著了一般虱痕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上辐赞,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天,我揣著相機與錄音硝训,去河邊找鬼响委。 笑死,一個胖子當著我的面吹牛窖梁,可吹牛的內容都是我干的赘风。 我是一名探鬼主播,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼纵刘,長吁一口氣:“原來是場噩夢啊……” “哼邀窃!你這毒婦竟也來了?” 一聲冷哼從身側響起假哎,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤瞬捕,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后舵抹,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體肪虎,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年惧蛹,在試婚紗的時候發(fā)現(xiàn)自己被綠了扇救。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡香嗓,死狀恐怖迅腔,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情靠娱,我是刑警寧澤沧烈,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站像云,受9級特大地震影響掺出,放射性物質發(fā)生泄漏徽千。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一汤锨、第九天 我趴在偏房一處隱蔽的房頂上張望双抽。 院中可真熱鬧,春花似錦闲礼、人聲如沸牍汹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽慎菲。三九已至,卻和暖如春锨并,著一層夾襖步出監(jiān)牢的瞬間露该,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工第煮, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留解幼,地道東北人。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓包警,卻偏偏與公主長得像撵摆,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子害晦,可洞房花燭夜當晚...
    茶點故事閱讀 44,601評論 2 353

推薦閱讀更多精彩內容