1. 程式人生 > >使用 loop device 制作安裝鏡像

使用 loop device 制作安裝鏡像

blog 先生 但是 pre style clas fdisk setup 生成

看了下,手上的鏡像中,文件系統才 100 多兆,但是整個鏡像居然要 4G, 這意味著,我每次安裝這個鏡像到 SD 卡都要花很多沒必要的時間。

所以,我提取了一些關鍵內容,然後,準備重新打包鏡像。

1.新建空文件。因為文件系統之有 100M,加上其它雜七雜八內容,頂多 200M,所以,先生成一個 200M 的空文件:

$dd if=/dev/zero of=test.img bs=1M count=200

2. 將空文件關聯到 loop device。然後,查看哪個 loop device 是空閑的:

$sudo losetup -f

/dev/loop0

看到 loop0 空閑,那麽,我們可以放心的把 loop0 關聯到 test.img 文件:

$sudo losetup /dev/loop0 test.img

3. 對 loop deivce 進行分區。因為手上的鏡像中有兩個 ext4 類型的分區,所以,還要新建兩個分區。其中,第一個分區的起始位置還有大小,以及第二個分區的起始點,是在 boot 時要用到的,所以就直接參考原鏡像了。

使用 fdisk 對 /dev/loop0 進行分區:

sudo fdisk /dev/loop0

4. 將 loopdev 上的分區 map 出來。分區完後,我們並不能直接立馬看到 loop device 的分區,而是要用下面語句添加 loop0 上個分區的設備文件節點:

$ sudo kpartx -av /dev/loop0
add map loop0p1 (
252:0): 0 129025 linear /dev/loop0 2048 add map loop0p2 (252:1): 0 276480 linear /dev/loop0 133120

如此,我們就準備好了用來安裝鏡像的 loop 設備,以及可以安裝文件系統的兩個分區。把我們需要的文件 dd 到合適位置就可以了。

完成後,需要逆向的操作來取消關聯:

sudo kpartx -dv /dev/loop0

sudo losetup -d /dev/loop0

到此,新的 image 文件就制作好了,已經可以直接 dd 到 sd 卡上用來啟動系統。

使用 loop device 制作安裝鏡像