教你在十分钟内编译一个Linux内核,并在虚拟机里运行

教你在十分钟内编译一个Linux内核,并在虚拟机里运行

前言这篇文章将会简单的介绍如何在Linux系统上面,编译一个5.19的内核,然后在QEMU虚拟机中运行。

下载Linux内核源码首先,我们需要下载Linux的代码:

https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.19.10.tar.xz

然后,把它解压到一个地方,比如在桌面新建一个叫做linux-5.19-build的文件夹,然后把代码解压进去。

这个时候,我们的目录结构应该是这样子:

安装所需的软件包在控制台输入以下命令,安装所需的软件包。

代码语言:javascript代码运行次数:0运行复制sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison qemu qemu-system qemu-kvm如果你的电脑运行的不是Ubuntu/Debian系列的Linux发行版,请使用对应的包管理器安装以上软件。

配置Linux的编译选项Linux有很多的编译选项,我们选择默认的即可。

首先,我们在linux源代码的文件夹内,右键打开终端。请确保终端显示的“当前工作目录”为”linux-5.19-build/linux-5.19.10″.

接着,我们创建Linux的默认编译配置,在控制台输入:

代码语言:javascript代码运行次数:0运行复制make defconfig当显示”configuration written to .config”字样之后,说明配置创建成功。我们可以进入下一步。

注解:如果你想对linux内核进行裁减或者交叉编译,请使用”make menuconfig”选项,可以自定义你的编译配置。当然,对于新手来说,默认配置就可以了。

开始编译Linux终于,我们可以开始编译Linux内核了,我们只需要在控制台输入以下命令即可。

代码语言:javascript代码运行次数:0运行复制make -j $(nproc) bzImage根据电脑的性能不同,编译时间从1分钟到二十分钟甚至更久。

ps: 我在E5-2640v4双路服务器上(总共40个逻辑处理器)编译,花费1分36秒的时间。在配备AMD R7-4800H(总共16个逻辑处理器)的笔记本电脑上花费2分25秒的时间。

当显示“Kernel: arch/x86/boot/bzImage is ready“的时候,意味着编译完成了。

怎么运行?工作还没有完成!Linux内核只是一个内核,我们要运行它的话,还需要一个磁盘文件系统来放置一些所需的文件和程序。因此我们还需要一个工具:busybox

配置BusyBox按照百科的定义:

BusyBox

BusyBox 是一个集成了三百多个最常用Linux命令和工具的软件。BusyBox 包含了一些简单的工具,例如ls、cat和echo等等,还包含了一些更大、更复杂的工具,例grep、find、mount以及telnet等。

那我们如何下载它?

我们可以这样,在linux-5.19-build文件夹下,输入以下命令,即可下载busybox的代码,并解压它。

代码语言:javascript代码运行次数:0运行复制wget https://busybox.net/downloads/busybox-1.35.0.tar.bz2

tar xvf busybox-1.35.0.tar.bz2解压之后,目录结构如图所示:

然后我们在busybox文件夹下打开控制台,输入以下命令,配置它的编译选项:

代码语言:javascript代码运行次数:0运行复制make menuconfig然后就会弹出这样一个界面:

我们可以通过上下左右键来操作它。选中Settings,然后回车进入。

一直按方向键,往下找到Build Options

然后选中“Build static binary“,按下键盘的y键,即可选中它。选中之后前面的方框的*号会亮起。如图所示:

接着,我们按键盘的右键,将底部光标移动到Exit处,按回车,回到主界面。

接着在主界面同样也是exit.

就会弹出界面询问我们是否保存,我们选择Yes即可。

创建磁盘镜像接着,我们回到“桌面/linux-5.19-build”文件夹,在控制台输入以下命令,创建磁盘镜像:

代码语言:javascript代码运行次数:0运行复制dd if=/dev/zero of=rootfs.img bs=1M count=20

mkfs.ext4 rootfs.img然后,我们接着运行以下命令,编译BusyBox它装进磁盘镜像。

代码语言:javascript代码运行次数:0运行复制mkdir fs

sudo mount -t ext4 -o loop rootfs.img ./fs

cd busybox-1.35.0

sudo make install -j $(nproc) CONFIG_PREFIX=../fs

# 为文件系统创建一些必须的文件夹

cd ../fs

sudo mkdir proc dev etc home mnt

sudo cp -r ../busybox-1.35.0/examples/bootfloppy/etc/* etc/

cd ..

# 更改权限,以免无法运行

sudo chmod -R 777 fs/

# 卸载磁盘镜像

sudo umount fs启动Linux内核至此,我们的准备工作已经全部完成!我们可以在QEMU虚拟机中启动Linux内核了。

在“桌面/linux-5.19-build”文件夹下的控制台输入命令:

代码语言:javascript代码运行次数:0运行复制qemu-system-x86_64 -kernel ./linux-5.19.10/arch/x86_64/boot/bzImage -hda rootfs.img -append "root=/dev/sda"于是,内核就成功启动了。如图所示,我们能够看到当前目录下有一些文件夹。

我们也能够使用一些常用的Linux命令来操作了。

转载请注明来源:https://longjin666.cn/?p=1599

🎯 相关推荐

同为长江鲸类,为什么白鱀豚消失了而江豚没有?
best365官网苹果下载

同为长江鲸类,为什么白鱀豚消失了而江豚没有?

📅 07-25 👁️ 4434
专业评测:iPhone X 的屏幕到底有多好?
365bet真人体育

专业评测:iPhone X 的屏幕到底有多好?

📅 07-14 👁️ 5361
探险者的B&O音响,听着舒服带劲
365bet真人体育

探险者的B&O音响,听着舒服带劲

📅 08-31 👁️ 7329
win7如何更改屏幕颜色设置
365bet真人体育

win7如何更改屏幕颜色设置

📅 09-13 👁️ 3124
狼人杀游戏账号交易平台
365bet真人体育

狼人杀游戏账号交易平台

📅 07-18 👁️ 3611
触手TV停服,但游戏直播大战硝烟还未散尽
best365官网苹果下载

触手TV停服,但游戏直播大战硝烟还未散尽

📅 07-09 👁️ 1057