在Ubuntu 10.10下编译Linux 2.6.35内核时,编译过程中止,并提示:
dpkg-gencontrol: error: package not in control info
国内论坛上没有搜到相关的任何信息,在国外的论坛上搜到了一些解决办法。这个问题是make-kpkg(属于kernel package)的一个bug,大致原因如下:
make-kpkg会在编译过程中会给linux kernel image的名字后面再追加一些后缀,在网看到有些后缀为“+”,有些为“-wl”,我这里的后缀为"-ice",不知道这个后缀是否跟版本有关。但是在源代码的debian/control文件中,kernel image的名字后面并没有追加这些后缀,两边不匹配,所以才会报错。
基于这个原因,修改办法也比较简单,修改debian/control文件即可,将里面所有的package和source name加上和编译过程中我们看到的后缀相同的字母即可。注意,由于每次编译内核时都会重新生成debian/control,因此该修改必须在编译开始后进行。
上述方法我自己没有验证,因为在另外的论坛中看到有人说kernel package最新的版本12.036已经解决了这个问题,那么为什么不更新至最新的kernel package呢? 手动在网站下载package更新的办法我暂时不会,用apt-get更新,可惜Ubuntu 10.10自带的源中还没有最新的package,最后功夫不负有心人,