GPT分区无法启动Linux系统的解决方案 (gpt装linux无法启动)

在Linux系统中,磁盘分区非常重要,它能够帮助我们更好地管理磁盘空间,以及保护数据的安全性。在分区方案中,GPT分区是一种较为常见的分区方式,它相比于传统的MBR分区方式,具有更大的容量支持,更多的备份分区和更好的数据安全性。但在实际使用中,有时我们会遇到GPT分区无法启动Linux系统的问题,怎样解决呢?下面将为您详细讲述解决方案。

1. 确定引导方式

无法启动系统的原因可能是很多的,我们首先要确定的是引导方式。我们可以通过进入BIOS设置界面来查看引导设置是否正确。在BIOS中,我们可以选择UEFI/LEGACY两种引导方式,其中UEFI是一种新的引导方式,它可以帮助操作系统更好地利用64位特性和内存,而LEGACY则是一种比较老的引导方式。如果我们使用的是GPT分区表,则需要选择UEFI方式,如果使用的是MBR分区表,则需要选择LEGACY方式。如果引导方式选择不正确,那么系统是无法启动的。

2. 使用Live CD修复GRUB引导器

如果我们使用的是UEFI引导方式,并且无法启动Linux系统,我们可以尝试使用Live CD修复GRUB引导器。我们需要下载一个Linux Live CD,并将其烧录成一个启动盘。然后,我们需要使用启动盘进入系统,并输入以下命令:

$ sudo mount /dev/sda1 /mnt

$ sudo mount –bind /dev /mnt/dev

$ sudo mount –bind /proc /mnt/proc

$ sudo chroot /mnt

在进入Chroot环境后,我们需要重新安装GRUB引导器,使其能够在GPT分区表上正常启动。命令如下:

# grub-install /dev/sda

# update-grub

重启电脑即可。

3. 修改BIOS设置

如果以上两种方法无法解决问题,我们可以尝试在BIOS中修改引导项的设置。在进入BIOS设置界面后,我们可以选择修改引导项的设定,确保选中正确的引导设备。有些电脑需要在BIOS中安装第三方的引导管理器,否则就无法启动任何操作系统。

4. 进行文件系统检查和修复

如果以上方法依然无法解决问题,我们可以尝试使用Linux的自带工具来进行磁盘的文件系统检查和修复。我们可以使用fsck命令来执行文件系统检查,以及e2fsck命令来执行文件系统修复。命令如下:

$ sudo e2fsck /dev/sda1

以上命令将自动检查并修复文件系统中的错误。

在使用Linux系统的过程中,我们经常会遇到各种问题,而GPT分区无法启动Linux系统的问题也是其中之一。解决方案有很多,只要我们谨慎分析,并采用正确的方法,问题一定能够被成功解决。如果您遇到了类似的问题,不妨尝试以上方法。

相关问题拓展阅读:

关于UEFI启动+GPT分区 的一些经验

随着时代和科技的发展,电脑越来越普及,似乎人人都可以张嘴就说“我懂电脑”,但是总有一些看起来完全不懂但实际上非常基础的东西让“懂”与“不懂”清晰地划清界限。比如UEFI+GPT就是其中之一。那些之前认为自己已经精通电脑的人,遇到这个东西,忽然发现自己连以前自以为驾轻就熟的分区、装 系统 都不会了。 

  尽管UEFI以及GPT从诞生迄今已经 十余年 了,但是对于绝大多数人来讲它们是完全陌生的,甚至根本就不知道还有这种东西。 

  但是由于 Windows 8操作系统的面世,预装Windows8的电脑开始统一采用UEFI+GPT,很多人被迫接触到,感觉就像突然从天上掉下来的东西一样,无所适从早裂,一筹莫展——“这到底是个什么东西呢?” 

一旦出现系统问题,唯一能做的解决办法除了品牌机自带的

系统还原

,更大能力不过就是把UEFI关闭,把硬盘从GPT再转成MBR,从而彻底毁掉UEFI+GPT的优势,重新回到陈旧落后的BIOS+MBR的系统安装和运行方式上来。而每台电脑的具体情况又不尽相同,有时候即使想用BIOS+MBR也不是肯定能成功的——“我该怎么办啊?” 

   正文:  

之前很长一段时间对UEFI+GPT没有头绪,有种无处下手的感觉,虽然UEFI+GPT安装系统一直没遇到什么障碍,但是即使查阅了相当数量的资料,在认识上对于UEFI+GPT也没有一个完整的概念,总觉得这是一个很难理解的东西,不得要领。不像最初接触BIOS+MBR的时候那么容易入门直至熟练操作。 

先说关于什么是UEFI和GPT,在此就不做详解了,感兴趣的都了解,不感兴趣的说了也没什么用处。只说一点最基本的,MBR分区结构只能支持到2.2T的硬盘,超过2.2T就必须采用GPT分区,而就Windows而言,采用了GPT的硬盘,要想安装并渗物启动Windows操作系统,只能选择高于XP的

64位操作系统

,并且采用UEFI方式安装、引导,否则无法启动,而包括XP在内及其之前的32位操作系统完全不支持GPT,别说安装、引导系统,直接无法识别。3T硬盘时代并不遥远,要想正常使用你的电脑,这就是采用UEFI+GPT的必要性。 

  而最关键之处在于, 照目前的形势来看,由于预装Windows8电脑的推动,UEFI+GPT已经是大势所趋,与是否2.2T以上硬盘也已经没什么直接关系,也许就在不久之后的某一天开始所有的电脑全部使用UEFI单一启动,不会再兼容传统BIOS。  

  再说一下关于BIOS+MBR,从接触电脑十几年来,一直都是用的这种组合,直至今日,不敢说对此有多么了解,最起码在日常操作中基本无障碍了。比如:Windows各个版本甚至再+ Linux +Mac的混合安装、引导驾轻就熟,任意顺序安装,任意创建、修复引导,多硬盘混合引导,分区表损坏、

主引导记录

损坏的修复、重建等等,都不存在任何问题。 

  而从一接触UEFI+GPT,总是感觉这个东西无法理解。甚至一筹莫展,哪怕是引导损坏这样之前在BIOS+MBR里不叫事的事情,面对UEFI+GPT都束手无策,查了很多资料,除了

重装系统

, 在国内网络范围内,全网竟然找不到任何一篇具体解决问题的文章。 现在回想,很长一段时间内都无法理解这些问题,很多莫名其妙的所谓专业文章的误导在其中作了重要贡献。 

  后来索性抛开所有的那些乱七八糟的观点、定义,按照自己的想法去摸索,经过近十天陆喊闭,几十遍重装系统,反复的假设、实验,总算是对UEFI+GPT有了一个总体的概念和较为清晰的认识, 最关键的在于能够随意进行UEFI+GPT的安装和引导修复了,这是最重要的,个人观点一直都是,必须从实际出发,即使了解的再多,什么问题也解决不了,纸上谈兵,一切等于零。 可以毫不夸张的说, 至少目前为止,本文是全网络唯一一篇对UEFI+GPT进行实用性介绍和以及解决实际问题的文章。  

关于UEFI的优越特性,比如 可操作性、安全性、兼容性、可扩展性之 类的问题,在此不再多说,这是开发人员的事情,和我没有关系。仅仅总结几点两者在系统安装及引导方式方面一些异同,帮助同样有此困惑的人理解这个东西: 

   【重要提示:  

   本文旨在“授之以渔”,力求融会贯通,知其然更知其所以然。因此本文既不包含网络上“技术文章

八股文

”式的定义、理论的堆砌和释义,更不是“小白必备”的傻瓜式手把手操作教程,如果对以上两种千篇一律的所谓“技术文章”有偏执的爱好,请务必及时停止浏览,另寻其好。】  

   不同点:  

1.BIOS+MBR安装系统要求硬盘只要存在非隐藏、活动的主分区就可以了;而UEFI+GPT要求硬盘上除了存在ESP分区,还必须存在至少一个主分区 

2.BIOS+MBR一旦系统安装好之后,如果系统引导文件在单独的分区,此分区可以在操作系统中可见,也可以设置此分区为隐藏,系统都可以正常启动;而UEFI+GPT系统引导文件所在的ESP分区在操作系统中为不可见 

3.BIOS+MBR启动要求的活动的主分区不是唯一固定的,可以任意设定某一分区为活动的主分区,然后MBR就可以通过分区表指引操作系统从此分区启动,也就是说,可以在任意分区(主分区无论是否活动或者扩展分区)安装操作系统,只要存在任意的活动主分区,就可以从此分区启动操作系统;而UEFI+GPT只能把系统引导文件放置在ESP分区 

  4.BIOS+MBR的系统引导文件可以和系统文件在同一分区的

根目录

,也可以不与系统文件同一分区,只要系统引导文件所在分区为活动的主分区即可启动操作系统;而UEFI+GPT只能把系统引导文件放置在ESP分区,且操作系统必须在另外的主分区,也就是说, UEFI+GPT强制要求系统启动文件与系统文件必须分离,不在同一分区。  

   相同点: 

1.BIOS+MBR和UEFI+GPT的系统引导文件都可以放置在单独的分区,这一点在上面的第4点里已经说的很清楚 

2.BIOS+MBR的系统引导文件所在的活动主分区位置不是固定的,可以随意设置任意分区满足此条件,UEFI+GPT的ESP的位置也是可以随意设置的,在硬盘起始位置、中间位置、末尾,都可以,只要分区属性和其中的引导文件正确,就可以引导启动操作系统(参考文中附图) 

3.BIOS+MBR的系统引导文件所在的分区和UEFI+GPT的ESP分区都可以分配任意大小,而不是ESP必须100M 

4.BIOS+MBR安装系统所需的非隐藏、活动主分区和UEFI+GPT的系统的ESP分区,都可以同时设置多个,但是即使有多个相同属性的分区,系统安装时安装程序都是自动写入之一个,启动时也都是从之一个启动(参考文中附图) 

   补充:  

1.使用BIOS+MBR和UEFI+GPT安装的系统文件是一模一样的,唯一的区别只是引导方式的不同,因此使用GHOST手动备份的系统,MBR和GPT可以任意交叉还原,只要做好引导修复就没有任何问题 

2.GHOST始终是系统备份还原神器,只要熟练掌握GHOST手动操作,至少目前为止Windows系统的范围之内,无论什么版本,无论MBR还是GPT,都可以随意备份还原。 

3.MBR与GPT分区互转的话,与“删除所有分区”以及“全盘格式化”没有任何必然联系,你格式化一万遍硬盘也还是原来的分区结构,只有通过转换操作才可以到另一种,而这个转换操作与“删除所有分区”以及“全盘格式化”没什么关系。 

   着重强调一点:  

  以上所有经验均基于UEFI+GPT的组合,而实际上, UEFI启动(Windows操作系统)的话,并不强制要求硬盘必须为GPT分区,而是只要硬盘上存在EFI启动文件且位于FAT(16/32)分区就可以了(UEFI无法从NTFS分区启动)。 因此如果是小于2.2T的硬盘,不必非得转换成GPT也可以引导系统启动。也就是说,UEFI+MBR也是可行的,而GPT硬盘的话,则必须使用UEFI引导,BIOS无法原生引导GPT硬盘上的操作系统(Windows)。 

关于这一点,如果感觉不能理解的话,可以通过以下具体应用来参考。 

   注:  

综观网上那些关于UEFI的所谓技术类文章,除了毫无实用价值和实际意义,而且都不同程度的存在各种各样的因循误导,继而被以讹传讹,最终成为一些人坚信不疑的“定律”。这样的误导主要表现为两点: 

   1. 就是刚刚说的 ,“UEFI启动系统必须是GPT分区”, 这个已经说得很明白了,并且有实例解析,无需再讨论 

   2. 另外一个就是不知道从什么时候什么人开始谣传的 “UEFI的优势就是启动速度快” 或者 “UEFI启动比传统BIOS启动速度快”。 无论UEFI还是GPT,与电脑启动速度没有任何必然联系。或者说,只要硬件环境相同、系统一样,无论UEFI+GPT安装还是BIOS+MBR安装系统,启动速度没有区别 

GPT 

MBR 

   附:部分Windows桌面操作系统对GPT的支持  

   数据读写系统启动  

WindowsXP32位不支持GPT不支持GPT 

WindowsXP64位支持GPT不支持GPT 

WindowsVista32位支持GPT不支持GPT 

WindowsVista64位支持GPT支持GPT(需UEFI) 

Windows732位支持GPT不支持GPT 

Windows764位支持GPT支持GPT(需UEFI) 

Windows832位支持GPT不支持GPT 

Windows864位支持GPT支持GPT(需UEFI) 

有了以上的经验总结,就可以轻松解决以下问题了: 

   1.UEFI+GPT环境下以任意方式安装操作系统(单系统或者多系统) 。这个不必详解了 

  2.最主要的问题: UEFI+GPT引导修复操作(EFI引导文件损坏、ESP分区损坏或者丢失之后手动重建EFI引导等等)。 这个在此也不做详解,这是 这段时间反复研究、实践的最重要成果 ,因此姑且算是有所保留卖个关子吧,如果是结合以上几点经验总结,对UEFI+GPT有一定的了解之后,应该不难揣摩出办法 

  3. 如果主板不支持UEFI,使用折中的办法来解决大硬盘使用问题 ,这个问题以前我也已经多次提过。 

   之一种办法就是使用多块硬盘,MBR+GPT组合,MBR 硬盘作为启动引导盘。 

小于2.2T的硬盘采用MBR,大于2.2T的硬盘采用GPT,这样的话,解决方案就很灵活了,可以根据以上所列相同点的第1条和补充里面第2条,使用MBR硬盘建一个非隐藏活动主分区,放置系统引导文件,然后将系统安装在MBR硬盘或者GPT硬盘都可以,无论单系统还是多系统都无所谓,两块硬盘交叉安装操作系统也没有任何问题 

   强调两点 : 

1.这样安装的话不限于64位操作系统及XP以上版本,理论上只要是能对GPT硬盘进行读写的系统版本就可以安装。实际测试,32位XP和2023sp1以及之前的版本,电脑事先安装GPT硬盘的情况下,即使系统安装在MBR硬盘,原版系统安装,没有问题,如果是Ghost系统,有可能出现卡死或者蓝屏等问题导致无法顺利安装;先在MBR硬盘安装好系统,然后再装GPT硬盘,无论原版还是Ghost系统都没有问题,只是GPT分区无法识别(解决方法很简单,就是使用2023sp2的disk.sys文件替换到以上系统,就可以完美识别GPT分区,此法简单易操作,且不涉及系统稳定问题,感兴趣的话可以自行搜索)。64位XP安装在MBR硬盘,引导、启动都没有问题,安装在GPT硬盘无法引导。其他系统无论32位还是64位,无论安装在MBR还是GPT,都可以正常引导启动; 

2.BIOS安装系统到GPT硬盘仅限于Ghost方式,Ghost解压完毕后手动修复引导即可。 

   第二种办法是单块大于2.2T的硬盘+U盘或者光盘组合  

  使用GPT分区结构对硬盘进行分区,是否创建ESP分区都无所谓,因为主板不支持UEFI,创建此分区也没什么用,全凭个人爱好了。然后只能使用Ghost方式解压安装操作系统到硬盘,无论单系统还是多系统,全部安装完毕后,准备一个U盘,大小无所谓,只要不小于十几M就行,使用分区软件设为活动主分区,插在电脑上。进PE(2023sp1以上版本),手动或者使用工具软件修复单系统或者多系统引导,将引导文件写入U盘。然后就可以使用此U盘启动所安装的单系统或者多系统了。此方法实际上就是用U盘代替了之一种方法中的小硬盘而已,没什么本质区别。(这个方法大概10年前我就在电脑论坛发过帖子,当时考虑的是用U盘做一个 系统启动钥匙 ,因为系统引导文件在U盘上,电脑如果不插这个U盘是无法启动的。MBR硬盘系统:Windows864位+Windows732位+WindowsXP32位,GPT硬盘系统:Windows832位+Windows764位+WindowsVista32位,测试环境:杂牌945主板、32M老U盘,测试通过。) 

另外还可以再使用光盘来代替U盘,具体方法说起来更简单,用软件创建一个可启动光盘(创建方法自行查询,会做的不用讲,压根没接触过的,另开帖子专门讲也不一定看得懂),然后将上面U盘里的系统启动文件加进去刻录就可以了。然后使用此光盘启动电脑,效果和U盘是一样的。此方法仅仅作为一种可行性的介绍,不推荐使用,U盘比这个方便的多,没必要多此一举。 

   备注: 使用此方法,理论上来讲凡是可以对GPT进行读写的系统都适用,但实际上XP以上系统无论32位还是64位操作系统全部测试可行,但是2023sp1及XP64位这些可以读写GPT的系统也不行,这个不知道是由于NT5.X的ntldr引导机制还是其他的什么原因,有知道原因的朋友不吝赐教! 

   注:  

  1.除专门标明“Ghost系统”,本文所提及的系统安装均为 微软 原版Windows系统,不包含任何修改版本 

2.非UEFI主板安装原版系统到GPT磁盘,只能采取wim直接解压到分区或者先将系统Ghost化,然后解压安装的办法。 

3.本文所有结论全部为反复多次实际测试结果,不是设想、假设,更不是想象或者幻想以及想当然的以为 

  4.本文内容已经多次修订和修改,这是个人的一点经验总结,难免有纰漏以及表达不准确之处,望有相关经验的朋友给予更多帮助

   附注:  

    

鉴于许多的网友浏览本文之后提出如下问题,因此 酷站网软 特集中在此做如下补充说明,不再过多赘述及一一答复:

  原本很早之前就写了一篇关于 预装win8的电脑改其他系统以及安装多系统 的文章,虽然经过多次修改,最后还是放在电脑里没有在任何地方发表出来。 

  虽然那是亲自实践过 多个品牌和型号 的预装机器之后总结出来的经验,但是仍然发现 在其他品牌和型号的电脑上根本无法通用 。而我不可能也没条件遍试所有的机器,因此此篇文章就此搁浅。 

  因此我在我的这篇文章里面没有涉及任何 预装win8系统的电脑改系统 的问题。 

这是我的一贯态度,我所写的都是我亲身实践、确实可行、不需讨论的,在我这里不可能出现“我觉得”“我认为”“应该是”这类想象或者幻想的东西。 

(在此还是要特别强调几点: 

1.这个意思并不是说“预装win8的电脑改其他系统以及安装多系统”是完全不可行的,只是目前为止还没找到通用的方法。也就是说可能在某个品牌和型号的电脑上按照某种方法安装非常顺利,但是同样的方法用在其他品牌和型号的电脑上可能完全不适用。 

  2.不管是用何种方法,比如Ghost、PE、nt6 hdd installer、快捷安装器、直接setup、在vhd装、全盘转换成mbr、手动写引导等等方法,将其他系统装进硬盘,只要通过这块主板启动,就要面对安装失败的问题,因此制约因素在主板上,并不在于采用什么方式安装系统

如何用U盘制作一个可以安装多个不同版本的Linux系统ISO镜像文件的启动盘

U盘引导多个linux镜像安装,同时支持BIOS和UEFI模式

准备开整

基本步骤

步骤一: 格式化U盘

注意点: bios_grub标记的分区

步骤二: 安装grub到U盘

步骤三: 添加grub菜单

参考文献

前言: 生命不息,折腾不止。在折腾中进步,在踩坑中成长。

准备开整

U盘一枚(4G容量以上,备份好数据,一会可能要重新格式化)

可用的任意操作系统,64位(32位就不要折腾UEFI了)

UEFI 与 ESP 预备知识,限贺庆于篇幅就不详细介绍了,自己看文档原理

USB启动的原理就不多做讲解了,有兴趣的话找找相关的文档,介绍很多,也很详细,跟硬盘引导过程差不多。注意的是BIOS+MBR模式和UEFI+GPT模式是不同的。

基本步骤

先说一下我的环境,金士顿16G U盘一个,操作系统是Deepin 2023.3 64bit,基于Ubuntu 14.04,其他类似的系统可以类比。Linux系统本来就使用grub引导(不要在CentOS/RHEL 6及以下版本折腾了,那个是Grub Legacy,已经不维护了),折腾起来要比其他操作系统方便的多,软件仓库就有grub相关的软件包,也不需要单独禅侍握安装太多东西。Windows下可以用 grub2win ,原理是一样的。

步骤一: 格式化U盘

想要支持UEFI引导,GPT是不可少了,而且GPT是兼容MBR了。所以之一步需要先将U盘格式化为GPT分区,这样efi文件可以和MBR共存,实现UEFI和BIOS双支持。

如果U盘已经是

Linux下支持GPT分区的工具: parted, gdisk。大致的步骤就是使用gdisk(命令和操作方式几乎和fdisk完全一样,只是支持GPT),或parted对U盘重新分区,然后标记ESP。如果用gdisk,只要给分区标记EF00编号即可,如果用parted,给分区boot标记即可。命令行就不演示了,很简单,我这边截图使用图形化工具gparted分区,同样结果也是GPT分区。

图形化的gparted操作也很简单,建立GPT分区表,分区,格式化为FAT32( 注: 尽管ESP支持多种分区,但是为了通用性与兼容性还是建议FAT32 ),标记分区为boot

这样U盘处理就完成了,使用gdisk或parted显示一下U盘的信息,看到这样的信息就是OK的

$ sudo gdisk -l /dev/sdb  # 根据你的U盘的名字修改dev设备 

GPT fdisk (gdisk) version 0.8.8

Partition table scan: 

MBR: protective      #

BSD: not present 

APM: not present 

GPT: present#

Found valid GPT with protective MBR; using GPT.   #

Disk /dev/sdb:sectors, 14.7 GiB 

Logical sector size: 512 bytes 

Disk identifier (GUID): 022EE53EDCFA24730 

Partition table holds up to 128 entries 

First usable sector is 34, last usable sector is

Partitions will be aligned on 2023-sector boundaries 

Total free space is 4029 sectors (2.0 MiB)

Number  Start (sector)    End (sector)  SizeCode  Name 

.7 GiB    EF#

$ sudo parted /dev/sdb print 

Model: Kingston DataTraveler 3.0 (scsi) 

磁盘 /dev/sdb: 15.7GB 

Sector size (logical/physical): 512B/512B 

分区表:gpt     #

Disk Flags:

数字  开始:  End     大小    文件系统  Name  标志 

kB  15.7GB  15.7GB  fat启动, esp      #

注意点: bios_grub标记的分区

这个要特别强调,bios_grub标记的分区必须存在,否则BIOS模式下无法使用 。

有关bios_grub标记的分区说明: 

这里我简单提及一下这个标记的作用。上面提到过,GPT兼容MBR,如果要让grub在GPT上使用MBR模式安装的话,需要设置这个标记。按照ubuntu官方文档(上面那个文档,想了解详细的话必看!),这个分区有以下几个特点:

1MB容量

不需要格式化

设置bios_grub标记

如果用gdisk, parted, gparted这些工具分区的时候,你会发现总会有一个1MB的剩余空间,就是干这个用的,现在,我只需要给这个剩余空间分区,并打上bios_grub标记就行了(EF02),不用格式化。parted操作也类似

sudo gdisk /dev/sdb# 下面可以看到gdisk的操作几乎和fdisk完全一样,熟悉fdisk可以无压力上手GPT fdisk (gdisk) version 0.8.8Partition table scan:

 MBR: protective

 BSD: not present

 APM: not present

 GPT: presentFound valid GPT with protective MBR; using GPT.Command (? for help): nPartition number (2-128, default 2):First sector (, default =) or {+-}size{KMGTP}:Last sector (350, default =) or {+-}size{KMGTP}:Current type is ‘Linux filesystem’Hex code or GUID (L to show codes, Enter = 8300): EF02Changed type of partition to ‘BIOS boot partition’Command (? for help): pDisk /dev/sdb:sectors, 14.7 GiBLogical sector size: 512 bytesDisk identifier (GUID): 0086B5EF-81D9-4BD1-816C-AD1EADCD2338Partition table holds up to 128 entriesFirst usable sector is 34, last usable sector isPartitions will be aligned on 2023-sector boundariesTotal free space is 2023 sectors (1007.0 KiB)Number  Start (sector)    End (sector)  SizeCode  Name

.7 GiB    EF.5 KiB  EF02  BIOS boot partition #

PARTITIONS!!Do you want to proceed? (Y/N): y

OK; writing new GUID partition table (GPT) to /dev/sdb.Warning: The kernel is still using the old partition table.The new table will be used at the next reboot.The operation has completed successfully.sudo parted /dev/sdb printsudo gdisk /dev/sdb

GPT fdisk (gdisk) version 0.8.8Partition table scan:

 MBR: protective

 BSD: not present

 APM: not present

 GPT: presentFound valid GPT with protective MBR; using GPT.Command (? for help): nPartition number (2-128, default 2):First sector (, default =) or {+-}size{KMGTP}:Last sector (350, default =) or {+-}size{KMGTP}:Current type is ‘Linux filesystem’Hex code or GUID (L to show codes, Enter = 8300): EF02Changed type of partition to ‘BIOS boot partition’Command (? for help): pDisk /dev/sdb:sectors, 14.7 GiBLogical sector size: 512 bytesDisk identifier (GUID): 0086B5EF-81D9-4BD1-816C-AD1EADCD2338Partition table holds up to 128 entriesFirst usable sector is 34, last usable sector isPartitions will be aligned on 2023-sector boundariesTotal free space is 2023 sectors (1007.0 KiB)Number  Start (sector)    End (sector)  SizeCode  Name

.7 GiB    EF.5 KiB  EF02  BIOS boot partitionCommand (? for help): wFinal checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING

PARTITIONS!!Do you want to proceed? (Y/N): y

OK; writing new GUID partition table (GPT) to /dev/sdb.Warning: The kernel is still using the old partition table.The new table will be used at the next reboot.The operation has completed successfully.$ sudo parted /dev/sdb printModel: Kingston DataTraveler 3.0 (scsi)磁盘 /dev/sdb: 15.7GBSector size (logical/physical): 512B/512B分区表:gptDisk Flags: 数字  开始:  End     大小    文件系统      Name   标志

kB  15.7GB  15.7GB  fat启动, esp    15.7GB  15.7GB  1032kBBIOS boot partition  bios_grub  #

至此分区的步骤就完成了。如果你已经是GPT分区了,就不用重新分区了,只要处理成ESP就行了

步骤二: 安装grub到U盘

这一步相比上一步已经简单许多了,但还是有一个小坑需要注意。先贴命令:

$ sudo mount /dev/sdb1 /mnt -o uid=$USER,gid=$USER  # 没什么好说的,挂载U盘使用,加上uid和gid参数只是为了编辑文件不需要sudo而已# grub安装到MBR$  sudo grub-install –target=i386-pc –recheck –boot-directory=/mnt/boot /dev/sdbInstalling for i386-pc platform.Installation finished. No error reported.# grub安装到ESP,特别注意–removable参数,安装到移动设备上一定要用这个参数$ sudo grub-install –target x86_64-efi –efi-directory /mnt –boot-directory=/mnt/boot –removableInstalling for x86_64-efi platform.Installation finished. No error reported.

命令没有任何难度,但是有几个坑需要特别注意:

Ubuntu的分包问题grub默认的target是i386-pc,这个target包含在 grub-pc 这个包,如果你的系统使用BIOS+MBR安装,这个包默认是存在的。x86_64-efi这个target包含在 grub-efi 这个包,只有你的系统使用UEFI+GPT方式安装这个包才会存在。如果某个target报错,错误信息类似于 grub-install: error: /usr/lib/grub/x86_64-efi/modinfo.sh doesn’t exist. Please specify –target or –directory. 这样的话,就需要安装 grub-pc 或 grub-efi 之后再试。

安装到ESP要加–removable这个参数 这个参数专门针对于可移动设备,一定要加

bios_grub标记的分区 如果按照上面的分区过程操作了,增加了这个标记的分区,安装grub的时候会自动识别这个标记的分区并成功安装grub,否则报错:

Installing for i386-pc platform.grub-install: warning: this GPT partition label contains no BIOS Boot Partition; embedding won’t be possible.

grub-install: warning: 无法嵌入。在此次安装中 GRUB 只能通过使用块列表安装。但是块列表是不可信赖的,不推荐使用。.

grub-install:错误: will not proceed with blocklists.

步骤三: 添加grub菜单

如果前面都没问题的话,最后就只剩下添加grub菜单了。在 /mnt/boot/grub 这个目录下,新建 grub.cfg 配置文件就行了。grub2的语法很复杂,图省事就从网上各种摘抄拼接就行了。比如我把linux发行版的iso镜像都扔到了 boot/iso 这个目录,于是乎我的 grub.cfg 成了这样:

# path to the partition holding ISO images (using UUID)probe -u $root –set=rootuuidset imgdevpath=”/dev/disk/by-uuid/$rootuuid”# define globally (i.e outside any menuentry)inod search_fs_uuid

search –no-floppy –set=isopart –fs-uuid $rootuuid

inod all_video

menuentry “Linux Mint cinnamon 64bit ISO” {

set isofile=/boot/iso/linuxmint-17.2-cinnamon-64bit.iso

loopback loop ($isopart)$isofile

linux (loop)/casper/vmlinuz file=/cdrom/preseed/linuxmint.seed boot=casper iso-scan/filename=$isofile noeject noprompt splash locale=zh_CN.UTF-8 —

initrd (loop)/casper/initrd.lz}menuentry “Ubuntu Desktop 64bit ISO” {

set isofile=/boot/iso/ubuntu-14.04.3-desktop-amd64+mac.iso

loopback loop ($isopart)$isofile

linux (loop)/casper/vmlinuz file=/cdrom/preseed/ubuntu.seed boot=casper iso-scan/filename=$isofile noeject noprompt splash locale=zh_CN.UTF-8 —

initrd (loop)/casper/initrd.lz}menuentry “UbuntuKylin Desktop 64bit ISO” {

set isofile=/boot/iso/ubuntukylin-14.04.3-desktop-amd64.iso

loopback loop ($isopart)$isofile

linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile noeject noprompt splash locale=zh_CN.UTF-8 —

initrd (loop)/casper/initrd.lz}menuentry “Ubuntu Server 64bit ISO” {

set isofile=/boot/iso/ubuntu-14.04.3-server-amd64+mac.iso

loopback loop ($isopart)$isofile set gfxpayload=keep

linux (loop)/install/vmlinuz file=/cdrom/preseed/ubuntu-server.seed iso-scan/filename=$isofile quiet —

initrd (loop)/install/initrd.gz}menuentry “Deepin 2023 ISO” {

set isofile=/boot/iso/deepin_2023.3_amd64.iso

loopback loop ($isopart)$isofile

linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile noeject noprompt splash locale=zh_CN.UTF-8 —

initrd (loop)/casper/initrd.lz}

根据自己的需求增删改改就行了。想进一步美化的话,grub2关于美化的文档也很多,就不赘述了。

注意: 不要使用虚拟机测试,因为虚拟机不能完整模拟主板。因此不一定能引导你的U盘,让你误以为制作失败了。尽可能用真机去测试引导。

最后,贴一个效果图,可以看到BIOS模式和UEFI都可以引导了

补充: 稍作美化一下效果,只不过那个从本地硬盘启动还没实现,需要看看别人怎么写的。

gpt装linux无法启动的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于gpt装linux无法启动,GPT分区无法启动Linux系统的解决方案,关于UEFI启动+GPT分区 的一些经验,如何用U盘制作一个可以安装多个不同版本的Linux系统ISO镜像文件的启动盘的信息别忘了在本站进行查找喔。


数据运维技术 » GPT分区无法启动Linux系统的解决方案 (gpt装linux无法启动)