我已经从 unetbootin 安装了 Ubuntu 14.04。安装后重新启动时,uname -r
显示:
3.5.0-17-generic
..这意味着实际安装的内核(3.13.0-32-generic)没有加载任何模块。
有人知道吗为什么这个内核应该通过安装过程安装吗?它是使用 Unetbootin 的产物吗?引导到 Unetbootin 映像会提供正确的内核,因此模块会加载。
知道原因还好,但我不知道现在该如何补救。因为没有加载任何模块,所以我无法连接网络或连接 USB 驱动器。
我尝试过update-grub
,它似乎找到了正确的内核,但似乎并没有告诉系统从它启动。
我也尝试过在启动时使用“Ubuntu 高级选项”选择内核,但只列出了 3.13.x 内核。选择此选项会导致 3.5.x 内核顽固地加载。
我是一个相当有成就的系统管理员,但这个问题让我感到困惑:) 有人可以帮忙吗?
答案1
好的,我解决了。这是 Unetbootin 的问题。在将新映像放入 USB 之前,我没有格式化 USB 记忆棒,因此它将先前安装的版本(在 USB 上)的内核安装到机器硬盘上。
如果确实如此,我不太清楚为什么实时启动映像似乎能够正常工作,但最终的解决方法是彻底格式化 USB 驱动器,然后使用 Unetbootin 重新映像。
答案2
从 USB、DVD 或 CD 启动实时系统并确保您可以访问互联网。
安装您的 Ubuntu 安装,例如通过在 Nautilus 或 Gnome Disks 中打开相应的分区。它应该安装在
/media/ubuntu
或下的某个地方,/media
但稍后我将参考安装点[mountpoint]
。- 如果您有单独的
/boot
或/var
分区,事情会有点困难,因为您需要手动将它们挂载在 下[mountpoint]
。如果您不知道我在说什么,您很可能不关心这个问题。
- 如果您有单独的
打开终端并运行:
sudo apt-get update apt-get download linux-image-3.13.0-24-generic sudo dpkg --install --root=[mountpoint] linux-image-*.deb
- 如果你没有使用 Trusty,请在以下网址查找适用于你的 Ubuntu 版本的最新内核包版本:https://launchpad.net/ubuntu/+source/linux#packages_list并将其替换到第二行。
- 在较旧的 32 位(x86)版本中,您需要将其附加
-pae
到第 2 行。 - 如果您使用的是较不常见的架构(PowerPC 或某些 ARM),则可能需要不同的内核包类型。
generic
输入您的架构所需的内容,而不是 。同样,如果您不知道我在说什么,您很可能不会担心这一点,除非第二行返回错误,指出您的架构不存在该包。
如果以上所有命令均有效,您现在可以重新启动。如果有的话,不要忘记将内核更新到较新的版本。
答案3
编辑:简单的解决方案是使用 Ubuntu 自己的启动盘创建器而不是 UNetbootin 重新创建 USB 记忆棒,或者像另一个答案所建议的那样先尝试格式化 USB 记忆棒。
在我使用 UNetbootin 创建的 USB 棒安装 Ubuntu 14.04 后,第一次启动时也出现了错误的内核。症状是无法挂载启动分区,因为内核没有可用的 ext2 驱动程序。
奇怪的是,/boot 中的内核似乎是正确的,至少从其名称来看是这样。但是,只有名称是正确的。文件中的内核很旧,从其修改日期可以看出。通过使用以下命令下载实际内核包解决了该问题
apt-get download
解压
dpkg -x
并将(名称相同但大小不同的)内核映像复制到启动分区。
我通过使用相同的 UNetbootin USB 棒启动 Live Ubuntu 来执行修复操作,从那里我可以挂载实际的启动分区(我系统上的 sda1)。