一、过程和感想
* 花了很长时间在qemu虚拟的ubuntu上交叉编译编译ARM版的Linux
* 参考这篇文章
http://balau82.wordpress.com/2010/03/22/compiling-linux-kernel-for-qemu-arm-emulator/
在Windows上用CodeSourcery的免费的ARM GNU/Linux工具链(不是ARM EABI)编译静态链接的test程序
* 在Cygwin上用mkcramfs创建initrd(初始化RAM盘),发现怎么都运行不了。
花了很长时间才发现原因。
原来Cygwin的mkcramfs不能更改文件模式,因为Cygwin本身就无法执行chmod +x来增加执行权限。
用Linux则不会有这种问题(不知道可不可以改内核代码让操作系统无视可执行文件的模式?)
20110406:补注
如果要在Windows生成initrd文件,可以使用Linux源码树usr目录下的gen_init_cpio工具,附有源代码,可以在Cygwin下用gcc编译。gen_init_cpio根据一个列表文件生成cpio文件系统镜像(在Windows下用7zip可以打开),允许插入文件、目录,也允许指定文件和目录模式(不同于Cygwin下的mkcramfs)。但cpio不同于cramfs,它没有压缩数据。
* 发现很多东西在我的意料之外:
1) 编译Linux内核很慢。
2) 很多奇特的设置。
3) 原来文件系统可以用工具生成的。
4) 模拟器很诡异(可以用-append传参数给操作系统内核?)
5) Linux下静态链接libc原来是可以的!
6) CodeSourcery发布的几个工具链是不同的(我一直以为是一样)
7) 内核和控制台外壳原来是分开的?
二、串口输出(qemu把串口内容重定向到文件,所以没有截取到hello world字样)
命令行:
"D:\java\qemu-0.9.0-arm\qemu-system-arm" -L "D:\java\qemu-0.9.0-arm" -M versatilepb -m 128M -kernel zImage -initrd root5.img -append "root=/dev/ram rdinit=/test init=/test console=ttyAMA0" -serial file:test.txt
输出:
Linux version 2.6.35 (wmt@wmt-desktop) (gcc version 4.5.1 (Sourcery G++ Lite 2010.09-51) ) #1 Wed Mar 30 21:26:15 CST 2011
CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00003137
CPU: VIVT data cache, VIVT instruction cache
Machine: ARM-Versatile PB
Memory policy: ECC disabled, Data cache writeback
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 32512
Kernel command line: root=/dev/ram rdinit=/test init=/test console=ttyAMA0
PID hash table entries: 512 (order: -1, 2048 bytes)
Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
Memory: 128MB = 128MB total
Memory: 126404k/126404k available, 4668k reserved, 0K highmem
Virtual kernel memory layout:
vector : 0xffff0000 - 0xffff1000 ( 4 kB)
fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)
DMA : 0xffc00000 - 0xffe00000 ( 2 MB)
vmalloc : 0xc8800000 - 0xd8000000 ( 248 MB)
lowmem : 0xc0000000 - 0xc8000000 ( 128 MB)
modules : 0xbf000000 - 0xc0000000 ( 16 MB)
.init : 0xc0008000 - 0xc0022000 ( 104 kB)
.text : 0xc0022000 - 0xc02cd000 (2732 kB)
.data : 0xc02e6000 - 0xc03017c0 ( 110 kB)
Hierarchical RCU implementation.
Verbose stalled-CPUs detection is disabled.
NR_IRQS:192
VIC @f1140000: id 0x00041190, vendor 0x41
Console: colour dummy device 80x30
Calibrating delay loop... 838.86 BogoMIPS (lpj=4194304)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
NET: Registered protocol family 16
Serial: AMBA PL011 UART driver
dev:f1: ttyAMA0 at MMIO 0x101f1000 (irq = 12) is a AMBA/PL011
console [ttyAMA0] enabled
dev:f2: ttyAMA1 at MMIO 0x101f2000 (irq = 13) is a AMBA/PL011
dev:f3: ttyAMA2 at MMIO 0x101f3000 (irq = 14) is a AMBA/PL011
fpga:09: ttyAMA3 at MMIO 0x10009000 (irq = 38) is a AMBA/PL011
bio: create slab <bio-0> at 0
Advanced Linux Sound Architecture Driver Version 1.0.23.
Switching to clocksource timer3
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 4096 (order: 3, 32768 bytes)
TCP bind hash table entries: 4096 (order: 2, 16384 bytes)
TCP: Hash tables configured (established 4096 bind 4096)
TCP reno registered
UDP hash table entries: 256 (order: 0, 4096 bytes)
UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
NET: Registered protocol family 1
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
RPC: Registered tcp NFSv4.1 backchannel transport module.
Trying to unpack rootfs image as initramfs...
rootfs image is not initramfs (junk in compressed archive); looks like an initrd
Freeing initrd memory: 340K
NetWinder Floating Point Emulator V0.97 (double precision)
Installing knfsd (copyright (C) 1996 okir@monad.swb.de).
JFFS2 version 2.2. (NAND) ? 2001-2006 Red Hat, Inc.
ROMFS MTD (C) 2007 Red Hat, Inc.
msgmni has been set to 247
Block layer SCSI generic (bsg) driver version 0.4 loaded (major 254)
io scheduler noop registered
io scheduler deadline registered
io scheduler cfq registered (default)
CLCD: unknown LCD panel ID 0x00001000, using VGA
CLCD: Versatile hardware, VGA display
Console: switching to colour frame buffer device 80x60
Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
brd: module loaded
smc91x.c: v1.1, sep 22 2004 by Nicolas Pitre <nico@fluxnic.net>
eth0: SMC91C11xFD (rev 1) at c8800000 IRQ 25 [nowait]
eth0: Ethernet addr: 52:54:00:12:34:56
mice: PS/2 mouse device common for all mice
atkbd serio0: keyboard reset failed on fpga:06
atkbd serio1: keyboard reset failed on fpga:07
atkbd serio0: keyboard reset failed on fpga:06
atkbd serio1: keyboard reset failed on fpga:07
i2c /dev entries driver
ALSA device list:
No soundcards found.
TCP cubic registered
NET: Registered protocol family 17
VFP support v0.3: implementor 41 architecture 1 part 10 variant 9 rev 0
三、图形界面输出的效果图(qemu无法截取文字)
命令行:
"D:\java\qemu-0.9.0-arm\qemu-system-arm" -L "D:\java\qemu-0.9.0-arm" -M versatilepb -m 128M -kernel zImage -initrd root5.img -append "root=/dev/ram rdinit=/test init=/test"
输出:
相关推荐
win10系统下利用QEMU安装ARM架构的银河麒麟桌面操作系统V10 双击qemu-w64-setup-20210505.exe,指定安装目录,例:D:\qemu 安装好后,利用如下步骤qemu创建一个虚拟硬盘文件: 在D:\qemu文件夹下,打开cmd命令行 在...
qemu仿真arm A9 linux内核,支持uboot启动内核,支持网络DHCP协议,支持telnet连接,支持FTP协议。 双击sim_uboot.bat即可启动仿真,需要安装TAP虚拟网卡支持。如果qemu安装位置不同,需要简单修改下qemu路径即可。
运行带有QEMU的macOS x86_64上虚拟化的arm64 / aarch64 Linux Alpine。 需要安装qemu-system-aarch64 ,可以从Homebrew获得: brew install qemu跑步: ./qemu-arm64.sh首次运行时,它将复制user-data-init.qcow2到...
qemu-system-arm 模拟工具,可以在linux下模拟一个虚拟的linux开发板, 进行驱动开发练习. (是静态编译的,可以放在任何一个目录下使用哦 tar xvjf qemu-tar.bz2 chmod +x qemu-system-arm )
X11转发(未来显示) 在localhost:2222或container.ip:2222上的SSH 本地主机上的GDB:1234或container.ip:1234 QEMU完整的xnu-qemu虚拟化集装箱主机拱作者: Sick.Codes团队 在Docker容器中运行iPhone(xnu-arm64...
QEMU 1.2.0 编译好的可执行程序,可以直接运行于windows平台,可以模拟各种硬件平台,例如ARM,X86,Sparc,PPC,MIPS等等。下面是文件列表 2012-09-20 00:18 3,211 bamboo.dtb 2012-09-20 00:18 131,072 bios.bin ...
u-boot:vexpress-a15 u-boot镜像 xen-uImage:xen镜像 zImage:linux内核镜像 rootfs.img.gz:busybox文件系统镜像 vexpress-v2p-ca15_a7.dtb:设备树二进制文件
qemu的使用 skyeye的使用 UML的使用 vmware的使用 initrd.img的原理与制作 x86虚拟调试环境的建立 arm虚拟调试环境的建立 arm开发板调试环境的建立 gdb基础 基本命令 gdb之gui gdb技巧 gdb宏 汇编基础--X86篇 用户...
门达修斯计划基于GUI的虚拟化工具,用于运行Linux,基于Apple为macOS Big Sur引入的虚拟化框架,并支持Apple Silicon架构(也受基于Intel的macs支持) 通过在访客操作系统中具有用于安装openssh-server的快速操作...
KVM(名称来自英语:Kernel-basedVirtual Machine的缩写,即基于内核的虚拟机),是一种用于Linux内核中的虚拟化基础设施,可以将Linux内核转化为一个hypervisor。KVM在2007年2月被导入Linux 2.6.20核心中,以可加载...
链接器和加载器 elf 可重定位文件的链接器和加载器... 在 linux 上使用 QEMU、机器模拟器和虚拟器用于 ARM 架构。 通过在 bash 中执行 run.sh 来启动应用程序。 创建二进制文件: arm - linux - gnueabi - as test1.s
引子 最近发现有ARM版Docker,hub.docker.com上也有ARM版本的镜像... 使用Linux的虚拟化软件,模拟ARM芯片+ Linux,例如qemu。 使用Docker试验功能buildx,可以构建多平台的镜像。 使用Docker buildx构建多个平台镜像
SkyEye是一个开源软件(OpenSource Software)项目,中文名字是“天目... SkyEye是一个指令级模拟器,可以模拟多种嵌入式开发板,可支持多种CPU指令集,在SkyEye上运行的操作系统意识不到它是在一个虚拟的环境中运行,
Android中提供了一个模拟器来模拟ARM核的移动设备。Android的模拟器是基于QEMU开发的,它可以提供一个虚拟的ARM移动设备,模拟器可以安装在Windows(我们选用)或Linux系统之上
Android 开发帮助在 Linux 上配置 VM 加速(基于 x86 的 AVD) 推荐使用基于 x86 的 android 虚拟设备模拟器,以便进行更快的模拟(基于 arm 的模拟)。 基于 Linux 的系统通过 KVM 软件包支持虚拟机加速。 所以需要...
现代的Intel Atom(x86和x86_64)仿真器需要主机上的硬件加速(Mac和Windows上为HAXM,Linux上为QEMU)才能快速运行。 这礼物作为CI是一个挑战,以能够运行的硬件泊坞窗容器内加速仿真器,KVM必须由主机VM这是不是...
� 基于 QEMU 开发的模拟器调试手段不十分丰富,只支持通话、SMS等,速度慢。 � 暂不具备 Push Mail 和 Office(DataViz 、 QuickOffice 计划近期推出 ) 功能,目前主要面向的是普通消费 者 用户,对商业用户支持...