Linux鏡像文件制作方式
本文介紹Linux鏡像文件制作。
嵌入式系統(tǒng)開發(fā)調試及量產需要涉及到Linux鏡像文件的制作,本文結合一個實例簡要介紹Linux鏡像文件的制作。
1.確定磁盤空間布局
在制作鏡像文件之前應提前確定好磁盤空間布局,也就是地址空間劃分,如這里的磁盤空間包含3部分:引導分區(qū),bootfs分區(qū),rootfs分區(qū)。
如下圖:

其中,1 sector=512B
- 1)boot sector扇區(qū)范圍:0-8191
- 2)bootfs扇區(qū)范圍:8192-532479
- 3)rootfs扇區(qū)范圍:532480-end
2.制作空白鏡像文件
取定好磁盤空間布局后,可以制作一個空間與之匹配的空白的鏡像文件,命令行下輸入如下指令:
sudo dd if=/dev/zero of=./test.img bs=1M count=8452
其中,
- 1)“test.img”為需要制作的鏡像文件名稱
- 2)“bs”為塊大小
- 3)“count”為塊數(shù)
這里共計8452MB空間
3.分區(qū)與格式化
1) 分區(qū)
a) 創(chuàng)建分區(qū)表
分區(qū)的前提是創(chuàng)建分區(qū)表,命令行下輸入如下指令:
sudo parted test.img --script -- mklabel msdos
這里創(chuàng)建的是“msdos”類型分區(qū)表,也可以是“gpt”類型的。
b) 創(chuàng)建“bootfs”分區(qū)
命令行下輸入如下指令:
sudo parted test.img --script -- mkpart primary fat32 8192s 532479s
這里創(chuàng)建了一個“fat32”類型的分區(qū),起始扇區(qū)為8192,注意這里不是0,因為要保留扇區(qū)用作“boot sector”分區(qū)。
c) 創(chuàng)建“rootfs”分區(qū)
命令行下輸入如下指令:
sudo parted test.img --script -- mkpart primary ext4 532480s -1
“-1”代表余下的所有空間。
2) 格式化
a) 設置循環(huán)設備
格式化前設置循環(huán)設備。命令行下輸入如下指令(“loop46”可根據(jù)實際情況指定):
sudo losetup -P /dev/loop46 test.img
設置好循環(huán)設備就可以看到磁盤的分區(qū)信息了(可以使用“lsblk”命令查看)。
b) 格式化
命令行下輸入如下指令:
sudo mkfs.msdos -L bootfs /dev/loop46p1 sudo mkfs.ext4 -L rootfs /dev/loop46p2
這里就不詳述了。
4.復制引導分區(qū)
在磁盤的最前端分配了一段空間,用來存儲引導加載程序和其他與引導相關的文件。
這段空間很重要,關系著系統(tǒng)能否正常啟動。不同的系統(tǒng)這段空間大小也是不一樣的,比如臺式機這段空間通常為1MB,如下圖,EFI System起始為2048扇區(qū)(1個扇區(qū)為512字節(jié))說明前1MB(2048*521B)被保留為引導分區(qū)。而有些嵌入式系統(tǒng)這段空間可能大于1MB,如樹梅派系統(tǒng)這段空間為4MB。

如果是基于已有的鏡像文件重新制作鏡像文件,也可以通過如下指令查看引導分區(qū)大?。?/p>
sudo fdisk /dev/loop45
其中,/dev/loop45為設置循環(huán)設備的舊磁盤,可根據(jù)實際情況設定。
將編譯好的引導分區(qū)復制到引導分區(qū)中,這里以一個舊的磁盤鏡像引導分區(qū)復制為例,命令行下輸入如下指令:
sudo dd if=/dev/loop45 of=/dev/loop46 bs=1M count=4
其中,“/dev/loop45”為一個舊的磁盤循環(huán)設備。
5.復制其它分區(qū)
1) 掛載
復制前需將磁盤掛載在相應的目錄,這里以一個舊的磁盤鏡像bootfs分區(qū)復制為例,命令行下輸入如下指令:
mkdir bootfs-old mkdir rootfs-old sudo mount /dev/loop45p1 ./bootfs-old sudo mount /dev/loop45p2 ./rootfs-old mkdir bootfs-new mkdir rootfs-new sudo mount /dev/loop46p1 ./bootfs-new sudo mount /dev/loop46p2 ./rootfs-new
2) 復制bootfs分區(qū)
這里以一個舊的磁盤鏡像bootfs分區(qū)復制為例,命令行下輸入如下指令:
sudo cp -a ./bootfs-old/* ./bootfs-new/
3) 復制rootfs分區(qū)
這里以一個舊的磁盤鏡像rootfs分區(qū)復制為例,命令行下輸入如下指令:
sudo cp -a ./rootfs-old/* ./rootfs-new/
完成后,就可以拿“test.img”文件進行燒錄了。
注意:
本文也適用于將原有鏡像或磁盤空間重新劃分操作。
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
本地Windows遠程桌面連接阿里云Ubuntu 16.04服務器的操作方法
這篇文章主要介紹了本地Windows遠程桌面連接阿里云Ubuntu 16.04服務器的方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2020-02-02
Linux在命令行環(huán)境中實現(xiàn)進度條的原理解析
在Linux命令行環(huán)境中,進度條是一種直觀展示任務執(zhí)行進度的重要方式,本文將通過一個簡單的C語言進度條程序,深入解析其實現(xiàn)原理和優(yōu)化過程,希望對大家有所幫助2025-10-10
Ubuntu Server 24設置WiFi網絡的全流程方案
本文詳細解析了在 Ubuntu Server 24 系統(tǒng)中配置無線網絡靜態(tài) IP 的全流程方案,重點圍繞 Netplan 配置框架展開,文中有詳細的代碼示例和圖文供大家參考,需要的朋友可以參考下2025-09-09

