google Windows 程序员 linux命令 centos 微软 Ubuntu 开源 Firefox java php HTML5 wordpress apache nginx linux Android Python shell mysql

CentOS Linux 5.x在GPT分区不能引导的解决方法

昨天一客户的项目要上线,机房在北京,对方也没运维人员,我把CentOS 5.8系统安装的详细文档给他们,刚进去安装说报错读不到硬盘,发截图过来一看,原来是GPT分区导致的问题,之前我遇到过大于2T的硬盘安装系统时需要GPT分区,但是这台机器硬盘没超过2T,是另一个问题。经我分析是此机器之前安装的Win 2008R2时采用了GPT分区,导致CentOS 5.8无法读取(但CentOS 6.x默认就支持GPT),解决过程如下:

【问题】此机器安装CentOS 5.8时提示:

Your boot partition is on a disk using the GPT partitioning Scheme but this machines cannot boot using GPT.

如下图:

gpt

解决方法:

1、用一个Linux的live cd,我这里使用了Ubuntu 12.04的live CD版本,下载地址:http://releases.ubuntu.com/12.04.1/ubuntu-12.04.1-desktop-amd64.iso

2、用live CD光盘启动系统以后,执行:

查看硬盘的设备名称:

fdisk -l

如果硬盘是/dev/sda,运行下面命令:

parted -s /dev/sda mklabel msdos
ubuntu1204

这样就可以正常安装CentOS 5.x了。

关于MBR与GPT分区管理:

目前我们可以接触到的大部分x86架构的pc和服务器,还在采用上世纪遗传下来的BIOS+MBR组合。 BIOS,基本输入输出系统 (Basic Input-Output System),是软件与硬件之间的一个接口,可以把它看作一个翻译在中文与英语之间,虽然两者完全不同,不过可以让大家了解 BIOS 所处的位置,BIOS 通常被写入一块 ROM 芯片连接在主板上,当然也有直接写入北桥的,不过相当少见。 BIOS 几乎是完全用汇编语言编写,很大程度上决定了主板的性能及稳定性。

MBR,主引导记录 (Master Boot Record),也就是我们常见的分区方法,不过管理员外的最终用户很少知道它的存在,MBR 分区的标准决定了MBR只支持在2TB以下 (超过2TB的只能管理 2TB) 的硬盘中创建4个分区表项,要获得更多分区,需要次级结构–扩展分区。扩展分区可以再次被分成一个或多个逻辑磁盘,也就是普通情况下的C盘以外的盘,或说第一个分区以外的部分,有些情况下 Windows 里的C盘可能会是一个逻辑分区。

EFI,可扩展固件接口 (Extensible Firmware Interface),由英特尔 (Intel) 公司提出的一种替代 BIOS 的升级方案。 EFI 的位置很特殊,它不像是 BIOS 那样自己即是固件又是接口,EFI 只是一个接口,位于操作系统与平台固件之间。

GPT,全局唯一标识磁盘分区表 (GUID Partition Table),GUID,全局唯一标识符 (Globally Unique Identifier) 。GUID 分区表 (GPT) 是作为 Extensible Firmware Interface (EFI) 计划的一部分引入的。当然,你也可以在 BIOS 的PC中使用 GPT 分区,虽然 GPT 来自以 EFI 计划,但并不依赖于 EFI。GPT 相对于以往 PC 普遍使用的主引导记录 (MBR) 分区方案更加灵活。比如可以超过 MBR 分区表项4个的限制,在 GPT 规范里对分区的数量几乎是没有限制的,大家在网上可以查到的128个实际上是 Windows 系统 (支持 GPT 的 Windows) 做出的限制,Linux下没这个限制。

GPT 对可管理磁盘大小也超过了 MBR 的2TB (1TB = 1024GB) 而达到了 18EB (1EB = 1024TB) 。在 MBR 分区方案中操作系统的引导是通过放在磁盘最开始 (第一扇区) 里的 MBR (这里的 MBR 是指主引导记录,而不是主引导记录分区方案,两者是同名的。我的猜测是为了与 GPT 分区方案区分,使用了主引导记录引导方式的名字 MBR 来命名此种分区方案,我查不到确切的资料正明我的猜测是否正确,只能大家努力区分一下了。) 。把重要的信息 (如分区信息、目录等) 放在某个扇区里是 MBR 分区方案的方法,而 GPT 把这个信息放到了分区里,Intel的解释是这样可以更加明确更加安全。 GPT 分区为了保护自己不受 MBR 方案下磁盘管理软件的危害,在磁盘的最开始位置 (第一个扇区) 建立了一个保护分区 (Protective MBR),这种分区的类型标识为 0xEE。苹果系统Mac OS X下这个保护分区大小为 200MB,这个分区在 Window磁盘管理器里名字叫做 GPT 保护分区。这个分区可以让不能识别 GPT 的磁盘管理软件把 GPT 磁盘看成一个未知格式的分区,而不是错误地当成一个未分区的磁盘。

常用的 MS-DOS 分区表格式不能在一个大于 2TB 的设备上使用。要支持大于2TB的设备,GPT 分区表格式必须被使用,并且必须使用parted工具程序来创建和管理 GPT 分区。

延伸阅读

评论