我正在尝试修改linux-3.2.0(运行Ubuntu)的生物结构(在blk_type .h)。我需要对这个结构做的唯一一件事就是添加一个额外的变量来跟踪一个整数变量(这是为了一个污染算法)。但是,在结构中添加一行,如"int id;",将停止操作系统的启动顺序。
可以编译,但是在引导时给出以下错误:
>Gave up wiating for root device. Common problems:
>Boot args
>check rootdelay= ...
>check root= ...
>missing modules (cat /proc/modules; ls /dev)
>ALERT! /dev/disk/by-uuid/15448888-84a0-4ccf-a02a-0feb3f150a84 does not exist. Dropping to a shell!
>BusyBox Built In Shell ...
>(initramfs)
我使用给定的shell查看了一下,无法通过uuid或其他方式找到所需的文件系统(没有/dev/sda)。知道是怎么回事吗?
谢谢,
-Misiu
我想你是在试图修改Linux内核头文件bio.h,而不是它的用户"朋友"build .h。
说,我必须警告你,在许多地方周围的内核sizeof()可以使用,这是更可移植的,也许一些其他的实现或API可能期望一些固定的大小。如果后者是真的,那么你就有问题了,因为你已经改变了生物结构的大小。
这是一个猜测,没有进一步的调查,从我的角度(我的意思是我没有调查关于生物的细节),但当修补Linux内核必须确保任何可能的副作用,并考虑到整个场景,特别是当修改较低级别的实现。
生物辅助函数在生物结构上执行许多低级操作,例如在bio_integrity.c中获取loot。
在你的帮助下,我设法解决了这个问题。虽然重新构建/安装模块似乎没有立即帮助,但我能够通过将SATA驱动程序构建到内核中来引导系统,正如这个论坛帖子所建议的:https://unix.stackexchange.com/questions/8405/kernel-cant-find-dev-sda-file-during-boot.
谢谢你的帮助,
-Misiu