前几天闲着无事,占着自己有了备份试了一下“rm -rf /*”,还原系统过程很坎坷,作为一名linux小白跳了很多坑,摸爬滚打出来做一份记录。
1.在对系统进行改动之前一定要清楚自己系统的配置,不要随意尝试不懂的指令,不是指“rm -rf”(当然也算),修复过程中可能会引入更多bug。
2.确定使用的引导,参考win10+ubuntu双系统:UEFI+GPT和Legacy+MBR引导模式,这里使用的是UEFI。
参考ubuntu系统迁移
重点:确定自己安装时的分区情况(可以sudo fdisk -l查看,是否有分出来/boot和/home)
首先成为root用户:
sudo su
进入根目录
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’,多数情况下你可以忽略它。
1.如果没有重装或者迁移系统,直接解压到根目录就可以了
sudo tar -xvpzf /media//user/移动硬盘/ubuntu_back_up@`date +%Y-%m+%d`.tar.gz -C /
也可以使用live cd启动解压,解压前先挂载根目录的盘,不清楚可以sudo fdisk -l 看一下。
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模式
sudo su
还原之前先找到原系统的/etc/fstab和/boot/grub/grub.cfg,复制到移动硬盘中!!!这两个是系统启动文件和启动加载相关的文件,如果备份时没有exclude掉dev,那么dev也要备份!!!
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
重启就能回到熟悉的系统。
参考:在win10、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】即可。
网上有各种办法如使用boot-repair修复引导和使用grub急救修复。
但是都不奏效,那么本着哪里出问题往哪里找,既然是引导出错那就是grub.cfg出问题了,可能迁移系统时备份错误,比如使用livecd启动,误备份了u盘中的grub.cfg(此时computer是U盘的系统,系统挂载在meida下)。
这是开机加载kernel错误,在live cd 下查看自己安装的vmlinuz版本是否对应得上,如果不对,那就修改/media/ubuntu/系统盘/etc/fstab,把其中的“vmlinuz-4.15.0-45”全部替换成已有的版本。
查看/lib/firmware 下是否有你的无线网卡文件,查询是否对应上,如果是对的直接
sudo update-grub
重开机就可以。没有的话到官网下载好解压放进去,参考Linux安装Intel无线网卡。
在装好的镜像文件(先别急着装系统),选择文件夹EFI/BOOT\,将里面的grubx64.efi改为mmx64.efi即可!安装完记得改回去,不然下次启动还会出问题。
挂载错误,进入live cd启动,查看/etc/fstab和/boot/grub/grub.cfg文件和/etc/fstab文件,其中硬盘UUID是否对应上你的硬盘分区UUID,比如原系统分区是否有/boot和/home,在新系统上能不能对应上。
查看硬盘分区UUID的指令:
sudo blkid
查找每个分盘的uuid是否对应得上,将错误的修改过来在重启。