|
|
第 1 帖 | ||
|
|
标题: Sarge 下一步一步编译 Debian 内核 How To Compile A Kernel - The Debian (Sarge) Way
这篇文章相信可以为很多想自行编译内核的 Debianer 提供 step-by-step 的方法,值得參考: http://www.howtoforge.com/kernel_compilation_debian 补充一句,文中建议将源码在 /usr/src 里解包并建立 linux 连结 引用:
Further reference: Jan25,07 - The official Debian Linux Kernel Handbook http://kernel-handbook.alioth.debian.org/
__________________
nO ^^4+73R wH1<h d!5+R0z j00 42E U$1N9 7r% LpHZ 4+ l3457 oN(& 此帖于 07-01-25 08:24 被 d00m3d 编辑. |
||
|
|
|
||
|
|
第 2 帖 | |
|
|
临时置顶一个星期,希望对各位有用武之地。
|
|
|
|
|
|
|
|
第 3 帖 | |
|
|
我觉得把文章转过来比较的好
__________________
I love free ---------------------------------------------- 20060913 to successful [LFS 6.2.3] IBM T23:PIII 1.13G/256M/30G[XP+DEBIAN] IBM T60p:2.16G/2G/100G@ubuntu IBM M pro:3.4G/4G/1T@lenny UpLooking studying... |
|
|
|
|
|
|
|
第 4 帖 | ||
|
|
引用:
|
||
|
|
|
||
|
|
第 5 帖 | |
|
|
好地方. 楼主提供的地方有这么多的 way 啊!
![]() How To Compile A Kernel - The Ubuntu Way How To Compile A Kernel - The Fedora Way How To Compile A Kernel - The CentOS Way How To Compile A Kernel - The SuSE Way How To Compile A Kernel - The Mandriva Way |
|
|
|
|
|
|
|
第 6 帖 | |
|
|
标题: How To Compile A Kernel - The Debian (Sarge) Way 注意:这里是原文,有必要参照d00m3d第一贴的内容
How To Compile A Kernel - The Debian (Sarge) Way Version 1.0 Author: Falko Timme <ft [at] falkotimme [dot] com> Last edited 11/28/2006 Each distribution has some specific tools to build a custom kernel from the sources. This article is about compiling a kernel on Debian Sarge systems. It describes how to build a custom kernel using the latest unmodified kernel sources from www.kernel.org (vanilla kernel) so that you are independent from the kernels supplied by your distribution. It also shows how to patch the kernel sources if you need features that are not in there. I have tested this on Debian Sarge in VMware Server. I want to say first that this is not the only way of setting up such a system. There are many ways of achieving this goal but this is the way I take. I do not issue any guarantee that this will work for you! 1 Preliminary Note The goal of this tutorial is to build a kernel .deb package that can be installed on the system, and that you can share with others and install on other Debian Sarge systems which is a big advantage compared to the "traditional" way where you don't end up with a .deb package. 2 Install Required Packages For Kernel Compilation First we update our package database: PHP 代码:
PHP 代码:
3 Download The Kernel Sources Next we download our desired kernel to /usr/src. Go to www.kernel.org and select the kernel you want to install, e.g. linux-2.6.18.3.tar.bz2 (you can find all 2.6 kernels here: http://www.kernel.org/pub/linux/kernel/v2.6/). Then you can download it to /usr/src like this: PHP 代码:
PHP 代码:
Sometimes you need drivers for hardware that isn't supported by the new kernel by default, or you need support for virtualization techniques or some other bleeding-edge technology that hasn't made it to the kernel yet. In all these cases you have to patch the kernel sources (provided there is a patch available...). Now let's assume you have downloaded the needed patch (I call it patch.bz2 in this example) to /usr/src. This is how you apply it to your kernel sources (you must still be in the /usr/src/linux directory): PHP 代码:
If your patches are compressed with gzip (.gz) instead of bzip2 (.bz2), then you patch your kernel as follows: PHP 代码:
Prepatches are the equivalent to alpha releases for Linux; they live in the testing directories in the archives. They should be applied using the patch(1) utility to the source code of the previous full release with a 3-part version number (for example, the 2.6.12-rc4 prepatch should be applied to the 2.6.11 kernel sources, not, for example, 2.6.11.10.) So if you want to compile a 2.6.19-rc6 kernel, you must download the 2.6.18 kernel sources (http://www.kernel.org/pub/linux/kern...2.6.18.tar.bz2) in step 3 instead of kernel 2.6.18.3! This is how you apply the 2.6.19-rc6 patch to kernel 2.6.18: PHP 代码:
It's a good idea to use the configuration of your current working kernel as a basis for your new kernel. Therefore we copy the existing configuration to /usr/src/linux: PHP 代码:
PHP 代码:
1.png 2.png Then browse through the kernel configuration menu and make your choices. Make sure you specify a kernel version identification string under General Setup ---> () Local version - append to kernel release. I use -default1 so our kernel .deb package will be named linux-2.6.18.3-default1_2.6.18.3-default1_i386.deb. Please make sure that the string contains a digit (e.g. 1, 2, ...) because otherwise the kernel build process will result in an error. Please note: After you have installed linux-2.6.18.3-default1_2.6.18.3-default1_i386.deb and decide to compile another 2.6.18.3 kernel .deb package, it is important to use a different version string, e.g. -default2, -default3, etc., because otherwise you can't install your new kernel because dpkg complains that linux-2.6.18.3-default1_2.6.18.3-default1_i386.deb is already installed! 3.png 4.png 5.png 此帖于 06-12-08 09:33 被 redinux 编辑. |
|
|
|
|
|
|
|
第 7 帖 | |
|
|
6.png
Next make sure you enable the Fusion MPT device drivers under Device Drivers --> Fusion MPT device support. I don't know if this is necessary on all platforms; at least it is on mine (Debian Sarge on a VMware Server) because otherwise you'll get this error message when you boot your new kernel: /bin/cat: /sys/block/sda/dev: No such file or directory which results in a kernel panic. 7.png 8.png 9.png Then browse through the rest of the kernel configuration menu and make your choices. When you are finished and select Exit, answer the following question (Do you wish to save your new kernel configuration?) with Yes: 10.png |
|
|
|
|
|
|
|
第 8 帖 | |||
|
|
6 Build The Kernel
To build the kernel, execute these two commands: PHP 代码:
7 Install The New Kernel After the successful kernel build, you can find your kernel .deb package in the /usr/src directory. PHP 代码:
PHP 代码:
8 Create A Ramdisk Now we must create a ramdisk for our new kernel. Normally we do this with mkinitrd, but our new kernel uses udev instead of devfs, and you'll most likely get this error message with an mkinitrd generated ramdisk during boot-up: mount: unknown filesystem type 'devfs' which might lead to a kernel panic. The new way of creating ramdisks is with mkinitrd.yaird. Backports.org has a yaird package for Debian Sarge. Before we can install it, we must install two prerequisites: PHP 代码:
PHP 代码:
Before we can create the new ramdisk, we must edit the configuration file of our new kernel which you can find in the /boot directory (run PHP 代码:
yaird error: bad value in /boot/config-2.6.18.3-default1: CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" (fatal) So we do this: PHP 代码:
引用:
PHP 代码:
Now we must configure our GRUB boot loader so that our new kernels gets booted when we restart the system. This is very easy, just run PHP 代码:
PHP 代码:
引用:
Now reboot the system: PHP 代码:
PHP 代码:
2.6.18.3-default1 If the system doesn't start, restart it, and when you come to the GRUB boot loader menu, select your old kernel and start the system: 11.png You can now try again to compile a working kernel. Don't forget to remove the two stanzas of the not-working kernel from /boot/grub/menu.lst. |
|||
|
|
|
|||
|
|
第 9 帖 | ||
|
|
引用:
|
||
|
|
|
||
|
|
第 10 帖 | |
|
|
内核源码树在哪儿解压及编译其实并不重要,胡乱建立 /usr/src/linux 反而有机会引起问题
|
|
|
|
|
|
|
|
第 11 帖 | |
|
|
debian:~# mkinitrd.yaird -o /boot/initrd.img-2.6.18.3-default1 2.6.18.3-default1
yaird error: can not read /proc/...(sorry i forget here) 发生这个错误 但用 debian:~# mkinitrd -o /boot/initrd.img-2.6.18.3-default1 2.6.18.3-default1 可以。reboot后uname -a 就是2.6内核了 此帖于 06-12-25 06:11 被 brokencluster 编辑. |
|
|
|
|
|
|
|
第 12 帖 | |
|
|
debian3.1内核版本升级到2.6.18,启动提示这个信息:
VFS: Cannot open root device "sda2" or unknown-block(0,0) 怎么办? http://www.linuxsir.org/bbs/showthread.php?t=288648 |
|
|
|
|
|
|
|
第 13 帖 | |
|
|
想请教一下,我编译的是2.6.19.2的内核,最新的,我按照上面一步不落地编译了,令人郁闷的是我在最后一步:
mkinitrd.yaird -o /boot/initrd.img-2.6.18.3-default1 2.6.18.3-default1 的时候失败了!!!!报的错和brokencluster兄弟的一样!!!yaird error: can not open /proc/... 我查了一下我的的/boot下面竟然没有新生成initrd.img-2.6.19.2-default1这个新文件,其余的所有的都有(包括config-2.6.19.2-default1,vmlinuz-2.6.19.2-default1这些都有啊),为什么就少initrd.img-2.6.19.2-default1呢 各位老大帮下,我不甘心阿,熬了一个晚上 竟然败在最后一步!!!是在是不甘心阿!! |
|
|
|
|
|
|
|
第 14 帖 | |
|
|
然后我强行用brokencluster兄弟的方法试了下,结果报错如下:
cvsser:/boot# mkinitrd -o /boot/initrd.img-2.6.19.2-default1 2.6.19.2-default1 Package `module-init-tools' is not installed and no info is available. Use dpkg --info (= dpkg-deb --info) to examine archive files, and dpkg --contents (= dpkg-deb --contents) to list their contents. /usr/sbin/mkinitrd: checkpkg: dpkg -s module-init-tools failed |
|
|
|
|
|
|
|
第 15 帖 | |
|
|
大家帮忙分析下,严重感谢了
|
|
|
|
|
|