Ubuntu系統(tǒng)遷移
環(huán)境
| Machine | OS | |
|---|---|---|
| Origin | Machine1 | ubuntu1 |
| Target | Machine2 | ubuntu2 |
遷移方向:Origin --> Target
引導(dǎo)方式:UEFI + GPT
前話
- 因?yàn)閡buntu一切皆文件, 故遷移系統(tǒng)就是將ubuntu2的系統(tǒng)文件(/目錄下所有文件)完全替換成ubuntu1。
- 系統(tǒng)遷移和備份是同一個(gè)原理——都是拷貝復(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ū)的某個(gè)位置上。電腦開(kāi)機(jī)的時(shí)候,不會(huì)智能到自動(dòng)找到該OS文件并執(zhí)行的地步,需要引導(dǎo)程序告訴計(jì)算機(jī)在什么位置尋找OS,故引導(dǎo)程序?qū)嶋H就是一道橋梁的作用。
-
對(duì)于一個(gè)在UEFI模式下安裝的ubuntu系統(tǒng),在安裝時(shí),某硬盤(本文是sda)一定有如下兩個(gè)分區(qū):
-
/dev/sda1--->OS System:此分區(qū)存放Ubuntu的系統(tǒng)文件,其中包含:
- /etc/fstab, /etc/fstab.d(可能沒(méi)有):?jiǎn)?dòng)文件
- /boot/grub/grub.cfg:分區(qū)文件
注:在fstab啟動(dòng)文件中,可以看到里面根據(jù)分區(qū)的UUID綁定了/dev/sda1給/,將/dev/sda2綁定到/boot/efi中,這里也是啟動(dòng)的關(guān)鍵。如果UUID不正確,就無(wú)法找到引導(dǎo)程序和OS文件,系統(tǒng)恢復(fù)后無(wú)法正常開(kāi)機(jī)。
/dev/sda2 ---> EFI System:此分區(qū)是在EFI下安裝Ubuntu必要的,里面應(yīng)該存放了引導(dǎo)程序。
-
-
系統(tǒng)備份與遷移
系統(tǒng)備份:因?yàn)閭浞莼謴?fù)前后,電腦的分區(qū)不會(huì)改變,而且備份恢復(fù)改變的只是OS所在分區(qū),不會(huì)影響到/dev/sda2的EFI System。所以就算換了OS文件,系統(tǒng)還是能正常引導(dǎo)修復(fù)。因此,系統(tǒng)備份沒(méi)有系統(tǒng)遷移復(fù)雜,只需要復(fù)制拷貝OS文件即可。
-
系統(tǒng)遷移:因?yàn)槭菍⑾到y(tǒng)從一臺(tái)電腦移動(dòng)到另外一臺(tái)電腦,硬盤分區(qū)會(huì)變,EFI文件也會(huì)改變。所以對(duì)于系統(tǒng)遷移,建議:
在machine2上先重裝系統(tǒng),新系統(tǒng)中EFI System、fstab啟動(dòng)文件以及grub.cfg分區(qū)文件都是匹配的。即,新系統(tǒng)下一切正常,只需要?jiǎng)h除ubuntu2然后移入ubuntu1即可,其他不變。
系統(tǒng)遷移正文
事先準(zhǔn)備一個(gè)ubuntu啟動(dòng)盤
系統(tǒng)備份In Machine1
Machine1 ---> U盤啟動(dòng) ---> Try Ubuntu進(jìn)入livecd模式: 開(kāi)終端,進(jìn)入管理員權(quán)限。
-
掛載ubuntu1所在分區(qū)和移動(dòng)硬盤
-
mkdir data:在/目錄下,創(chuàng)建data。 -
mount /dev/sda1 /mnt:假設(shè)ubuntu1在Machine1的sda1上,將其掛載到mnt上 -
mount /dev/sdb1 /data:假設(shè)移動(dòng)硬盤在Machine1的sdb1上,將其掛載到data上
-
-
備份ubuntu1至移動(dòng)硬盤
- 方法一: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: 新建一個(gè)備份文檔
-v: 顯示詳細(xì)信息
-p: 保存權(quán)限,并應(yīng)用到所有文件
-z: 用gzip壓縮備份文檔,減小空間
-f: 指定備份文件的路徑
–exclude: 排除指定目錄,不進(jìn)行備排除如下文件:
/proc:一個(gè)虛擬文件系統(tǒng),系統(tǒng)運(yùn)行的每一個(gè)進(jìn)程都會(huì)自動(dòng)在這個(gè)目錄下面創(chuàng)建一個(gè)進(jìn)程目錄。既然是系統(tǒng)自動(dòng)創(chuàng)建,也就沒(méi)必要備份的必要了。
/tmp:一個(gè)臨時(shí)文件夾,系統(tǒng)的一些臨時(shí)文件會(huì)放在這里。
/lost+found:系統(tǒng)發(fā)生錯(cuò)誤時(shí)(比如非法關(guān)機(jī)),可以在這里找回一些丟失文件。
/media:多媒體掛載點(diǎn),像u盤、移動(dòng)硬盤、windons分區(qū)等都會(huì)自動(dòng)掛載到這個(gè)目錄下。
/mnt:臨時(shí)掛載點(diǎn),你可以自己掛載一些文件系統(tǒng)到這里。
/run:系統(tǒng)從啟動(dòng)以來(lái)產(chǎn)生的一些信息文件。-
方法二,mksquashfs(如果用tar備份和恢復(fù)時(shí)出錯(cuò),就用該方式)
mksquashfs /mnt/data/ubuntu.sfs:備份系統(tǒng)sync:讓系統(tǒng)保存下數(shù)據(jù)
-
解除綁定:
umont /dataumount /mnt
系統(tǒng)恢復(fù) In Machine2
- 使用啟動(dòng)u盤在Machine2上以EFI模式安裝ubuntu2系統(tǒng),本文分區(qū)如下:
- sda1 --> ubuntu
- sda2 --> EFI System
安裝新系統(tǒng)之后,依然從U盤啟動(dòng),Try Ubuntu進(jìn)入livecd模式: 開(kāi)終端,進(jìn)入管理員權(quán)限。
-
掛載:
-
mkdir data:在/目錄下,創(chuàng)建data用以掛載移動(dòng)硬盤 -
mount /dev/sda1 /mnt:將ubuntu2掛載到mnt -
mount /dev/sdc1 /data:將移動(dòng)硬盤掛載到/data
-
-
保留原ubuntu2的啟動(dòng)文件和分區(qū)文件:(如果是本地系統(tǒng)備份的話,可略此步)
因?yàn)檫@兩個(gè)文件記錄了machine2上ubuntu2上的啟動(dòng)信息和分區(qū)信息,而系統(tǒng)備份中的文件是machine1的,放在新環(huán)境下,配置一定出錯(cuò),所以要用本土的配置文件,只需換個(gè)系統(tǒng)文件即可。
-
cp /mnt/etc/fstab(若有fstab.d,就一并復(fù)制) /data:保留原啟動(dòng)文件 -
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ù)啟動(dòng)文件(本地備份恢復(fù)不需要此步)cp /data/grub.cfg /mnt/boot/grub:恢復(fù)分區(qū)文件(本地備份恢復(fù)不需要此步) -
方法二:mksquashfs
mkdir /rescovery/mntmount -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ù)啟動(dòng)文件(本地備份恢復(fù)不需要此步)cp /data/grub.cfg /mnt/boot/grub:恢復(fù)分區(qū)文件(本地備份恢復(fù)不需要此步)
注:如果只是本地備份恢復(fù)到此即可結(jié)束(僅僅拷貝粘貼系統(tǒng)文件即可),如果是遷移系統(tǒng),還需要有如下步驟!第6步,在系統(tǒng)遷移時(shí)試過(guò)了,但在系統(tǒng)啟動(dòng)時(shí)還是會(huì)出錯(cuò);第7步,應(yīng)該可行,但
sudo add-apt-repository ppa:yannubuntu/boot-repair添加失敗,來(lái)者需要特別注意。 -
-
引導(dǎo)修復(fù)1
-
從try ubuntu中為ubuntu2掛載虛擬文件系統(tǒng),為引導(dǎo)修復(fù)做準(zhǔn)備:
mount -o bind /dev /mnt/devmount -o bind /proc /mnt/procmount -o bind /sys /mnt/sys chroot /mnt:進(jìn)入ubuntu2-
對(duì)比UUID
在try ubuntu中新建一個(gè)終端,輸入
blkid查看硬盤分區(qū)UUID在上面chroot /mnt過(guò)的終端中,使用
vim /etc/fstab查看啟動(dòng)文件中的信息。對(duì)照/sda1(mount point為/)和/sda2(mount point為/boot/efi)綁定的兩個(gè)UUID是否和/dev/sda1和/dev/sda2相吻合。(因?yàn)槭强截惖脑璾buntu2系統(tǒng)中的文件,應(yīng)該不會(huì)有錯(cuò)誤,有錯(cuò)誤的話,就需要修改。)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盤啟動(dòng),進(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):