我正在尝试编译 iscsi-target 软件 SCST。它要求我为 Linux 内核打补丁,以便获得一定的性能提升。问题是我对 Linux 开发还不熟悉。我应该从哪里开始?如何打补丁?我需要重新编译内核吗?救命!
我正在运行 Ubuntu 10.04.3 amd64
内核版本 2.6.32-28-server
答案1
您的 Linux 发行版通常有自己的说明。搜索其网站或在 IRC 上提问 – 或者至少告诉我们发行版;如果不知道,就不可能提供可靠的答案。
- Arch Linux:https://wiki.archlinux.org/index.php/Kernels#Compilation
- CentOS:http://wiki.centos.org/HowTos/Custom_Kernel
- Debian:http://users.wowway.com/~zlinuxman/Kernel.htm,http://debian-handbook.info/browse/stable/sect.kernel-compilation.html,https://www.debian.org/releases/jessie/i386/ch08s06.html.en
- Fedora:https://fedoraproject.org/wiki/Building_a_custom_kernel
- 乌本图:https://help.ubuntu.com/community/Kernel/Compile
通用指令如下:
从以下网址下载内核源代码内核网站。“稳定”可能是最佳选择。解压到方便的地方(我用
~/src/linux
)。- 读取名为 的文件
README
。
- 读取名为 的文件
进入源目录后,复制当前内核的配置,使用以下命令:
zcat /proc/config.gz > .config
如果 /proc 没有,请寻找
/boot/config-[version]
。应用补丁,方法如下:(如果被拒绝,
patch -p1 < foo.patch
请尝试)。-p0
使用以下命令编译内核:
make silentoldconfig
make
使用以下命令安装模块:
sudo make modules_install
将内核映像安装
.../linux/arch/i386/boot/bzImage
到引导加载程序所需的任何位置。(例如,/boot/vmlinuz-custom
。)如果您的发行版使用新内核,请为它构建一个 initramfs,并再次确保引导加载程序知道它的位置。例如,在 Arch Linux 上,您将使用:
mkinitcpio -k /boot/vmlinuz-custom -g /boot/initramfs-custom