使用QEMU运行OpenHarmony的内核
本地环境 windows11+wsl2+ubuntu20.04+QEMU+busybox , QEMU和busybox这个不在这里做介绍了,网上的资料也比较全面。以下的操作都是在ubuntu20.04系统进行。确保自己网络状态良好,内存空间足够(4G左右)。编译OH的linux内核是x86_64类型的,已经解决了报错部分。
感兴趣的小伙伴可以参考下面步骤来。
1.下载Openharmony-4.0-Release的内核源码
1.1 下载oh内核源码
https://gitee.com/openharmony/kernel_linux_5.10/tree/OpenHarmony-4.0-Release/
1. cd ~
2. make Oh_linux5.10
3. cd Oh_linux5.10
4. git clone https://gitee.com/openharmony/kernel_linux_5.10.git -b OpenHarmony-4.0-Release
1.2 编译并配置内核
1. cd kernel_linux_5.10
2. export ARCH=x86 //设置cpu类型
3. make x86_64_defconfig //设置编译默认的配置参数
4. make menuconfig //修改参数
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)
# 退出保存配置并编译
5. make -j4
如果编译成功,这个时候会在 Oh_linux5.10/kernel_linux_5.10/arch/x86_64/boot/目录下生成 bzImage 文件
2.搭建Busybox环境
2.1 下载 busybox 源码
1. cd ~
2. make my_busybox
3. cd my_busybox
4. git clone git://git.busybox.net/busybox //下载源码
5. cd busybox
2.2 编译配置
make menuconfig
Settings(Build Options)
-> 勾选 Build static binary (no shared libs) //不使用静态库
# 退出保存配置并编译
make -j4
# 默认安装在 busybox/_install 中
make intall
编译完成后的busybox就安装在源码根目录下的_install目录了,我们进入_install目录,补充一些必要的文件或目录,相关的shell命令如下:
# mkdir etc dev mnt
# mkdir -p proc sys tmp mnt
# mkdir -p etc/init.d/
# vim etc/fstab
proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
sysfs /sys sysfs defaults 0 0
# vim etc/init.d/rcS
echo -e "Welcome to tinyLinux"
/bin/mount -a
echo -e "Remounting the root filesystem"
mount -o remount,rw /
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
::ctrlaltdel:/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
2.3 制作根文件系统镜像文件
在my_busybox/busybox/目录下,新建一个build_rootf.sh脚本文件,并运行build_rootf.sh脚本生成rootfs.img.gz
#!/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
sudo mount -o loop rootfs.ext3 ./fs
sudo cp -rf ./_install/* ./fs
sudo umount ./fs
gzip --best -c rootfs.ext3 > rootfs.img.gz
3. 搭建qemu运行环境
# qemu依赖包
sudo apt-get install zlib1g-dev
sudo apt-get install libglib2.0-0
sudo apt-get install libglib2.0-dev
sudo apt-get install libtool
sudo apt-get install libsdl1.2-dev
sudo apt-get install libpixman-1-0
sudo apt-get install libpixman-1-dev
sudo apt-get install autoconf
# 安装qemu sudo apt install qemu-system
4. 运行命令:
qemu-system-x86_64 \
-kernel ~/Oh_linux5.10/kernel_linux_5.10/arch/x86_64/boot/bzImage \
-initrd ~/my_busybox/busybox/rootfs.img.gz \
-append "root=/dev/ram init=/linuxrc" \
-serial file:output.txt
更多推荐
所有评论(0)