如何縮小、複製整個 Linux 磁碟並啟動它?
我有一個在 1024 GB 磁碟(磁碟 A)上執行的 Ubuntu 14.04,它最多只使用了 130 GB 空間。我想將它複製到 256 GB SSD 磁碟(磁碟 B)。但是失敗了。
我曾經
gparted
將磁碟 A 上的分區縮小到只有 180 GB 左右,以便成功地為磁碟 B 做準備。你能告訴我我哪裡錯了嗎?
1)恢復分區表
我確實備份了磁碟A的分區表。
└──╼ $ sudo sfdisk -d /dev/sda # partition table of /dev/sda unit: sectors /dev/sda1 : start= 2048, size= 997376, Id=83, bootable /dev/sda2 : start= 999424, size= 15624192, Id=82 /dev/sda3 : start= 16623616, size=337020928, Id=83 /dev/sda4 : start= 0, size= 0, Id= 0
尖端
/dev/sda1
為/boot
,/dev/sda2
為swap
,/dev/sda3
為/
。保存分區表
sudo sfdisk -d /dev/sda > partition.table
然後我嘗試將分區表恢復到磁碟 B(
/dev/sdc
在這種情況下)。我替換
sda
為sdc
in filepartition.table
。然後它看起來像:# partition table of /dev/sdc unit: sectors /dev/sdc1 : start= 2048, size= 997376, Id=83, bootable /dev/sdc2 : start= 999424, size= 15624192, Id=82 /dev/sdc3 : start= 16623616, size=337020928, Id=83 /dev/sdc4 : start= 0, size= 0, Id= 0
然後成功還原。
sudo sfdisk /dev/sdc < partition.table
2)遷移磁碟分區內容
sudo dd if=/dev/sda1 of=/dev/sdc1
sudo dd if=/dev/sda2 of=/dev/sdc2
sudo dd if=/dev/sda3 of=/dev/sdc3
遷移後,可以掛載和查看 /dev/sdc 上的這些分區。
失敗
但是如果我將 SSD 磁碟(磁碟 B)插入我的筆記型電腦,在一些 Thinkpad BIOS 輸出後它不會啟動。沒有出現錯誤,但游標閃爍…
我敢打賭 BIOS 在啟動時甚至沒有檢測到
/boot
磁碟 B 上的內容。你能幫助我嗎?非常感謝!
更新
有人建議我用它
grub-install /dev/sdc
來解決問題。我搜尋了什麼
grub-install
是有能力的——連結讓我試試。而且我很確定磁碟 A(安裝了 MBR)。更新
做完後
dd if=/dev/sda of=/dev/sdc bs=512 count=1
,只插入B盤,還是一樣的閃爍游標。BIOS之後真的什麼都沒有。完成後
grub-install --boot-directory=/mnt/mypartition/boot /dev/sdc
我去啟動它,只有磁碟B。但是 grub 控制台出來了。並報導
更新
現在它正在工作!
我是這樣做的,在 PC 上執行磁碟 A 作為作業系統,磁碟 B (
/dev/sdc
) 作為 USB 硬碟驅動器。sudo mount /dev/sdc3 /mnt sudo mount /dev/sdc1 /mnt/boot sudo grub-install --boot-directory=/mnt/boot /dev/sdc3
然後去了
/mnt/boot/grub/grub.cfg
,我確實替換了文件中的2個東西grub.cfg
。(記得給文件寫權限grub.cfg
)替換
hd1
為hd0
替換
/dev/sdc3
為/dev/sda3
然後保存文件。-> 關閉電腦 -> 通過 SATA 插入磁碟 B 並永遠取出磁碟 A。-> 啟動 -> 看到 grub 錯誤但仍然啟動
如果您遇到錯誤
Error: invalid environment block. Press any key to continue
,請檢查此問題以解決問題。按任意鍵將啟動您的系統。https://askubuntu.com/questions/191852/error-invalid-environment-block-press-any-key-to-continuesudo -i
然後,一個接一個地執行每個命令。
cd /boot/grub rm grubenv grub-editenv grubenv create grub-editenv grubenv set default=0 grub-editenv grubenv list update-grub
現在去重新啟動,它會工作!
這就是我縮小 1024GB 磁碟硬碟並將整個系統遷移到新的 256GB SSD 磁碟的方法。
我不熟悉
sfdisk
,但你可以完成同樣的事情,分區表和 MBR 備份使用dd
.這是我的筆記,我不是作者…
備份 MBR
MBR 儲存在磁碟的前 512 個字節中。它由3部分組成:
- 前 446 個字節包含引導載入程序。
- 接下來的 64 個字節包含分區表(4 個條目,每個條目 16 個字節,每個主分區一個條目)。
- 最後 2 個字節包含一個標識符
將 MBR 複製為 mbr.img:
dd if=/dev/sdX of=/path/mbr_file.img bs=512 count=1
將分區複製為 pX.img
dd if=/dev/sdX of=/path/pX.img bs=1024
將 MBR 還原到新磁碟
dd if=/path/mbr_file.img of=/dev/sdY bs=512
將分區還原到新磁碟
dd if=/path/pX.img of=/dev/sdX bs=1024
或者
您可以
clonezilla
用來製作作業系統的映像並將其還原到已創建分區的磁碟上。這樣你可能需要在新磁碟上重新安裝 grub
grub-install grub-mkconfig
並在“新”作業系統中設置您的交換分區。
mkswap swapon