主页 > imtoken钱包安装下载 > 带你阅读linux内核源码:下载源码,编译内核,运行最小系统

带你阅读linux内核源码:下载源码,编译内核,运行最小系统

imtoken钱包安装下载 2023-03-09 05:44:30

学习linux内核首先要会编译内核源码下载带usdt,还需要了解内核是如何启动根文件系统的。 这样修改linux内核代码后就可以完成验证过程了。

本文将指导您完成以下过程:

1.下载linux并编译linux内核源码

2.编译busybox

3.制作一个最小的根文件系统

4.qemu启动你编译好的内核和根文件系统

带你阅读linux内核源码:下载源码、编译内核并运行一个最小系统

Linux源码下载地址:

我选择的版本是:4.9.229

下载到本地,解压,进入linux-4.9.229目录:

1. 指定硬件架构。

为了减少安装编译器的过程,我在这个例子中使用的是x86,因为我的开发环境是x86。 如果要编译arm内核,指定ARCH=arm,需要安装交叉编译器。

# 导出 ARCH=x86

2.配置board config,这里配置为x86_64_defconfig。 嗯,我们点了,菜单是x86_64_defconfig

# 制作 x86_64_defconfig

3.配置内核

这一步其实就是对第2步的菜单进行微调,我们需要内核支持ramdisk驱动,所以需要选择如下配置:

一般设置--->

----> [*] 初始 RAM 文件系统和 RAM 磁盘 (initramfs/initrd) 支持

设备驱动程序--->

[*] 块设备 --->

RAM 块设备支持

(65536) 默认 RAM 磁盘大小(千字节)

4.编译内核

# 制作

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

带你阅读linux内核源码:下载源码、编译内核并运行一个最小系统

下载buysbox源码,下载链接:

我使用的版本是busybox-1.30.0

1.解压buysbox源码

# tar xvf busybox-1.30.0.tar.bz2

2.配置buysbox源码

这里我们配置busybox静态编译,这样busybox在运行的时候不需要额外的动态链接库。

# 制作菜单配置

忙碌框设置--->

构建选项--->

[*] 将 BusyBox 构建为静态二进制文件(无共享库)

3.编译安装

#make && 安装

4、编译完成后,busybox安装在源码根目录下的_install目录下。 我们进入_install目录,添加一些必要的文件或目录。 相关的shell命令如下:

# mkdir 等 dev mnt

# mkdir -p etc/init.d/

#vim 等/fstab

proc /proc proc 默认值 0 0

tmpfs /tmp tmpfs 默认值 0 0

无 /tmp ramfs 默认值 0 0

sysfs /sys sysfs 默认值 0 0

mdev /dev ramfs 默认值 0 0

#vim etc/init.d/rcS

mkdir -p /proc

mkdir -p /tmp

mkdir -p /sys

mkdir -p /mnt

/bin/挂载-a

mkdir -p /dev/pts

mount -t devpts devpts /dev/pts

echo /sbin/mdev > /proc/sys/kernel/hotplug

mdev -s

# chmod 755 etc/init.d/rcS

#vim 等/inittab

::sysinit:/etc/init.d/rcS

::重生:-/bin/sh

::首先询问:-/bin/sh

::cttlaltdel:/bin/umount -a -r

# chmod 755 等/inittab

# 光盘开发

# mknod 控制台 c 5 1

# mknod null c 1 3

# mknod tty1 c 4 1

这样一个可以由内核启动的最小的、完整的文件系统将起作用。

带你阅读linux内核源码:下载源码、编译内核并运行一个最小系统

创建根文件系统映像文件。

想法:

1.先制作一个空的图片文件;

2、然后将镜像文件格式化为ext3格式;

3、然后挂载镜像文件,将根文件系统复制到挂载目录下;

4. 卸载映像文件。

5.制作一个gzip包。

#!/bin/庆典

rm -rf rootfs.ext3

rm -rf fs

dd if=/dev/zero of=./rootfs.ext3 bs=1M count=32

mkfs.ext3 根文件系统.ext3

mkdir fs

mount -o 循环 rootfs.ext3 ./fs

cp -rf ./_install/* ./fs

卸载./fs

gzip --best -c rootfs.ext3 > rootfs.img.gz

最终生成的文件系统镜像名称为:rootfs.img.gz

内核和文件系统镜像准备就绪,幸福的时刻来了:

带你阅读linux内核源码:下载源码、编译内核并运行一个最小系统

通过qemu模拟器启动我们自己编译好的内核和文件系统:

#qemu-系统-x86_64 \

-内核 ./linux-4.9.229/arch/x86_64/boot/bzImage \

-initrd ./busybox-1.30.0/rootfs.img.gz \

-附加“root=/dev/ram init=/linuxrc”\

-串口文件:output.txt

这样一个完整的最小linux系统就起来了:

带你阅读linux内核源码:下载源码、编译内核并运行一个最小系统

好了,经过上面的步骤,你就可以自己编译一个内核和文件系统了。 有了这样的基础,就可以自由修改linux内核代码,后面运行验证了。

小贷源码 带人脸识别 源码_源码下载带usdt_wap网站源码带后台下载

关注《Technical Brief》(同名头条)源码下载带usdt,100个linux内核开发免费视频教程,带你由浅入深学习linux内核源码。