编译环境

Arch Linux on VirtualBox

下载内核

https://www.kernel.org/

下载的内核压缩包,此时的最新内核版本为4.1:

解压包

# tar -xvJf linux-4.1.tar.xz

在这里为了方便直接切换到su权限了,如果为普通权限,须在每条命令前加上sudo,如果sudo可用的话。

(命令语句中划线的部分为文件名或目录名,是要根据实际情况更改的部分,后面也会遇到很多)

cd到源码根目录

# cd ~/Documents/linux-4.1

进行设置

这里我使用了当前运行内核的默认设置。

拷贝正在运行的内核的配置文件(.config文件)到编译根目录。

# zcat /proc/config.gz > .config

当然也可以手动设置

# sudo make menuconfig

(末尾参考资料一中有详细的说明)

编译内核

# sudo make [-j 2]

后面的参数-j2表示,cpu要开启两个线程来编译内核,可以加快编译速度。

编译完成后的内核文件:

[root@localhost linux-4.1.18]# ll arch/x86/boot/

安装模块

指定:驱动模块的安装目录
    [root@localhost linux-4.1.18]# make modules_install INSTALL_MOD_PATH=/home/test/tmp/
    [root@localhost tmp]# ls lib/
    firmware  modules

# sudo make modules_install

将编译好的内核拷贝到/boot目录

# cp -v arch/x86/boot/bzImage /boot/vmlinuz-YourKernelName

# cp -v arch/x86/boot/bzImage /boot/vmlinuz-YourKernelName

在这里YourKernelName为4.1:

# cp -v arch/x86/boot/bzImage /boot/vmlinuz-4.1

# cp -v arch/x86/boot/bzImage /boot/vmlinuz-4.1

制作初始化内存盘

# mkinitcpio -k FullKernelName /etc/mkinitcpio.conf -g /boot/initramfs-YourKernelName.img 

可以通过 ls /lib/modules 命令查询到可用的FullKernelName:

在这里FullKernelName为4.1.0-ARCH(如上图):

# mkinitcpio -k 4.1.0-ARCH -c /etc/mkinitcpio.conf -g /boot/initramfs-4.1.img 

[拷贝System.map]

# cp System.map /boot/System.map-YourKernelName

在这里YourKernelName为4.1:

# cp System.map /boot/System.map-4.1
# ln -sf /boot/System.map-YourKernelName /boot/System.map

完成了这部操作后,/boot目录如下图所示:

在这里vmlinuz-linux为当前内核,vmlinuz-4.1为新编译的内核。initramfs-4.1.img为新的初始化内存盘,还有刚拷贝的System.map-4.1文件以及System.map链接。

下面我们需要对新的内核文件和内存盘进行引导,以启动新内核。

设置启动项

 # grub-mkconfig -o /boot/grub/grub.cfg

我们可以看到grub自动添加了新的内核,新的内核启动选项在"Advanced options for Arch Linux"中。

重启

# reboot 0

编译前后内核对比

编译前:

linux 4.1内核源码编译相关推荐

  1. ubuntu20 下从linux 5.14.0-1045 源码编译 linux-5.15.56 内核

    ubuntu20 下从linux 5.14.0-1045 源码编译 linux-5.15.56 内核 原以为会是很简单的事,结果还是颇废一番周折.很多情况是没有遇到过得.所以这里记录一下. 问题记录的 ...

  2. 【linux内核-源码编译之centos7】

    linux内核-源码编译之centos7 一. 为什么要编译内核 二.疑难杂症 三.演示环境 四.下载源码 4.1.两者源码区别 4.2.将获取到的源码放在/usr/src/kernels/ 下 五. ...

  3. 编译linux源码报错,记录一次Linux内核源码编译实验

    记录一次Linux内核源码编译实验 文章目录 记录一次Linux内核源码编译实验 0. 实验环境 1. 选择.下载内核源码 2. 安装必要的依赖软件以及性能要求 3. 解压.配置和编译内核源码 3.1 ...

  4. Linux下imx6dl开发板从镜像的烧写、内核源码编译到第一个驱动运行的详细步骤

    文章目录 前言 一.对开发板烧写镜像 1.镜像烧写 2.串口测试 二.搭建交叉编译环境 1.Ubuntu下搭建交叉编译环境 2.WSL下搭建交叉编译环境 三.编译Linux内核源码 1.Ubuntu下 ...

  5. Android 内核源码编译记录

    注:此处内容总结自google官网:AOSP 编译内核.编译完成后刷机部分参考自其他大佬的文章.文中末尾提供了上传至CSDN的msm内核和Aarch64gcc工具 的下载链接,不想从官网下载的可以直接 ...

  6. 不同的内核源码编译出来的ko文件,区别到底是什么?

    之前一直在考虑,不同的内核源码编译出来的ko文件,区别到底是什么? 能不能不编译内核加载内核模块呢?最近逆向分析了linux内核ko模块的结构,事实证明,是可以的. 我在这里给大家分享一些我的心得. ...

  7. linux内核体系学习路径_Linux内核分析(一)linux体系简介|内核源码简介|内核配置编译安装...

    从本篇博文开始我将对linux内核进行学习和分析,整个过程必将十分艰辛,但我会坚持到底,同时在博文中如果那些地方有问题还请各位大神为我讲解. 今天我们会分析到以下内容: 1. Linux体系结构简介 ...

  8. xilinx linux内核,Xilinx-Zynq Linux内核源码编译过程

    本文内容依据http://www.wiki.xilinx.com网址编写,编译所用操作系统为ubuntu 14 1.交叉编译环境的安装配置 2.uboot的编译 1)下载uboot源代码 下载uboo ...

  9. Jetson Agx Xavier USB驱动裁剪+can时钟修改+内核源码编译流程(jetpack4.6.1)

    自己做了一块Xavier载板,硬件裁剪了一些功能,导致官方镜像usb无法使用,我使用的是jetpack4.6.1(R32.7.1),所以进行驱动修改,重新编译内核. 一.虚拟机环境 在Windows下 ...

最新文章

  1. linux nat 端口,linux – iptables nat只是端口25?
  2. 普通视频转高清:10个基于深度学习的超分辨率神经网络
  3. C语言局部变量与全局变量
  4. 人工智能 | 自动驾驶与人工智能前沿研究报告(技术篇)
  5. 现在不使用ZeroClipboard我们也能实现复制功能(转)
  6. mysql多表统计查询示例
  7. 浅谈-tomcat中的项目之间的访问
  8. 2017.3.18 每日小记
  9. MSDN 教程短片 WPF 20(绑定3-ObjectDataProvider)
  10. 在ccs中添加芯片_985博导团队重大成果,涉及隐私保护领域,已在腾讯与京东、快手的业务中应用...
  11. 为何优秀的程序员不断离开?| 畅言
  12. iOS NSURLSession VS NSURLConnection
  13. 福利 | droidcon Beijing 2016安卓技术大会
  14. node 多进程 vs java_多进程 VS 多线程 VS 线程池 VS EventLoop
  15. Vulkan入门(9)-渲染和显示.md
  16. 扁球 matlab,扁球体表面积计算公式
  17. 深度学习工作站装机指南
  18. 假如生活欺骗了你 (普希金诗歌)
  19. 非常实用的论文查找网站
  20. 转载:选一个适合自己的加密芯片,加密IC,如何才能真正的做到不被破解。

热门文章

  1. Scala 可变集合体系、不可变集合体系 详解
  2. jacoco—增量代码覆盖率实现
  3. 轩小陌的Python笔记-day26 必备SQL语句、表关系及授权
  4. Linux——进程概念(进程状态)
  5. 余三码和8421码对比
  6. android 人际关系 图,六张图说明六种人际关系(朋友圈转疯了)
  7. 查看oracle版本命令
  8. 【图解HTTP】——返回结果的HTTP状态码
  9. 返回结果的HTTP状态码-HTTP(四)
  10. 分享一个实用的数据恢复软件,Easyrecovery 附序列号