编译Linux并在QEMU虚拟机中运行

0x00 安装所需软件包

首先安装所需软件包。

sudo apt-get install gcc make fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison qemu qemu-system qemu-kvm

如果你的系统不是Ubuntu/Debian,请用对应的包管理器安装软件。

0x10 下载Linux内核源码

首先在kernel.org中下载源码压缩包,本教程中使用Linux6.8,建议建立一个文件夹来存放源码。

mkdir build
cd build
wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.8.tar.xz
tar xvf linux-6.8.tar.xz
cd linux-6.8

0x20 配置Linux编译选项

Linux有许多的编译选项,当然对于新手,使用默认配置既可。

make defconfig

当显示configuration written to .config后,说明创建配置成功。

如果你想开关Linux内核的功能或者交叉编译,请使用”make menuconfig”配置内核功能。

0x30 开始编译Linux

生成完配置后就可以开始编译Linux内核了,我们只需要输入以下命令既可开始。

make -j $(nproc)

根据电脑性能不同,编译时间从1分钟到30分钟甚至更久。

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

但是现在编译出的Linux只是一个内核,无法直接运行,如果要运行的话还需要一个磁盘文件系统来放置所需的文件和程序,所以我们还需要一个工具:BusyBox

0x40 下载并配置BusyBox

首先在busybox.net中下载源码压缩包。本教程使用busybox-1.36.0。

下载之前请先退回到上层目录,也就是build目录中

cd ..
wget https://busybox.net/downloads/busybox-1.36.0.tar.bz2
tar xvf busybox-1.36.0.tar.bz2
cd busybox-1.36.0

之后我们输入以下命令配置编译选项。

make menuconfig

使用方向键来切换光标,回车键进入条目。

先进入Settings,然后向下找到Build Options,选中Build static binary,按下空格键选中,之后前面方框中会亮起一个*

接着按右方向键,移动到下方Exit选项,按下enter退出,接着会弹出界面询问是否保存,选择Yes。

0x50 创建磁盘镜像

返回上一级目录,输入以下命令创建磁盘镜像并格式化。

cd ..
dd if=/dev/zero of=rootfs.img bs=1M count=20
mkfs.ext4 rootfs.img

接着运行以下命令编译BusyBox,并将它装进磁盘镜像。

mkdir fs
sudo mount -t ext4 -o loop rootfs.img ./fs
cd busybox-1.36.0
sudo make install -j $(nproc) CONFIG_PREFIX=../fs
cd ../fs
sudo mkdir proc dev etc home mnt
sudo cp -r ../busybox-1.36.0/examples/bootfloppy/etc/* etc/
cd ..
sudo umount fs

0x60 启动Linux

至此,我们的准备工作已全部完成,可以输入以下命令使用QEMU启动Linux内核了。

qemu-system-x86_64 -kernel ./linux-6.8/arch/x86_64/boot/bzImage -hda rootfs.img -append "root=/dev/sda"

之后会弹出一个QEMU的窗口,这就是你编译出的Linux内核了,可以在其中执行一些基础的命令。

0x70 为内核添加标签(可选)

如果你想证明这个内核是你自己编译出来的,可以在编译Linux内核之前向LOCALVERSION变量中添加你的名字,例如我添加的是“-TIM”。

./scripts/config --file .config --set-str LOCALVERSION "-TIM"

之后将这个内核启动后可以使用uname -r命令显示。例如:

6.8-TIM
http://blog.tntinminecraft.tech/index.php/2024/03/16/%e7%bc%96%e8%af%91linux%e5%b9%b6%e5%9c%a8qemu%e8%99%9a%e6%8b%9f%e6%9c%ba%e4%b8%ad%e8%bf%90%e8%a1%8c/
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇