Peter Maydell <[email protected]> writes:
> On Thu, 28 Jan 2021 at 18:53, Alex Bennée <[email protected]> wrote: >> >> The wiki and the web are curiously absent of the right runes to boot a >> vexpress model so I had to work from first principles to work it out. >> Use the more modern -drive notation so alternative backends can be >> used (unlike the hardwired -sd mode). >> >> Signed-off-by: Alex Bennée <[email protected]> >> Cc: Anders Roxell <[email protected]> >> --- >> docs/system/arm/vexpress.rst | 26 ++++++++++++++++++++++++++ >> 1 file changed, 26 insertions(+) >> >> diff --git a/docs/system/arm/vexpress.rst b/docs/system/arm/vexpress.rst >> index 7f1bcbef07..30b1823b95 100644 >> --- a/docs/system/arm/vexpress.rst >> +++ b/docs/system/arm/vexpress.rst >> @@ -58,3 +58,29 @@ Other differences between the hardware and the QEMU model: >> ``vexpress-a15``, and have IRQs from 40 upwards. If a dtb is >> provided on the command line then QEMU will edit it to include >> suitable entries describing these transports for the guest. >> + >> +Booting a Linux kernel >> +---------------------- >> + >> +Building a current Linux kernel with ``multi_v7_defconfig`` should be >> +enough to get something running. >> + >> +.. code-block:: bash >> + >> + $ export ARCH=arm >> + $ export CROSS_COMPILE=arm-linux-gnueabihf- >> + $ make multi_v7_defconfig >> + $ make > > We probably shouldn't be recommending in-tree kernel builds, or > polluting the user's environment with random variables. Try: > > $ make O=builddir ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- > multi_v7_defconfig > $ make O=builddir ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- > >> +By default you will want to boot your rootfs of the sdcard interface. > > "off" > >> +Your rootfs will need to be padded to the right size. With a suitable >> +DTB you could also add devices to the virtio-mmio bus. >> + >> +.. code-block:: bash >> + >> + $ qemu-system-arm -cpu cortex-a15 -smp 4 -m 4096 \ >> + -machine type=vexpress-a15 -serial mon:stdio \ >> + -drive if=sd,driver=file,filename=armel-rootfs.ext4 \ >> + -kernel zImage \ >> + -dtb vexpress-v2p-ca15-tc1.dtb \ >> + -append "console=ttyAMA0 root=/dev/mmcblk0 ro" > > thanks > -- PMM Booting a Linux kernel ---------------------- Building a current Linux kernel with ``multi_v7_defconfig`` should be enough to get something running. Nowadays an out-of-tree build is recommended (and also useful if you build a lot of different targets). $SRC points at root of the linux source tree. .. code-block:: bash $ mkdir build; cd build $ make O=$(pwd) -C $SRC ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- multi_v7_defconfig $ make O=$(pwd) -C $SRC ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- By default you will want to boot your rootfs off the sdcard interface. Your rootfs will need to be padded to the right size. With a suitable DTB you could also add devices to the virtio-mmio bus. .. code-block:: bash $ qemu-system-arm -cpu cortex-a15 -smp 4 -m 4096 \ -machine type=vexpress-a15 -serial mon:stdio \ -drive if=sd,driver=file,filename=armel-rootfs.ext4 \ -kernel zImage \ -dtb vexpress-v2p-ca15-tc1.dtb \ -append "console=ttyAMA0 root=/dev/mmcblk0 ro" -- Alex Bennée
