--------------------------------------------------------------
在ubuntu系统中,要编译内核,还需要安装一系列相应的工具才行。这篇文章,正是针对这一过程的一次记录,目标是可以通过 make menuconfig 或 make xconfig 配置内核参数
--------------------------------------------------------------
参考
apt用法参考 《 UbuntuHelp:AptGet/Howto 》
内核编译参考 《 配置并编译内核[更新到linux-2.6.26.2] 》
《 Master Kernel Thread 》
--------------------------------------------------------------
我的做法是从make menuconfig开始
$make menuconfig
错误信息:
可以看出,是因为找不到 ncurses 导致的错误。那么尝试安装 ncurses
$sudo apt-get install ncurses
提示信息:
根据《 Compiling the Kernel - errors in make menuconfig ARCH=um 》 再试:
$sudo apt-get install libncurses*
提示信息:
选择Y继续执行,完成后,执行$sudo make menuconfig,OK!!!
进行到这,已经可以通过make menuconfig看到内核参数配置了。不过,如果要用X11模式的make xconfig,却还是不行的
$ sudo make xconfig
错误信息:
根据《 配置并编译内核[更新到linux-2.6.26.2] 》 知道在正常步骤下,除了安装ncurses外,还要安装build-essential 和 kernel-package
好吧,先开始查询一下,从kernel-package开始吧,毕竟带着kernel,估计比较重要
查询kernel-package信息
$ apt-cache show kernel-package
好多信息,不知道能不能看得懂,算了,看一下安装好了没
$ apt-cache policy kernel-package
提示信息:
这个信息就简单多了,没有安装!那么开始安装吧
$ sudo apt-get install kernel-package
提示信息:
选Y吗?当然,不然做这一步干么!
然后轮到build-essential
查询build-essential信息
$ apt-cache show build-essential
提示信息:
查询安装状态
$ apt-cache policy build-essential
提示信息:
没有安装,那装上吧
$ sudo apt-get install build-essential
待build-essential完成安装后,运行make xconfig,错误信息还和之前一样,我知道,我还是没有完成除错任务。注意到上面我用红色标注的错误提示,没有安装QT3
安装QT库
$ sudo apt-get install libqt3-headers libqt3-mt-dev
注意这里把libqt3-headers和libqt3-mt-dev一起安装了。我试过两个分开安装,但好像关联不好,装好一个要卸掉另一个,总是这样。后来我火大,两个一起装,看你们还闹,果然就安分了
提示信息:
选Y安装后,再安装建议软件包
$ sudo apt-get install libqt3-compat-headers
执行
$sudo make xconfig
OK!!!
到此为止,不管是make config 或是 make menuconfig 再或是 make xconfig 都可以运行了。
在ubuntu系统中,要编译内核,还需要安装一系列相应的工具才行。这篇文章,正是针对这一过程的一次记录,目标是可以通过 make menuconfig 或 make xconfig 配置内核参数
--------------------------------------------------------------
参考
apt用法参考 《 UbuntuHelp:AptGet/Howto 》
内核编译参考 《 配置并编译内核[更新到linux-2.6.26.2] 》
《 Master Kernel Thread 》
--------------------------------------------------------------
我的做法是从make menuconfig开始
$make menuconfig
错误信息:
*** Unable to find the ncurses libraries or the *** required header files. *** 'make menuconfig' requires the ncurses libraries. *** *** Install ncurses (ncurses-devel) and try again. *** make[1]: *** [scripts/kconfig/dochecklxdialog] 错误 1 make: *** [menuconfig] 错误2 |
可以看出,是因为找不到 ncurses 导致的错误。那么尝试安装 ncurses
$sudo apt-get install ncurses
提示信息:
正在读取软件包列表... 完成 正在分析软件包的依赖关系树 读取状态信息... 完成 现在没有可用的软件包 ncurses , 但是它被其他的软件包引用了。 这可能意味着这个缺失的软件包可能已被废弃, 或者只能在其他发布源中找到 E: 软件包 ncurses 还没有可供安装的候选者 |
根据《 Compiling the Kernel - errors in make menuconfig ARCH=um 》 再试:
$sudo apt-get install libncurses*
提示信息:
正在读取软件包列表... 完成 正在分析软件包的依赖关系树 读取状态信息... 完成 注意,根据正则表达式“libncurses*” 选中了 libncurses4 注意,根据正则表达式“libncurses*” 选中了 libncurses5 注意,根据正则表达式“libncurses*” 选中了 libncurses-ruby1.8 注意,根据正则表达式“libncurses*” 选中了 libncurses-ryby1.9 注意,根据正则表达式“libncurses*” 选中了 libncurses-dev 注意,根据正则表达式“libncurses*” 选中了 libncursesw5-dbg 注意,根据正则表达式“libncurses*” 选中了 libncursesw5-dev 注意,根据正则表达式“libncurses*” 选中了 libncurses-ruby 注意,根据正则表达式“libncurses*” 选中了 libncurses5-dbg 注意,根据正则表达式“libncurses*” 选中了 libncurses5-dev 注意,根据正则表达式“libncurses*” 选中了 libncursesw5 已经不需要下列自动安装的软件包: libchewing3-data ttf-wqy-zenhei scim-chewing thunderbird-locale-zh-tw language-support-translations-zh libchewing3 xfonts-wqy openoffice.org-l10n-zh-cn openoffice.org-l10n-zh-tw openoffice.org-help-zh-cn openoffice.org-help-zh-tw language-support-fonts-zh 使用‘apt-get autoremove’ 来删除它们。 将会安装下列额外的软件包: libncurses-ruby libncurses-ruby1.8 libncurses-ruby1.9 libncurses4 libncurses5-dbg libncurses5-dev libncursesw5-dbg libncursesw5-dev libruby1.8 libruby1.9 ruby1.8 ruby1.9 建议安装的软件包: rdoc1.8 ri1.8 ruby1.8-examples rdoc1.9 ri1.9 ruby1.9-examples 下列【新】软件包将被安装: libncurses-ruby libncurses-ruby1.8 libncurses-ruby1.9 libncurses4 libncurses5-dbg libncurses5-dev libncursesw5-dbg libncursesw5-dev libruby1.8 libruby1.9 ruby1.8 ruby1.9 共升级了0个软件包,新安装了12个软件包,要卸载0个软件包,有60个软件未被升级。 需要下载8868kB的软件包。 操作完成后,会消耗掉33.9MB的额外磁盘空间。 您希望继续执行吗?[Y/n] |
选择Y继续执行,完成后,执行$sudo make menuconfig,OK!!!
进行到这,已经可以通过make menuconfig看到内核参数配置了。不过,如果要用X11模式的make xconfig,却还是不行的
$ sudo make xconfig
错误信息:
HOSTCC scripts/basic/fixdep HOSTCC scripts/basic/docproc CHECK qt * * Unable to find the QT3 installation. Please make sure that * the QT3 development package is correctly installed and * either install pkg-config or set the QTDIR environment * variable to the correct location. * HOSTCC scripts/kconfig/conf.o sed < scripts/kconfig/lkc_proto.h > scripts/kconfig/lkc_defs.h 's/P(\([^,]*\),.*/#define \1 (\*\1_p)/' HOSTCC scripts/kconfig/kconfig_load.o HOSTCC scripts/kconfig/kxgettext.o SHIPPED scripts/kconfig/zconf.tab.c SHIPPED scripts/kconfig/lex.zconf.c SHIPPED scripts/kconfig/zconf.hash.c HOSTCC scripts/kconfig/zconf.tab.o make[1]: *** 没有规则可以创建“scripts/kconfig/qconf.o” 需要的目标“scripts/kconfig/.tmp_qtcheck” 。 停止。 make: ***[xconfig] 错误2 |
根据《 配置并编译内核[更新到linux-2.6.26.2] 》 知道在正常步骤下,除了安装ncurses外,还要安装build-essential 和 kernel-package
好吧,先开始查询一下,从kernel-package开始吧,毕竟带着kernel,估计比较重要
查询kernel-package信息
$ apt-cache show kernel-package
Package: kernel-package Priority: optional Section: misc Installed-Size: 2192 Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com> Original-Maintainer: Manoj Srivastava <srivasta@debian.org> Architecture: all Version: 11.001 Depends: perl, dpkg (>= 1.4), dpkg-dev (>= 1.4.0.9), gcc | c-compiler, make (>= 3.80-10), po-debconf, gettext, file Recommends: libc6-dev | libc-dev, bzip2 Suggests: linux-source | kernel-source, libdb3-dev, libncurses-dev, docbook-utils Filename: pool/main/k/kernel-package/kernel-package_11.001_all.deb Size: 510452 MD5sum: fd820c2e3970fc8d300aef4a2b9e15ca SHA1: 34924f84fe4cd604869bf4717d4c0230b3117291 SHA256: 3ff71a3e2e69d5073310e8e83fc982baefec983af7139ed7cc7a4ce6cf42c38a Description: A utility for building Linux kernel related Debian packages. This package provides the capability to create a debian kernel-image package by just running make-kpkg kernel_image in a kernel source directory tree. It can also package the relevant kernel headers into a kernel-headers package. In general, this package is very useful if you need to create a custom kernel, if, for example, the default kernel does not support some of your hardware, or you wish a leaner, meaner kernel. It also scripts the steps that need be taken to compile the kernel, which is quite convenient (forgetting a crucial step once was the initial motivation for this package). Please look at /usr/share/doc/kernel-package/Rationale.gz for a full list of advantages of this package. Bugs: mailto:ubuntu-users@lists.ubuntu.com Origin: Ubuntu |
好多信息,不知道能不能看得懂,算了,看一下安装好了没
$ apt-cache policy kernel-package
提示信息:
kernel-package: 已安装: (无) 候选的软件包:11.001 版本列表: 11.001 0 500 http://cn.archive.ubuntu.com hardy/main Packages 9.001ubuntu15 0 500 http://ubuntu.cn99.com dapper/main Packages |
这个信息就简单多了,没有安装!那么开始安装吧
$ sudo apt-get install kernel-package
提示信息:
正在读取软件包列表... 完成 正在分析软件包的依赖关系树 读取状态信息... 完成 已经不需要下列自动安装的软件包: libchewing3-data ttf-wqy-zenhei scim-chewing thunderbird-locale-zh-tw language-support-translations-zh libchewing3 xfonts-wqy openoffice.org-l10n-zh-cn openoffice.org-l10n-zh-tw openoffice.org-help-zh-cn openoffice.org-help-zh-tw language-support-fonts-zh 使用‘apt-get autoremove’ 来删除它们。 将会安装下列额外的软件包: dpkg-dev gettext intltool-debian libtimedate-perl patch po-debconf 建议安装的软件包: debian-keyring cvs gettext-doc linux-source kernel-source libdb3-dev docbook-utils diff-doc 推荐安装的软件包: build-essential libmail-sendmail-perl libcompress-zlib-perl libmail-box-perl 下列【新】软件包将被安装: dpkg-dev gettext intltool-debian kernel-package libtimedate-perl patch po-debconf 共升级了0个软件包,新安装了7个软件包,要卸载0个软件包,有60个软件未被升级。 需要下载3436kB的软件包。 操作完成后,会消耗掉12.8MB的额外磁盘空间。 您希望继续执行吗?[Y/n] |
选Y吗?当然,不然做这一步干么!
然后轮到build-essential
查询build-essential信息
$ apt-cache show build-essential
提示信息:
Package: build-essential Priority: optional Section: devel Installed-Size: 48 Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com> Original-Maintainer: Matthias Klose <doko@debian.org> Architecture: i386 Version: 11.3ubuntu1 Depends: libc6-dev | libc-dev, gcc (>= 4:4.1.1), g++ (>= 4:4.1.1), make, dpkg-dev (>= 1.13.5) Filename: pool/main/b/build-essential/build-essential_11.3ubuntu1_i386.deb Size: 7066 MD5sum: dbf21241506cb04fc6f67a93aaaf991b SHA1: aef5b9f76a05ea23c0370eab53ef0d20b4dac1f5 SHA256: 7d3b5efbd44c8e8186e33e3b0e9585fc8a86f4b1cd328f10e3c4a594e50f9da5 Description-zh_CN: 编译程序必须软件包的列表信息 如果您不打算编译Debian软件包,就不需要安装此软件包。而且要编译Debian软件包,此软件包也不是必须的。 本软件包包含一个列表,表中列出了在编译Debian软件包时所必须的软件包。本软件包依赖于列表中的软件,这样,安装编译程序必须的软件包就会很简单。 如果安装了此软件包,在编译软件包时,你只需要安装其特别要求的编译时依赖关系。反过来说,在确定软件包的依赖关系的时候,您完全可以忽略此软件包所依赖的这些包。 本软件包并不是定义那些软件包是编译必须的;真正的定义在Debian策略手册中。本软件包仅包含一个大家都需要的列表。然而,如果此软件包和手册发生冲突,以手册为准。 Bugs: mailto:ubuntu-users@lists.ubuntu.com Origin: Ubuntu |
查询安装状态
$ apt-cache policy build-essential
提示信息:
build-essential: 已安装:(无) 候选的软件包:11.3ubuntu1 版本列表: 11.3ubuntu1 0 500 http://cn.archive.ubuntu.com hardy/main Packages 11.1 0 500 http://ubuntu.cn99.com dapper/main Packages |
没有安装,那装上吧
$ sudo apt-get install build-essential
正在读取软件包列表... 完成 正在分析软件包的依赖关系树 读取状态信息... 完成 已经不需要下列自动安装的软件包: libchewing3-data ttf-wqy-zenhei scim-chewing thunderbird-locale-zh-tw language-support-translations-zh libchewing3 xfonts-wqy openoffice.org-l10n-zh-cn openoffice.org-l10n-zh-tw openoffice.org-help-zh-cn openoffice.org-help-zh-tw language-support-fonts-zh 使用‘apt-get autoremove’ 来删除它们。 将会安装下列额外的软件包: g++ g++-4.2 libstdc++6-4.2-dev 建议安装的软件包: g++-multilib g++-4.2-multilib gcc-4.2-doc libstdc++6-4.2-dbg libstdc++6-4.2-doc 下列【新】软件包将被安装: build-essential g++ g++-4.2 libstdc++6-4.2-dev 共升级了0个软件包,新安装了4个软件包,要卸载0个软件包,有60个软件未被升级。 需要下载3979kB的软件包。 操作完成后,会消耗掉15.0MB的额外磁盘空间。 您希望继续执行吗?[Y/n] |
待build-essential完成安装后,运行make xconfig,错误信息还和之前一样,我知道,我还是没有完成除错任务。注意到上面我用红色标注的错误提示,没有安装QT3
安装QT库
$ sudo apt-get install libqt3-headers libqt3-mt-dev
注意这里把libqt3-headers和libqt3-mt-dev一起安装了。我试过两个分开安装,但好像关联不好,装好一个要卸掉另一个,总是这样。后来我火大,两个一起装,看你们还闹,果然就安分了
提示信息:
正在读取软件包列表... 完成 正在分析软件包的依赖关系树 读取状态信息... 完成 已经不需要下列自动安装的软件包: libchewing3-data ttf-wqy-zenhei scim-chewing thunderbird-locale-zh-tw language-support-translations-zh libchewing3 xfonts-wqy openoffice.org-l10n-zh-cn openoffice.org-l10n-zh-tw openoffice.org-help-zh-cn openoffice.org-help-zh-tw language-support-fonts-zh 使用‘apt-get autoremove’ 来删除它们。 将会安装下列额外的软件包: comerr-dev libaudio-dev libcupsys2-dev libexpat1-dev libfontconfig1-dev libfreetype6-dev libgcrypt11-dev libgl1-mesa-dev libglu1-mesa-dev libgnutls-dev libgnutlsxx13 libgpg-error-dev libice-dev libjpeg62-dev libkadm55 libkrb5-dev liblcms1-dev liblzo2-dev libmng-dev libopencdk10-dev libpng12-dev libpthread-stubs0 libpthread-stubs0-dev libsm-dev libtasn1-3-dev libx11-dev libxau-dev libxcb-xlib0-dev libxcb1-dev libxcursor-dev libxdmcp-dev libxext-dev libxfixes-dev libxft-dev libxi-dev libxinerama-dev libxmu-dev libxmu-headers libxrandr-dev libxrender-dev libxt-dev mesa-common-dev x11proto-core-dev x11proto-fixes-dev x11proto-input-dev x11proto-kb-dev x11proto-randr-dev x11proto-render-dev x11proto-xext-dev x11proto-xinerama-dev xtrans-dev 建议安装的软件包: doc-base libgcrypt11-doc gnutls-bin gnutls-doc krb5-doc libqt3-i18n qt3-doc 推荐安装的软件包: libqt3-compat-headers 下列【新】软件包将被安装: comerr-dev libaudio-dev libcupsys2-dev libexpat1-dev libfontconfig1-dev libfreetype6-dev libgcrypt11-dev libgl1-mesa-dev libglu1-mesa-dev libgnutls-dev libgnutlsxx13 libgpg-error-dev libice-dev libjpeg62-dev libkadm55 libkrb5-dev liblcms1-dev liblzo2-dev libmng-dev libopencdk10-dev libpng12-dev libpthread-stubs0 libpthread-stubs0-dev libqt3-headers libqt3-mt-dev libsm-dev libtasn1-3-dev libx11-dev libxau-dev libxcb-xlib0-dev libxcb1-dev libxcursor-dev libxdmcp-dev libxext-dev libxfixes-dev libxft-dev libxi-dev libxinerama-dev libxmu-dev libxmu-headers libxrandr-dev libxrender-dev libxt-dev mesa-common-dev x11proto-core-dev x11proto-fixes-dev x11proto-input-dev x11proto-kb-dev x11proto-randr-dev x11proto-render-dev x11proto-xext-dev x11proto-xinerama-dev xtrans-dev 共升级了0个软件包,新安装了53个软件包,要卸载0个软件包,有60个软件未被升级。 需要下载8933kB的软件包。 操作完成后,会消耗掉33.0MB的额外磁盘空间。 您希望继续执行吗?[Y/n] |
选Y安装后,再安装建议软件包
$ sudo apt-get install libqt3-compat-headers
执行
$sudo make xconfig
OK!!!
到此为止,不管是make config 或是 make menuconfig 再或是 make xconfig 都可以运行了。