Linux (debian/testing) 安装内核 3.9.1 后无法启动

Linux (debian/testing) 安装内核 3.9.1 后无法启动

今天我想将我的 debian/testing 系统上的内核从 升级2.6.32-5-6863.9-1-686-pae.所以我通过sudo aptitude install linux-image-3.9.1-686-pae(或类似的东西)安装了图像。然后它说,我需要安装一些标头,所以我做了sudo aptitude install linux-headers-3.9.1-686-pae类似的事情。现在我的系统无法正确启动。两个内核仍然安装或者至少我可以在 GRUB 中选择它们来加载。

但是,我的系统仍然存在,只是无法启动。我的磁盘上有两个分区:(1) sda1,这是我的启动分区(标志仍然存在)和 (2) sda2,我在其中使用for和for创建lvm了两个虚拟卷。我设法将每个分区/卷安装在我所在的实时系统上(使用 USB 记忆棒)。base-root/base-homehome

这是使用任何已安装的内核启动时发生的情况:

early console in decompress_kernel

Decompressing Linux ... Parsing ELF... done.
Booting the kernel.
Loading, please wait...
Gave up waiting for root device. Common problems:
 - Boot args (cat /proc/cmdline)
  - Check rootdleay= (did the system wait long enough?)
  - Check root= (did the system wait for the right device?)
 - Missing modules (cat /procmodules ls /dev)
ALERT! /dev/disk/by-uiid/<some_uuid> does not exist.
Dropping to a shell!

BusyBox...
Enter 'hel...

/bin/sh: can't access tty; job control turned off

系统在“请稍候...”消息后等待/搜索约 30 秒。这是cat /proc/cmdline(在尝试引导新内核时,对于旧内核,有类似的消息)的输出:

BOOT_IMAGE=/vmzlinuz-3.9.1-686-pae root=UUID=<someuuid>

现在,这是输出ls /dev/mapper/

control

通常,还有base-root和 的条目base-home所以我的猜测是,有一些 lvm 内核模块需要解释来自 lvm 的卷,但未加载到内核中。奇怪的是,它似乎在旧内核中也缺失了。

cat /proc/modules这是启动新内核时的输出:

usbhid 35908 0 - Live...
hid 64559 1 usbhid  - ...
ohci_hcd 22150 0 - ...
dm_mod 577277 0 - ...
sd_mod 577277 - ...
crc_t10dif 12332 1 - ...
ahci 25000 0 - ...
libahci 22632 1 ahci - ...
thermal 13172 0 - ...
ata_generic 12450 - ...
thermal_sys 18359 thermal, ...
libata 126017 3 ahci, libahci,ata_generic, ...
uhci_hcd 22424 0 - ...
ehci_pcs 12432 - ...
e1000e 123671 0 - ...
ehci_hcd 3570 1 ehci_pci -
usbcore 110217 5 usbhis,ohci_hcd,uhci_hcd,ehci_pci,ehci_hcd, ...
scsi_mod 135333 2 sd_mod,esndld, ...
ptp 131711 e1000e, ...
usb_common 12338 1 usbcore, ...
pps_core 13071 1 ptp, ...

(我稍后可能会填写“...”。)

不管怎样,我想做的显然是从正确启动到我安装的 debian 系统base-root

到目前为止我的策略是:

  • 记下启动时返回的错误消息(并将其发布到此处)
  • 谷歌他们,尝试理解错误

此刻,我有以下问题:

  • 这个错误是什么意思? /proc/cmdline 是做什么用的?我怎样才能改变它的内容?
  • 我应该安装哪些模块/设备?哪些模块丢失并且应该加载?
  • 我如何告诉我的内核加载其他模块。

编辑:谷歌搜索错误消息,我发现,似乎相关。

答案1

好的,我得到了部分答案,一个解决方法,基于这个错误报告日志, 我发现。我可以在将 grub 引导内核参数 root 更改为 rootroot=/dev/mapper/base-root并添加后rootdelay=1引导到我的系统。耶!

如何使这些更改永久生效?对于此错误是否有任何真正的解决方案?

答案2

使它们永久化的正确方法是编辑 /etc/default/grub 并取消注释:

GRUB_DISABLE_LINUX_UUID=true

之后运行:

update-grub

相关内容