問題:目前系統盤第一分區隻有60M, 更新新系統後感覺第一分區有點小,是以在更新新系統的時候也必須修改第一分區的大小。
目前已經有制作好的鏡像檔案!這個檔案第一分區是120M 足夠了!
先看一下概念:MBR GRUB的概念
MBR是硬碟上的一個扇區,包含三部分内容(引導程式、分區表及分隔辨別,MBR總計512位元組;其中引導程式最多占446個位元組);為什麼需要這個MBR,主要是因為BIOS太小,功能有限。當系統加電,bios自檢後,就會将MBR Load進記憶體。也就意味着引導程式被激活,分區表資訊已經加載到記憶體,同時也意味着對系統的控制權從bios過渡到GRUB.GRUB是GRand Unified Bootloader的縮寫,它是一個多重作業系統啟動管理器。用來引導不同系統。
GRUB是一個系統引導程式,分為兩個階段,
第一階段它儲存在MBR中.用彙編語言編寫,也就是MBR中的引導程式部分。①基本的硬體裝置初始化(屏蔽所有的中斷、關閉處理器内部指令/資料cache 等)。②為加載 Bootloader 的Stage2 準備空間。③如果是從某個固态存儲媒質中,則拷貝 Bootloader 的stage2 到RAM 空間中。④設定好堆棧。⑤跳轉到 stage2 的C 程式入口點。
GRUB引導程式的第二階段,通常用C語言編寫,這個階段的任務有: ①初始化本階段要使用到的硬體裝置。②檢測系統記憶體映射。③将kernel 映像和根檔案系統映像從flash 上讀到RAM 空間中。④為核心設定啟動參數⑤調用核心。
它通常儲存在/boot/grub/中。 當我們啟動系統進入GRUB界面時,會看到有選擇資訊,如果我們自己編譯了系統核心的話,你可以選擇從某個核心啟動。同時要注意的是GRUB的配置檔案和核心在/boot分區。從前面分析我們可以看出,/BOOT和MBR不存在包含關系。
GRUB第一階段需要去MBR中去讀引導程式,GRUB第二階段需要到/boot分區讀系統核心和配置檔案。
mbr中存放了啟動程式和該磁盤的分區表,分區表一共描述了4個分區,其中一個分區為可啟動分區,mbr中的啟動程式的任務就是在分區表中找到這個啟動分區,然後将執行權力交給啟動分區的引導程式
啟動第一步--加載BIOS
當你打開計算機電源,計算機會首先加載BIOS資訊,BIOS資訊是如此的重要,以至于計算機必須在最開始就找到它。這是因為BIOS中包含了CPU的相關資訊、裝置啟動順序資訊、硬碟資訊、記憶體資訊、時鐘資訊、PnP特性等等。在此之後,計算機心裡就有譜了,知道應該去讀取哪個硬體裝置了。
啟動第二步--讀取MBR
衆所周知,硬碟上第0磁道第一個扇區被稱為MBR,也就是Master Boot Record,即主引導記錄,它的大小是512位元組,别看地方不大,可裡面卻存放了預啟動資訊、分區表資訊。
系統找到BIOS所指定的硬碟的MBR後,就會将其複制到0×7c00位址所在的實體記憶體中。其實被複制到實體記憶體的内容就是Boot Loader,而具體到你的電腦,那就是lilo或者grub了。
啟動第三步--Boot Loader
Boot Loader 就是在作業系統核心運作之前運作的一段小程式。通過這段小程式,我們可以初始化硬體裝置、建立記憶體空間的映射圖,進而将系統的軟硬體環境帶到一個合适的狀态,以便為最終調用作業系統核心做好一切準備。
Boot Loader有若幹種,其中Grub、Lilo和spfdisk是常見的Loader。
我們以Grub為例來講解吧,畢竟用lilo和spfdisk的人并不多。
系統讀取記憶體中的grub配置資訊(一般為menu.lst或grub.lst),并依照此配置資訊來啟動不同的作業系統。
啟動第四步--加載核心
根據grub設定的核心映像所在路徑,系統讀取記憶體映像,并進行解壓縮操作。此時,螢幕一般會輸出“Uncompressing Linux”的提示。當解壓縮核心完成後,螢幕輸出“OK, booting the kernel”。
系統将解壓後的核心放置在記憶體之中,并調用start_kernel()函數來啟動一系列的初始化函數并初始化各種裝置,完成Linux核心環境的建立。至此,Linux核心已經建立起來了,基于Linux的程式應該可以正常運作了。
啟動第五步--使用者層init依據inittab檔案來設定運作等級
核心被加載後,第一個運作的程式便是/sbin/init,該檔案會讀取/etc/inittab檔案,并依據此檔案來進行初始化工作。
其實/etc/inittab檔案最主要的作用就是設定Linux的運作等級,其設定形式是“:id:5:initdefault:”,這就表明Linux需要運作在等級5上。Linux的運作等級設定如下:
0:關機
1:單使用者模式
2:無網絡支援的多使用者模式
3:有網絡支援的多使用者模式
4:保留,未使用
5:有網絡支援有X-Window支援的多使用者模式
6:重新開機系統,即重新開機
是以目前:需要一個鏡像 這個鏡像檔案以及對磁盤第一分區進行了劃分,同時grub等已經設定好
目前已經有現成的鏡像檔案,file了一下檢視了相關資訊
file xxxx13.img
xxxxxx13.img: DOS/MBR boot sector; GRand Unified Bootloader, stage1 version 0x3, stage2 address 0x2000, stage2 segment 0x200
此時隻需要dd 到系統盤就行
dd if=/xx.img of=/dev/sda bs=50M
為了檢測這個dd 過程是不是正常的,也就是檔案是否成功寫入磁盤
将檔案mount後 進入發現檔案有問題!!
同時使用 kpartx 挂載虛拟檔案,檢視檔案正常,對比檔案MD5值也是一樣的,此時就有點。。。。。
目前看是:之前核心加載的是老的磁盤分區資訊,現在新的img寫入了磁盤,分區都改變了,是以此時需要執行 partprobe 重讀分區表,将磁盤分區表變化資訊通知核心