Linux鏡像文件制作方式
本文介紹Linux鏡像文件制作。
嵌入式系統(tǒng)開(kāi)發(fā)調(diào)試及量產(chǎn)需要涉及到Linux鏡像文件的制作,本文結(jié)合一個(gè)實(shí)例簡(jiǎn)要介紹Linux鏡像文件的制作。
1.確定磁盤空間布局
在制作鏡像文件之前應(yīng)提前確定好磁盤空間布局,也就是地址空間劃分,如這里的磁盤空間包含3部分:引導(dǎo)分區(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.制作空白鏡像文件
取定好磁盤空間布局后,可以制作一個(gè)空間與之匹配的空白的鏡像文件,命令行下輸入如下指令:
sudo dd if=/dev/zero of=./test.img bs=1M count=8452
其中,
- 1)“test.img”為需要制作的鏡像文件名稱
- 2)“bs”為塊大小
- 3)“count”為塊數(shù)
這里共計(jì)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)建了一個(gè)“fat32”類型的分區(qū),起始扇區(qū)為8192,注意這里不是0,因?yàn)橐A羯葏^(qū)用作“boot sector”分區(qū)。
c) 創(chuàng)建“rootfs”分區(qū)
命令行下輸入如下指令:
sudo parted test.img --script -- mkpart primary ext4 532480s -1
“-1”代表余下的所有空間。
2) 格式化
a) 設(shè)置循環(huán)設(shè)備
格式化前設(shè)置循環(huán)設(shè)備。命令行下輸入如下指令(“loop46”可根據(jù)實(shí)際情況指定):
sudo losetup -P /dev/loop46 test.img
設(shè)置好循環(huán)設(shè)備就可以看到磁盤的分區(qū)信息了(可以使用“lsblk”命令查看)。
b) 格式化
命令行下輸入如下指令:
sudo mkfs.msdos -L bootfs /dev/loop46p1 sudo mkfs.ext4 -L rootfs /dev/loop46p2
這里就不詳述了。
4.復(fù)制引導(dǎo)分區(qū)
在磁盤的最前端分配了一段空間,用來(lái)存儲(chǔ)引導(dǎo)加載程序和其他與引導(dǎo)相關(guān)的文件。
這段空間很重要,關(guān)系著系統(tǒng)能否正常啟動(dòng)。不同的系統(tǒng)這段空間大小也是不一樣的,比如臺(tái)式機(jī)這段空間通常為1MB,如下圖,EFI System起始為2048扇區(qū)(1個(gè)扇區(qū)為512字節(jié))說(shuō)明前1MB(2048*521B)被保留為引導(dǎo)分區(qū)。而有些嵌入式系統(tǒng)這段空間可能大于1MB,如樹(shù)梅派系統(tǒng)這段空間為4MB。

如果是基于已有的鏡像文件重新制作鏡像文件,也可以通過(guò)如下指令查看引導(dǎo)分區(qū)大?。?/p>
sudo fdisk /dev/loop45
其中,/dev/loop45為設(shè)置循環(huán)設(shè)備的舊磁盤,可根據(jù)實(shí)際情況設(shè)定。
將編譯好的引導(dǎo)分區(qū)復(fù)制到引導(dǎo)分區(qū)中,這里以一個(gè)舊的磁盤鏡像引導(dǎo)分區(qū)復(fù)制為例,命令行下輸入如下指令:
sudo dd if=/dev/loop45 of=/dev/loop46 bs=1M count=4
其中,“/dev/loop45”為一個(gè)舊的磁盤循環(huán)設(shè)備。
5.復(fù)制其它分區(qū)
1) 掛載
復(fù)制前需將磁盤掛載在相應(yīng)的目錄,這里以一個(gè)舊的磁盤鏡像bootfs分區(qū)復(fù)制為例,命令行下輸入如下指令:
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) 復(fù)制bootfs分區(qū)
這里以一個(gè)舊的磁盤鏡像bootfs分區(qū)復(fù)制為例,命令行下輸入如下指令:
sudo cp -a ./bootfs-old/* ./bootfs-new/
3) 復(fù)制rootfs分區(qū)
這里以一個(gè)舊的磁盤鏡像rootfs分區(qū)復(fù)制為例,命令行下輸入如下指令:
sudo cp -a ./rootfs-old/* ./rootfs-new/
完成后,就可以拿“test.img”文件進(jìn)行燒錄了。
注意:
本文也適用于將原有鏡像或磁盤空間重新劃分操作。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
本地Windows遠(yuǎn)程桌面連接阿里云Ubuntu 16.04服務(wù)器的操作方法
這篇文章主要介紹了本地Windows遠(yuǎn)程桌面連接阿里云Ubuntu 16.04服務(wù)器的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02
Linux在命令行環(huán)境中實(shí)現(xiàn)進(jìn)度條的原理解析
在Linux命令行環(huán)境中,進(jìn)度條是一種直觀展示任務(wù)執(zhí)行進(jìn)度的重要方式,本文將通過(guò)一個(gè)簡(jiǎn)單的C語(yǔ)言進(jìn)度條程序,深入解析其實(shí)現(xiàn)原理和優(yōu)化過(guò)程,希望對(duì)大家有所幫助2025-10-10
Ubuntu Server 24設(shè)置WiFi網(wǎng)絡(luò)的全流程方案
本文詳細(xì)解析了在 Ubuntu Server 24 系統(tǒng)中配置無(wú)線網(wǎng)絡(luò)靜態(tài) IP 的全流程方案,重點(diǎn)圍繞 Netplan 配置框架展開(kāi),文中有詳細(xì)的代碼示例和圖文供大家參考,需要的朋友可以參考下2025-09-09
windows apache 無(wú)法啟動(dòng)的兩種解決方法
apache無(wú)法啟動(dòng),查詢了一些方法,說(shuō)是更改端口,如果你還是無(wú)法啟動(dòng)。那就備份一下數(shù)據(jù)庫(kù),重裝apache吧2014-09-09
詳解Centos7源碼編譯安裝 php7.2之生產(chǎn)篇
這篇文章主要介紹了詳解Centos7源碼編譯安裝 php7.2之生產(chǎn)篇,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-06-06

