qemu模拟Cortex-A57运行Linux4.5.1
来源:互联网 发布:信誉出肉 淘宝 编辑:程序博客网 时间:2024/05/22 13:35
http://www.deepin.org/
1.安装qemu
sudo apt-get install qemu-system-arm
2.安装arm编译工具
sudo apt-get install gcc-aarch64-linux-gnu
3.下载Linux内核
从https://www.kernel.org/下载,并解压缩
修改Makefile,
ARCH = arm64
CROSS_COMPILE = aarch64-linux-gnu-
安装依赖包
sudo apt-get install libncurses5-dev
复制默认配置文件
cp arch/arm64/configs/defconfig .config
再执行make menuconfig,退出,保存
make -j8
创建目录 qemu_a57
mkdir ~/qemu_a57
复制Image到 qemu_a57 目录
cp arch/arm64/boot/Image ~/qemu_a57
4.下载busybox
https://busybox.net/downloads/busybox-1.24.2.tar.bz2
同样修改Makefile,
ARCH ?= arm64
CROSS_COMPILE ?= aarch64-linux-gnu-
运行命令
make defconfig
make menuconfig
选中Busybox Settings --->Build Options --->Build BusyBox as a static binary (no shared libs)
运行命令
make busybox
make install
默认会把做好的文件系统放在_install目录下
5.制作根文件系统:
cd ~/qemu_a57
dd if=/dev/zero of=a57rootfs.ext4 bs=1M count=32
sudo mkfs.ext4 a57rootfs.ext4
mkdir a57rootdir
sudo mount -t ext4 a57rootfs.ext4 a57rootdir/ -o loop
sudo cp busybox-1.24.2/_install/* ~/qemu_a57/a57rootdir/ -r
cd ~/qemu_a57/a57rootdir
sudo mkdir dev etc lib proc sys tmp mnt
sudo vim etc/fstab
输入下面内容
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
tmpfs /dev tmpfs defaults 0 0
如果内核下选中了Device Drivers --->Generic Driver Options --->[*] Maintain a devtmpfs filesystem to mount at /dev [*] Automount devtmpfs at /dev, after the kernel mounted the rootfs,可以不添加tmpfs /dev tmpfs defaults 0 0
创建init.d目录
sudo mkdir etc/init.d
sudo vim etc/init.d/rcS
输入如下内容
#!/bin/sh
mount -a
echo /sbin/mdev > /proc/sys/kernel/hotplug
添加可执行权限
sudo chmod +x etc/init.d/rcS
卸载
cd ~/qemu_a57
sudo umount ~/qemu_a57/a57rootdir/
5.运行编译的内核
qemu-system-aarch64 -machine virt -cpu cortex-a57 -smp 8 -m 4096 -kernel Image -append "console=ttyAMA0 root=/dev/vda" -nographic -drive file=a57rootfs.ext4,if=none,id=blk -device virtio-blk-device,drive=blk
6.对内核可以稍微精简一下
make menuconfig配置时,Platform selection --->下,除ARMv8 software model (Versatile Express)外,其他都不选
7.备注
目前qemu可以支持的最高cortex版本应该就是cortex-a57,可以通过如下命令查看
qemu-system-aarch64 -machine virt -cpu help
8.其他
busybox中有些功能通常是不会用到的,比如udhcpd,可以删除
如果使用udhcpc的话,需要把文件examples/udhcp/simple.script 复制为 usr/share/udhcpc/default.script,即
mkdir -p usr/share/udhcpc
cp examples/udhcp/simple.script _install/usr/share/udhcpc/default.script
chmod +x _install/usr/share/udhcpc/default.script
默认是没有/etc/passwd、/etc/shadow、/etc/group的
参考/etc/passwd
root:x:0:0:root:/root:/bin/sh
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:100:sync:/bin:/bin/sync
mail:x:8:8:mail:/var/spool/mail:/bin/sh
proxy:x:13:13:proxy:/bin:/bin/sh
www-data:x:33:33:www-data:/var/www:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
operator:x:37:37:Operator:/var:/bin/sh
haldaemon:x:68:68:hald:/:/bin/sh
dbus:x:81:81:dbus:/var/run/dbus:/bin/sh
ftp:x:83:83:ftp:/home/ftp:/bin/sh
nobody:x:99:99:nobody:/home:/bin/sh
sshd:x:103:99:Operator:/var:/bin/sh
default:x:1000:1000:Default non-root user:/home/default:/bin/sh
/etc/group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
wheel:x:10:root
audio:x:29:
www-data:x:33:
utmp:x:43:
staff:x:50:
lock:x:54:
haldaemon:x:68:
dbus:x:81:
netdev:x:82:
ftp:x:83
nobody:x:99:
nogroup:x:99:
users:x:100:
default:x:1000:
/etc/shadow
root::10933:0:99999:7:::
bin:*:10933:0:99999:7:::
daemon:*:10933:0:99999:7:::
adm:*:10933:0:99999:7:::
lp:*:10933:0:99999:7:::
sync:*:10933:0:99999:7:::
shutdown:*:10933:0:99999:7:::
halt:*:10933:0:99999:7:::
uucp:*:10933:0:99999:7:::
operator:*:10933:0:99999:7:::
ftp:*:10933:0:99999:7:::
nobody:*:10933:0:99999:7:::
default::10933:0:99999:7:::
- qemu模拟Cortex-A57运行Linux4.5.1
- qemu模拟A9/A15运行Linux4.2.3
- 使用Qemu模拟Cortex-A9运行U-boot和Linux
- 使用Qemu模拟Cortex-A9运行U-boot和Linux
- 使用Qemu模拟Cortex-A9运行U-boot和Linux
- Qemu模拟运行ARM内核
- 通过QEMU模拟的ASA运行ASDM
- Qemu模拟arm cpu运行Linux
- QEMU模拟Mini2440开发板运行环境
- QEMU模拟Mini2440开发板运行环境
- qemu模拟运行mips程序调试
- QEMU模拟Mini2440开发板运行环境
- ARM最高处理器架构:cortex-a57 哪年能出来?
- ARM内核全解析,从ARM7到Cortex A53,Cortex A57
- 从ARM7,ARM9到Cortex-A7,A8,A9,A12,A15到Cortex-A53,A57
- ARM内核全解析,从ARM7,ARM9到Cortex-A7,A8....Cortex-A53,A57,A72
- qemu调试cortex m3程序
- 编译linux3内核,与busybox,用qemu模拟运行
- iOS面试必看,最全梳理
- web基础
- iOS学习笔记-----Block初探
- 利用FutureTask和ExecutorService实现一个任务拆分成多个任务,实现性能提高
- 第8周项目1(3)用多文件的方式组织最后的程序
- qemu模拟Cortex-A57运行Linux4.5.1
- Android--->Incorrect line ending: found carriage return (\r) without corresponding newline (\n)
- 第七周项目2-友元类(加强版)
- iOS 检测字符串输入是否为合法数字
- linux shell基本命令
- Android View事件的分发机制
- mac或者linux下adb连接不上
- Spring事务配置的五种方式
- java集合-HashMap(JDK1.8)