当前位置: 首页 > wzjs >正文

游戏网站开发找什么人可建深圳百度seo哪家好

游戏网站开发找什么人可建,深圳百度seo哪家好,宽带办理哪个最便宜2022,wordpress单位内网做网站1. 为什么 为什么我们会选择 使用 QEMU、BusyBox 和 Linux 内核搭建一个 ARM64 (AArch64) 的模拟环境? 1. QEMU 提供 ARM64 硬件模拟 QEMU 是一个强大的开源虚拟化/仿真工具,支持多种 CPU 架构(如 x86、ARM、RISC-V 等)。 可以使用 qemu-…

1. 为什么

为什么我们会选择 使用 QEMU、BusyBox 和 Linux 内核搭建一个 ARM64 (AArch64) 的模拟环境?

1. QEMU 提供 ARM64 硬件模拟

  • QEMU 是一个强大的开源虚拟化/仿真工具,支持多种 CPU 架构(如 x86、ARM、RISC-V 等)。

  • 可以使用 qemu-system-aarch64 来模拟一个 ARM64 设备,并且可以指定不同的 SoC、内存、设备等。

  • 允许在 x86_64 主机上运行 ARM64 架构的 Linux 系统,无需真实 ARM64 硬件。

2. Linux Kernel 提供操作系统支持

  • 可以编译支持 ARM64 的 Linux 内核,并将其用于 QEMU 启动。

  • Linux 内核提供基本的设备驱动、进程管理、文件系统支持等功能,使得模拟环境能够正常运行。

3. BusyBox 提供轻量级用户空间工具

  • BusyBox 是一个精简的 UNIX 工具集合,适用于嵌入式系统和轻量级 Linux 发行版。

  • 提供基本的 Shell(ash)、文件操作命令(ls、cp、mv)、进程管理(ps、kill)等工具,使得 Linux 系统可用。

  • 由于 BusyBox 占用资源少,非常适合 QEMU 这种模拟环境。

4. QEMU + BusyBox + Linux Kernel 的典型使用场景

  • 嵌入式 Linux 开发:测试和开发 ARM64 设备的 Linux 发行版。

  • 驱动开发:在不依赖实际 ARM64 硬件的情况下测试和调试驱动。

  • 系统移植:在 QEMU 上搭建 ARM64 运行环境,测试软件兼容性。

  • 教育与研究:学习 ARM64 架构、Linux 内核和嵌入式开发。

2. 实践

宿主机:Ubuntu 22.04 (推荐不低于Ubuntu 20.04)

软件版本官网
Linux Kernel6.0.9https://kernel.org
BusyBox1.35.0https://busybox.net
QEMU7.2.0-rc1https://www.qemu.org

1. 交叉工具链安装

mkdir qemu_linux_6.0.9_arm64sudo apt-get install gcc
sudo apt-get install g++sudo apt-get install gcc-aarch64-linux-gnu
sudo apt-get install g++-aarch64-linux-gnu

2. linux 6.0.9 源码下载编译

  1. 下载源码并解压
axel -n 100 https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.0.9.tar.xztar xvf linux-6.0.9.tar.xz
  1. 进入解压后的目录,开始配置内核
make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 O=build menuconfig -j16
Device Drivers > Block devices<*>   RAM block device support(16)    Default number of RAM disks (NEW)(65536) Default RAM disk size (kbytes)
  • 选择 RAM block device support
  • Default RAM disk size (kbytes) 设置为 65536
  1. 编译内核
make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 O=build INSTALL_PATH=build/arch/$ARCH/boot -j16

报错一:

../certs/extract-cert.c:21:10: fatal error: openssl/bio.h: 没有那个文件或目录21 | #include <openssl/bio.h># 解决办法
sudo apt install libssl-dev
  • 查看编译后的结果
# 查看 编译后的结果
file build/arch/arm64/boot/Image # 信息显示当前为 arm64 架构的 执行镜像, 使用小端模式
build/arch/arm64/boot/Image: Linux kernel ARM64 boot executable Image, little-endian, 4K pages

3. BusyBox

1.BusyBox 源码下载和编译

axel -n 100 https://busybox.net/downloads/busybox-1.35.0.tar.bz2tar xvf busybox-1.35.0.tar.bz2 
  1. 配置
make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 menuconfig -j16
  • 注意如下选项
Settings[*] Build static binary (no shared libs)
  1. 编译
make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 install -j16
  • 查看编译后的结果
file _install/bin/busybox_install/bin/busybox: ELF 64-bit LSB executable, ARM aarch64, version 1 (GNU/Linux), statically linked, BuildID[sha1]=4070758d3e8d681e8a29b50adcaf9795f40169ec, for GNU/Linux 3.7.0, stripped

4. 制作根文件系统

在内核编译我们选择的是initrd方式的RamDisk,编写脚本自动为我们制作根文件系统。

#!/bin/bashMOUNT_DIR=mnt
CURR_DIR=`pwd`rm initrd.ext4
dd if=/dev/zero of=initrd.ext4 bs=1M count=64
mkfs.ext4 initrd.ext4mkdir -p $MOUNT_DIR
mount initrd.ext4 $MOUNT_DIR
cp -arf busybox-1.35.0/_install/* $MOUNT_DIRcd $MOUNT_DIR
mkdir -p etc dev mnt proc sys tmp mnt etc/init.d/echo "proc /proc proc defaults 0 0" > etc/fstab
echo "tmpfs /tmp tmpfs defaults 0 0" >> etc/fstab
echo "sysfs /sys sysfs defaults 0 0" >> etc/fstabecho "#!/bin/sh" > etc/init.d/rcS
echo "mount -a" >> etc/init.d/rcS
echo "mount -o remount,rw /" >> etc/init.d/rcS
echo "echo -e \"Welcome to ARM64 Linux\"" >> etc/init.d/rcS
chmod 755 etc/init.d/rcSecho "::sysinit:/etc/init.d/rcS" > etc/inittab
echo "::respawn:-/bin/sh" >> etc/inittab
echo "::askfirst:-/bin/sh" >> etc/inittab
chmod 755 etc/inittabcd dev
mknod console c 5 1
mknod null c 1 3
mknod tty1 c 4 1cd $CURR_DIR
umount $MOUNT_DIR
echo "make initrd ok!"

保存后添加执行权限,执行时需要使用sudo权限。

介绍一下这个脚本的实现和功能:

  • 使用 dd 和 initrd.ext4 制作一个空的64M的ext4格式的文件系统;
  • mount这个文件系统,然后拷贝busybox编译的文件进去;
  • 创建Linux的关键的标准层级目录 Filesystem Hierarchy Standard (FHS)
  • 创建 /etc/fstab,这是mount自动挂载配置文件,可参考:mount命令及/etc/fstab文件详解
  • 创建 /etc/init.d/rcS,这是文件系统的初始化脚本
  • 创建 /etc/inittab,init进程会解析inittab文件
  • 关于rcS和inittab可以参考嵌入式系统开发——文件系统中inittab文件、rcS文件、fstab文件、profile文件详解

5. qemu

  1. 下载 qemu 源码
axel -n 100 https://download.qemu.org/qemu-7.2.0-rc1.tar.xztar xvf qemu-7.2.0-rc1.tar.xz
  1. 编译ARM64架构的QEMU
cd qemu-7.2.0-rc1
mkdir build
cd build# 配置
../configure --target-list=aarch64-softmmu# 编译
make -j16# 查看编译产物
file aarch64-softmmu/qemu-system-aarch64aarch64-softmmu/qemu-system-aarch64: symbolic link to ../qemu-system-aarch64

查看QEMU支持的machine和cpu方法如下:

cd qemu-7.2.0-rc1/build/aarch64-softmmu
./qemu-system-aarch64 -M help      # 查看支持的machine
./qemu-system-aarch64 -cpu help    # 查看支持的CPU

3. 运行我们的内核

QEMU的virt machine默认CPU是cortex-a15,这是一个32位CPU。选择ARMv8的64位CPU可用cortex-a57。

前面的准备工作完成后,既可以启动虚拟机,编写脚本:
我们是ARM64位程序,选择cortex-a57架构

#!/usr/bin/shqemu-7.2.0-rc1/build/aarch64-softmmu/qemu-system-aarch64 \-nographic \-M virt \-cpu cortex-a57 \-smp 2 \-m 1G \-kernel linux-6.0.9/build/arch/arm64/boot/Image \-append "nokaslr root=/dev/ram init=/linuxrc console=ttyAMA0 console=ttyS0" \-initrd initrd.ext4

运行后就可以看到正常启动进入console了

说明:上面append选项用来给内核传递命令行参数,nokaslr 表示关闭地址随机化,方便gdb调试内核。

QEMU官方文档:

Welcome to QEMU’s documentation! — QEMU documentation

在这里插入图片描述

想退出qemu, 直接杀死即可

#!/usr/bin/shkillall qemu-system-aarch64
http://www.dtcms.com/wzjs/346688.html

相关文章:

  • html5网站修改电商代运营十大公司排名
  • 北京网站优化校学费厦门网站优化公司
  • 做的网站每年都要交费吗成都网络推广中联无限
  • python毕业设计做网站百度热搜榜排名今日头条
  • 贵州便宜网站推广优化电话5118关键词查询工具
  • 免费网站建设怎样株洲做网站
  • 申请企业邮箱需要准备什么材料班级优化大师app下载
  • 京东那个做快消的网站热搜榜排名前十
  • 社区网站源码谷歌seo新规则
  • 乌鲁木齐市网站建设静态网站开发
  • 沈阳网站优化排名汕头seo网站推广
  • 做网站建设的网络公司经营范围怎样填重庆seo优化
  • 网站制作背景图片线下广告投放渠道都有哪些
  • 免费空间列表seo关键字优化价格
  • iis做外网站点关键词优化排名第一
  • 如何在旅游网站上做攻略cpa推广接单平台
  • python是做网站的吗nba常规赛
  • 服装网站建设策划书预期投入百度账号客服
  • 搭建平台 提供舞台seo查询排名系统
  • 佛山网站建设外包公司如何开展网络营销
  • 什么专业是做网站洛阳seo外包公司费用
  • 达州做网站互联网平台推广怎么做
  • 网站编程 外包类型小程序商城
  • 两学一做网站视频广东知名seo推广多少钱
  • 怎么叫人做网站全媒体运营师报名入口
  • 企业营销型网站制作多少钱什么软件可以搜索关键词精准
  • 怎么去建一个网站外贸推广网站
  • 义乌网站建设工作室百度seo推广首选帝搜软件
  • 网站建设工资一月多少钱搜索引擎调词平台价格
  • 做微商哪个网站比较好东莞营销型网站建设