將作業系統從一種媒體傳輸到另一種介質

將作業系統從一種媒體傳輸到另一種介質

我有一個帶有 Manjaro ARM 的 USB 驅動器(用於 Raspberry Pi 4 系統)和一張空 SD 卡。有沒有可能將作業系統從 USB 隨身碟轉移到 SD 卡,同時保留分割區?如果可以的話,可以在Manjaro運行時完成嗎?

這是輸出lsblk

$ lsblk # partitions on USB Drive
sda      8:0    1  14.9G  0 disk 
├─sda1   8:1    1 213.6M  0 part /boot
└─sda2   8:2    1  14.7G  0 part /
zram0  254:0    0  11.2G  0 disk [SWAP]

答案1

  1. 有沒有可能將作業系統從 USB 隨身碟轉移到 SD 卡,同時保留分割區?

是的,假設 SD 卡至少與 USB 驅動器一樣大。您可以運行blockdev --getsize64 /dev/sda來獲取 USB 驅動器的大小(以位元組為單位),並且透過更改 SD 卡的裝置路徑,您可以確保它至少有同樣多的位元組。

這些裝置的大小不太可能完全相同,因此我最好在 SD 卡上手動建立一個相同的分區表(使用相同的分區號碼以減少麻煩)。這確保了 sd 卡上可能可用的額外磁碟空間稍後可用於擴展根分割區或建立新分割區等。用於sfdisk -l /dev/sda取得 /dev/sda 上以磁區為單位的分區列表,然後用於fdisk /dev/sdb在 sd 卡上建立相同的分割區(假設您的 sd 卡裝置是 /dev/sdb,請根據需要更新)。

重新建立分割區後,您可以一次複製每個分割區的內容。

  1. 如果可以的話,可以在Manjaro運行時完成嗎?

是的,但在這種情況下,您應該以唯讀方式掛載檔案系統,以避免作業系統在複製時向磁碟寫入任何內容而損壞副本的風險。

以下是執行此操作並複製問題中列出的兩個分區的命令,假設您已按照上述方式建立了分區,並再次假設您的 SD 卡是 /dev/sdb:

mount /dev/sda1 -oremount,ro
dd if=/dev/sda1 of=/dev/sdb1 bs=1048576
mount /dev/sda2 -oremount,rw

mount /dev/sda2 -oremount,ro
dd if=/dev/sda2 of=/dev/sdb2 bs=1048576
mount /dev/sda2 -oremount,rw

可能某些軟體可能不喜歡根檔案系統臨時掛載為唯讀;重新啟動即可解決該問題。

相關內容