linux系统编译内核源码的步骤演示

linux系统编译内核源码的步骤演示

在进行linux系统上面的程序开发的时候有一些驱动类的或者是要引用内核接口的时候难免不会遇到编译内核源码的情况,在这里我就进行一下内核源码的相关编译流程。整个内核的编译过程来说比较简单,就是几条指令,用心理解就好。
Step 1: 首先下载内核源码
如果你是Ubuntu或基于Ubuntu的Debian,内核源代码是作为 deb 包提供的。 首先,与其他的源码包一样用apt-get 来执行安装。 标题为 Linux-source 的源码包就是最新的内核源码包的元包。

# apt-get install linux-source

在这里插入图片描述

在安装内核源代码的 deb 包后,会在 /usr/src 下生成 tar 文件, 只要将这个文件复制到适当的目录下并解压缩, 就能够获取内核源代码。
在这里插入图片描述
Step 2: 解压源代码
压缩包下载完成后,可以通过tar命令解压。
tar xvf linux-source-4.4.0.tar.bz2

sudo tar xvf linux-source-4.4.0.tar.bz2

在解压的时候可以看到文件列表,这个会很多,可能需要等一会儿。

linux-source-4.4.0/zfs/config/kernel-put-link.m4
linux-source-4.4.0/zfs/config/always-no-bool-compare.m4
linux-source-4.4.0/zfs/config/kernel-commit-metadata.m4
linux-source-4.4.0/zfs/config/tgz.am
linux-source-4.4.0/zfs/config/kernel-shrink.m4
linux-source-4.4.0/zfs/config/kernel-kobj-name-len.m4
linux-source-4.4.0/zfs/config/kernel-is_owner_or_cap.m4
linux-source-4.4.0/zfs/config/kernel-get-disk-ro.m4
linux-source-4.4.0/zfs/config/kernel-blkdev-get.m4
linux-source-4.4.0/zfs/config/kernel-open-bdev-exclusive.m4
linux-source-4.4.0/zfs/config/kernel-acl.m4
linux-source-4.4.0/zfs/config/ltsugar.m4
linux-source-4.4.0/zfs/config/Rules.am
linux-source-4.4.0/zfs/config/kernel-get-link.m4
linux-source-4.4.0/zfs/config/kernel-file-inode.m4
linux-source-4.4.0/zfs/config/mount-helper.m4
linux-source-4.4.0/zfs/config/kernel-lookup-bdev.m4
linux-source-4.4.0/zfs/config/config.guess
linux-source-4.4.0/zfs/config/kernel-insert-inode-locked.m4
linux-source-4.4.0/zfs/config/kernel-bdi-setup-and-register.m4
linux-source-4.4.0/zfs/config/kernel-blk-queue-max-segments.m4
linux-source-4.4.0/zfs/config/kernel-block-device-operations-release-void.m4
linux-source-4.4.0/zfs/config/lt~obsolete.m4
linux-source-4.4.0/zfs/config/kernel-clear-inode.m4
linux-source-4.4.0/zfs/config/kernel-dentry-operations.m4
linux-source-4.4.0/zfs/config/kernel-truncate-range.m4
linux-source-4.4.0/zfs/config/kernel-d-prune-aliases.m4
linux-source-4.4.0/zfs/config/kernel-truncate-setsize.m4
linux-source-4.4.0/zfs/config/user-frame-larger-than.m4
linux-source-4.4.0/zfs/config/kernel-blk-queue-flush.m4
linux-source-4.4.0/zfs/config/ltoptions.m4
linux-source-4.4.0/zfs/config/zfs-meta.m4
linux-source-4.4.0/zfs/config/kernel-fallocate.m4
linux-source-4.4.0/zfs/config/user-libblkid.m4
linux-source-4.4.0/zfs/config/kernel-create-nameidata.m4
linux-source-4.4.0/zfs/config/user-arch.m4
linux-source-4.4.0/zfs/config/kernel-bdev-physical-size.m4
linux-source-4.4.0/zfs/config/kernel-d-obtain-alias.m4
linux-source-4.4.0/zfs/config/kernel-bio-failfast.m4
linux-source-4.4.0/zfs/config/user.m4
linux-source-4.4.0/zfs/config/kernel-sget-args.m4
linux-source-4.4.0/zfs/dkms.conf
##lz@ubuntu:/usr/src/linux-source-4.4.0$ 

Step 3:

  1. 进入源代码目录
cd linux-source-4.4.0
  1. 从当前机器的启动目录拷贝配置信息到源代码目录。这步操作的意思是我们编译内核的配置采用用当前环境一致的配置。
cp -v /boot/config-$(uname -r) .config

在这里插入图片描述

  1. 可以通过如下命令启动配置界面
make menuconfig

如果报错如下:
在这里插入图片描述则运行命令:

sudo apt-get install libncurses5-dev

在这里插入图片描述
再次运行

make menuconfig

该命令会运行一些脚本,然后打开一个配置界面
在这里插入图片描述
可以看出里面包含所有的内核组件,包括文件系统,网络,IO栈,虚拟化和设备驱动等等。如果你不熟悉,可以不做任何修改。
Step 5: 编译内核

  1. 通过如下命令就可以编译内核了
Make -j 8

上面参数是并发数量,通常可以使CPU的2倍。
可以看到如下代码,不用担心等编译完成即可,可能时间很长不用特意等待
在这里插入图片描述

  • 4
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Linux内核源码编译是将Linux内核源代码编译成可执行内核的过程。编译过程需要先安装必要的编译工具和依赖库,然后使用make命令进行编译编译完成后,可以将生成的内核镜像文件安装到系统中,以更新现有的内核版本或者创建新的内核版本。编译过程需要一定的技术和经验,建议在进行编译前先了解相关知识和文档。 ### 回答2: Linux内核是一个开放源代码的操作系统,它的内核源码可以通过网络从github等网站下载,因此也允许用户对源码进行修改。当用户对内核源代码进行修改之后,需要编译新的内核并将其安装到系统中,以应用修改所带来的变化。 首先,下载内核源码,可以通过以下指令在Linux终端中下载 ``` $ git clone https://github.com/torvalds/linux.git ``` 下载完成之后,进入源码根目录 ``` $ cd linux ``` 然后,在终端中运行make menuconfig命令,进入配置界面。在这个界面,可以选择需要编译内核中的功能、驱动和选项,也可以取消需要的功能等选项。完成之后,保存并退出配置界面。 接下来就是正式编译的过程。 先清除上次编译的结果 ``` $ make clean ``` 编译时可以指定对应的平台,可以通过以下命令指定: ``` $ ARCH=arm make xyz ``` 其中xyz指的是编译的目标,比如all表示编译全部内容,zImage表示编译内核文件,modules表示编译驱动模块, bzImage表示编译完整的内核文件等等。 编译完成之后,安装内核和驱动模块等文件: ``` $ sudo make modules_install && sudo make install ``` 这个命令会将编译好的内核镜像文件bzImage复制到/boot目录下,并为其设置一个名为config-<版本号>的配置文件。 最后,重新启动计算机,新的内核就会生效了。 编译内核源码需要一定的编程知识和经验,一些依赖包等也需要提前安装。此外,除非你确实需要修改内核,否则,在编译之前最好想清楚是否真的需要对内核源代码进行多大的修改。 ### 回答3: Linux内核是开源软件,它的源代码是公开且可自由使用的。编译Linux内核源代码就是将源代码翻译成计算机可以执行的机器语言的过程。 Linux内核源代码编译主要包括以下几个步骤: 1. 下载内核源码:从官方网站或其他可靠资源中获取内核源码,根据需要选择合适的版本。 2. 配置内核:使用make menuconfig工具打开Kernel Configuration Utility,根据系统硬件和需要进行内核的配置。配置完成后,保存并退出。 3. 编译内核:使用make命令编译内核,这个过程可能需要一些时间,过程中会生成一些文件(包括压缩镜像文件和应用程序的固件二进制文件等)。 4. 安装内核:使用make install命令将编译后的内核安装到系统中,建议在安装前进行备份。 5. 更新启动引导程序:重新载入启动引导程序(如Grub),以确保新内核可以正常启动。 在编译内核时,需要注意以下问题: 1. 建议使用最新版的编译器。 2. 系统要求:要求系统已经安装了必要的开发工具和库文件,如GCC编译器、make、ncurses和zlib等库文件。 3. 如果编译失败,请查看编译日志,根据错误提示解决问题。 总之,Linux内核源码编译需要一定的技术水平和耐心,但是掌握这个技能对于研究和开发Linux操作系统具有重要的价值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值