朋友送了一個固態硬盤給我,因此將原機械硬盤上的系統遷移到固態硬盤上。
原機械硬盤(dev/sdb)裝有win10和ubuntu雙系統。分區情況如下:
sda1:ESP分區
sda2:資料
sda3:資料
sda4:swap分區,被我干掉了,內存8g,基本上用不上。也可以使用swap文件代替swap分區。
sda5:ubuntu的/分區
sda6:ubunt的/home分區
【記錄下刪除swap分區的過程】 1.先查看swap分區 swapon -s 2.停用swap分區 #確保swap分區沒有使用 free -m #停用swap分區 sudo swapoff /dev/sdb4 (第1步顯示的名稱) #檢查停用成功 free -m 3.刪除swap分區文件 sudo rm -rf /dev/sdb4 這樣就成功刪除了swap分區。 4.在/etc/fstab中刪除或注釋swap行 #我把swap分區刪除后,空間合並到了/分區。 因為操作的是/分區,需要在u盤啟動盤下執行,使用Gparted工具resize即可。
然后需要對ssd固態硬盤(dev/sda)分區,分區情況如下。記得ssd分區時要4k對齊,選擇2048還是4096可以參考這篇文章:固態硬盤分區4k對齊是2048還是4096?該選哪個有區別嗎?
sda1:ESP分區
sda2:用於win10系統
sda3:win10自動創建的恢復分區(以前沒有的,可能是使用易升升級時自動創建的),無需手動創建。
sda4:用於ubuntu的/分區
sda5:用於ubunt的/home分區
然后,win10直接用ghost備份恢復,再進pe修復下引導就搞定了。記錄手動恢復引導的命令:
# 用DG等工具先將ESP分區裝載為K盤,從系統盤C:\Windows目錄中復制UEFI格式的啟動文件到ESP分區中,修復系統。
bcdboot c:\windows /s k: /l zh-cn /f uefi
ubuntu的備份恢復花費了大量時間,主要是刷教程做准備工作。網上的方法差不多兩種,一種是使用dd命令直接拷貝分區,另一種是使用tar命令壓縮備份系統文件。我使用的是后者,需要在live usb環境下進行,也就是使用u盤ubuntu啟動盤。主要參考了這篇教程:Ubuntu系統備份
備份前准備
1.備份前先清理系統,減小備份文件的大小(可選)
首先進行系統的清理
# 清理舊版本的軟件緩存
sudo apt-get autoclean
# 清理所有軟件緩存
sudo apt-get clean
# 刪除系統不再使用的孤立軟件
sudo apt-get autoremove
刪除老舊的系統內核
可以參考這篇文章:如何刪除 Ubuntu 上不再使用的舊內核。刪除完后,記得使用sudo update-grub更新一下。
2.插入u盤啟動,進入Live USB界面,點擊試用ubuntu,進入桌面后,獲取root權限
sudo su
備份
3.備份/分區和/home分區
cd / #掛載/分區 sudo mkdir src-root sudo mount /dev/sdb5 /src-root #掛載/home分區 sudo mkdir src-home sudo mount /dev/sdb6 /src-home #掛載放/文件的分區(ssd的/分區) sudo mkdir des-root sudo mount dev/sda4 /des-root #掛載放/home文件的分區(ssd的/home分區) sudo mkdir des-home sudo mount dev/sda5 /des-home #備份/分區文件。 注意:因為是live USB環境,直接用/表示USB ubuntu的/,所以不能直接用/。由於已經cd到了要備份的ubuntu的/目錄下了,所以直接用./ sudo su cd /src-root tar cvpzf /des-root/backup.tgz --exclude=./proc --exclude=./lost+found --exclude=./mnt --exclude=./media --exclude=./sys --exclude=./run --exclude=./tmp --exclude=./home ./ #備份/home分區文件 sudo su cd /src-home tar cvpzf /des-home/home_backup.tgz ./
-c: 新建一個備份文檔
-v: 顯示詳細信息
-p: 保存權限,並應用到所有文件
-z: 用gzip壓縮備份文檔,減小空間
-f: 指定壓縮包名稱(帶路徑),只能做最后一個參數
--exclude: 排除指定目錄,不進行備份
--exclude=/proc 一個虛擬文件系統,系統運行的每一個進程都會自動在這個目錄下面創建一個進程目錄。既然是系統自動創建,也就沒必要備份。
--exclude=/lost+found 系統發生錯誤時(比如非法關機),可以在這里找回一些丟失文件。
--exclude=/mnt
--exclude=/media 多媒體掛載點,如u盤、移動硬盤、windons分區等都會自動掛載到這個目錄下。
--exclude=/sys
--exclude=/run 系統從啟動以來產生的一些信息文件。
--exclude=/tmp 臨時文件目錄
--exclude=/home
另外要注意的是:我是划分了/和/home的,所以備份/時會排除掉/home,之后單獨備份/home。如果沒有划分單獨的/home,則不要排除/home。
還原
4.進行還原操作
# 解壓/備份文件 cd /des-root tar -xvpzf backup.tgz # 解壓/home備份文件 cd /des-home tar -xvpzf home_backup.tgz # 創建前面備份時忽略的文件夾 cd /src-rootmkdir proc mkdir media mkdir mnt mkdir tmp mkdir sys mkdir run
5.修復引導。我是直接重建引導。
參考EFI+GPT模式下修復GRUB2雙系統引導-修訂版,一種是用efibootmgr,另一種是grub-install,我用的后一種方法。
sudo su mount /dev/sda4 /mnt (/dev/sda4:為/ 分區) mount /dev/sda1 /mnt/boot/efi (/dev/sda1:為/efi分區) mount -t proc proc /mnt/proc mount -t sysfs sys /mnt/sys mount -o bind /dev /mnt/dev mount -t devpts pts /mnt/dev/pts/ chroot /mnt grub-install /dev/sda1 update-grub2
6.重啟,然后修改/etc/fstab文件,主要修改UUID。
7.最后,記得刪除備份文件,減少磁盤空間占用。