1.linux内核的功能

嵌入式系统三大组成部分: bootloader、Linux 内核、根文件系统

2.Linux 内核的功能

进程管理:进程创建、销毁 进程间通信

Linux 下每一个进程都有虚拟空间 ----- 4G 3G 用户空间 + 1G 内核空间

网络管理

设备管理: Linux 下一切皆文件

内存管理

文件系统

3.内核目录

arch 架构

arm 分 3 类目录 (公共目录、mach 开头---具体芯片、plat 开头—平台系列)

arch/arm/boot/dts --- 设备树

drivers:驱动程序

fs:支持的文件系统

4.内核裁剪

4.1内核裁剪方式:进入图形化配置界面

注意: 1、把终端铺满全屏 2、把终端字体适当缩小

linux内核裁剪和文件系统制作(上)_文件系统

linux内核裁剪和文件系统制作(上)_文件系统_02

①获取.config

进入图形化配置界面的指令是:make menuconfig

可能出现的问题:

linux内核裁剪和文件系统制作(上)_文件系统_03

[] 只有两种选择 *--静态编译(内核支持该功能) 空格(内核不支持该功能)

<>有三种选择方式 *--静态编译(内核支持该功能) 空格(内核不支持该功能) M----module(模块)

Image : 内核镜像

zImage: 压缩后的内核镜像

uImage:带引导程序的压缩内核镜像

文件大小: Image > uImage > zImage

linux内核裁剪和文件系统制作(上)_linux_04

通过方向键的上下选择红色框中的选项

通过方向键的左右选择绿色框中的选项 使用回车确定选项 选中 EXIT 退出,选择 YES 保存

②复制 Tiny4412 配置文件

cp tiny4412_linux_defconfig .config

再次进入图形化界面 make menuconfig

③取消内核安全模式

 System Type --->

linux内核裁剪和文件系统制作(上)_linux_05

选中之后按下空格取消*号

④选择内核支持的文件系统

支持 EXT3 文件系统,为后续文件系统移植至 SD 卡做准备

File systems --->

linux内核裁剪和文件系统制作(上)_linux_06

⑤文件系统/dev 下设备文件显示

Device Drivers --->

Generic Driver Options --->

linux内核裁剪和文件系统制作(上)_git_07

退出,保存

编译内核

make

内核编译完成之后存在于

Linux3.5/arch/arm/boot/zImage

linux内核裁剪和文件系统制作(上)_linux_08

5.文件系统的制作

①解压 bulidroot 工具

tar -xf buildroot-2023.02.4.tar.gz

linux内核裁剪和文件系统制作(上)_git_09

将以下内容进行安装(需联网在线)

sudo apt-get install gitk git-gui gcc-arm-linux-gnueabihf u-boot-tools device-tree-compiler 
sudo apt-get install gcc-aarch64-linux-gnu mtools parted libudev-dev autoconf m4 intltool
sudo apt-get install libdrm-dev curl sed make binutils build-essential gcc g++ bash patch gzip gawk bzip2
sudo apt-get install perl tar cpio python unzip rsync file bc wget libncurses5 libglib2.0-dev libgtk2.0-dev
sudo apt-get install libglade2-dev cvs git mercurial rsync openssh-client subversion asciidoc w3m dblatex
sudo apt-get install libc6:i386 libssl-dev expect fakeroot cmake flex bison liblz4-tool libtool keychain expect-dev

②buildroot 的配置

对于 buildroot 下的文件,真正需要的文件是编译生成之后的 output 文件夹

dl 文件夹 dl 文件夹存放是编译过程中所有以来的库 → 也是用户勾选的内容

output 下会有一个 images 文件夹下会有一个 rootfs.tar

第一步:make menuconfig

linux内核裁剪和文件系统制作(上)_文件系统_10

第二步:Target options --->

Target Architecture

linux内核裁剪和文件系统制作(上)_文件系统_11

Target Architecture Variant

linux内核裁剪和文件系统制作(上)_linux_12

最终的样子

linux内核裁剪和文件系统制作(上)_文件系统_13

第三步:Toolchain --->

Kernel Headers (Linux 4.19.x kernel headers) --->

linux内核裁剪和文件系统制作(上)_文件系统_14

[*] Enable compatibility shims to run on older kernels

最终的样子

linux内核裁剪和文件系统制作(上)_文件系统_15

第四步:Build options --->

libraries (both static and shared) --->

linux内核裁剪和文件系统制作(上)_linux_16

第五步:System configuration --->

/dev management --->

linux内核裁剪和文件系统制作(上)_git_17

最终的样子

linux内核裁剪和文件系统制作(上)_git_18

第六步:Filesystem images

linux内核裁剪和文件系统制作(上)_linux_19

linux内核裁剪和文件系统制作(上)_git_20

第七步:Target packages

Audio and video applications --->

如果编译报错:可以只选择 madplay

linux内核裁剪和文件系统制作(上)_linux_21

第八步:退出保存

编译 buildroot

解压第三天的资料《dl.tar》至 buildroot 的根路径

linux内核裁剪和文件系统制作(上)_文件系统_22

1、确保上面的 sudo 下载指令已经完成

2、编译过程中要保持联网 3、在 buildroot 目录下执行 make

执行完成的现象

linux内核裁剪和文件系统制作(上)_linux_23