Boot

為什麼用 dd clone 替換驅動器會導致機器在啟動時掛起?

  • February 25, 2019

我有一個基於 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       

預賽

我假設你已經備份了——冗餘與數據的價值成正比!

dds 以及 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/fstabDebold的重新點

  • $$ 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 連結

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