linux 4.1内核源码编译
编译环境
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内核源码编译相关推荐
- ubuntu20 下从linux 5.14.0-1045 源码编译 linux-5.15.56 内核
ubuntu20 下从linux 5.14.0-1045 源码编译 linux-5.15.56 内核 原以为会是很简单的事,结果还是颇废一番周折.很多情况是没有遇到过得.所以这里记录一下. 问题记录的 ...
- 【linux内核-源码编译之centos7】
linux内核-源码编译之centos7 一. 为什么要编译内核 二.疑难杂症 三.演示环境 四.下载源码 4.1.两者源码区别 4.2.将获取到的源码放在/usr/src/kernels/ 下 五. ...
- 编译linux源码报错,记录一次Linux内核源码编译实验
记录一次Linux内核源码编译实验 文章目录 记录一次Linux内核源码编译实验 0. 实验环境 1. 选择.下载内核源码 2. 安装必要的依赖软件以及性能要求 3. 解压.配置和编译内核源码 3.1 ...
- Linux下imx6dl开发板从镜像的烧写、内核源码编译到第一个驱动运行的详细步骤
文章目录 前言 一.对开发板烧写镜像 1.镜像烧写 2.串口测试 二.搭建交叉编译环境 1.Ubuntu下搭建交叉编译环境 2.WSL下搭建交叉编译环境 三.编译Linux内核源码 1.Ubuntu下 ...
- Android 内核源码编译记录
注:此处内容总结自google官网:AOSP 编译内核.编译完成后刷机部分参考自其他大佬的文章.文中末尾提供了上传至CSDN的msm内核和Aarch64gcc工具 的下载链接,不想从官网下载的可以直接 ...
- 不同的内核源码编译出来的ko文件,区别到底是什么?
之前一直在考虑,不同的内核源码编译出来的ko文件,区别到底是什么? 能不能不编译内核加载内核模块呢?最近逆向分析了linux内核ko模块的结构,事实证明,是可以的. 我在这里给大家分享一些我的心得. ...
- linux内核体系学习路径_Linux内核分析(一)linux体系简介|内核源码简介|内核配置编译安装...
从本篇博文开始我将对linux内核进行学习和分析,整个过程必将十分艰辛,但我会坚持到底,同时在博文中如果那些地方有问题还请各位大神为我讲解. 今天我们会分析到以下内容: 1. Linux体系结构简介 ...
- xilinx linux内核,Xilinx-Zynq Linux内核源码编译过程
本文内容依据http://www.wiki.xilinx.com网址编写,编译所用操作系统为ubuntu 14 1.交叉编译环境的安装配置 2.uboot的编译 1)下载uboot源代码 下载uboo ...
- Jetson Agx Xavier USB驱动裁剪+can时钟修改+内核源码编译流程(jetpack4.6.1)
自己做了一块Xavier载板,硬件裁剪了一些功能,导致官方镜像usb无法使用,我使用的是jetpack4.6.1(R32.7.1),所以进行驱动修改,重新编译内核. 一.虚拟机环境 在Windows下 ...
最新文章
- linux nat 端口,linux – iptables nat只是端口25?
- 普通视频转高清:10个基于深度学习的超分辨率神经网络
- C语言局部变量与全局变量
- 人工智能 | 自动驾驶与人工智能前沿研究报告(技术篇)
- 现在不使用ZeroClipboard我们也能实现复制功能(转)
- mysql多表统计查询示例
- 浅谈-tomcat中的项目之间的访问
- 2017.3.18 每日小记
- MSDN 教程短片 WPF 20(绑定3-ObjectDataProvider)
- 在ccs中添加芯片_985博导团队重大成果,涉及隐私保护领域,已在腾讯与京东、快手的业务中应用...
- 为何优秀的程序员不断离开?| 畅言
- iOS NSURLSession VS NSURLConnection
- 福利 | droidcon Beijing 2016安卓技术大会
- node 多进程 vs java_多进程 VS 多线程 VS 线程池 VS EventLoop
- Vulkan入门(9)-渲染和显示.md
- 扁球 matlab,扁球体表面积计算公式
- 深度学习工作站装机指南
- 假如生活欺骗了你 (普希金诗歌)
- 非常实用的论文查找网站
- 转载:选一个适合自己的加密芯片,加密IC,如何才能真正的做到不被破解。