嵌入式Linux驱动开发0---qemu环境搭建过程
https://www.bilibili.com/read/cv11271232?spm_id_from=333.999.0.0
转载链接:bilibili–简说linux
配置
X86
Vmware workstation16 + ubuntu 22.04
linux-source-5.15.0
busybox-1.35.0
qemu-system-x86
下载linux源码
命令行下载:sudo apt-get install linux-source-
双击TAB补全–>安装即刻,给我补全的是5.15.0
安装busybox并制作根文件系统
官网下载:https://busybox.net/downloads/
解压:tar xvf busybox-1.35.0.tar.bz2
配置:make menuconfig
busybox配置为静态编译,运行时无需动态链接库
Busybox Settings --->
Build Options --->
[*] Build BusyBox as a static binary (no shared libs)
编译安装:#make && make install
补充相关目录和文件:
cd到_install目录
其中#代表在命令行运行
没有#代表是需要赋值到文件里的
#/bin/bash是需要创建.sh脚本文件并运行的
# 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
制作根文件系统的镜像
#!/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
busybox-1.35.0目录下有个rootfs.img.gz
下载qemu
命令行下载:sudo apt-get install qemu-system-
双击TAB会推荐各个架构的,这里选择x86的
编译linux-kernel
指定硬件体系架构:export ARCH=x86
配置board config:make x86_64_defconfig
,拿到菜单
配置内核: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)
编译内核:make -j8
这个时候会报一些错误,复制主要报错语句去网上找解答就可以了,一般是要安装一下依赖如libssl-dev等
最后会生成bzImage 在arch/x86/boot目录下
使用qemu启动内核和文件系统
# qemu-system-x86_64 \
-kernel [bzImage所在路径] \
-initrd [rootfs.img.gz所在路径] \
-append "root=/dev/ram init=/linuxrc" \
-serial file:output.txt
更多推荐
所有评论(0)