build linux kernel
一、首先安装toolchains
1. download Linaro toolchains
Linaro toolchains是由 Linaro 公司基于GCC推出的的ARM交叉编译工具。可用于交叉编译ARM系统中所有环节的代码,包括裸机程序、u-boot、Linux kernel、filesystem和App应用程序。当然,也可以选用gcc toolchains。
网址:
https://www.linaro.org/downloads/
https://releases.linaro.org/components/toolchain/binaries/latest-7/aarch64-linux-gnu/
下载: gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu.tar.xz
2. install Linaro toolchains
2.1 解压
cd /
sudo mkdir tools
cd tools
sudo cp ~/samba-share/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu.tar.xz .
sudo tar xvJf gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu.tar.xz
2.2 设置环境变量
1) 打开~/.bashrc
sudo source ~/.bashrc
2) 在最后添加:
export PATH=$PATH:/tools/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/bin
3) 更新:
source ~/.bashrc
二、编译kernel
1. download kernel
根据需要下载相应版本的kernel,我们选择4.19,以下两个网址都可
https://www.kernel.org/
https://cdn.kernel.org/pub/linux/kernel/
2. configure kernel
2.1 产生内核配置文件 .config
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- defconfig
注:
defconfig 一般在arch/arm64/configs/目录下
不能直接copy arch/arm64/configs/deconfig .config
也不能直接采用make ARCH=arm64 menuconfig来生成.config
没有此步骤直接编译kernel会提示:Configuration file ".config" not found!
2.2 配置kernel(可选)
make ARCH=arm64 menuconfig
3. build kernel
执行:make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j8
3.1 提示如下错误
scripts/extract-cert.c:21:25: fatal error: openssl/bio.h: No such file or directory
scripts/sign-file.c:25:30: fatal error: openssl/opensslv.h: No such file or directory
解决:
执行 sudo apt-get install libssl-dev
3.2 继续执行make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j8
大约20分钟后,编译完成!
vmlinux在~/code/linux-4.19.84/
Image在~/code/linux-4.19.84/arch/arm64/boot/
4. other error
新安装的Ubuntu可能还会遇到以下错误,但都很好解决。
4.1 Command 'make' not found
解决:sudo apt install make
4.2 /bin/sh: 1: bison: not found
解决:sudo apt-get install bison -y
4.3 /bin/sh: 1: flex: not found
解决:sudo apt-get install flex
4.4 Unable to find the ncurses package.
解决:sudo apt-get install ncurses-dev
build linux kernel相关推荐
- RISC-V Linux kernel debug 环境搭建
目录 一.目的 二.准备工作 ①Build Ninja ②Build riscv-gnu-compiler toolchain and debug gdb ③命令行安装gcc-riscv64-linu ...
- linux kernel makefile analysis
编译自:https://github.com/0xAX/linux-insides/blob/master/Misc/how_kernel_compiled.md 作者: 0xAX 原创:LCTT h ...
- linux kernel中的cmdline的详细介绍
cmdline 1.向linux kernel添加cmdline的四种方式 (1). 在dts中的bootargs中添加 (2).在BoardConfig中添加 (3).在uboot中添加 (4).在 ...
- 【译】Writing a Simple Linux Kernel Module
掌握 Golden Ring-0 Linux为应用程序提供了强大而广泛的API,但有时这还不够. 与一块硬件交互或执行需要访问系统中特权信息的操作需要内核模块. Linux内核模块是一段编译的二进制代 ...
- Rk3288运行linux,查看“Firefly-rk3288 build linux”的源代码
因为以下原因,您没有权限编辑本页: 您所请求的操作仅限于该用户组的用户使用:用户 该页面已被保护以防止编辑和其他操作. 您可以查看与复制此页面的源代码.=编译firefly linux-SDK系统= ...
- Exploiting “BadIRET” vulnerability (CVE-2014-9322, Linux kernel privilege escalation)
insight-labs · 2015/02/06 14:24 from:http://labs.bromium.com/2015/02/02/exploiting-badiret-vulnerabi ...
- 如何处理错误消息Please install the Linux kernel header files
Please install the Linux kernel "header" files matching the current kernel 当我启动minilkube时遇 ...
- 实时Linux内核调度器 | Real-Time Linux Kernel Scheduler
<Real-Time Linux Kernel Scheduler> HOWTOs by Ankita Garg on August 1, 2009 目录 Design Goal 设计目标 ...
- hung task日志linux,Linux Kernel Crash--hung_task_timeout_secs
前一阵产品升级Linux kernel的版本,升级后版本号是2.6.32-100.24.1.el5. QA在vmWare上运行扩充磁盘空间时,偶尔会发现console上打出一堆kernel的异常信息, ...
最新文章
- FPGA基础知识极简教程(9)七段数码管显示的Verilog简单设计
- 【 FPGA 】16点并行DIT FFT的实现
- 20175223 《Java程序设计》第十一周学习总结
- 软件定义存储的系统架构图和关键技术
- 大数据组件运维工具之HBase
- mysql授权与回收_MySQL 授权,回收权限,查看权限
- Python使用Reportlab处理PDF数据 - 页面布局
- linux文件系统程序设计实验报告,浙江大学Linux程序设计实验报告
- 2022-2028年中国中频加热设备行业市场发展调研及未来前景规划报告
- mp4怎么转换成mp3?
- C4D快速入门教程——软件界面介绍
- fNIRS 公开数据集整理
- 第一批90后30岁了,该有多少存款?
- px4驱动linux,S.Bus Driver for Linux
- 什么是亚稳态,如何消除?
- 利用html制作网页的小结,HTML_CSS制作网页的一些经验分享,CSS制作网页总结的一些经验
1: - phpStudy...
- 评价视频/图片质量的3个工具:PSNR,SSIM,VMAF和(MOS)
- 解决java.lang.NoClassDefFoundError: net/sf/ezmorph/Morpher类找不到的错误
- 定了!家庭教育指导师全国统一培训考核,报名通道今日开启!
- 基于HTML5的消灭星星网页小游戏设计