Ubuntu系統(tǒng)遷移
環(huán)境
Machine | OS | |
---|---|---|
Origin | Machine1 | ubuntu1 |
Target | Machine2 | ubuntu2 |
遷移方向:Origin --> Target
引導(dǎo)方式:UEFI + GPT
前話
- 因為ubuntu一切皆文件, 故遷移系統(tǒng)就是將ubuntu2的系統(tǒng)文件(/目錄下所有文件)完全替換成ubuntu1间影。
- 系統(tǒng)遷移和備份是同一個原理——都是拷貝復(fù)制OS文件医寿, 但兩者的環(huán)境略有不同。
- 系統(tǒng)備份:它是在本電腦上恢復(fù)OS文件,硬盤分區(qū)和引導(dǎo)位置都未改變查近;
- 系統(tǒng)遷移:既然是遷移,那么就是不同電腦之間的操作诞吱,硬件環(huán)境一定發(fā)生了變化寻定,只講OS文件替換進(jìn)去是不行的,還要配置環(huán)境蔚携。
UEFI + GPT 系統(tǒng)引導(dǎo)程序那些事兒
ubuntu系統(tǒng)就是/目錄下的所有文件希太,它存放于硬盤GPT分區(qū)的某個位置上。電腦開機的時候酝蜒,不會智能到自動找到該OS文件并執(zhí)行的地步誊辉,需要引導(dǎo)程序告訴計算機在什么位置尋找OS,故引導(dǎo)程序?qū)嶋H就是一道橋梁的作用亡脑。
-
對于一個在UEFI模式下安裝的ubuntu系統(tǒng)堕澄,在安裝時,某硬盤(本文是sda)一定有如下兩個分區(qū):
-
/dev/sda1--->OS System:此分區(qū)存放Ubuntu的系統(tǒng)文件霉咨,其中包含:
- /etc/fstab, /etc/fstab.d(可能沒有):啟動文件
- /boot/grub/grub.cfg:分區(qū)文件
注:在fstab啟動文件中蛙紫,可以看到里面根據(jù)分區(qū)的UUID綁定了/dev/sda1給/,將/dev/sda2綁定到/boot/efi中躯护,這里也是啟動的關(guān)鍵惊来。如果UUID不正確,就無法找到引導(dǎo)程序和OS文件棺滞,系統(tǒng)恢復(fù)后無法正常開機裁蚁。
/dev/sda2 ---> EFI System:此分區(qū)是在EFI下安裝Ubuntu必要的,里面應(yīng)該存放了引導(dǎo)程序继准。
-
-
系統(tǒng)備份與遷移
系統(tǒng)備份:因為備份恢復(fù)前后枉证,電腦的分區(qū)不會改變,而且備份恢復(fù)改變的只是OS所在分區(qū)移必,不會影響到/dev/sda2的EFI System室谚。所以就算換了OS文件,系統(tǒng)還是能正常引導(dǎo)修復(fù)。因此秒赤,系統(tǒng)備份沒有系統(tǒng)遷移復(fù)雜猪瞬,只需要復(fù)制拷貝OS文件即可。
-
系統(tǒng)遷移:因為是將系統(tǒng)從一臺電腦移動到另外一臺電腦入篮,硬盤分區(qū)會變陈瘦,EFI文件也會改變。所以對于系統(tǒng)遷移潮售,建議:
在machine2上先重裝系統(tǒng)痊项,新系統(tǒng)中EFI System、fstab啟動文件以及grub.cfg分區(qū)文件都是匹配的酥诽。即鞍泉,新系統(tǒng)下一切正常,只需要刪除ubuntu2然后移入ubuntu1即可肮帐,其他不變咖驮。
系統(tǒng)遷移正文
事先準(zhǔn)備一個ubuntu啟動盤
系統(tǒng)備份In Machine1
Machine1 ---> U盤啟動 ---> Try Ubuntu進(jìn)入livecd模式: 開終端,進(jìn)入管理員權(quán)限泪姨。
-
掛載ubuntu1所在分區(qū)和移動硬盤
-
mkdir data
:在/目錄下游沿,創(chuàng)建data。 -
mount /dev/sda1 /mnt
:假設(shè)ubuntu1在Machine1的sda1上肮砾,將其掛載到mnt上 -
mount /dev/sdb1 /data
:假設(shè)移動硬盤在Machine1的sdb1上诀黍,將其掛載到data上
-
-
備份ubuntu1至移動硬盤
- 方法一:tar備份
tar -cvpzf /data/ubuntu.backup --exclude=/mnt/proc --exclude=/mnt/lost+found --exclude=/mnt/tmp --exclude=/mnt/run --exclude=/mnt/media --exclude=/mnt/mnt
參數(shù):
-c: 新建一個備份文檔
-v: 顯示詳細(xì)信息
-p: 保存權(quán)限,并應(yīng)用到所有文件
-z: 用gzip壓縮備份文檔仗处,減小空間
-f: 指定備份文件的路徑
–exclude: 排除指定目錄眯勾,不進(jìn)行備排除如下文件:
/proc:一個虛擬文件系統(tǒng),系統(tǒng)運行的每一個進(jìn)程都會自動在這個目錄下面創(chuàng)建一個進(jìn)程目錄婆誓。既然是系統(tǒng)自動創(chuàng)建吃环,也就沒必要備份的必要了。
/tmp:一個臨時文件夾洋幻,系統(tǒng)的一些臨時文件會放在這里郁轻。
/lost+found:系統(tǒng)發(fā)生錯誤時(比如非法關(guān)機),可以在這里找回一些丟失文件文留。
/media:多媒體掛載點好唯,像u盤、移動硬盤燥翅、windons分區(qū)等都會自動掛載到這個目錄下骑篙。
/mnt:臨時掛載點,你可以自己掛載一些文件系統(tǒng)到這里森书。
/run:系統(tǒng)從啟動以來產(chǎn)生的一些信息文件靶端。-
方法二谎势,mksquashfs(如果用tar備份和恢復(fù)時出錯,就用該方式)
mksquashfs /mnt/data/ubuntu.sfs
:備份系統(tǒng)sync
:讓系統(tǒng)保存下數(shù)據(jù)
-
解除綁定:
umont /data
umount /mnt
系統(tǒng)恢復(fù) In Machine2
- 使用啟動u盤在Machine2上以EFI模式安裝ubuntu2系統(tǒng)杨名,本文分區(qū)如下:
- sda1 --> ubuntu
- sda2 --> EFI System
安裝新系統(tǒng)之后脏榆,依然從U盤啟動,Try Ubuntu進(jìn)入livecd模式: 開終端台谍,進(jìn)入管理員權(quán)限姐霍。
-
掛載:
-
mkdir data
:在/目錄下,創(chuàng)建data用以掛載移動硬盤 -
mount /dev/sda1 /mnt
:將ubuntu2掛載到mnt -
mount /dev/sdc1 /data
:將移動硬盤掛載到/data
-
-
保留原ubuntu2的啟動文件和分區(qū)文件:(如果是本地系統(tǒng)備份的話典唇,可略此步)
因為這兩個文件記錄了machine2上ubuntu2上的啟動信息和分區(qū)信息,而系統(tǒng)備份中的文件是machine1的胯府,放在新環(huán)境下介衔,配置一定出錯,所以要用本土的配置文件骂因,只需換個系統(tǒng)文件即可炎咖。
-
cp /mnt/etc/fstab(若有fstab.d,就一并復(fù)制) /data
:保留原啟動文件 -
cp /mnt/boot/grub/grub.cfg /data
:保留原分區(qū)文件
-
-
系統(tǒng)恢復(fù)
-
方法一: tar
rm -rf /mnt/*
:將掛載到/mnt上的原系統(tǒng)徹底刪除(可能此命令有誤寒波,可用其他命令)tar -xvpzf /data/ubuntu.backup /mnt
:將備份系統(tǒng)恢復(fù)到掛載到/mnt上的ubuntucp /data/fstab(fstab.d) /mnt/etc
:恢復(fù)啟動文件(本地備份恢復(fù)不需要此步)cp /data/grub.cfg /mnt/boot/grub
:恢復(fù)分區(qū)文件(本地備份恢復(fù)不需要此步) -
方法二:mksquashfs
mkdir /rescovery/mnt
mount -o loop /data/ubuntu.sfs /rescovery/mnt
:將備份文件恢復(fù)至/rescovery/mnt中cp -a /rescovery/mnt/* /mnt
:將備份文件完整地拷貝至ubuntu2掛載的/mnt中cp /data/fstab(fstab.d) /mnt/etc
:恢復(fù)啟動文件(本地備份恢復(fù)不需要此步)cp /data/grub.cfg /mnt/boot/grub
:恢復(fù)分區(qū)文件(本地備份恢復(fù)不需要此步)
注:如果只是本地備份恢復(fù)到此即可結(jié)束(僅僅拷貝粘貼系統(tǒng)文件即可)乘盼,如果是遷移系統(tǒng),還需要有如下步驟俄烁!第6步绸栅,在系統(tǒng)遷移時試過了,但在系統(tǒng)啟動時還是會出錯页屠;第7步粹胯,應(yīng)該可行,但
sudo add-apt-repository ppa:yannubuntu/boot-repair
添加失敗辰企,來者需要特別注意风纠。 -
-
引導(dǎo)修復(fù)1
-
從try ubuntu中為ubuntu2掛載虛擬文件系統(tǒng),為引導(dǎo)修復(fù)做準(zhǔn)備:
mount -o bind /dev /mnt/dev
mount -o bind /proc /mnt/proc
mount -o bind /sys /mnt/sys
chroot /mnt
:進(jìn)入ubuntu2-
對比UUID
在try ubuntu中新建一個終端牢贸,輸入
blkid
查看硬盤分區(qū)UUID在上面chroot /mnt過的終端中竹观,使用
vim /etc/fstab
查看啟動文件中的信息。對照/sda1(mount point為/)和/sda2(mount point為/boot/efi)綁定的兩個UUID是否和/dev/sda1和/dev/sda2相吻合潜索。(因為是拷貝的原ubuntu2系統(tǒng)中的文件臭增,應(yīng)該不會有錯誤,有錯誤的話帮辟,就需要修改速址。)grub-install /dev/sda update-grub
-
退出并卸載掛載
exit umount /mnt/dev umount /mnt/sys umount /mnt/proc umount /data umount /mnt sync
重啟
-
-
引導(dǎo)修復(fù)2
-
從u盤啟動,進(jìn)入try ubuntu由驹,安裝boot-repair
sudo add-apt-repository ppa:yannubuntu/boot-repair 添加源 sudo apt-get update sudo apt-get install -y boot-repair 安裝boot-repair
進(jìn)入boot-repair使用Recommended repair進(jìn)行修復(fù)芍锚。
-
參考文獻(xiàn):