300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > qemu模拟Cortex-A57运行Linux4.5.1

qemu模拟Cortex-A57运行Linux4.5.1

时间:2020-05-13 17:24:45

相关推荐

qemu模拟Cortex-A57运行Linux4.5.1

主机运行操作系统,deepin15.1.1

/

1.安装qemu

sudo apt-get install qemu-system-arm

2.安装arm编译工具

sudo apt-get installgcc-aarch64-linux-gnu

3.下载Linux内核

从/下载,并解压缩

修改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

/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 root home

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

cpexamples/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:::

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。