这几天突然想玩帝国时代3,linux系统玩不了,虽然有个0ad的开源游戏可以代替,但是太卡了,后期兵越多越卡,卡得让人烦,想了想还是装个windows系统,进入winpe给windows系统分区,提示分区重叠,新的分区直接把boot分区给覆盖了,以前装fedora系统的时候我有单独给boot分区,分区重叠覆盖,加上我又格式化,等于是把fedora中的boot分区删除了,/boot里面的文件全部没了,还怎么启动?不管了,先玩几把游戏,玩爽了之后修复fedora系统吧!!
具体看过程(从下午搞到凌晨4点,一知半解真是要命呀!):
参考文章:http://thinklog.blog.163.com/blog/static/71896182201142522452416/
之所以折腾那么久,是一开始方向就错了,幸好找到上面的文章指引。
(整个过程的命令都用root权限执行)
1、既然/boot分区整个被删除,grub2肯定是不能修复了。所以先用虚拟机创建一个fedora系统,然后把系统中boot分区里的内容拷贝出来。
2、用fedora启动u盘进入系统,用fdisk /dev/sda命令新建一个linux分区,用fdisk -l命令查出新分区是 /dev/sda9
3、新建的分区需要格式化,命令是:mkfs.ext4 /dev/sda9,会提示找不到分区等错误,那是因为/dev 没又sda9这个块文件,所以先创建一个/dev块文件 命令:mknod /dev/sda9 / b 8 9 (b代表块类型也就是磁盘 8和9这样的数字,表示主设备号和次设备号(一般来说主设备号用来区分设备的种类;次设备号则是为了作唯一性区分,标明不同属性),不知道8和9这个两个数字是怎么得来的,可以输入命令:ls -l /dev/sda* 来查看,像我这里/dev/sda8分区是:brw-rw---- 1 root disk 8, 8 Oct 9 11:46 /dev/sda8 这样。那新建的/dev/sda9分区就是这样:brw-rw---- 1 root disk 8, 9 Oct 9 11:46 /dev/sda9chmod 660 /dev/sda9
4、dev块设备文件创建之后,更改权限,改的和其它分区一样,我这里先执行:chown root:disk /dev/sda9 改用户和组,然后输入:chmod 660 /dev/sda9 更改文件权限,ok了之后重启。
5、挂载以前的/根分区到/mnt,终端里输入:mount /dev/fedora/root /mnt (这里的/dev/fedora/root才是真正的物理分区,如果你这么挂载:mount /dev/sda4 /mnt是会出错的 ),具体查看用命令:lvdisplay
6、挂载/dev/sda9到/mnt/boot:mount /dev/sda9 /mnt/boot 把第一步从fedora虚拟机里拷贝出来的boot分区内容拷贝过来。
7、拷贝/dev 内容到/mnt/dev,命令:cp -r /dev /mnt/dev
9、查看/dev/sda9的UUID,UUID这样查看:ls -l /dev/disk/by-uuid,我这里是:041b3c4c-89d7-45bc-a691-a17293437de5,接着输入:chroot /mnt 改变root环境,然后输入:vi /etc/fstab 改变原boot分区的UUID。
10、改变/boot/grub2/grub.cfg里面的UUID,命令:vi /boot/grub2/grub.cfg 把原来的UUID替换成现在的,应该有4个地方。(注意这里的/boot/grub2/grub.cfg 其实就是/mnt/boot/grub2/grub.cfg,刚刚用chroot /mnt命令切换了root环境)
11. 使用 e2label /dev/sda9 /boot命令为boot分区打上label,主要是为了与/etc/fstab中的内容对应。
12、 拔掉U盘重新引导系统,发现进不去提示UUID错误,这时候需要在开机过程中选择带Rescue标题的启动项目,没什么问题就可以进入系统了。
13、虽然能进入系统了,但是内核太旧很多软件不能使用,所以还需要更新内核,输入:sudo yum -y update kernel*,更新完重启用新内核进入系统。
14、现在fedora完美修复了,用gurb2把windows也加入开机选项中,执行:grub2-mkconfig -o /boot/grub2/grub.cfg 命令重新创建一份grub.cfg文件就可以了,怕出问题可以先原来的grub.cfg文件备份。
好了,一切都ok了,虽然折腾了很长时间,但是也学会了不少,还是挺值得的!!