Ubuntu

將可啟動 USB 驅動器複製到另一個具有相同大小的記憶棒

  • September 23, 2016

我有 20 個相同(大小)的 USB 驅動器,我需要在其中放置可啟動的 Ubuntu 版本。我使用的驅動器容量為 4GB。我將驅動器分為兩個分區(GPT、FAT32),所以我有一個用於作業系統的分區和一個用於放置數據的分區。

我正在使用 UNetbootin 創建可啟動的 Ubunutu 棒。一切似乎都執行良好,但速度極慢(安裝時間約為 30 分鐘)。

現在我想知道是否可以以某種方式將這些棒深度複製到剩餘的 19 根棒上,而無需手動分區驅動器並在每個驅動器上執行 UNetbootin。

如果不是,也許另一種方法是編寫一個執行分區的腳本,創建一個可引導分區,然後dd將內容放到正確的分區上?

我正在執行 macOS,因此沒有安裝 Gparted 或任何其他花哨的 Linux 工具(可能)。

dd 正在製作驅動器的完整副本,包括分區表和其他所有內容(如 ipor 或多或少說明)。

這樣的事情應該可以解決問題:

dd if=<your reference usb stick> of=<one of the 19 other usb sticks> bs=32M

您甚至可以先將參考 USB 棒的內容作為圖像轉儲到磁碟以保存以供以後使用;-)

根據 U 盤的大小,這可能需要一段時間,因為您正在複製然後寫出大量空白空間。

使用 bmap 工具有一個更好的方法,它只在磁碟映像中寫入使用過的塊。

我在這裡使用了許多工具,它們是為 Ubuntu / Debian 打包的,但預設情況下沒有安裝以安裝它們執行

sudo apt-get install bmap-tools libguestfs-tools pigz

首先,您需要創建源圖像:

sudo dd if=/dev/source of=/path/to/source.img bs=1M

稀疏圖像

接下來,您需要從圖像中刪除所有零以製作稀疏文件:

cp --sparse=always /path/to/source.img /path/to/source.img.sparse

您可能已經註意到,這會復製圖像並佔用更多空間,幸運的是我們可以在管道中使用 cp:

sudo dd if=/dev/source bs=1M | cp --sparse=always /dev/stdin /path/to/source.img.sparse

bmap-工具

現在我們需要生成一些關於如何使用 bmaptool 佈局圖像文件的元數據:

bmaptool create -o /path/to/source.img.bmap /path/to/source.img.sparse

如果您現在可以壓縮圖像文件,bmaptool 將自動解壓縮圖像文件。pigz 是一個並行的 gzip 壓縮工具。

pigz /path/to/source.img.sparse

要將文件寫入空白 U 盤,您現在可以執行以下操作:

sudo bmaptool copy --bmap /path/to/source.img.bmap /path/to/source.img.sparse.gz /dev/sdX

https://source.tizen.org/documentation/reference/bmaptool

客魚

如果你覺得自己特別聰明,你還可以使用 guestfish 項目中的工具在複製 linux 映像之前對其進行清理。這會刪除日誌文件、伺服器 ssh 密鑰等內容。

在壓縮映像之前執行這些命令以清理映像。

此命令清理映像,刪除日誌、歷史文件、ssh 伺服器密鑰等

virt-sysprep -a /path/to/source.img.sparse

此命令在首次啟動時使用新的伺服器密鑰設置 ssh。

virt-customize --firstboot-command "dpkg-reconfigure openssh-server" /path/to/source.img.sparse

此命令在映像上執行 fstrim,從文件系統中刪除所有未使用的塊,就像修剪 SSD 一樣。

virt-sparsify --inplace /path/to/source.img.sparse

http://libguestfs.org/

引用自:https://unix.stackexchange.com/questions/311086