太感谢您了!
按照你说的方法,在执行grub-install /dev/sda7 这一步的时候出问题了。
错误信息是
grub2-install: error: cannot find a device for /boot/grub2 (is /dev mounted?)
这不是首先就mount了么?
太感谢您了!
按照你说的方法,在执行grub-install /dev/sda7 这一步的时候出问题了。
先退出chroot
mount --bind /dev /mnt/dev
mount --bind /dev/pts /mnt/dev/pts
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
下面一条换成grub2-install --target=x86_64-efi /dev/sda7
在rescue下 我依次执行了这些命令
vgscan
vgchange -a y system
mount /dev/mapper/system-root /mnt
mount --bind /dev /mnt/dev
mount --bind /dev /mnt/dev
mount --bind /dev/pts /mnt/dev/pts
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
mount /dev/sda7 /mnt/boot/efi
chroot /mnt
最后执行这一句
grub2-install --target=x86_64-efi /dev/sda7
出错了
错误信息是 /usr/lib/grub2/x86_64/modinfo.sh不存在,照片里满屏的字 是我用ls /usr/lib查看了一下
这我也不是很明白咋回事了。你chroot之后,联网(用网线会简单一点),然后
zypper in -f grub2-x86_64-efi shim
重装一下这两个包,看看会不会好一点。
楼主 大过年的 休息一下吧 你的问题可能就是出在你的分区是LVM的方式上 我不是很懂这个东西
这里给你我自己曾经修复的记录吧 这个博客刚付款了 三个月之后还不知道能不能访问 希望能有所帮助http://tianwaifeixian.leanote.com/post/5d79f6d36de7
論壇裏面的鏈接:https://forum.suse.org.cn/t/grub2/398/5
+1,过年了歇歇吧,这样我也不是很明白了。碰到特别棘手的问题我还是会重装,因为有时候查不到资料浪费时间太严重。
还是出错,grub2-install /dev/sda 出错
错误信息如下
如果是grub2-install /dev/sda7也不行 错误信息完全一致。
另外加—target=x86_64-efi也不行
@swiatoslaw 过了一遍帖子,我感觉是你没 mount 你原来系统的 /usr,所以你运行 grub2 install 的时候才会提示那个 modinfo.sh 找不到。
我想看看你的 vgscan 和 vgchange -a 的结果。
另外别忘了把那些日子拷贝出来让我看看。
前一个图,需要复制 /etc/resolv.conf。后一个图,bind mount /run 试试。
不懂 是说我现在连不上网?
在 rescue 下,先 ping baidu.com 看看能不能连上网。不能上网就先运行 yast,网络设置,把网络弄上。另外你最早 grub2 install 的时候,用的不是 “—target=x86_64-efi”,而是 “—taget”,没有那个选项的
把网络弄上又能干嘛呢?全是命令行
弄上你就能 zypper install grub2 那些东西了啊…之前你不是装不上么
我错了 我错了 我错了
查看无线网卡的设备名:
ip a
我的是 wlp0s20f0u9:
3: wlp0s20f0u9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 38:83:45:18:b9:62 brd ff:ff:ff:ff:ff:ff
inet 192.168.31.25/24 brd 192.168.31.255 scope global wlp0s20f0u9
valid_lft forever preferred_lft forever
顺便说下我的有线网卡是 enp3s0。
下面切换到 root:
su
然后查看可用的 NetworkManager 连接:
nmcli con show
名称 UUID 类型 设备
D7-3-101 3ca45359-5d19-4574-b5b0-3d8251a82039 802-11-wireless --
Wired connection 1 bd119e48-f955-3a4a-9e5c-327b4199a75c 802-3-ethernet --
要是这里面有你之前的连接,连网的命令就是:
nmcli con up uuid 3ca45359-5d19-4574-b5b0-3d8251a82039
这里我连接的是无线,有线就用另一个 uuid 即可。
要是没有连接,新建无线连接用这个命令:
nmcli dev wifi connect <SSID> password <password>
新建有线连接用这个命令:
nmcli con add type ethernet con-name <SSID> ifname enp3s0
要是静态连接,在上面的命令后面添加:
ip4 192.168.1.50/24 gw4 192.168.1.1
连接创建好后,假如要修改 dns:
nmcli con mod <SSID> ipv4.dns “8.8.8.8 8.8.4.4”
然后 nmcli con down <SSID>
再重新 up 一下就可以。
请按照以下内容给我提供信息好帮你修复 grub2:
第负二步:
BIOS 里确定你开了 UEFI,SecureBoot 开关都无所谓。FastBoot 关上(不然进完 Windows 10 回来 openSUSE 启动不了,因为 Windows 10 依然占用硬盘)。
第负一步:
准备 chroot(假设你的 root 是 sda8, efi 装在 sda7,因为我看到你 sda2 也是个 efi 分区,你自己确定就好):
vgchange -a y system
mount /dev/mapper/system-root /mnt
mountt /dev/sda7 /mnt/boot
mount -B /dev /mnt/dev
mount -B /dev/pts /mnt/dev/pts
mount -B /proc /mnt/proc
mount -B /sys /mnt/sys
mount -B /run /mnt/run
chroot /mnt
退出 chroot 就输入 exit 就可以。下面你要分好几步检查,所以你可能要弄好多次这个 chroot。
第零步:
验证 SecureBoot 是否关闭:
od -An -t u1 /sys/firmware/efi/vars/SecureBoot-8be4df61-93ca-11d2-aa0d-00e098032b8c/data
要是 0 的话,就是关闭着,或者根本没有 SecureBoot。要是这个命令失败了,你就不是 UEFI mode 引导的。
第一步:
查找一下 grubx64.efi:
find . -name 'grubx64.efi'
如果找到了:
cat /path/to/grubx64.efi
让我看一下内容。
然后同样方法查找一下 grub.cfg,让我看一下内容。
第二步:
要是内容都没问题的话:
zypper se -v grub2
看看 grub2 装没装。
zypper up grub2
升级 grub2(在搞定了网络的情况下)。
然后查找一下这些值,让我看看:
cat /etc/default/grub | grep "GRUB_USE_LINUXEFI"
cat /etc/default/grub | grep "GRUB_DISABLE_OS_PROBER"
cat /etc/default/grub | grep "GRUB_CMDLINE_LINUX_DEFAULT"
cat /etc/default/grub | grep "GRUB_CMDLINE_LINUX"
第一个 USE_LINUXEFI 应该是 true,第二个是 false,剩下的要是有 resume=/dev/disk/by-uuid/XXX 之类的,用
blkid
确认下那个 uuid 是不是 sda8.
然后检查 /etc/fstab:
cat /etc/fstab | grep boot
给我看下结果。里面的 UUID 也要是 sda8 的 UUID。
第三步:
efibootmgr -v
的结果我也要看一下。如果里面没有 opensuse 的项的话,加上:
gdisk -l /dev/sda7
efibootmgr --create --disk /dev/sda7 --part N --label "opensuse" --load \\EFI\\opensuse\\grubx64.efi
那个 part 的 N 是由 gdisk -l /dev/sda7 得到的。
假如说你的 openSUSE 在 efibootmgr -v 里显示的是 Boot0004 的话,把它的启动顺序变成第一个:
efibootmgr -b 0004 -B
第四步:
要是以上都不行,就重装 grub2
grub2-install --target=x86_64-efi /dev/sda7
grub2-mkconfig -o /boot/grub2/grub.cfg
你真好!!我非常非常感激你。
我一定尽快用你的办法尝试并且把结果报上来。
这几天在windows下面做一些东西,我一定马上!我保证