caodg / swdocissues

syswonder report issues
1 stars 0 forks source link

/2023/20230421_ARM64-QEMU-jailhouse #6

Open KouweiLee opened 12 months ago

KouweiLee commented 12 months ago

https://report.syswonder.org/#/2023/20230421_ARM64-QEMU-jailhouse

Description

KouweiLee commented 12 months ago

一些常见问题汇总:

  1. 如果执行jailhouse报错说glibc版本低,则在host上chroot到rootfs中换源,可以增加22.04的清华源。步骤如下:

执行命令

sudo vi /etc/apt/sources.list

替换文件内容为:

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-backports main restricted universe multiverse

# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-security main restricted universe multiverse
# # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-security main restricted universe multiverse

deb http://ports.ubuntu.com/ubuntu-ports/ focal-security main restricted universe multiverse
# deb-src http://ports.ubuntu.com/ubuntu-ports/ focal-security main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-proposed main restricted universe multiverse
# # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-proposed main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy main

替换后执行:

sudo apt update 
sudo apt install libc6
  1. 如果运行jailhouse时报ext4 error文件系统的错,则可以在host上执行:

    e2fsck -f ubuntu-20.04-rootfs_ext4.img
  2. 执行sudo chroot .时,如果报错chroot: failed to run command ‘/bin/bash’: Exec format error,可以执行指令:

    sudo apt-get install qemu-user-static
    sudo update-binfmts --enable qemu-aarch64
  3. 运行jailhouse的指令如下,在qemu中执行:

    cd ~/jailhouse
    sudo insmod driver/jailhouse.ko
    sudo ./tools/jailhouse enable configs/arm64/qemu-arm64.cell
    sudo ./tools/jailhouse cell create configs/arm64/qemu-arm64-gic-demo.cell
    sudo ./tools/jailhouse cell load gic-demo inmates/demos/arm64/gic-demo.bin
    sudo ./tools/jailhouse cell start gic-demo
    sudo ./tools/jailhouse cell destroy gic-demo
    sudo ./tools/jailhouse disable
  4. 如果运行一个non-root-linux在jailhouse中,报错说找不到python,则执行以下命令:

    sudo ln -s /usr/bin/python3 /usr/bin/python
  5. 在使用ubuntu-base启动虚拟aarch64平台时,等待dev-ttyAMA0.device超时而卡住,从而导致无法登录进入bash

sudo mount ubuntu-20.04-rootfs_ext4.img rootfs/
sudo chroot rootfs/
cp lib/systemd/system/serial-getty\@.service lib/systemd/system/serial-getty\@ttyAMA0.service
systemctl enable serial-getty\@ttyAMA0.service
exit

修改内容

sudo vim rootfs/lib/systemd/system/serial-getty@ttyAMA0.service

Untitled

将BindsTo和After开头的行注释掉

参考地址:

systemd for Administrators, Part XVI

  1. 如果编译linux时报错:
    /usr/bin/ld: scripts/dtc/dtc-parser.tab.o:(.bss+0x20): multiple definition of `yylloc'; scripts/dtc/dtc-lexer.lex.o:(.bss+0x0): first defined here

    则修改linux文件夹下scripts/dtc/dtc-lexer.lex.c,在YYLTYPE yylloc;前增加extern。再次编译,发现会报错:openssl/bio.h: No such file or directory ,此时执行sudo apt install libssl-dev

Inquisitor-201 commented 11 months ago

注意jailhouse编译完成后将jailhouse/hypervisor/jailhouse.bin复制到rootfs的/lib/firmware/下,否则hypervisor无法运行

KouweiLee commented 3 months ago

如果想在Linux中以root身份登录,则可以在制作根文件系统时执行passwd root ,登录时输入root用户名和设置的密码即可。