1. 前言:
前几天闲着无事,占着本身有了备份试了一下“rm -rf /*”,还原系统过程很坎坷,做为一名linux小白跳了不少坑,摸爬滚打出来作一份记录。
1.在对系统进行改动以前必定要清楚本身系统的配置,不要随意尝试不懂的指令,不是指“rm -rf”(固然也算),修复过程当中可能会引入更多bug。
2.肯定使用的引导,参考win10+ubuntu双系统:UEFI+GPT和Legacy+MBR引导模式,这里使用的是UEFI。html
2.ubuntu系统备份和还原
参考ubuntu系统迁移
重点:肯定本身安装时的分区状况(能够sudo fdisk -l查看,是否有分出来/boot和/home)linux
备份
首先成为root用户:web
sudo su
进入根目录ubuntu
cd /
使用tar压缩保存到移动硬盘:
参数:
-c: 新建一个备份文档
-v: 显示详细信息
-p: 保存权限,并应用到全部文件
-z: 用gzip压缩备份文档,减少空间
-f: 指定备份文件的路径
–exclude: 排除指定目录,不进行备份
Note: 注意–exclude参数,可使相应的目录不进行备份
/proc:一个虚拟文件系统,系统运行的每个进程都会自动在这个目录下面建立一个进程目录。既然是系统自动建立,也就不必备份的必要了。
/tmp:一个临时文件夹,系统的一些临时文件会放在这里。若是单独分盘能够不备份。
/lost+found:系统发生错误时(好比非法关机),能够在这里找回一些丢失文件。
/media:多媒体挂载点,像u盘、移动硬盘、windons分区等都会自动挂载到这个目录下。
/mnt:临时挂载点,你能够本身挂载一些文件系统到这里。
/run:系统从启动以来产生的一些信息文件。
/home:用户家目录,存放用户我的文件和应用程序。
/boot:和系统启动相关的文件,像grub相关文件都放在这里,这个目录很重要!若是/boot单独分区,能够把这个文件夹exclude,固然也能够单独作备份,系统通常出问题都是根目录(/),因此平时只备份 / 就行。
/dev : 这个目录保存系的各类设备。若是作系统迁移,由于换了设备或者从新分盘后盘符不同了,原来系统的dev还原覆盖了新系统的就会出现找不到/root,若是备份了也没事,还原前把新系统的dev备份好,还原完再把dev替代回去就能够。网络
sudo tar -cvpzf /media/user/移动硬盘/ubuntu_back_up@`date +%Y-%m+%d`.tar.gz --exclude=/proc --exclude=/tmp --exclude=/lost+found --exclude=/media --exclude=/mnt --exclude=/run /
在备份命令结束时你可能会看到这样一个提示:’tar: Error exit delayed from previous errors’,多数状况下你能够忽略它。svg
还原
1.若是没有重装或者迁移系统,直接解压到根目录就能够了ui
sudo tar -xvpzf /media//user/移动硬盘/ubuntu_back_up@`date +%Y-%m+%d`.tar.gz -C /
也可使用live cd启动解压,解压前先挂载根目录的盘,不清楚能够sudo fdisk -l 看一下。.net
mkdir /mnt/sys
mount /dev/sdX* /mnt/sys
sudo tar -xvpzf /media//user/移动硬盘/ubuntu_back_up@`date +%Y-%m+%d`.tar.gz -C /mnt/sys
2.迁移系统(无论物理仍是虚拟,亲测均可以)
在live cd下进入root模式code
sudo su
还原以前先找到原系统的/etc/fstab和/boot/grub/grub.cfg,复制到移动硬盘中!!!这两个是系统启动文件和启动加载相关的文件,若是备份时没有exclude掉dev,那么dev也要备份!!!xml
sudo cp /media/系统根目录/etc/fatab /media/移动硬盘
sudo cp /media/系统根目录/boot/grub/grub.cfg /media/移动硬盘
还原步骤一致,最后把fstab和grub.cfg还回去。
sudo cp /media/移动硬盘/fatab /media/系统根目录盘/etc
sudo cp /media/移动硬盘/grub.cfg /media/系统根目录盘/boot/grub
最后
还原exclude的文件夹
mkdir tmp lost+found mnt run media proc
重启就能回到熟悉的系统。
3.ubuntu系统完全删除
参考:在win十、Ubuntu双系统下,卸载Ubuntu
(1)在win下,“个人电脑”右键->管理->磁盘,右键除分盘。
(2)删除ubuntu启动引导
下载EasyUEFI,官方下载地址
选择管理EFI启动选项【Manage EFI Boot Option】,进入以下界面。依次选择每一个ubuntu启动引导项,点击红色方框中的按键删除该ubuntu启动引导项。
到这里启动项已经交给win,固然若是要把ubuntu启动项也从启动栏删除的话,要对win的启动盘进行操做,
1. 输入【Win】+【R】,输入【diskpart】打开diskpart;
输入【list disk】,显示磁盘列表
输入【select disk 0】,选择磁盘0,即win10系统所在磁盘;
输入【list partition】,查看磁盘0的分区列表;
输入【select partition 3】,选择wind10启动引导项所在分区(即Type=System,容量通常较小为100M的那一个分区);
为win10的EFI启动引导项所在分区分配盘符,输入【assign letter = p】,这里p为盘符名称,字母A~Z应该均可以,注意不要和已有盘符名重复便可;此时,win10磁盘会发现多出一个P盘(须要管理员权限,方可打开),就是咱们刚刚分配的win10启动引导项分区。这里先用管理员权限打开记事本,而后经过记事本菜单栏里的【打开】来访问P盘,会发现P盘里有个EFI文件夹,打开EFI文件夹。这里直接删除ubuntu文件夹就能够了。
此时,再回到diskpart删除刚刚分配的盘符P,输入【remove letter = p】便可。
4.可能出现问题
(1)grub引导出错
网上有各类办法如使用boot-repair修复引导和使用grub急救修复。
可是都不奏效,那么本着哪里出问题往哪里找,既然是引导出错那就是grub.cfg出问题了,可能迁移系统时备份错误,好比使用livecd启动,误备份了u盘中的grub.cfg(此时computer是U盘的系统,系统挂载在meida下)。
(2)错误:file ‘/boot/vmlinuz-4.15.0-45-generic’ not found.alloc magic is broken at 0x5ad6c*******Aborted.
这是开机加载kernel错误,在live cd 下查看本身安装的vmlinuz版本是否对应得上,若是不对,那就修改/media/ubuntu/系统盘/etc/fstab,把其中的“vmlinuz-4.15.0-45”所有替换成已有的版本。
(3)ubuntu安装完发现没有网络,没有无线网卡
查看/lib/firmware 下是否有你的无线网卡文件,查询是否对应上,若是是对的直接
sudo update-grub
重开机就能够。没有的话到官网下载好解压放进去,参考Linux安装Intel无线网卡。
(3)ubuntu没法从U盘启动,Failed to open \EFI\BOOT\mmc64.efi - Not Found Failed to load EFI\BOOT\mmx64.efi: Not Found Failed to start MokManager: Not Found.Something has gone seriously wrong: import_mok_state() failed: Not Found
在装好的镜像文件(先别急着装系统),选择文件夹EFI/BOOT\,将里面的grubx64.efi改成mmx64.efi便可!安装完记得改回去,否则下次启动还会出问题。
(4)系统迁移后开机出现mount: mounting /sys on /root/sys failed:Nosuch file or directory.Failed to mount syss at /sys:No such file or directory.[!!!]Failed to mount early API filesystems,freezing.Freezing execution.
挂载错误,进入live cd启动,查看/etc/fstab和/boot/grub/grub.cfg文件和/etc/fstab文件,其中硬盘UUID是否对应上你的硬盘分区UUID,好比原系统分区是否有/boot和/home,在新系统上能不能对应上。
查看硬盘分区UUID的指令:
sudo blkid
查找每一个分盘的uuid是否对应得上,将错误的修改过来在重启。