我正在使用 ubuntu 10.10 双启动和 XP。我计划增加交换分区的大小。所以我删除了交换分区。然后我将分区向右移动,以便交换分区可以获得 2 GB。
然后我关闭系统,而没有在“/etc/fstab”文件中编辑交换的适当 UUID。
所以当我启动计算机时,它说“继续等待;按 S 跳过;按 M 手动... 等等”。但它对任何事情都没有反应(对于按 S 或 M)。
使用实时 CD,我使用 GParted 分区编辑器调整原始分区的大小并将其格式化为 linux-swap。fstab 文件在实时 CD 中看起来不同,所以我尝试了 Ubuntu 的恢复模式。在那里,我用正确的 UUID 编辑了 fstab 文件以进行交换。
在我重新启动系统后,它从未完成启动
在 fdisk 命令的输出中,交换分区的起始扇区(或块,我不知道它是什么)与连续分区的结束值相同。
所以我在交换分区和下一个分区(NTFS 分区而不是系统分区)之间留出了一些空间。我已在 fstab 文件中更新了 UUID。
但它再次连续或无限地启动。
可能是什么问题?如何摆脱它?
fdisk 命令的输出
$ sudo fdisk -l
Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x022c022b
Device Boot Start End Blocks Id System
/dev/sda1 * 1 6374 51199123+ 7 HPFS/NTFS
/dev/sda2 6375 60800 437176814+ f W95 Ext'd (LBA)
/dev/sda5 6375 21672 122881153+ 83 Linux
/dev/sda6 21690 40659 152367104 7 HPFS/NTFS
/dev/sda7 40929 60800 159614976 7 HPFS/NTFS
/dev/sda8 40664 40925 2097152 82 Linux swap / Solaris
Partition table entries are not in disk order
在 Live CD 中
$ sudo blkid
/dev/loop0: TYPE="squashfs"
/dev/sda1: UUID="F8F81FD0F81F8C4E" TYPE="ntfs"
/dev/sda5: UUID="b6768343-075c-44a5-8229-4070a80d2d49" TYPE="ext4"
/dev/sda6: LABEL="entertainment" UUID="7630A95430A91C5D" TYPE="ntfs"
/dev/sda7: LABEL="label1" UUID="9414A64F14A63460" TYPE="ntfs"
/dev/sda8: UUID="1993033c-a261-4506-8520-2b5ff9fd9a60" TYPE="swap"
我可以在恢复模式下启动 Ubuntu。
我已将位于硬盘驱动器中的文件系统挂载到挂载点 /mnt。kern.log 文件 (/mnt/var/log/kern.log) 的内容位于 pastebin 中。链接为内核日志
fstab文件(/mnt/etc/fstab)内容为文件系统
当启动画面显示时我按下了 break 键。它显示了这一行:
(process:311):GLib-WARNING ** :getpwuid_r(): failed due to unknown user id (0)
然后一些消息重复了三次。我再次按下中断键,启动画面再次显示。几分钟后,当我按下中断键时,消息重复更多次。
我已记下并在此处。那里可能缺少一些文本。
fsck from Util-linux 2.17.2
/dev/sda5: clean, 191939/7684096 files, 5176534/30720288 block
* starting AppArmor profiles
Skipping profile in /etc/apparmor.d/disable:usr.bin.firefox
[ok]
*setting sensors limits [ok]
*Not starting jetty-edit /etc/default/jetty and change NO_START to be 0 (or comment it out)
Speech dispatcher disable: edit /etc/default/speech-dispatcher
*pulse Audio (...... some thing ......)
Saned disable (...... some thing ......)
* Enabling edit executable binary format bin fmt-super [ok]
*checking battery state ... [ok]
答案1
Live CD 有自己的文件系统,/etc/fstab
Live CD 上的文件不等同于fstab
系统上的文件。Live CD 是完成这项工作的合适工具。
首先,将您的 Ubuntu 分区挂载到挂载点:
sudo mount /dev/sda5 /mnt
接下来开始编辑文件:
sudo nano /mnt/etc/fstab
导航到包含交换的行,然后按Ctrl+K删除该行。在其位置输入以下行:
UUID=1993033c-a261-4506-8520-2b5ff9fd9a60 none swap sw 0 0
Ctrl按+保存更改X,然后按Y和Enter
答案2
我看到您的新交换分区称为 /dev/sda8。您可以在 fstab 文件中使用它来代替 UUID。在我看来,这更简单,而且只有在添加额外的内部硬盘时才可能出现问题。
您必须先从实时 CD 安装本地文件系统,然后才能执行任何有用的操作。
sudo mount /dev/sda5 /mnt
您之前无法挂载它的原因是,除非 fstab 明确表示您不需要,否则您必须使用 sudo 来挂载分区。而在 Live CD 中,并没有这样说。
现在,您的硬盘位于 /mnt。因此,要编辑的正确 fstab 位于 /mnt/etc/fstab。
或者,您可能更愿意设置 chroot。这意味着您可以拥有一个 shell,其中所有内容看起来都像是从硬盘驱动器而不是实时 cd 运行的。要进行设置,请在 /mnt 上安装 /dev/sda5 后执行以下操作:
sudo mount --bind /sys /mnt/sys
sudo mount --bind /proc /mnt/proc
# The above two commands make kernel settings available to the chroot.
# They aren't always necessary, but they never hurt.
sudo chroot /mnt
此时,您将成为内置硬盘上的 root 用户。因此,编辑 /etc/fstab 将编辑硬盘上的 fstab,而不是实时 CD。并且您运行的所有命令都将从硬盘运行。