美文网首页
openSUSE-Leap相遇旧UEFI固件的引导问题

openSUSE-Leap相遇旧UEFI固件的引导问题

作者: 三十 | 来源:发表于2017-06-30 11:40 被阅读136次

    最近想在自己的联想M8300t上体验一下openSUSE-Leap-42.2,因为已经装了win10(UEFI+GPT),所以想着可以弄个双系统,刚好把剩余的70G固态硬盘空间分配给openSUSE。

    但是,几乎近10来次的安装,也未能成功。即使固态硬盘全部格式化,只安装openSUSE,引导也失败了。

    安装快结束时可能会提示: 

    **Warning**Boot000c is not UEFI Spec compliant(lowercase hex in name)。

    即使安装过程中不提示,也会开机引导失败

    如果用光盘或U盘引导,选择其他里的从Linux启动,可以进入安装好的系统。

    在终端输入grub2-install /dev/sda或者sda2(efi分区),或者/boot/efi,都会提示以下错误:

    Installing for x86_efi platform.

    **Warning** : Boot000c is not UEFI Spec compliant(lowercase hex in name)

    **Warning** : Boot000c is not UEFI Spec compliant(lowercase hex in name)

    **Warning** : Please recreate these using efibootmgr to remove this warning.

    Could not prepare Boot variable: No space left on device

    Installation finished.No error reported.

    看到了吗,没有错误,但就是装了也没用

    Goolge找答案,终于看到了看到了一点结果

    https://askubuntu.com/questions/632573/how-to-change-lowercase-hex-to-uppercase-with-efibootmgr

    “Another point about this is that the names of the boot options with lowercase hexadecimal numbers suggests that they were created by your firmware. Thus,even if you were to delete those boot options,they or other options with lowercase hexadecimal numbers might be(re-)created by the firmware in the future. The warning says that the values are not compliant with EFI 1.10,but most modern computers ship with EFI 2.x(aka UEFI). Thus,the warningshouldmatter only on these older EFIs.”

    总的意思来说就是主板的UEFI固件版本太旧。

    既然这样,就得想办法找一个程序接管系统引导。因为在苹果上有过数次安装Linux的经历,所以我对refind工具还是稍微熟悉点,看了下官方的页面,win下也可以安装。

    1、Locate Command Prompt in the Start menu,right-click it,and select Run as Administrator. This action opens a Command Prompt window with administrative privileges.

    用管理员权限运行cmd

    2、Typemountvol S: /Sin the Administrator Command Prompt window. This makes the ESP accessible as drive S: from that window.(You can use a drive identifier other than S: if you like.)

    输入mountvol S: /S,将efi分区挂载到S

    3、Change into the main rEFInd package directory,so that the refind subdirectory is visible when you typedir.

    进入到解压后refind根目录,进入后确保能看到里面的refind子目录

    4、Typexcopy /E refind S:\EFI\refind\to copy the refind directory tree to the ESP's EFI directory. If you omit the trailing backslash from this command,xcopy will ask if you want to create the refind directory. Tell it to do so.

    输入xcopy /E refind S:\EFI\refind\,复制必要的文件

    5、TypeS:to change to the ESP.进入S盘

    6、Typecd EFI\refindto change into the refind subdirectory

    进入refind目录,cd EFI\refind

    7、You may want to selectively delete some of the drivers in the drivers_x64,drivers_ia32,or drivers_aa64 directory,depending on your architecture and needs. Unnecessary drivers will slow the rEFInd start process,and can even cause the drivers you need to not work or cause a system crash. See thepage on driversfor more on this topic.

    你可以删除多余的驱动文件,这样可以使系统启动快一点,不做也没关系,免得删错了麻烦

    8、Typerename refind.conf-sample refind.confto rename rEFInd's configuration file.

    重命名refind.conf-samplerefind.conf

    9、Note:I've heard from a couple of Windows 10 users that the bcdedit commands described here don't work. I don't yet know if this is a coincidence or if Microsoft has changed bcdedit in such a way that these instructions no longer apply. If you run into this problem,either try using EasyUEFI or use another installation method,such as theLinux methodfrom a Linux emergency boot disc.

    如果win10用户使用bcdedit命令出错,那么可以试试EasyUEFI。

    10、Typebcdedit /set {bootmgr} path \EFI\refind\refind_x64.efito set rEFInd as the default EFI boot program. Note that {bootmgr} is entered as such;that's not a notation for a variable. Also,change refind_x64.efi to refind_ia32.efi on systems with 32-bit EFIs. Such computers are rare,and most of them are tablets. Check your Windows bit depth to determine which binary you should use.

    运行bcdedit /set {bootmgr} path \EFI\refind\refind_x64.efi,将refind设置为默认的引导管理程序。

    11、If you like,typebcdedit /set {bootmgr} description "rEFInd description"to set a description(changerEFInd descriptionas you see fit).

    如果你想修改refind的描述也是可以的。


    接下来就是安装openSUSE的大致步骤了

    网上说btrfs文件系统会频繁建立快照,太伤SSD,所以我使用了传统的ext4文件系统,/home目录也是ext4,因为不确定efi不挂载是否会导致安装程序出错,所以我仍然在分区方案里将/dev/sda2挂载到了/boot/efi。

    等到了最后确定步骤,设置不安装任何引导程序,不用理会系统的提示。

    安装完成后,重启,终于看到了win1和openSUSE启动项。选择运行,一切OK。


    备注:

    openSUSE42.2(KDE)默认安装好,右下网络管理器是没有运行的

    解决办法:

    systemctl enable NetworkManager

    systemctl start NetworkManager

    相关文章

      网友评论

          本文标题:openSUSE-Leap相遇旧UEFI固件的引导问题

          本文链接:https://www.haomeiwen.com/subject/jhekcxtx.html