tiny linux: 内核精简的根文件系统制作

tiny linux

tiny_linux要求实现以下两点:

  1. 精简linux内核镜像,要求在支持TCP/IP数据传输的情况下,内核镜像和正常运行所需内存能够做到尽可能的小。

  2. 采用busybox制作根文件系统,利用kernel mode linux补丁,使得busybox运行在内核态。

欢迎访问tiny_linux, 这里有编译好的内核镜像,根文件系统镜像以及相关脚本,供大家使用。

涉及知识点

  • qemu使用
  • linux内核配置,编译
  • 根文件系统制作

在这里记录了我完成该项目的过程,希望对大家有用。

ps:

1. 关于根文件的制作部分,对当初小白的我,非常感谢杨海宇同学的付出,让自己能够快速入门。

2. 内核源码Documentation目录下有关于linux权威的文档,里面也有关于initrdinit的介绍,可以先读读这两个文档,个人感觉很不错。

成果

平台 :  X86_64
linux:   4.0.4
优化前: bzImage=6.5M 内存=*M
优化后: bzImage=726K 内存=21.6M

目录


Section 1:linux内核镜像文件

背景: Linux内核的启动过程

Linux内核本身的启动又分为压缩内核和非压缩两种。从Linux内核程序的结构上,具有如下的特点:
压缩内核 = 解压缩程序 + 压缩后的内核映像
当压缩内核运行后,将运行一段解压缩程序,得到真正的内核映像,然后跳转到内核映像运行。此时,Linux进入非压缩内核的入口,在非压缩的内核入口中,系统完成各种初始化任务后,跳转到C语言的入口处运行。

这一步主要是通过编译linux内核,获取linux的压缩内核镜像bzImage

  1. 下载linux内核代码

    mkdir tiny_linux
    cd tiny_linux
    curl https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.0.4.tar.xz | tar xJf -
    
  2. 编译linux内核

在内核代码根目录的Makefile当中,可以发现有如下文字描述:

背景:Makefile Line 98

# kbuild supports saving output files in a separate directory.

# To locate output files in a separate directory two syntaxes are supported.

# In both cases the working directory must be the root of the kernel src.

# 1) O=

# Use “make O=dir/to/store/output/files/”

利用make O=命令,可以使输出文件与源代码文件分离,这样使得我们能够建立不同的输出文件,每个独立的输出文件都可以有自己的专属配置,这个在后期精简config的过程当中,特别有用。

    cd tiny_linux
    mkdir obj
    cd linux-4.0.4
    make O=../obj/linux_0 x86_64_defconfig

背景:内核默认配置文件
内核为很多平台附带了默认配置文件,保存在arch//configs目录下,其中对应具体的架构,如x86、arm或者mips等。比如,对于x86架构,内核分别提供了32位和64位的配置文件,即i386_defconfig和x86_64_defconfig;对于arm架构,内核提供了如NVIDA的Tegra平台的默认配置tegra_defconfig,Samsung的S5PV210平台的默认配置s5pv210_defconfig等。

linux_0目录下,执行make menucon

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值