Partition
將作業系統從一種介質轉移到另一種介質
我有一個帶有 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]
- 有沒有一種方法可以將作業系統從 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,請根據需要更新)。重新創建分區後,您可以一次複製每個分區的內容。
- 如果可能的話,可以在 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
可能某些軟體可能不喜歡根文件系統臨時以只讀方式掛載;重新啟動將解決此問題。