我最近从 11.10 升级了我的 Ubuntu (奥内里克) 至 12.04 (精准穿山甲)在一个戴尔 Inspiron B130笔记本电脑。当我运行时,fdisk -l
它说我的硬盘不包含有效的分区表。我已经阅读了大量有关正确分区的内容,这使我相信这很糟糕,但我没有注意到任何奇怪的行为或问题。没有有效的分区表会产生什么后果?
答案1
可以在没有分区表的块设备上直接建立文件系统,这本质上没有任何问题。这只是意味着您只能拥有一个文件系统,而其上没有其他任何东西(没有交换分区等......)。然而,这样的块设备不太可能是可引导的。引导加载程序(grub)通常会潜入磁盘被分割成分区时产生的一些可用空间,如果没有这些空间,就没有地方可以放置它。
所以是的,每普苏西的评论,该工具一定是“错误的”。
可能的情况是您的磁盘具有 GPT 分区表并且没有 PC 旧版分区表。fdisk
仅支持 PC 旧版分区表,因此可能会报告找不到分区表。这是不应该发生的,因为 GPT 分区应该包含一个有效的虚拟 fdisk 分区表以实现向后兼容性,但我认为这是可能的。要检查这一点,请使用parted
或gdisk
通过查看 来询问内核它认为分区是什么/proc/partitions
。
另一种可能是fdisk
由于某种原因无法读取磁盘(您有权限吗?您是 root 吗?)。
答案2
这其实并不是一件好事或坏事。错误“不包含有效的分区表”并不总是意味着这一点。您可以在无法识别的偏移量处拥有有效的分区表并得到相同的错误。
例如:
- 如果您在原始磁盘上创建 LVM 卷而不先创建分区,然后在该卷上放置文件系统,您将收到此错误
- 如果您尝试创建“对齐”存储并将起始扇区更改为可被 8 整除,我已经看到此错误或更常见的边界错误
我运行了几台机器,为了实现磁盘对齐,我从 4096(可被 8 整除)开始扇区,并从该点开始创建分区 1。
或者
创建 LVM 时无需先创建分区,以便它从磁盘的开头而不是从默认偏移量开始。
例子:
默认情况下,当您使用以下命令查看磁盘时,大多数磁盘都从扇区 63 开始fdisk -lu
Disk /dev/sdb: 21.4 GB, 21475885056 bytes
255 heads, 63 sectors/track, 2610 cylinders, total 41945088 sectors
Units = sectors of 1 * 512 = 512 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 63 37752749 18876343+ 8e Linux LVM
/dev/sdb2 37752750 41752934 2000092+ 8e Linux LVM
-修改起始扇区时收到边界错误
Disk /dev/sda: 98.7 GB, 98784247808 bytes
255 heads, 63 sectors/track, 12009 cylinders, total 192937984 sectors
Units = sectors of 1 * 512 = 512 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 128 204799 102336 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 204800 78329807 39062504 82 Linux swap / Solaris
/dev/sda3 78329808 192937983 57304088 83 Linux
- 在未先创建分区的情况下将 LVM 添加到驱动器时出现分区表错误,因此没有分区表
Disk /dev/dm-5: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders, total 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Disk identifier: 0x00000000
Disk /dev/dm-5 doesn't contain a valid partition table
--> 该分区已/usr
安装/dev/dm-5 on /usr type xfs (rw)
--> 并且完全可访问
ll /usr
total 272
drwxr-xr-x 5 root root 38 Jan 3 11:10 X11R6
drwxr-xr-x 2 root root 57344 May 9 16:25 bin
..........
添加fdisk -lu
您的问题的输出,很可能您在主驱动器以外的其他设备上收到此错误,并且绝对不是/dev/sda1
因为您没有声明必须进行任何自定义修改才能启动系统。
这都是假设,没有看到你的具体细节。
编辑:我说的很多内容都包含在塞拉达的回答(以更简洁、更容易阅读的方式:})。希望我的“阐述”没有增加混乱。