IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 如何编译Linux内核源码? -> 正文阅读

[系统运维]如何编译Linux内核源码?

前言

学习Linux内核是一件振奋人心的事情,而在学习伊始对Linux内核的成功编译并运行一个mini版的文件系统也更会燃起更足的动力去钻研。本文从下载并编译Linux内核、编译busybox、制作一个最小的根文件系统,最后用qemu启动你编译好的内核和根文件系统 ,初步感受Linux内核的魅力所在。

Linux用途广泛,包含的内容也琳琅满目。Linux系统的基础是内核、C库、工具集合系统的基本工具(如登录程序和Shell)。应用程序通过system call陷入内核,内核又通过驱动程序来与硬件交互。

img应用程序、内核和硬件的关系

首先明确两点:

  1. 配置内核就是你来决定编码哪些代码;
  2. 编译内核就是生成可执行文件的一个过程。

再明确内核文件的产物名称:

  • vmlinux:原始的,未经压缩的内核可执行文件
  • zImage:压缩过的可执行文件——压缩vmlinux后,加上一个head part(用来解压)
  • uImage:用于给uboot引导的zImage
  • bzImage:即bigzImage ,通过gzip压缩的

好了,明确了上述几点,就可以开始实验了。本文的实验环境如下:

  • Linux系统:ubuntu 14.04
  • linux源码版本:linux-4.9.229
  • busybox源码版本:busybox-1.30.0
  • qemu-system-x86_64版本:2.0.0

1.下载并编译Linux内核

https://www.kernel.org/

下载并解压后,进入目录。

1.指定硬件体系架构

为了演示方便,选用了x86架构,如果编译arm则需要再下载对应的toolchain。

$ export ARCH=x86

2.配置board config

$ make  x86_64_defconfig

3.配置内核

这一步其实是对第2步的进行微调,这里我们使用基于ncurse库编制的图形界面工具:

$ make menuconfig

如果执行该命令时出现:

img

原因:缺少ncurses dev工具

sudo apt-get install libncurses5-dev

如果需要内核支持ramdisk驱动,需要选中如下配置:

General setup  --->
       ----> [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support
    Device Drivers  --->
       [*] Block devices  --->
               <*>   RAM block device support
               (65536) Default RAM disk size (kbytes)

4.编译内核

$ make -j8

编译成功后的内核位于:arch/x86_64/boot/bzImage

至此,内核编译完成。

2.编译busybox

什么是busybox?

busybox号称“嵌入式Linux的瑞士军刀”。BusyBox工具小巧高效,可以替代一大批常用的标准Linux命令行工具,功能有所简化,非常适合资源有限的嵌入式平台。BusyBox是模块化且高度可配置的,可以对其进行裁剪以满足特定需求。

在如下链接下载busybox:

https://busybox.net/downloads/busybox.net/downloads/

我们以busybox-1.30.0作为实验对象。

下载之后解压并进入该busybox目录开始配置并编译。这里把busybox配置为静态编译,这样不依赖其他动态库比较容易操作和演示。编译则似曾相识,与编译内核的指令是一样的!

$ make menuconfig

Busybox Settings  --->
      Build Options  --->
            [*] Build BusyBox as a static binary (no shared libs)

配置完之后进行编译和安装

$ make && make install

make是编译busybox,make install是为了在对应目录中编译安装一系列的工具。

编译完成后的busybox就安装在源码根目录下的_install目录了。

总结

至此,我们对Linux内核和busybox进行了配置和编译。光编译肯定不过瘾,下一讲来演示如果基于busybox制作一个简单的文件系统,并通过qemu模拟器运行Linux,真正的让内核工作起来!

在这里插入图片描述

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-11-14 22:09:38  更:2021-11-14 22:10:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 23:48:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码