我知道在某些情況下,將 Windows 安裝從一台電腦移動到另一台電腦(實體移動硬碟)可能很困難,但是這在 Linux 上如何運作?大多數驅動模組不是在啟動時載入的嗎?那麼理論上會有那麼麻煩嗎?
顯然,xorg 配置會發生變化,並且專有的 ATI 驅動程式必須重新編譯(也許?)。難道還有比我想像的更多的事情嗎?
假設兩台電腦來自同一時代,例如都是 i7,但硬體略有不同。
更新:
感謝您的回答。這主要是出於我自己的好奇心。我在工作中安裝並運行了 Linux 系統,但最終我想換到一台可以安裝雙顯示卡的計算機,這樣我就可以運行兩個以上的顯示器。但不會很快。
答案1
假設來源處理器和目標處理器具有相同的架構(例如,都是 x86、都是 x64、都是 arm...),移動或複製 Linux 安裝非常容易。
移動
移動時,您必須注意硬體依賴。然而,大多數用戶不會遇到任何困難,除了xorg.conf
(甚至現代發行版往往不需要它)和引導程式之外。
如果磁碟配置不同,可能需要重新配置引導程式和檔案系統表(
/etc/fstab
,/etc/crypttab
如果您使用加密技術,/etc/mdadm.conf
如果您使用 md RAID)。對於引導程序,最簡單的方法是將磁碟插入新機器,啟動發行版的 live CD/USB 並使用其引導程式修復工具。請注意,如果您要複製資料而不是實體移動磁碟(例如,因為一個或兩個系統與 Windows 雙重啟動),則複製整個分割區(使用 (G)Parted 或
dd
)會更快、更容易。如果你有一個
xorg.conf
文件來聲明與顯示相關的選項(例如與專有驅動程式相關),如果目標系統具有不同的顯示卡或不同的顯示器設置,則需要對其進行修改。您還應該安裝專有驅動程式在移動之前檢查目標系統的顯示卡(如果適用)。如果您已聲明模組選項或黑名單
/etc/modprobe.d
,它們可能需要針對目標系統進行調整。
複製
克隆安裝涉及與移動相同的硬體相關問題,但還需要注意一些事情才能為新機器提供新的身份。
編輯為新機器指定一個新名稱。 在 下搜尋其他出現的主機名稱。常見位置是(別名為 127.0.0.1)和/或其他郵件系統配置。
/etc/hostname
/etc
/etc/hosts
/etc/mailname
重新生成ssh 主機金鑰。
對以下內容進行任何必要的更改網路設定(例如靜態 IP 位址)。
更改 RAID 磁碟區的 UUID(不是必需的,但建議避免混淆),例如
mdadm -U uuid
.
也可以看看針對 Ubuntu 的分步複製指南。
我目前的桌上型電腦安裝是從其前身克隆的,方法是拔出兩個RAID-1 鏡像磁碟之一,將其移至新電腦中,在現有磁碟上建立RAID-1 卷,讓鏡像重新同步,並進行概述的變更以上適用。
答案2
我不確定這是否回答了您的問題,但通常您會做完全相反的事情 - 移動您的用戶資料夾並重新安裝所有內容。理論上,所有自訂和單獨的設定檔都應該位於您的使用者資料夾中,因此這是您真正需要傳輸的唯一內容。
有些套件管理器可以列出所有已安裝的套件(Debian/Ubuntu 有dpkg --list
,Gentoo 有/etc/world
,等等),所以你可以:
- 在新系統上安裝基本發行版
- 告訴它“安裝我在另一台電腦上的所有軟體包”
- 複製您的使用者資料夾
您最終應該得到一個功能相同的系統。
答案3
事實上,在 Windows 下,幾乎不可能透過複製硬碟內容或在 PC 之間切換硬碟來將安裝移至新 PC,但在 Linux 下,這效果非常好。我從 Thinkpad R52 切換到 Thinkpad T400,只需將舊硬碟的內容複製到新硬碟(將舊硬碟放入透過 USB 連接的外部封閉件中,然後將所有內容複製到 Gparted-Live-CD 下)。之後我所要做的就是手動將 Grub 放入 MBR 並啟動。一切仍然對我有用。
正如Michael 所說,通常來說,一台新PC 是一個很好的機會來擺脫隨著時間的推移積累的垃圾,但有時你只需要快速重新開始工作,然後復制硬碟內容就可以在Linux 上很好地工作,因為所有驅動程式都包含在內內核中的驅動程式無需安裝即可供內核使用,現在驅動程式是自動加載的,而不是在modprobe.conf 中手動列出,甚至xorg 也會為我自動配置自身。
只有當您必須在舊 PC 上手動配置驅動程式(例如 Raid 系統、專有圖形驅動程式等)時,您才可能遇到問題。
答案4
大綱
最近,我將 Arch Linux 安裝移至了另一個驅動器較小比原來的驅動器。
原始磁碟機僅使用一個分區,這簡化了事情。如果您有與根分割區分開的引導分割區,這是一個答案這可能對你有幫助。
步驟是:
- 備份資料。
- 在目標磁碟機上建立包含 ext4 檔案系統的分割區。
- 將來源分割區的所有資料複製到目標分割區。
- 安裝GRUB作為目標磁碟機上的引導程式。
提示
在我們開始之前的提示:為了確定我連接的設備的路徑(例如/dev/sdb
)並通常關注設備和分區的狀態,我使用watch
結合lsblk
:
watch lsblk -o tran,name,model,fstype,label,mountpoints,fssize,fsavail,fsused,fsuse%
它每兩秒更新一次並產生如下輸出:
TRAN NAME MODEL FSTYPE LABEL MOUNTPOINTS FSSIZE FSAVAIL FSUSED FSUSE%
sata sda SanDisk SSD PLUS 1000GB
├─sda1 ext4 VM partition /sda1 108G 50G 53.4G 49%
└─sda3 ext4 / 808G 561.3G 205.7G 25%
usb sdb SABRENT
└─sdb1 ext4 new_daedalus /run/media/me/new_daedalus 29.2G 25.3G 2.4G 8%
sata sr0 MATSHITADVD-RAM UJ8A2
由於我們要將一個分割區的內容複製到另一個分割區,因此最好擺脫佔用大量空間的碎片:使用以下指令檢查來源分割區ncdu
對於包含最多資料的目錄,並在可能的情況下刪除或移動它們。
另一件事:我使用 SATA 轉 USB 轉接器,例如這些將來源磁碟機和目標磁碟機連接到我的電腦。
細節
假設您已經備份了資料並且您的目標磁碟機位於/dev/sdb
,讓我們詳細介紹一下:
在目標磁碟機上建立包含 ext4 檔案系統的分割區:
將來源分割區的所有資料複製到目標分割區:
- 以下假設您的舊分割區和新分割區均已安裝:
sudo rsync -a --hard-links --delete --progress --human-readable --stats /run/media/me/old_partition/ /run/media/me/new_partition/
- 我用了
rsync
這裡。您也可以使用 good oldcp
來實現相同的目的:sudo cp --recursive -a /run/media/me/old_partition/* /run/media/me/new_partition/
- 以下假設您的舊分割區和新分割區均已安裝:
安裝GRUB作為目標磁碟機上的引導程式:
- 將運行所需的虛擬檔案系統新增至新分割區
grub-install
:sudo mount --bind /dev /run/media/me/new_partition/dev; sudo mount --bind /proc /run/media/me/new_partition/proc
- 使新分割區的根目錄成為目前根目錄:
sudo chroot /run/media/me/new_partition/
- 在目標磁碟機上安裝 GRUB(請參閱這有關此處發生的情況的更多資訊):
grub-install /dev/sdb; grub-mkconfig -o /boot/grub/grub.cfg
chroot
使用Ctrl+d或退出exit
- 卸載虛擬檔案系統和分割區本身:
sudo umount --recursive /run/media/me/new_partition
- 將運行所需的虛擬檔案系統新增至新分割區
就是這樣,您現在應該能夠在new_partition
驅動器上使用您安裝的 Linux 了/dev/sdb
。