带你阅读linux内核源码:下载源码、编译内核并运行一个最小系统
ninehua 2024-11-19 08:22 6 浏览
要学习linux内核,先要能够编译内核,还需要了解内核如何启动根文件系统。这样你才能在修改linux内核代码之后,完成验证的过程。
本文教你完成下列过程:
1.下载linux并编译linux内核源码
2.编译busybox
3.制作一个最小的根文件系统
4.qemu启动你编译好的内核和根文件系统
linux源码下载地址:
https://mirrors.edge.kernel.org/pub/linux/kernel/
我选择的版本是:4.9.229
https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.9.229.tar.xz
下载到本地,解压,然后进入linux-4.9.229目录:
1.指定硬件体系架构。
为了减少安装编译器的过程,我在本例中使用的是x86,因为我的开发环境就是x86。如果你要编译arm的内核,则指定ARCH=arm且需要安装交叉编译器。
# export ARCH=x86
2.配置board config,此处配置为 x86_64_defconfig。好了,我们点好菜了,菜单就是x86_64_defconfig
# make x86_64_defconfig
3.配置内核
这一步其实是对第2步的菜单进行微调,我们需要内核支持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
编译成功后的内核位于:arch/x86_64/boot/bzImage
下载buysbox源码,下载地址:
https://busybox.net/downloads/
我使用的版本是busybox-1.30.0
1.解压buysbox源码
# tar xvf busybox-1.30.0.tar.bz2
2.配置buysbox源码
在这里我们把busybox配置为静态编译,这样busybox在运行的时候就不需要额外的动态链接库了。
# make menuconfig
Busybox Settings --->
Build Options --->
[*] Build BusyBox as a static binary (no shared libs)
3.编译和安装
#make && make install
4.编译完成后的busybox就安装在源码根目录下的_install目录了,我们进入_install目录,补充一些必要的文件或目录,相关的shell命令如下:
# mkdir etc dev mnt
# mkdir -p etc/init.d/
# vim etc/fstab
proc /proc proc defaults 0 0
temps /tmp rpoc defaults 0 0
none /tmp ramfs defaults 0 0
sysfs /sys sysfs defaults 0 0
mdev /dev ramfs defaults 0 0
# vim etc/init.d/rcS
mkdir -p /proc
mkdir -p /tmp
mkdir -p /sys
mkdir -p /mnt
/bin/mount -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 etc/inittab
::sysinit:/etc/init.d/rcS
::respawn:-/bin/sh
::askfirst:-/bin/sh
::cttlaltdel:/bin/umount -a -r
# chmod 755 etc/inittab
# cd dev
# mknod console c 5 1
# mknod null c 1 3
# mknod tty1 c 4 1
这样一个最小的、完整的可以被内核启动的文件系统就齐活啦。
制作根文件系统镜像文件。
思路:
1.先制作一个空的镜像文件;
2.然后把此镜像文件格式化为ext3格式;
3.然后把此镜像文件挂载,并把根文件系统复制到挂载目录;
4.卸载该镜像文件。
5.打成gzip包。
#!/bin/bash
rm -rf rootfs.ext3
rm -rf fs
dd if=/dev/zero of=./rootfs.ext3 bs=1M count=32
mkfs.ext3 rootfs.ext3
mkdir fs
mount -o loop rootfs.ext3 ./fs
cp -rf ./_install/* ./fs
umount ./fs
gzip --best -c rootfs.ext3 > rootfs.img.gz
最终生成的文件系统镜像名字为:rootfs.img.gz
准备好了内核和文件系统镜像,幸福的一刻马上来临了:
通过qemu模拟器启动我们自己编译的内核和文件系统:
# qemu-system-x86_64 \
-kernel ./linux-4.9.229/arch/x86_64/boot/bzImage \
-initrd ./busybox-1.30.0/rootfs.img.gz \
-append "root=/dev/ram init=/linuxrc" \
-serial file:output.txt
这样一个完整的最小linux系统就起来啦:
好了,经过以上的步骤,你可以自己编译一个内核和文件系统。有了这样的基础,你在之后就可以自由的修改linux内核代码并run起来进行验证啦。
记得关注“技术简说”,持续分享linux内核知识,让你一步一步成为linux内核高手。
相关推荐
- 探索最佳输入法:全面测评中文输入法,助您选出最适合的工具
-
随着移动互联网的快速发展,输入法作为我们日常生活中不可或缺的工具之一,扮演着至关重要的角色。在众多中文输入法中,如何选择一款适合自己的输入法成为了许多用户关注的焦点。本文将对几款常用的中文输入法进行全...
- 开源的漫画图片文字翻译工具,多语言翻译无缝嵌入原图!
-
MangalmageTranslator是开源的漫画图片文字翻译工具,能一键翻译漫画和图片中的文字。MangaImageTranslator基于OCR技术识别文本,结合机器翻译将文字转换成目标语...
- Motrix -免费开源的跨平台全能下载工具(迅雷的代替品)
-
除了能满足一般的下载需求,还能用来下载百度网盘的文件,是时候换掉充满广告的迅雷了。关于Motrix...
- CCleaner6全版本中文免安装-理Windows顶级工具
-
CCleaner是一款由Piriform开发的清洁软件,后被Avast收购,用于清理Windows系统中的垃圾文件,优化电脑性能,保护隐私。软件下载:...
- 移除工具可用 免费分享PS2025 V26.0正式修复鹰标中文汉化破解版
-
【移除工具修复,亲测,可以使用】免费分享下载正式鹰标PS2025中文汉化破解版AdobePhotoshop2025v26.0Multilingual多国语言版...
- 这4款纯国产软件,良心且实用,一直被误认为外国人开发
-
1、WGestures(鼠标手势软件)说到“鼠标手势”大家应该略有耳闻,只需使用鼠标在屏幕上划出指定线条,即可执行对应的电脑动作,操作起来非常方便高效!...
- 中文文本纠错工具pycorrector
-
支持音似、形似错字(或变体字)纠正,可用于中文拼音、笔画输入法的错误纠正。python3开发。pycorrector依据语言模型检测错别字位置,通过拼音音似特征、笔画五笔编辑距离特征及语言模型困惑度特...
- 超简单一步汉化Pycharm工具
-
Pycharm配置中文版(无需其他第三方包)步骤总结:...
- 图片简体中文一键转为繁体,这4个工具电商小白快速上手!
-
在这样的环境下,如何快速将图片上的简体中文转为繁体中文成为了许多电商从业者的需求。针对这一需求,有许多高效、易用的工具可供使用。本文将介绍4款电商小白们常用的图片简体中文一键转繁体工具,帮助他们快速上...
- 我做Coupang的第22天:给大家推荐文字和图片翻译工具
-
俗话说,工欲善其事必先利其器。虽然咱们不懂韩语,但是有些翻译工具还是可以用的上的,今天就给大家分别推荐一下文字和图片翻译工具。一、文字翻译工具1、papago首先推荐的就是papago这款翻译软件,也...
- epic平台领取龙腾世纪:审判和龙腾世纪:审判汉化工具
-
epic平台领取龙腾世纪:审判和龙腾世纪:审判汉化工具...
- 中文视频翻译成越南语视频,我只推荐这4个好用的工具
-
在跨境电商领域,视频翻译成越南语成为一种常见的需求。而在这个过程中,AI工具的应用为语言翻译提供了便利和高效性。下面将介绍3个好用的AI工具,它们可帮助将中文视频翻译成越南语视频。1、看往ai看往...
- 如何中文图片转换为中文繁体图片?试试这4个工具!
-
在电商人的跨境业务中,将中文图片转换为中文繁体图片的方法变得越来越重要。幸运的是,有一些实用的工具可以帮助我们实现这个目标。在本文中,我们将介绍4个能够将中文图片转换为中文繁体图片的工具,可以试试看哦...