summaryrefslogtreecommitdiffstats
path: root/templates/feature/agl-demo
diff options
context:
space:
mode:
authorScott Murray <scott.murray@konsulko.com>2023-01-18 20:47:11 -0500
committerScott Murray <scott.murray@konsulko.com>2023-01-19 15:34:12 -0500
commit94ee287730b16820003aece648e790923a9a5b79 (patch)
tree0e096c5f23cb8320a95a28e5617845c1d6e4e5fa /templates/feature/agl-demo
parent5109016c566a4a46e4a85f2c7b9dfcd6b8540233 (diff)
Run agl-compositor in system scope for QEMU+KVM demo image
To allow usefully depending on the native-shell-client "homescreen" application from the systemd units running QEMU, tweak things to drop the use of agl-session from the agl-kvm-demo-platform host image. The motivation for this is to have the VM guest start up ordering work as expected, avoiding unnecessary delays from race failures on boot. Changes: - Rework agl-kvm template to use conf/include/agl-kvm.inc include file to match other featurs and simplify development. - Add include files for the host ("default" in BitBake) and guest (so agl-kvm-guest) multiconfigs to allow disabling the agl-demo feature in the host build, which disables agl-session. - Update native-shell-client systemd unit to run at system scope and depend upon agl-compositor directly. - Update agl-qemu-runner systemd template unit to depend directly on native-shell-client. Note that a consequence of these changes is that building images other than agl-kvm-demo-platform when the "agl-kvm" feature is used will likely not yield the desired results. Future work will investigate avoiding this problem, or forcing explicit compatibility errors to avoid user confusion. Bug-AGL: SPEC-4618 Change-Id: I7f2f2ad9a453b5d99bed4cfc33d99eb3002bcceb Signed-off-by: Scott Murray <scott.murray@konsulko.com>
Diffstat (limited to 'templates/feature/agl-demo')
0 files changed, 0 insertions, 0 deletions
font-weight: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
meta-netboot
============

This layer contains some recipes and configuration adjustments to allow network boot through NBD (network block device).

Content and usage
-----------------

This layer creates a new supplementary initrd image which can be downloaded through TFTP with the kernel.
At boot time, the init script will try to mount the rootfs based on the following kernel command line parameters:
* nbd.server: IP address to reach the NBD server
* nbd.port: TCP port on which server is listening (default: 10809)
* nbd.dev: nbd device to use (default: /dev/nbd0)
* nbd.debug: activate debug mode (init script is then interruptible)

The layer meta-netboot contains recipes for the following components:
* busybox: activate the built-in NBD client
* initramfs-netboot: contains the init script started by the kernel: basically, this script mounts the real root filesystem, then pivot_root on it and finally exec systemd.
* initramfs-netboot-image: image to specify for building the initrd

To enable the build of the netboot initrd and ext4 rootfs, add the following line in conf/local.conf:

INHERIT += "netboot"


Server side
-----------

On the server side (assuming that the build dir is stored in $BUILD) we can run:

* a TFTP server, for example tftpd-hpa started with $BUILD/tmp/deploy/images as the TFTP dir:

  /usr/sbin/in.tftpd --listen --user tftp --address 0.0.0.0:69 --secure $BUILD/tmp/deploy/images

* a NBD server, for example xnbd-server, used to expose the whole ext4 rootfs as a network block device:

  xnbd-server --target --lport 10809 $BUILD/tmp/deploy/images/$MACHINE/agl-demo-platform-$MACHINE.ext4


Target side
-----------

On the target board, a specific setup should also be done. For example, for Renesas Porter board, the following U-boot environment could be used (adjust IP addresses !):

------------------------------------------------------------------
setenv 'bootkfile' 'uImage+dtb'
setenv 'bootkaddr' '0x40007fc0'
setenv 'bootifile' 'initramfs-netboot-image-porter.ext4.gz.u-boot'
setenv 'bootiaddr' '0x50000000'
setenv 'ipaddr' '<board_IP>'
setenv 'serverip' '<server_IP>'

setenv 'bootargs_console' 'console=ttySC6,38400 ignore_loglevel'
setenv 'bootargs_video' 'vmalloc=384M video=HDMI-A-1:1280x960-32@60'
setenv 'bootargs_extra' 'rw rootfstype=ext4 rootwait rootdelay=2'
setenv 'bootargs_root' 'root=/dev/ram0 ramdisk_size=16384 ip=dhcp'
setenv 'bootkload_net' 'tftp ${bootkaddr} porter/${bootkfile}'
setenv 'bootiload_net' 'tftp ${bootiaddr} porter/${bootifile}'
setenv 'bootcmd' 'setenv bootargs ${bootargs_console} ${bootargs_video} ${bootargs_root} ${bootargs_extra} nbd.server=${serverip}; run bootkload_net; run bootiload_net; bootm ${bootkaddr} ${bootiaddr}'

saveenv # optional: saves env in flash
run bootcmd # boots the board, executed automatically after power up
------------------------------------------------------------------

About Renesas Gen3 board, u-boot is updated and environment is more like :

------------------------------------------------------------------
setenv bootargs_console 'console=ttySC0,115200 ignore_loglevel'
setenv bootargs_extra 'rw rootfstype=ext4 rootwait rootdelay=2'
setenv bootargs_root 'root=/dev/ram0 ramdisk_size=16384 ip=dhcp'
setenv bootargs_video 'vmalloc=384M video=HDMI-A-1:1920x1080-32@60'
setenv serverip '<your_serverip>'
setenv 'bootdaddr' '0x48000000'
setenv 'bootdfile' 'Image-r8a7795-h3ulcb.dtb'
setenv 'bootdload_net' 'tftp ${bootdaddr} h3ulcb/${bootdfile}'
setenv 'bootkaddr' '0x48080000'
setenv 'bootkfile' 'Image'
setenv 'bootkload_net' 'tftp ${bootkaddr} h3ulcb/${bootkfile}'
setenv 'bootiaddr' '0x5C3F9520'
setenv 'bootifile' 'initramfs-netboot-image-h3ulcb.ext4.gz'
setenv 'bootiload_net' 'tftp ${bootraddr} h3ulcb/${bootrfile}'
setenv 'load_net' 'run bootkload_net; run bootdload_net; run bootiload_net; setenv initrd_size ${filesize}'

setenv 'bootcmd' 'setenv bootargs ${bootargs_console} ${bootargs_video} ${bootargs_root} ${bootargs_extra} nbd.server=${serverip}; run load_net; booti ${bootkaddr} ${bootiaddr}:${initrd_size} ${bootdaddr}'
------------------------------------------------------------------