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

网站建设 企业观点网站建设网络推广首选公司

网站建设 企业观点,网站建设网络推广首选公司,重庆网站设计公司排行,合伙合同网站建设协议目录前言前置知识virt开发板ARM处理器家族简介安装qemu-system-aarch64安装交叉编译工具交叉编译ARM64 Linux内核交叉编译ARM64 Busybox使用busybox制作initramfs使用QEMU启动ARM64 Linux内核前言 本文介绍采用 qemu 模拟ARM-64bit开发板#xff08;针对ARM-32bit的有另一篇文… 目录前言前置知识virt开发板ARM处理器家族简介安装qemu-system-aarch64安装交叉编译工具交叉编译ARM64 Linux内核交叉编译ARM64 Busybox使用busybox制作initramfs使用QEMU启动ARM64 Linux内核前言 本文介绍采用 qemu 模拟ARM-64bit开发板针对ARM-32bit的有另一篇文章介绍并启动ARM64 Linux内核。大致思路是 安装qemu-system-aarch64ARM-64bit模拟器安装aarch64-linux-gnuARM-64bit交叉编译器交叉编译linux源码得到ARM64 Linux内核镜像交叉编译busybox源码使用busybox制作initramfs最后使用qemu-system-aarch64启用ARM64 Linux内核 我的环境 宿主机硬件平台x86_64宿主机操作系统Ubuntu 20.04 Linux 5.4.0-139-genericQEMU版本qemu-4.2.1实验内核linux-5.19busybox版本busybox-1.35.0 前置知识 virt开发板 截至书稿本文时QEMU模拟了多大70几种的硬件开发板可参考Arm System emulator。但ARM-64bit的QEMU模拟器非常少以至于virt成了唯一的选择。virt支持PCIvirtio较新的ARM CPU大容量内存比较遗憾的是它不支持图形界面如果你不知道选择什么硬件开发板就选virt。 更详尽的内容可参考 Why the “virt”board? Installing Debian on QEMU’s 32-bit ARM “virt”board Installing Debian on QEMU’s 64-bit ARM “virt”board ARM处理器家族简介 ARM处理器家族众多哪些是32bit哪些是64bit可参考 List_of_ARM_processors 很多厂家使用ARM核设计SOC芯片这里罗列了很多可参考 List_of_products_using_ARM_processors 安装qemu-system-aarch64 安装 $ sudo apt install qemu-system-arm会同时安装ARM-32bit的qemu-system-arm版本和ARM-64bit的 qemu-system-aarch64版本查看版本号 $ qemu-system-aarch64 --version QEMU emulator version 4.2.1 (Debian 1:4.2-3ubuntu6.24) Copyright (c) 2003-2019 Fabrice Bellard and the QEMU Project developers查看 qemu 支持的 ARM 内核开发板本文选择virt开发板 $ qemu-system-aarch64 -M help Supported machines are: akita Sharp SL-C1000 (Akita) PDA (PXA270) ast2500-evb Aspeed AST2500 EVB (ARM1176) ast2600-evb Aspeed AST2600 EVB (Cortex A7) borzoi Sharp SL-C3100 (Borzoi) PDA (PXA270) canon-a1100 Canon PowerShot A1100 IS cheetah Palm Tungsten|E aka. Cheetah PDA (OMAP310) collie Sharp SL-5500 (Collie) PDA (SA-1110) connex Gumstix Connex (PXA255) cubieboard cubietech cubieboard (Cortex-A8) emcraft-sf2 SmartFusion2 SOM kit from Emcraft (M2S010) highbank Calxeda Highbank (ECX-1000) imx25-pdk ARM i.MX25 PDK board (ARM926) integratorcp ARM Integrator/CP (ARM926EJ-S) kzm ARM KZM Emulation Baseboard (ARM1136) lm3s6965evb Stellaris LM3S6965EVB lm3s811evb Stellaris LM3S811EVB mainstone Mainstone II (PXA27x) mcimx6ul-evk Freescale i.MX6UL Evaluation Kit (Cortex A7) mcimx7d-sabre Freescale i.MX7 DUAL SABRE (Cortex A7) microbit BBC micro:bit midway Calxeda Midway (ECX-2000) mps2-an385 ARM MPS2 with AN385 FPGA image for Cortex-M3 mps2-an505 ARM MPS2 with AN505 FPGA image for Cortex-M33 mps2-an511 ARM MPS2 with AN511 DesignStart FPGA image for Cortex-M3 mps2-an521 ARM MPS2 with AN521 FPGA image for dual Cortex-M33 musca-a ARM Musca-A board (dual Cortex-M33) musca-b1 ARM Musca-B1 board (dual Cortex-M33) musicpal Marvell 88w8618 / MusicPal (ARM926EJ-S) n800 Nokia N800 tablet aka. RX-34 (OMAP2420) n810 Nokia N810 tablet aka. RX-44 (OMAP2420) netduino2 Netduino 2 Machine none empty machine nuri Samsung NURI board (Exynos4210) palmetto-bmc OpenPOWER Palmetto BMC (ARM926EJ-S) raspi2 Raspberry Pi 2 raspi3 Raspberry Pi 3 realview-eb ARM RealView Emulation Baseboard (ARM926EJ-S) realview-eb-mpcore ARM RealView Emulation Baseboard (ARM11MPCore) realview-pb-a8 ARM RealView Platform Baseboard for Cortex-A8 realview-pbx-a9 ARM RealView Platform Baseboard Explore for Cortex-A9 romulus-bmc OpenPOWER Romulus BMC (ARM1176) sabrelite Freescale i.MX6 Quad SABRE Lite Board (Cortex A9) sbsa-ref QEMU SBSA Reference ARM Virtual Machine smdkc210 Samsung SMDKC210 board (Exynos4210) spitz Sharp SL-C3000 (Spitz) PDA (PXA270) swift-bmc OpenPOWER Swift BMC (ARM1176) sx1 Siemens SX1 (OMAP310) V2 sx1-v1 Siemens SX1 (OMAP310) V1 terrier Sharp SL-C3200 (Terrier) PDA (PXA270) tosa Sharp SL-6000 (Tosa) PDA (PXA255) verdex Gumstix Verdex (PXA270) versatileab ARM Versatile/AB (ARM926EJ-S) versatilepb ARM Versatile/PB (ARM926EJ-S) vexpress-a15 ARM Versatile Express for Cortex-A15 vexpress-a9 ARM Versatile Express for Cortex-A9 virt-2.10 QEMU 2.10 ARM Virtual Machine virt-2.11 QEMU 2.11 ARM Virtual Machine virt-2.12 QEMU 2.12 ARM Virtual Machine virt-2.6 QEMU 2.6 ARM Virtual Machine virt-2.7 QEMU 2.7 ARM Virtual Machine virt-2.8 QEMU 2.8 ARM Virtual Machine virt-2.9 QEMU 2.9 ARM Virtual Machine virt-3.0 QEMU 3.0 ARM Virtual Machine virt-3.1 QEMU 3.1 ARM Virtual Machine virt-4.0 QEMU 4.0 ARM Virtual Machine virt-4.1 QEMU 4.1 ARM Virtual Machine virt QEMU 4.2 ARM Virtual Machine (alias of virt-4.2) virt-4.2 QEMU 4.2 ARM Virtual Machine witherspoon-bmc OpenPOWER Witherspoon BMC (ARM1176) xilinx-zynq-a9 Xilinx Zynq Platform Baseboard for Cortex-A9 xlnx-versal-virt Xilinx Versal Virtual development board xlnx-zcu102 Xilinx ZynqMP ZCU102 board with 4xA53s and 2xR5Fs based on the value of smp z2 Zipit Z2 (PXA27x)看下virt开发板支持的cpu列表本文以64-bit的cortex-a57为例说明 $ qemu-system-aarch64 -M virt --cpu help Available CPUs:arm1026arm1136arm1136-r2arm1176arm11mpcorearm926arm946cortex-a15cortex-a53cortex-a57cortex-a7cortex-a72cortex-a8cortex-a9cortex-m0cortex-m3cortex-m33cortex-m4cortex-r5cortex-r5fmaxpxa250pxa255pxa260pxa261pxa262pxa270-a0pxa270-a1pxa270pxa270-b0pxa270-b1pxa270-c0pxa270-c5sa1100sa1110ti925t安装交叉编译工具 我们是在X86平台下进行的开发目标平台是arm架构需要安装交叉编译工具链。有关arm-linux的交叉编译器主要有 针对ARM-32bit的arm-linux-gnueabi和arm-linux-gnueabihf。针对ARM-64bit的aarch64-linux-gnu。 交叉编译器各版本的区别可参考《arm系列交叉编译器各版本区别.doc》。 安装ARM-64bit的aarch64-linux-gnu版本 $ sudo apt install gcc-aarch64-linux-gnu查看版本 $ aarch64-linux-gnu-gcc --version aarch64-linux-gnu-gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0 Copyright (C) 2019 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.交叉编译ARM64 Linux内核 下载源码 $ mkdir ~/kvm-arm $ cd ~/kvm-arm/ $ wget https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/snapshot/linux-5.19.tar.gz $ tar -xf linux-5.19.tar.gz $ cd linux-5.19/ $ make ARCHarm64 CROSS_COMPILEaarch64-linux-gnu- Obuild defconfig $ make ARCHarm64 CROSS_COMPILEaarch64-linux-gnu- Obuild -j8说明 ARCH指定目标CPU架构CROSS_COMPILE指定交叉编译器ObuildO是Out的缩写表示编译输出文件放在build目录不跟源码混在一起保持源码的整洁性。make时只有defconfig配置可选因为 linux-5.19/arch/arm64/configs/ 目录下有且只有defconfig一个。 查看下内核编译出来的原始内核文件vmlinux是ARM 64-bit版本。 $ file build/vmlinux build/vmlinux: ELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), statically linked, BuildID[sha1]f2a5fd51bd2d59f90b7b26b8926f5afdeab60f36, not strippedvmlinux不能直接引导Linux系统启动能引导Linux系统启动的是Image文件非压缩版或Image.gz压缩版下文用到的内核镜像就是Image $ file build/arch/arm64/boot/Image build/arch/arm64/boot/Image: MS-DOS executable PE32 executable (EFI application) Aarch64 (stripped to external PDB), for MS Windows$ file build/arch/arm64/boot/Image.gz build/arch/arm64/boot/Image.gz: gzip compressed data, max compression, from Unix, original size modulo 2^32 36112896交叉编译ARM64 Busybox $ mkdir ~/kvm-arm $ cd ~/kvm-arm/ $ wget https://busybox.net/downloads/busybox-1.35.0.tar.bz2 $ tar -xf busybox-1.35.0.tar.bz2 $ cd busybox-1.35.0/$ export ARCHarm64 $ export CROSS_COMPILEaarch64-linux-gnu- $ make menuconfig# 修改配置选中如下项目静态编译 # Settings – Build Options – [*] Build static binaryno share libs# 反选如下项目否则后续qemu执行会提示 /bin/sh:cant access tty;job control turned off # Shells --- [ ] Job control$ make -j nproc $ make install装完后会 默认安装到源码目录的 _install/ 目录下 $ ls _install/ bin linuxrc sbin usr最关键的就是_install/bin/busybox其他都是链接文件。 $ file _install/bin/busybox _install/bin/busybox: ELF 64-bit LSB executable, ARM aarch64, version 1 (GNU/Linux), statically linked, BuildID[sha1]3768162c347859f16ab4f0b01a48fb8c0502774d, for GNU/Linux 3.7.0, stripped编译的过程中如果出现如下提示可忽略 Trying libraries: m resolv rtLibrary m is needed, cant exclude it (yet)Library resolv is needed, cant exclude it (yet)Library rt is not needed, excluding itLibrary m is needed, cant exclude it (yet)Library resolv is needed, cant exclude it (yet) Final link with: m resolv使用busybox制作initramfs 使用busybox快速制作initramfs。 创建虚拟rootfs中的inti启动脚本并赋予可执行权限 $ cd ~/kvm-arm/busybox-1.35.0/_install/ $ touch init $ chmod x init脚本内容 #!/bin/sh# 挂载一些必要的文件系统 mkdir /proc mount -t proc none /proc mkdir /sys mount -t sysfs none /sys mkdir /tmp mount -t tmpfs none /tmpecho echo Hello 64-bit ARM Linux# 显示开机消耗时间 echo This boot took $(cut -d -f1 /proc/uptime) seconds echo# 停留在控制台 exec /bin/sh制作initramfs文件它是多个文件通过cpio打包和gzip压缩的文件是一个cpio格式的内存文件系统。 $ find . -print0 | cpio --null -ov --formatnewc | gzip -9 ../initramfs.cpio.gz使用QEMU启动ARM64 Linux内核 ARM Linux内核镜像和initramfs都准备好就可以使用QEMU启动linux内核了。 以字符界面方式启动QEMU同时日志输出到控制台 $ qemu-system-aarch64 \-M virt \-cpu cortex-a57 \-smp 8 \-m 8G \-kernel ./linux-5.19/build/arch/arm64/boot/Image \-initrd ./busybox-1.35.0/initramfs.cpio.gz \-nographic \-append init/init consolettyAMA0QEMU参数说明更多可参考Standard options -M指定模拟的开发板可通过qemu-system-aarch64 M help查看截至书稿时只有virt支持64-bit ARM。-cpu指定模拟的cpu可通过qemu-system-aarch64 -M virt --cpu help查看这里选择cortex-a57。-smp指定cpu核数量启动后可以使用nproc命令核对。-m指定内存大小virt 可支持超大内存启动后可以使用free -h命令核对。-kernel指定启动的内核镜像-initrd指定启动的内存文件系统-append传递给内核的启动参数启动后可使用cat /proc/cmdline命令核对。-nographic启动字符界面不启动图形界面输出重定向到宿主机命令行与参数 consolettyAMA0 组合使用 9 参考 Arm System emulatorArm Versatile Express boards (vexpress-a9, vexpress-a15)List_of_products_using_ARM_processorsList_of_ARM_processorsQemu使用及常见开发板的模拟qemu-system-aarch64使用和相关参数介绍
http://www.w-s-a.com/news/525528/

相关文章:

  • 手机上传网站源码网站app封装怎么做
  • 做的网站放在阿里云网站建设投标书范本
  • 做文化传播公司网站wordpress仿简书
  • 什么网站有题目做西宁网站制作哪里好
  • 网站上添加图片的原则优易主机 wordpress
  • 用php做的网站源代码那里有做像美团的网站的
  • 网站建设百科有什么做兼职的网站
  • 创造网站电商网站建设方案道客巴巴
  • 南通设计网站建设wordpress时光轴
  • 郑州做网站企起网站建设 风险
  • 北京市保障性住房建设投资中心网站6大连广告设计与制作公司
  • 建站之星网站模板国内f型网页布局的网站
  • 怎么做网站关键词优化外贸网站 开源
  • 广东公司响应式网站建设设计seo系统是什么
  • 清丰网站建设费用网站建设的前途
  • 网站上那些兼职网页怎么做的北京网页
  • 桂林建站平台哪家好品牌设计公司宣传文案
  • 平面设计和建设网站的区别公司官网静态
  • h5网站建设+案例住房住房和城乡建设部网站
  • 建设股公司网站东莞建设网网上平台
  • 湖州吴兴建设局网站加强网站建设的
  • 茌平做网站公司专业商城网站建设报价
  • 网站结构图怎么画wordpress注册不发送件
  • 个人备案网站可以做论坛吗电商推广方式有哪些
  • 网站建设 自适应国内最近的新闻
  • 校园网站开发背景吴江网站建设公司
  • 网站开发工程师发展趋势山东省建设工程电子信息网站
  • 适合大学生创业的网站建设类型吉林省舒兰市建设银行网站
  • 呼和浩特网站建设哪家好培训学校加盟费用
  • 网站如何做友情链接有道云笔记WordPress