FreeBSD的boot0階段介紹(轉)
FreeBSD的boot0階段介紹(轉)[@more@]【導讀】本文介紹了FreeBSD系統啟動的第一階段。
讓我們看一下檔案/boot/boot0。這是一個僅512位元組的小檔案。如果在FreeBSD安裝過程中選擇“bootmanager”,這個檔案中的內容將被寫入硬碟MBR 如前所述,INT 0x19指令裝載MBR,也就是boot0的內容,至記憶體地址0x7c00。再看檔案sys/boot/i386/boot0/boot0.s,可以猜想這裡面發生了什麼 - 這是引導管理器,一段由 Robert Nordier書寫的令人起敬的程式片段。
MBR裡,也就是boot0裡,從偏移量0x1be開始有一個特殊的結構,稱為分割槽表。其中有4條記錄(稱為分割槽記錄),每條記錄16位元組。分割槽記錄表示硬碟如何被劃分,在FreeBSD的術語中,這被稱為slice(d)。16位元組中有一個標誌位元組決定這個分割槽是否可引導。有僅只能有一個分割槽可設定這一標誌。否則,boot0的程式碼將拒絕繼續執行。
一個分割槽記錄有如下域:
*1位元組 檔案系統型別
*1位元組 可引導標誌
*6位元組 CHS格式描述符
*8位元組 LBA格式描述符
一個分割槽記錄描述符包含某一分割槽在硬碟上的確切位置資訊。LBA和CHS兩種描述符指示相同的資訊,但是指示方式有所不同:LBA (邏輯塊定址,Logical Block Addressing)指示分割槽的起始扇區和分割槽長度,而CHS(柱面 磁頭扇區)指示首扇區和末扇區。 引導管理器掃描分割槽表,並在螢幕上顯示選單,以便使用者可以選擇用於引導的磁碟和分割槽。在鍵盤上按下相應的鍵後,boot0進行如下動作:
*標記選中的分割槽為可引導,清除以前的可引導標誌
*記住本次選擇的分割槽以備下次引導時作為預設項
*裝載選中分割槽的第一個扇區,並跳轉執行之
什麼資料會存在於一個可引導扇區(這裡指FreeBSD扇區)的第一扇區裡呢?正如你已經猜到的,那就是boot2。
讓我們看一下檔案/boot/boot0。這是一個僅512位元組的小檔案。如果在FreeBSD安裝過程中選擇“bootmanager”,這個檔案中的內容將被寫入硬碟MBR 如前所述,INT 0x19指令裝載MBR,也就是boot0的內容,至記憶體地址0x7c00。再看檔案sys/boot/i386/boot0/boot0.s,可以猜想這裡面發生了什麼 - 這是引導管理器,一段由 Robert Nordier書寫的令人起敬的程式片段。
MBR裡,也就是boot0裡,從偏移量0x1be開始有一個特殊的結構,稱為分割槽表。其中有4條記錄(稱為分割槽記錄),每條記錄16位元組。分割槽記錄表示硬碟如何被劃分,在FreeBSD的術語中,這被稱為slice(d)。16位元組中有一個標誌位元組決定這個分割槽是否可引導。有僅只能有一個分割槽可設定這一標誌。否則,boot0的程式碼將拒絕繼續執行。
一個分割槽記錄有如下域:
*1位元組 檔案系統型別
*1位元組 可引導標誌
*6位元組 CHS格式描述符
*8位元組 LBA格式描述符
一個分割槽記錄描述符包含某一分割槽在硬碟上的確切位置資訊。LBA和CHS兩種描述符指示相同的資訊,但是指示方式有所不同:LBA (邏輯塊定址,Logical Block Addressing)指示分割槽的起始扇區和分割槽長度,而CHS(柱面 磁頭扇區)指示首扇區和末扇區。 引導管理器掃描分割槽表,並在螢幕上顯示選單,以便使用者可以選擇用於引導的磁碟和分割槽。在鍵盤上按下相應的鍵後,boot0進行如下動作:
*標記選中的分割槽為可引導,清除以前的可引導標誌
*記住本次選擇的分割槽以備下次引導時作為預設項
*裝載選中分割槽的第一個扇區,並跳轉執行之
什麼資料會存在於一個可引導扇區(這裡指FreeBSD扇區)的第一扇區裡呢?正如你已經猜到的,那就是boot2。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617542/viewspace-949202/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MyBatis執行流程的各階段介紹MyBatis
- MySQL事務提交的三個階段介紹MySql
- Spring Bean各階段生命週期的介紹SpringBean
- 原創圖書流程介紹:寫作階段
- 原創圖書流程介紹:選題階段
- 【MYSQL】兩階段提交及相關引數介紹MySql
- 原創圖書流程介紹:編排校階段
- 分散式資料庫事務的兩階段提交介紹分散式資料庫
- Oracle的回滾段介紹Oracle
- 簡單介紹資料庫技術發展階段!資料庫
- MySQL SQL語句查詢執行過程的四個階段介紹MySql
- 諾蘭的階段模型(轉載)模型
- 高階掃描技術及原理介紹(轉)
- javascript高階函式的介紹JavaScript函式
- OpenCV進階---介紹SVMOpenCV
- React 高階元件介紹React元件
- 專案團隊的發展階段(轉)
- 專案管理不同階段的重點(轉)專案管理
- IT專案管理-計劃階段(轉)專案管理
- SQL Server 轉儲的介紹SQLServer
- unix的AWK命令介紹(轉)
- FreeBSD的非凡特性(轉)
- Hadoop進階命令使用介紹Hadoop
- 「Oracle」Oracle高階查詢介紹Oracle
- 【轉】Oracle ASM介紹OracleASM
- 轉gcc cflags介紹GC
- Apache 版本介紹(轉)Apache
- 組織級敏捷轉型的四個階段敏捷
- 初學Java的5個階段,你在哪個階段?Java
- BOOT0的主要程式碼兼Unix下彙編小節(轉)boot
- 各種語言的介紹(轉)
- Oracle 8 的函式介紹(轉)Oracle函式
- java字串的簡單介紹(轉)Java字串
- MSMQ的簡單介紹(收藏) (轉)MQ
- javascript高階函式簡單介紹JavaScript函式
- linux高階工具命令 -- vmstat介紹Linux
- 專案經理售前階段的主要任務(轉)
- 專案管理:職業生涯的一個階段(轉)專案管理