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 <alex.bennee@linaro.org>
Cc: Anders Roxell <anders.roxell@linaro.org>
---
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
+
+By default you will want to boot your rootfs of 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"
--
2.20.1
Cc'ing avocado-devel for test idea. On 1/28/21 7:53 PM, Alex Bennée 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 <alex.bennee@linaro.org> > Cc: Anders Roxell <anders.roxell@linaro.org> > --- > 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 > + > +By default you will want to boot your rootfs of 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" >
On Thu, 28 Jan 2021 at 18:53, Alex Bennée <alex.bennee@linaro.org> 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 <alex.bennee@linaro.org> > Cc: Anders Roxell <anders.roxell@linaro.org> > --- > 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
Peter Maydell <peter.maydell@linaro.org> writes: > On Thu, 28 Jan 2021 at 18:53, Alex Bennée <alex.bennee@linaro.org> 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 <alex.bennee@linaro.org> >> Cc: Anders Roxell <anders.roxell@linaro.org> >> --- >> 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
On Mon, 1 Feb 2021 at 20:09, Alex Bennée <alex.bennee@linaro.org> wrote: > > > Peter Maydell <peter.maydell@linaro.org> writes: > > > On Thu, 28 Jan 2021 at 18:53, Alex Bennée <alex.bennee@linaro.org> 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 <alex.bennee@linaro.org> > >> Cc: Anders Roxell <anders.roxell@linaro.org> > >> --- > >> 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- > 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- That works, but do you really commonly cd into the build directory? I usually sit in the source tree... thanks -- PMM
Peter Maydell <peter.maydell@linaro.org> writes: > On Mon, 1 Feb 2021 at 20:09, Alex Bennée <alex.bennee@linaro.org> wrote: >> >> >> Peter Maydell <peter.maydell@linaro.org> writes: >> >> > On Thu, 28 Jan 2021 at 18:53, Alex Bennée <alex.bennee@linaro.org> 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 <alex.bennee@linaro.org> >> >> Cc: Anders Roxell <anders.roxell@linaro.org> >> >> --- >> >> 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- > >> 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- > > That works, but do you really commonly cd into the build directory? > I usually sit in the source tree... Lets just be explicit and teach the user to fish: 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). In the following example $BLD points to the build directory and $SRC points to the root of the Linux source tree. You can drop $SRC if you are running from there. .. code-block:: bash $ make O=$BLD -C $SRC ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- multi_v7_defconfig $ make O=$BLD -C $SRC ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- > > thanks > -- PMM -- Alex Bennée
Peter Maydell <peter.maydell@linaro.org> writes: > On Mon, 1 Feb 2021 at 20:09, Alex Bennée <alex.bennee@linaro.org> wrote: >> >> >> Peter Maydell <peter.maydell@linaro.org> writes: >> >> > On Thu, 28 Jan 2021 at 18:53, Alex Bennée <alex.bennee@linaro.org> 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 <alex.bennee@linaro.org> >> >> Cc: Anders Roxell <anders.roxell@linaro.org> >> >> --- >> >> 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- > >> 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- > > That works, but do you really commonly cd into the build directory? > I usually sit in the source tree... I have tmux panes, lots of lots of tmux panes. It's more common to live in the build directories for QEMU because I have to run the binaries I build. For the kernels I usually have one pane in the tip of source tree and a bunch of others for build configurations I'm actively messing about with and rebuilding. > > thanks > -- PMM -- Alex Bennée
© 2016 - 2024 Red Hat, Inc.