為什麼用 dd clone 替換驅動器會導致機器在啟動時掛起?
我有一個基於 800MHz Intel Atom 的自製媒體伺服器,帶有兩個大 LVM 驅動器和 250GB 2.5" 驅動器上的 Debian 9。後者顯示壞塊,所以我打算更換它。
我從 Debian live CD 啟動並將整個 250GB 磁碟表面 dd’d 到新的 WD Blue 1TB 驅動器上
dd if=/dev/sda of=/dev/sdd
,新磁碟連接到 USB-SATA 介面。然後我將驅動器安裝到媒體伺服器中,替換了 250GB 的驅動器。機器在啟動時掛起,就在列印驅動器 ID 之後和引導載入程序啟動之前。引導載入程序是 grub legacy。我從 live CD 啟動並 chroot 到似乎工作正常的複製。所以我安裝了 LVM 卷,並將 grub2 安裝到聲稱成功的新 /dev/sda 中。但是從新的 HD 啟動仍然會像以前一樣鎖定機器。正如人們所期望的那樣,我還執行了update-initramfs -u -k all
,和 whathaveyou。grub-install``update-grub
然後我嘗試了這張啟動修復光碟,它也聲稱成功,但對結果沒有任何影響。開機後機器提前掛起。
我被警告說在驅動器前面附近沒有一個小的 /boot 分區,所以我現在創建了一個。沒有不同。我還嘗試在第一個分區之前留出 6MB 的間隙,對齊到 4K 扇區等等,每次都重複整個 grub 安裝和引導修復磁碟嘗試。每次:無法啟動,在您進入 BIOS 螢幕之前崩潰,但從 CD 啟動,您可以 chroot 進入它,因此數據看起來完好無損。
改造舊驅動器工作得很好(目前)。
這是一台非常簡單的機器,MBR msdos 式引導,沒有 EFI,只安裝了一個作業系統。
機器無法從舊的 250GB 驅動器複製到 1TB 驅動器上啟動是否有充分的理由?它是怎麼知道的?驅動器 ID 沒有出現在
/boot/grub
我能找到的任何地方。都是 UUID。舊驅動器有 512B 物理扇區,然後新驅動器有 4096B 物理扇區,但它具有 512B 仿真,對嗎?
這是針對新驅動器執行的引導修復 CD 的一些輸出。
Drive: sda _____________________________________________________________________ Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disklabel type: dos Partition Boot Start Sector End Sector # of Sectors Id System /dev/sda1 * 1,036,288 477,345,791 476,309,504 83 Linux /dev/sda2 477,347,840 1,953,525,167 1,476,177,328 5 Extended /dev/sda5 477,349,888 489,932,799 12,582,912 83 Linux /dev/sda3 12,288 1,036,287 1,024,000 83 Linux Drive: sdb _____________________________________________________________________ Disk /dev/sdb: 7.3 TiB, 8001563222016 bytes, 15628053168 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disklabel type: gpt Partition Boot Start Sector End Sector # of Sectors Id System /dev/sdb1 1 4,294,967,295 4,294,967,295 ee GPT GUID Partition Table detected. Partition Attrs Start Sector End Sector # of Sectors System /dev/sdb1 3415,628,048,06415,628,048,031 Logical Volume Manager (LVM) partition (Linux) Attributes: R=Required, N=No Block IO, B=Legacy BIOS Bootable, +=More bits set Drive: sdc _____________________________________________________________________ Disk /dev/sdc: 2.7 TiB, 3000592982016 bytes, 5860533168 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disklabel type: gpt Partition Boot Start Sector End Sector # of Sectors Id System /dev/sdc1 1 4,294,967,295 4,294,967,295 ee GPT GUID Partition Table detected. Partition Attrs Start Sector End Sector # of Sectors System /dev/sdc1 2,048 5,860,532,223 5,860,530,176 Logical Volume Manager (LVM) partition (Linux) Attributes: R=Required, N=No Block IO, B=Legacy BIOS Bootable, +=More bits set "blkid" output: ________________________________________________________________ Device UUID TYPE LABEL /dev/loop0 squashfs /dev/mapper/exported-archive 4b899a61-2f1c-4cd8-bc32-ce435912ba87 ext3 /dev/mapper/exported-media 36a5370f-d49a-4da3-9bc8-fefa0d005f4f ext3 /dev/mapper/exported-photos af677e44-2a83-4aba-8b37-c38c3b07a10b ext3 /dev/mapper/exported-web 27040136-28bf-464d-9802-c20511ad661f ext3 /dev/sda1 7788ea31-5e63-4869-a80e-40c99c6128b3 ext3 /dev/sda3 6f547317-4688-435f-a69d-787bf7262f29 ext3 boot /dev/sda5 a311a5cb-4f03-4930-a028-bf87b4dd8e55 swap swap /dev/sdb1 yGbmYE-Lvk1-8lZj-0xQz-u57b-L1sV-0RjV66 LVM2_member /dev/sdc1 ShaGRu-GqRZ-4fS3-k0zp-g5x4-5Kae-uLoC9o LVM2_member /dev/sr0 2017-10-29-01-25-15-00 iso9660 Boot-Repair-Disk 32bit /dev/zram0 a9802c34-25bd-4f6f-b3e5-d75c62fe8adc swap /dev/zram1 5ea34823-7d6a-4ac5-bb49-7fa9c8bbecea swap /dev/zram2 dcc2c96c-1f33-4604-b5ac-d62964731bd4 swap /dev/zram3 0eb6d924-359e-4fed-b904-788ce185bb0a swap
預賽
我假設你已經備份了——冗餘與數據的價值成正比!
dd
s 以及 tarball所以……你做了一個完整的設備
dd
呃……呃。壞塊源磁碟的兩倍。再次針對完全不同的源和目標磁碟架構
以下是輕微的改進(僅用於完整性)我並不期望真正的好處。我推薦的是下面這些
分區dds
手動分區新磁碟;
dd
每個分區單獨分區副本
手動分區新磁碟;MKFS; 高級複製文件系統。 在哪里工作
cp -a
給我帶來了麻煩tar c... source|tar x... target
但是我假設您已經嘗試了上述方法並且它不起作用。所以…
新盤好用嗎?
要嘗試在新磁碟上安裝一個全新的 debian。它有效嗎?
如果不是,當然我們正在處理一個完全不同的問題
假設是的話
並排
$$ For simplicity I am assuming you avoid the LV stuff $$
安裝新作業系統(上圖)時,手動分區並選擇兩個根系統——一個用於目前(新)安裝,一個用於舊系統(副本)。讓我們給它們貼上標籤 DebCurrent DebOld
繼續新安裝到 DebCurrent
將舊磁碟根目錄複製到 Debold
/etc/fstab
Debold的重新點$$ Assuming the DebCurrent boots $$
開機時
- 輸入 grub 提示符
- 打開 DebCurrent 的工作節
- 手動編輯以指向 DebOld;嘗試啟動
但是……(我猜)問題仍然存在。它是一個
硬體不匹配問題
也許問題在於
- 主機板舊(MBR-BIOS)
- 磁碟是新的——更喜歡 gpt
IOW預設為:
old: BIOS-MB + MBR-disk new: EFI-MB + gpt-disk
沒有混合匹配的可能性,即在 Windows 世界中,如果不花更多錢購買新的 EFI MB,這是無法解決的。
但是在 linux 世界中,您可以使用帶有 bios-MB 的 gpt 磁碟。關鍵是您需要創建一個 BBP — 靠近磁碟開頭的一個 1MB 的特殊 bios 引導分區。
您可以使用parted來做到這一點,儘管我建議使用gdisk完成所有 gpt 事情
稍後添加
製作 bbp
我強烈建議對 gpt 磁碟使用 gdisk 進行實際分區。這可以很好地保持對齊。此後,使用 (g)parted 可能更容易將類型標記為 BBP。注意上面的 parted 和 gdisk 連結