最近帮一个项目编译内核,特别学习了一下,记下了过程。如果问题,可以及时联系我
编译命令
1.清理工作目标
make clean: 删除编译中间文件,但是保留配置
make mrproper:删除包括配置文件的所有构建文件
make distclean:执行mrproper所做的一切,并删除备份文件
2.配置内核
make menuconfig:文本图形方式配置内核
make oldconfig:基于当前的.config文件提示更新内核
make defconfig:生成默认的内核配置
make allmodconfig:所有的可选的选项构建成模块
make allyesconfig:生成全部选择是内核配置
make noconfig:生成全部选择否的内核配置
3.构建内核目标
make all:构建所有目标
make bzImage:构建内核映像
make modules:构建所有驱动
make dir/:构建指定目录
make dir/file.[s|o|i]:构建指定文件
make dir/file.ko:构建指定驱动
4.安装内核
make install:安装内核
make modules_install:安装驱动
5.打包工具
make rpm:生成内核的RMP包
make rpm-pkg:生成带源码的RPM包
make binrpm-pkg:生成包含内核和驱动的RMP包
make deb-pkg:生成包含内核和驱动的debian包
6.生成文档工具
make xmldocs:生成xml文档
make pdfdocs:生成pdf文档
maek htmldocs:生成html文档
获得内核源码
直接去www.kernel.org官网下载。如果在Ubuntu下,可以通过apt-get install linux-source下载,下载后的目录为/usr/src
解压文件
tar xvf linux-source-3.13.0.tar.bz2
清理环境
make mrproper
首次编译不需要这次操作
创建内核配置
make menuconfig
保存后会在当前目录下生成.config的隐藏文件
构建内核
一定要用root权限编译内核,不然会产生很多诡异问题。
make all -j 4
编译完成时间要看编译主机的配置,强大的机器大概20分钟就能编译完成。配置差可能需要数小时时间。编译完成后,主要生成了./arch/x86/boot/bzImage和initrd.image文件。
安装内核
make install
默认会把vmlinuz-3.16.0ydoing, initrd.img-3.16.0ydoing, System.map-3.16.0ydoing, config-3.16.0ydoing文件安装到路径是/boot。
修改启动项
我是在Ubuntu14.04的机器上操作的,引导的工具是grub2。这个是默认安装好的,注意不是grub1,所以要修改/boot/grub/grub.cfg。我之前以为是grub1,修改了menu.list,发现根本没用,郁闷了很久。grub.cfg默认是不可写的,所以修改之前要更改文件权限。
chmod +x grub.cfg
vim grub.cfg
模仿已有的menuentry 增加如下:
menuentry 'Ubuntu, with Linux 3.16.0ydoing' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.16.0ydoing-advanced-e65c8b88-8698-45a3-8420-384d43b37119' {
recordfail
load_video
gfxmode $linux_gfx_mode
insmod gzio
insmod part_msdos
insmod ext2
set root='hd0,msdos6'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos6 --hint-efi=hd0,msdos6 --hint-baremetal=ahci0,msdos6 e65c8b88-8698-45a3-8420-384d43b37119
else
search --no-floppy --fs-uuid --set=root e65c8b88-8698-45a3-8420-384d43b37119
fi
echo 'Loading Linux 3.16.0ydoing ...'
linux /boot/vmlinuz-3.16.0ydoing root=UUID=e65c8b88-8698-45a3-8420-384d43b37119 ro quiet splash $vt_handoff
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-3.16.0ydoing
}
注意要修改有3个地方,一个是menuentry ‘Ubuntu, with Linux 3.16.0ydoing’ ,第二个是linux /boot/vmlinuz-3.16.0ydoing ,第三个是initrd /boot/initrd.img-3.16.0ydoing。
重新启动后就可以在grub的菜单中看到Ubuntu, with Linux 3.16.0ydoing的选项
可以将initrd.img编译进入bzImage
可以将initrd.img和bzImage合二为一,只要在make menuconfig
配置initramfs的路径就再编译一次就行了。
<script type="text/javascript">
$(function () {
$('pre.prettyprint code').each(function () {
var lines = $(this).text().split('\n').length;
var $numbering = $('<ul/>').addClass('pre-numbering').hide();
$(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i <= lines; i++) {
$numbering.append($('<li/>').text(i));
};
$numbering.fadeIn(1700);
});
});
</script>
版权声明:本文为博主原创文章,未经博主允许不得转载。
分享到:
相关推荐
linux下编译内核的应用指南,辛苦得来的,希望对你有用
目录: 1 交叉编译环境配置 1.1 交叉编译工具链的获取 1.2 交叉编译工具链的安装和验证 2 Linux Kernel 编译过程 2.1 获取Linux Kernel 源代码及补丁 2.2 内核配置详解 2.3 内核编译操作过程 ...
The Linux Kernel Module Programming Guide CHS Linux内核驱动模块编程指南 (内核版本2.2, 2.4) Peter Jay Salzman Ori Pomerantz 版权 © 2001 Peter Jay Salzman 2003-04-04 ver 2.4.0 -------------------...
6.5 编译Linux内核 6.5.1 代码成熟等级选项 6.5.2 通用的一些选项 6.5.3 和模块相关的选项 6.5.4 和块相关的选项 6.5.5 和系统类型相关的选项 6.5.6 和总线相关的选项 6.5.7 和内核特性相关的选项 6.5.8 和...
linux内核配置中文手册,内核配置说明,通过它可以清楚的了解如何配置内核
瑞芯微芯片RK3308,基于Firefly开发板开发。集编译Uboot、Kernel、根文件系统为一体的开发指南。
linux内核调试分析指南 linux内核调试分析指南--上篇 本文档已经转到下面的网址,位于zh-kernel.org的文档停止更新,请访问新网址 一些前言 作者前言 知识从哪里来 为什么撰写本文档 为什么需要汇编级调试 ***第一...
您可能想在Google上找到How to make custom kernel in 以获取编译内核所需的软件包。 下载或任何您喜欢的东西。 解压缩它,我将在linux-xxx上假设一个通用名称。 下一步是找到config文件。 大多数时候,您可以...
你可能想谷歌How to make custom kernel in获取编译内核所需的包。下载最新的内核或您可能喜欢的任何内容。提取它,我将从现在开始假设一个通用名称linux-xxx 。下一步是找到config文件。大多数时候你可以运行:cp -...
4.4 kernel 重新编译及更新 .................................................................................................... 26 4.4.1 文件准备...........................................................
Java-CGI-HOWTO (8KB) 以及如何用 Java 来写 CGI 程式 Kernel-HOWTO (26KB) 如何配置、编译、升级核心以及排难解纷的详细指引?/TD> LinuxDoc+Emacs+Ispell (11KB) 一些有关使用Emacs 与 Ispell 工具的...
敢死队a106项目内核兼容的rom: 世系OS 13.0非官方世系OS 14.1非官方编译指南: 首先,为内核创建一个文件夹并输入: $ mkdir kernel$ cd kernel然后,克隆项目: $ git clone -b cm-14.1 并进行编译: * Enter to ...
该存储库包含当前Raspberry Pi内核和模块,用户空间库以及Bootloader / GPU固件的预编译二进制文件。 下面是此存储库及其所含许可证的简要指南(有关更多许可证详细信息,请查看相应的目录): 开机: start * ....
要编译 linux-kvm-arm,请在 ./linux-kvm-arm 中运行 test.sh 以获取 uImage,它将用作主机映像。 使用以下命令为来宾 VM 生成内核映像: dd if=uImage of=zImage skip=64 bs=1 并将 zImage 复制到来宾 VM 磁盘。 ...
与二进制软件发行版不同,源代码根据用户的偏好在本地进行编译,并且通常针对特定类型的计算机进行了优化。 该Linux发行版尚未准备好,我们需要其他人的帮助。 通过发送有关的消息来加入团队 示范影片 产生的ISO...
设置交叉编译器并编译内核映像(该文件将显示诸如kernel8-rpi4.img类kernel8-rpi4.img )。 导航到/boot目录并运行make命令。 这将获取启动Raspberry Pi所需的所有文件。 确保您的SD卡已格式化为FAT,并且上面没有...
# 更详细的操作步骤及说明,请参见01.software\board\documents目录下的《Linux开发环境用户指南》。 # 以下操作假设您的单板上已经有u-boot,使用网口烧写uboot、kernel及rootfs到Flash中。 # Demo单板默认为从...
最底层的是一个 Linux Kernel,加载了几个移动设备必要的系统驱动(这么说来 Android 基础系统是要以 GPL 发布了?不知道 34 家厂商的硬件开发商们是怎么样想的);上面是类库和 Runtime,绿色的类库部分可以看 到...