系统安装和升级版置顶索引

最近分区表出问题的人好像很多啊,我把以前写的一些帖子翻出来总结归类一下,希望对大家有帮助。

ubuntu 的安装程序对于分区表的错误是零容忍。出错的分区表在安装到了分区这一步时安装程序不会给出原来的任何分区信息,你只能抹掉整个硬盘或者退出安装,修理你的分区表。gparted 也是这种性格。这么做还是有道理的,不在已经有问题的分区表上继续捣乱。
当然,除了分区表错误,另一种原因,8.10 之后的安装程序在有分区被挂载的情形下也会无法分区,这通常发生在硬盘安装的情况下。这不是我今天要讨论的。
如果你是用光盘安装,可以识别硬盘,但是无法看到分区,这基本上就可以被断定是分区表出问题了。通常,你应该运行如下几个命令来得到细节。

sudo fdisk -l
这会告诉你 mbr 型分区表的详细信息。有时候,给出更细的细节也是很好的:
sudo fdisk -lu

sudo parted /dev/sda print
这会告诉你是什么东西出错了。如果没有出错,会给出分区信息。如果有不止一块硬盘,还可以运行
sudo parted /dev/sdb print
等等。8.10 之后,你可以用 sudo parted -l 来一次性得到所有硬盘的信息。
根据这些信息,你可以判断你的问题是下面的哪一种:


☛ 超出磁盘边界的分区,较常见,把超出磁盘的分区缩小即可。举例:
安装ubuntu8.04出现无法选择分区!
安装8.04出现的问题

☛ 扩展分区之内的主分区,这个最为常见,是“分区重叠”的一种。
如果不伴随着主分区之间重叠、逻辑分区之间重叠,或主分区和逻辑分区之间重叠,如果不重新安装操作系统,这样的分区表可以长期正常使用,不会造成数据丢失,但是要避免操作分区表。
要重装 ubuntu 的话,需要修理分区表。简单的办法是备份后删除误入扩展分区的主分区。动手前用 dd 备份一下主分区表也是很好的。好像有什么软件可以把主分区转换为逻辑分区,我没有用过,不知道好不好用。
我见到的分区表问题,绝大多数是这一类,一抓一大把。下面是几个例子。
[已解决]ubuntu Live CD能访问分区,但Gparted却认不出来,无法安装ubuntu了……
[已解决]Cannot Install Ubuntu 8.04
[已解决]菜鸟安装受挫!找不到硬盘分区!抓图寻求解决办法!!
[已解决][问题]分区表交错了该怎么解决?

☛ 扩展分区之外的逻辑分区
Ghost恢复xp,无法进系统了
GParted 显示未分配 终端提示分区之间不能重叠
这两贴还同时存在扩展分区之内的主分区。

☛ 真正的分区重叠,我指主分区之间重叠、逻辑分区之间重叠,或主分区和逻辑分区之间重叠,是危险的。数据随时可能丢失。当重叠的两个分区的前一个分区剩余空间较多时,数据还没有被写到重叠部分,看起来可以正常,一旦数据被写到重叠部分,就是下一个分区的起始处,那里有对于那个分区致命重要的信息,那个分区就完蛋了。如果那个分区是逻辑分区,那里还有指向再下一个逻辑分区的指针,于是逻辑分区的链被砍断,后面所有的逻辑分区丢失。
真正的分区重叠还是比较罕见的。下面有一例,除了主分区跑到扩展分区里面的这种“无害”的“分区重叠”之外(在下面帖子第二页),还有真正的分区重叠 - "c盘" 和 "d盘"重叠(在第三页):
光盘引导安装无法读出分区信息(已解决!)

☛ 循环的逻辑分区链,极为罕见:
双系统,ghost覆盖了win之后分区表出问题,求解决

☛ (安装过 OS X 可能发生的问题) 残留的 gpt 分区表标志,在曾经使用过 gpt 分区表的磁盘上用 xp 安装程序重新分区并不会抹去 gpt 标志,因为 xp 对 gpt 一无所知。
[求助] ubuntu 光盘安装不能识别已有分区
(已解决)光盘安装8.04无法显示分区,wubi安装提示找不到根分区目录

☛关于 OnTrackDM6。慎用古老的 DM。
安装Ubuntu 后出现Grub Geom error怎么办?

☛两个扩展分区。
硬盘分区问题

☛关于 SFS,M$ 的“动态磁盘”,我只能建议你备份数据抹掉这个硬盘。见本帖 85~89 楼。

☛一个逻辑分区侵占了另一个逻辑分区表的空间。通常 sudo fdisk -lu 的结果,相邻逻辑分区之间都有 64 扇区的空间,那里存放逻辑分区表们。
菜鸟安装受挫!找不到硬盘分区!
苹果,熊哥,三八,来救救我吧!分区问题。。。

这些错误是怎么产生的?我不大清楚,因为我的分区表还没有变成这样过。我的建议是尽量使用系统自带的工具来分区,xp 的磁盘管理,linux 的 gparted,OS X 的磁盘工具,都比较可靠。混用多种第三方分区工具多次调整分区可能不太好。
另外,打算安装 linux 的,不应该在 windows 里用可疑的工具准备 linux 的分区,用磁盘管理留出空白空间或者把分区格式化为 fat 就好了,在安装 linux 时让安装程序创建分区或格式化分区即可。如果预留给 linux 的空间位于两个分区之间,我更倾向于在 windows 中把预留给 linux 的分区大小规划好并先格式化为 fat,因为 ubuntu 在这样的空白空间创建分区的时候会使分区乱序。分区乱序不是错误,但 windows 一有机会就会试图把它排列整齐从而引起 grub 的问题。就是说,如果你的分区是乱序的,就永远不要使用 windows 的分区软件。
经常使用可疑分区工具的各种“高级功能”,我猜想也是引起问题的原因。我相信复杂的功能总是 bug 滋生的地方。比如挪动分区,如果软件处理不当,可以把逻辑分区挪到扩展分区之外;把主分区“转换”为逻辑分区,如果你成功地在一个主分区的两侧都制造出了逻辑分区,那么扩展分区必然要跨越一个主分区,等等。

最后由 billbear 编辑于 2010-05-02 0:05,总共编辑了 9 次

作者: billbear   发布时间: 2009-04-10

占位须学习

作者: leeaman   发布时间: 2009-04-10

看了一半,感觉这帖也太牛了吧,看看作者,果然是billbear。

作者: muzuiget   发布时间: 2009-04-10

leeaman 写道:
占位须学习

作者: john.wu   发布时间: 2009-04-10

我觉得还是gparted的这个软件的问题。我在同样的机器同样的分区上以前安装另外一个linux版本
(RAYS 新华华镭,也是基于debian的发行版)的时候就遇到用gparted不能显示分区,后来用fdisk
分的区,安装ubuntu8.04的时候就没这个问题了,但fdisk一直是好的

作者: sdzzg   发布时间: 2009-04-10

leeaman 写道:
占位须学习

作者: adagio   发布时间: 2009-04-10

Billbear老大的指导教程,一定学习,一定要顶!

作者: wangdu2002   发布时间: 2009-04-10

我早2天装也是, 搞到分区表都损失了。。。。。现在盘是找回来了, 但不能对盘的容量进行修改了。。。

作者: cncjoy   发布时间: 2009-04-11

这个对我来说好像太高深了。

作者: nkeztt   发布时间: 2009-04-11

学习一下,
我用gpart预留的主分区安装xp时会蓝屏,用ghost版的才行,还没空折腾

作者: TeliuTe   发布时间: 2009-04-13

楼上,Gparted预设分区时,要有分区,格式化,激活三步曲。
装xp时,不放心,还可以再把预设主分区再格一次。

作者: wangdu2002   发布时间: 2009-04-13

这么好的帖居然没人顶!~

作者: cnkilior   发布时间: 2009-04-17

强手出击

作者: drvicar   发布时间: 2009-04-17

多学习,多进步,生活真的很美好……

作者: blue03   发布时间: 2009-04-17

我用硬盘安装得,居然看不到分区,什么都没有

作者: tgl3721   发布时间: 2009-04-18

billbear对分区很有研究阿
ps:对ls说:sudo umount -l /isodevice 硬盘安装必须知道的命令

作者: pcbird   发布时间: 2009-04-18

此贴乃为人民服务之典范

作者: ptptptptptpt   发布时间: 2009-04-19

正好想问这个问题,办公室两台电脑,分区全是NTFS ,就装了VISTA ,三个分区,光盘启动进去就空的一个盘,没分区表。有时运行DISKGEN还死机。

作者: fivewind   发布时间: 2009-04-21

ubuntu@ubuntu:~$ sudo fdisk -lu
ubuntu@ubuntu:~$ sudo parted /dev/sda prin
Error: /dev/sda: unrecognised disk label
ubuntu@ubuntu:~$ sudo parted -l
Error: /dev/sda: unrecognised disk label

Warning: Unable to open /dev/scd0 read-write (Read-only file system). /dev/scd0
has been opened read-only.
Error: /dev/scd0: unrecognised disk label

zen me jie jue a

作者: qq651086039   发布时间: 2009-04-21

qq651086039 写道:
ubuntu@ubuntu:~$ sudo fdisk -lu
ubuntu@ubuntu:~$ sudo parted /dev/sda prin
Error: /dev/sda: unrecognised disk label
ubuntu@ubuntu:~$ sudo parted -l
Error: /dev/sda: unrecognised disk label

Warning: Unable to open /dev/scd0 read-write (Read-only file system). /dev/scd0
has been opened read-only.
Error: /dev/scd0: unrecognised disk label

zen me jie jue a


机器上是否有 windows 或其它数据?你预期分区表应该是什么样的?能否提供关于问题发生的背景和历史的细节?

作者: billbear   发布时间: 2009-04-22

开机提示 ata1: softreset failed (device not ready)

安装到90% 设定硬件 卡住了
花屏 然后重新进入桌面

作者: klame   发布时间: 2009-04-25

分区表出问题了用Partition Export分区软件可以很容易修好的吧?

作者: blackiron   发布时间: 2009-04-29

作者: aidong   发布时间: 2009-04-29

根据楼主的帖子,"扩展分区之内的主分区"的方法删除了误入扩展分区的主分区swap,但是还是只能看到一块硬盘,安装时无法看到分区。我把相关的信息贴在下面,希望楼主有空时能指点一二,小弟感激不尽。
============================= Boot Info Summary: ==============================

=> Windows is installed in the MBR of /dev/sda

sda1: _________________________________________________________________________

File system: ntfs
Boot sector type: Windows XP
Boot sector info: No errors found in the Boot Parameter Block.
Operating System: Windows XP
Boot files/dirs: /boot.ini /ntldr /NTDETECT.COM

sda2: _________________________________________________________________________

File system: Extended Partition
Boot sector type: -
Boot sector info:

sda5: _________________________________________________________________________

File system: ntfs
Boot sector type: Windows XP
Boot sector info: According to the info in the boot sector, sda5 starts
at sector 63.
Operating System:
Boot files/dirs:

sda3: _________________________________________________________________________

File system: vfat
Boot sector type: MSWIN4.1: Fat 32
Boot sector info: No errors found in the Boot Parameter Block.
Operating System:
Boot files/dirs:

=========================== Drive/Partition Info: =============================

Drive sda: _____________________________________________________________________

Disk /dev/sda: 60.0 GB, 60011642880 bytes
255 heads, 63 sectors/track, 7296 cylinders, total 117210240 sectors
Units = sectors of 1 * 512 = 512 bytes
Disk identifier: 0x1ecfb89b

Partition Boot Start End Size Id System

/dev/sda1 * 63 23,695,874 23,695,812 7 HPFS/NTFS
/dev/sda2 23,711,940 117,210,239 93,498,300 5 Extended
/dev/sda5 75,891,123 117,210,239 41,319,117 7 HPFS/NTFS
/dev/sda3 24,675,903 75,891,059 51,215,157 c W95 FAT32 (LBA)

/dev/sda2 overlaps with /dev/sda3

blkid -c /dev/null: ____________________________________________________________

/dev/loop0: TYPE="squashfs"
/dev/sda1: UUID="AA8002408002140B" TYPE="ntfs"
/dev/sda3: UUID="4274-CB77" TYPE="vfat"
/dev/sda5: UUID="80CC61C1CC61B258" TYPE="ntfs"

=============================== "mount" output: ===============================

proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
tmpfs on /lib/modules/2.6.28-11-generic/volatile type tmpfs (rw,mode=0755)
tmpfs on /lib/modules/2.6.28-11-generic/volatile type tmpfs (rw,mode=0755)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
varrun on /var/run type tmpfs (rw,nosuid,mode=0755)
varlock on /var/lock type tmpfs (rw,noexec,nosuid,nodev,mode=1777)
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
rootfs on / type rootfs (rw)
/dev/sr0 on /cdrom type iso9660 (ro,noatime)
/dev/loop0 on /rofs type squashfs (ro,noatime)
fusectl on /sys/fs/fuse/connections type fusectl (rw)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev)
gvfs-fuse-daemon on /home/ubuntu/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=ubuntu)
/dev/sda3 on /media/disk type vfat (rw,nosuid,nodev,uhelper=hal,shortname=mixed,uid=999,utf8,umask=077,flush)
/dev/sda5 on /media/disk-1 type fuseblk (rw,nosuid,nodev,allow_other,blksize=4096)

================================ sda1/boot.ini: ================================

[boot loader]

timeout=1

default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS

[operating systems]

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Home Edition" /noexecute=optin /fastdetect

作者: jhon   发布时间: 2009-05-01

jhon 写道:
根据楼主的帖子,"扩展分区之内的主分区"的方法删除了误入扩展分区的主分区swap,但是还是只能看到一块硬盘,安装时无法看到分区。我把相关的信息贴在下面,希望楼主有空时能指点一二,小弟感激不尽。

尚有另一个主分区 sda3 (你的 fat32)在扩展分区内。

作者: billbear   发布时间: 2009-05-02

真心感谢billbear兄,这么快回复我,相信这样的氛围linux一定能普及开来。

看了回复,请问大牛有什么高招吗?难道只能把那个盘备份,删除。分区表应该可以移动前后位置的吧。
当然我回去google,不过如果linux下有什么好的方法的话,那还是希望能长点见识。

另,我看了我的数据,请问从哪里能看出来“尚有另一个主分区 sda3 (你的 fat32)在扩展分区内。”呢?
希望能知其果,更能知其因。

作者: jhon   发布时间: 2009-05-02

很好,很强大!

作者: 没概念   发布时间: 2009-05-02

分区乱序,安装进行调整

作者: 没概念   发布时间: 2009-05-02

留个脚印

作者: xiaowei3731   发布时间: 2009-05-04

引用:
难道只能把那个盘备份,删除。分区表应该可以移动前后位置的吧。

备份,删除,重建是最可靠的办法。修理分区表之前总是建议先备份,因为分区表已经乱了,不一定修成什么样呢。
我说过,我没有修理的经验,因为我的分区表没有坏过,我在那些帖子里给的建议全是根据分区规则进行的推理。
我也没有使用软件修理分区表的经验,一切只是听说 - 听说有把主分区转换成逻辑分区的冬冬,你可以试,但在试之前,我还会建议你备份数据先。

另:我对普及 linux 没兴趣。呵呵

引用:
另,我看了我的数据,请问从哪里能看出来“尚有另一个主分区 sda3 (你的 fat32)在扩展分区内。”呢?

引用:
/dev/sda1 * 63 23,695,874 23,695,812 7 HPFS/NTFS
/dev/sda2 23,711,940 117,210,239 93,498,300 5 Extended
/dev/sda5 75,891,123 117,210,239 41,319,117 7 HPFS/NTFS
/dev/sda3 24,675,903 75,891,059 51,215,157 c W95 FAT32 (LBA)

因为 [24675903,75891059]⊂[23711940,117210239]

最后由 billbear 编辑于 2009-05-06 1:41,总共编辑了 2 次

作者: billbear   发布时间: 2009-05-06

收集……

作者: jioyo源   发布时间: 2009-05-06

多谢拉。备份,删除,总算是闯进9.04了。再次感谢各位的帮忙,YOU are nice guy

作者: jhon   发布时间: 2009-05-06

做记号

作者: xiaowei3731   发布时间: 2009-05-08

占位.有空研究研究..

作者: 123826776   发布时间: 2009-05-11

占位学习

作者: dark   发布时间: 2009-05-11

从来没有留意过分区重叠这种现象。看来要研究一下了

作者: eos   发布时间: 2009-05-12

学习了。。 还在下载 准备用vm试试

作者: thiefqw   发布时间: 2009-05-14

今天下午装了个ubuntu 8.10版的,感觉蛮好玩的

作者: yysmcu   发布时间: 2009-05-14

这个帖子提出的问题值得每一个新手都来关注并学习.

作者: sToa   发布时间: 2009-05-27

网上看到国这种情况,学习了……

作者: ilove86   发布时间: 2009-06-11

我的硬盘就是分区重叠错误,还是先不修了

作者: ihatecr   发布时间: 2009-06-14

重新装了windows在C盘,然后ubuntu还是找不到分区表

作者: 调兵虎符   发布时间: 2009-06-23

不错

作者: yangquanhui   发布时间: 2009-06-26

同意楼主的分析和见解结果,但不同意 分区重叠 这个称谓。多区段物理位置(不连续)构成的一个区只能称为物理交叉分区(分区交叉)。
所谓分区重叠,目前仅发现(可能会)存在于磁盘阵列的情形。这种情况下,可以在单盘的同样分区上写入文件甚至安装一套操作系统,而不破坏阵列磁盘在同样分区位置上的数据。说是可能,是因为没有去深入研究,不具有100%的复现性。
应该说,认不出分区,一方面可能是因为linux比较“严格”(严格忠于标准、忠于自己),另一方面可能是mbr部分写入了不规范或自己没能力认出的非严格的格式,或者光盘系统引导本身就与这部分有某种不明的兼容冲突。由于本人对linux引导等没有什么深入研究,但至少可以认为很大原因是因为linux的严格或者说linux缺少一定的兼容性。因为别的系统没发现该情况,该看见的都该看得见。
其实很早开始linux就不认其他系统分区,后来渐渐改良,就 有时候能看到有时候又不能看到。虽然这只是指分区的格式,但这已经很说明了问题。

作者: sheji   发布时间: 2009-06-28

为了解决实际问题,主要针对多系统的情况(为了良好共存),重新分区甚至初始化(低格)硬盘是绝对干净的方法,喜好干净的人士可以一用。至于现存的系统,ghost可以快、好的完成(对linux不行,太慢,可以用自己的备份方式)。
拒绝一切系统写入mbr的行为,全部改为在分区上启动。这样对任何形式的破坏mbr的行为都可以轻易复原而不影响硬盘系统。用dos模式或者ntldr模式进入grub,再用grub来引导所有的系统。

作者: sheji   发布时间: 2009-06-28