编辑
2024-01-17
工作知识
0
请注意,本文编写于 506 天前,最后修改于 451 天前,其中某些信息可能已经过时。

目录

[Jailhouse编译]
环境准备
合入jailhouse需要的补丁
编译jailhouse模块
目标机

[Jailhouse编译]

开始编译jailhouse驱动和内核了。

环境准备

  1. 具有能编译内核的环境
  2. 具有能编译jailhouse模块的环境
    如下:
apt install checkinstall build-essential qemu python3-mako export ARCH=arm64 export PATH=$PATH:/root/sdk/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin export CROSS_COMPILE=aarch64-none-linux-gnu-

合入jailhouse需要的补丁

平台为RK3588,内核版本如下:

VERSION = 5 PATCHLEVEL = 10 SUBLEVEL = 160

补丁如下

0001-jailhouse-config-jailhouse.ko-need-those-config.patch 0025-jailhouse-ivshmem-net-Improve-identification-of-reso.patch 0002-jailhouse-Add-simple-debug-console-via-the-hyperviso.patch 0026-jailhouse-ivshmem-net-Switch-to-reset-state-on-each-.patch 0003-jailhouse-arm-Export-__boot_cpu_mode-for-use-in-Jail.patch 0027-jailhouse-ivshmem-net-Add-ethtool-register-dump.patch 0004-jailhouse-mm-Re-export-ioremap_page_range.patch 0028-jailhouse-ivshmem-net-Fix-stuck-state-machine-during.patch 0005-jailhouse-arm-arm64-export-__hyp_stub_vectors.patch 0029-jailhouse-ivshmem-net-Switch-to-relative-descriptor-.patch 0006-jailhouse-uio-Enable-read-only-mappings.patch 0030-jailhouse-ivshmem-net-Switch-to-pci_alloc_irq_vector.patch 0007-jailhouse-ivshmem-Add-header-file.patch 0031-jailhouse-ivshmem-net-fill-in-and-check-used-descrip.patch 0008-jailhouse-uio-Add-driver-for-inter-VM-shared-memory-.patch 0032-jailhouse-ivshmem-net-slightly-improve-debug-output.patch 0009-Revert-jailhouse-ivshmem-Add-header-file.patch 0033-jailhouse-ivshmem-net-set-and-check-descriptor-flags.patch 0010-jailhouse-ivshmem-Add-header-file.patch 0034-jailhouse-ivshmem-net-add-MAC-changing-interface.patch 0011-jailhouse-WIP-virtio-Add-virtio-over-ivshmem-transpo.patch 0035-jailhouse-ivshmem-net-Silence-compiler-warning.patch 0012-jailhouse-virtio-ivshmem-check-peer_state-early.patch 0036-jailhouse-ivshmem-net-Fix-bogus-transition-to-RESET-.patch 0013-jailhouse-WIP-tools-Add-virtio-ivshmem-console-demo.patch 0037-jailhouse-ivshmem-net-Refactor-and-comment.patch 0014-jailhouse-WIP-tools-Add-virtio-ivshmem-block-demo.patch 0038-jailhouse-ivshmem-net-Switch-to-netdev_xmit_more-hel.patch 0015-jailhouse-mm-vmalloc-Export-__get_vm_area_caller.patch 0039-jailhouse-ivshmem-net-Adjust-to-reworked-version-of-.patch 0016-jailhouse-x86-Export-lapic_timer_period.patch 0040-jailhouse-ivshmem-net-Fix-and-rework-MTU-configurati.patch 0017-jailhouse-arm64-dts-marvell-armada-37xx-Set-pci-doma.patch 0041-jailhouse-ivshmem-net-Mark-vring_used_event-access-R.patch 0018-jailhouse-arm64-dts-marvell-armada-8030-mcbin-Set-pc.patch 0042-jailhouse-ivshmem-net-Simplify-interface-of-ivshm_ne.patch 0019-jailhouse-PCI-portdrv-Do-not-setup-up-IRQs-if-there-.patch 0043-jailhouse-ivshmem-net-Fix-TX-queue-locking-and-plug-.patch 0020-jailhouse-ivshmem-net-virtual-network-device-for-Jai.patch 0044-ivshmem-net-Synchronize-ivshm_net_state_change-again.patch 0021-jailhouse-ivshmem-net-Map-shmem-region-as-RAM.patch 0045-jailhouse-ivshmem-net-Fix-and-rework-carrier-managem.patch 0022-jailhouse-ivshmem-net-fix-race-in-state-machine.patch 0046-jailhouse-Revert-mm-vmalloc-Export-__get_vm_area_cal.patch 0023-jailhouse-ivshmem-net-Remove-unused-variable.patch 0047-jailhouse-config-open-jailhouse-feature.patch 0024-jailhouse-ivshmem-net-Enable-INTx.patch

合入补丁:

for i in jailhouse-patch/* ; do patch -p1 < $i ; done

主要修改文件如下:

modified: arch/arm64/kernel/hyp-stub.S modified: drivers/net/Kconfig modified: drivers/net/Makefile modified: drivers/pci/pcie/portdrv_core.c modified: drivers/uio/Kconfig modified: drivers/uio/Makefile modified: drivers/uio/uio.c modified: drivers/virt/Kconfig modified: drivers/virt/Makefile modified: drivers/virtio/Kconfig modified: drivers/virtio/Makefile modified: include/linux/pci_ids.h modified: include/linux/uio_driver.h modified: mm/ioremap.c modified: tools/virtio/Makefile drivers/net/ivshmem-net.c drivers/uio/uio_ivshmem.c drivers/virt/jailhouse_dbgcon.c drivers/virtio/virtio_ivshmem.c include/linux/ivshmem.h tools/virtio/virtio-ivshmem-block.c tools/virtio/virtio-ivshmem-console.c

编译内核

make ARCH=arm64 -j24

需要打开的配置

CONFIG_KALLSYMS_ALL=y CONFIG_KPROBES=y CONFIG_IVSHMEM_NET=y CONFIG_UIO_IVSHMEM=y CONFIG_JAILHOUSE_DBGCON=y CONFIG_VIRTIO_IVSHMEM=y

编译jailhouse模块

合入补丁

0001-driver-main-add-kprobe-for-kallsyms_lookup_name.patch

编译

make KDIR=../kernel/ DESTDIR=jailhouse-bin install

目标机

scp -r ./jailhouse-bin root@172.25.80.124:/ scp -r ./tools/jailhouse-bin root@172.25.80.124:/ scp -r ../kernel/jailhouse-bin/ root@172.25.80.124:/

运行

modprobe jailhouse

至此jailhouse移植完成了。