今天我想将我的 debian/testing 系统上的内核从 升级2.6.32-5-686
到3.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-home
home
这是使用任何已安装的内核启动时发生的情况:
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