diff options
author | Naoto Yamaguchi <naoto.yamaguchi@aisin.co.jp> | 2024-09-20 00:18:39 +0900 |
---|---|---|
committer | Naoto Yamaguchi <naoto.yamaguchi@aisin.co.jp> | 2024-09-20 00:42:00 +0900 |
commit | 659668d51f1c358527f4f289739dced6fb96feb9 (patch) | |
tree | 6fde9b1331fccd6e1b9d5891871c6a6d362788c6 /meta-agl-ic-container | |
parent | 11a48992beee0dbb8e1f85d7a795a76e4b7b4638 (diff) |
Add Rockchip board support to IC container integration
AGL got new board support that based on Rockchip SoC.
Initial patch support AGL demo IVI only.
This patch add Rockchip board support to IC container integration.
Bug-AGL: SPEC-5246
Change-Id: I6203bb9e2b7cd3cad7604da45c744e88a21d1454
Signed-off-by: Naoto Yamaguchi <naoto.yamaguchi@aisin.co.jp>
Diffstat (limited to 'meta-agl-ic-container')
11 files changed, 790 insertions, 0 deletions
diff --git a/meta-agl-ic-container/conf/layer.conf b/meta-agl-ic-container/conf/layer.conf index 47000a76..7b715454 100644 --- a/meta-agl-ic-container/conf/layer.conf +++ b/meta-agl-ic-container/conf/layer.conf @@ -14,6 +14,8 @@ BBFILES_DYNAMIC += " \ rcar-gen3:${LAYERDIR}/dynamic-layers/meta-rcar-gen3/*/*/*.bbappend \ raspberrypi:${LAYERDIR}/dynamic-layers/meta-raspberrypi/*/*/*.bb \ raspberrypi:${LAYERDIR}/dynamic-layers/meta-raspberrypi/*/*/*.bbappend \ + rockchip:${LAYERDIR}/dynamic-layers/meta-rockchip/*/*/*.bb \ + rockchip:${LAYERDIR}/dynamic-layers/meta-rockchip/*/*/*.bbappend \ selinux:${LAYERDIR}/dynamic-layers/meta-selinux/*/*/*.bb \ selinux:${LAYERDIR}/dynamic-layers/meta-selinux/*/*/*.bbappend \ " diff --git a/meta-agl-ic-container/dynamic-layers/meta-rockchip/recipes-core/systemd/systemd_%.bbappend b/meta-agl-ic-container/dynamic-layers/meta-rockchip/recipes-core/systemd/systemd_%.bbappend new file mode 100644 index 00000000..e0008a71 --- /dev/null +++ b/meta-agl-ic-container/dynamic-layers/meta-rockchip/recipes-core/systemd/systemd_%.bbappend @@ -0,0 +1,8 @@ +do_install:append() { + # Disable network IF renaming + ln -s /dev/null ${D}${sysconfdir}/systemd/network/99-default.link +} + +FILES:udev:append = " \ + ${sysconfdir}/systemd/network/99-default.link \ + " diff --git a/meta-agl-ic-container/dynamic-layers/meta-rockchip/recipes-graphics/rockchip-libmali/rockchip-libmali.bbappend b/meta-agl-ic-container/dynamic-layers/meta-rockchip/recipes-graphics/rockchip-libmali/rockchip-libmali.bbappend new file mode 100644 index 00000000..6b0f69aa --- /dev/null +++ b/meta-agl-ic-container/dynamic-layers/meta-rockchip/recipes-graphics/rockchip-libmali/rockchip-libmali.bbappend @@ -0,0 +1,7 @@ +PACKAGES:prepend = "\ + ${PN}-firmware \ +" + +FILES:${PN}-firmware = " \ + ${nonarch_base_libdir}/firmware/* \ +" diff --git a/meta-agl-ic-container/dynamic-layers/meta-rockchip/recipes-platform/images/agl-instrument-cluster-container-demo.bbappend b/meta-agl-ic-container/dynamic-layers/meta-rockchip/recipes-platform/images/agl-instrument-cluster-container-demo.bbappend new file mode 100644 index 00000000..4a849c03 --- /dev/null +++ b/meta-agl-ic-container/dynamic-layers/meta-rockchip/recipes-platform/images/agl-instrument-cluster-container-demo.bbappend @@ -0,0 +1,10 @@ +WKS_FILES:remove = "agl-ic-container-noloader.wks agl-ic-container-noloader-demo.wks" +WKS_FILES:prepend = " \ + ${@oe.utils.conditional('OUT_OF_TREE_CONTAINER_IMAGE_DEPLOY_DIR', '', 'agl-ic-container-rockchip.wks ', 'agl-ic-container-rockchip-demo.wks ', d)} \ +" + +IMAGE_INSTALL:append = " \ + linux-firmware-rtl8822 \ + linux-firmware-rtl8125 \ + rockchip-libmali-firmware \ +" diff --git a/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-flutter-ivi-demo/nanopct6/agl-flutter-ivi-demo.json b/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-flutter-ivi-demo/nanopct6/agl-flutter-ivi-demo.json new file mode 100644 index 00000000..3066c4da --- /dev/null +++ b/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-flutter-ivi-demo/nanopct6/agl-flutter-ivi-demo.json @@ -0,0 +1,203 @@ +{ + "name": "agl-flutter-ivi-demo", + "role": "ivi", + "base": { + "autoboot": true, + "bootpriority": 20, + "rootfs": { + "path": "/opt/container/guests/agl-flutter-ivi-demo/rootfs", + "filesystem": "ext4", + "mode": "rw", + "blockdev": [ + "/dev/mmcblk0p7", + "/dev/mmcblk0p7" + ] + }, + "extended": { + "shmounts": "/opt/container/guests/agl-flutter-ivi-demo/shmounts" + }, + "lifecycle": { + "halt": "SIGRTMIN+3", + "reboot": "SIGTERM" + }, + "cap": { + "drop": "sys_module mac_admin mac_override", + "keep": "" + }, + "environment": [ + "HOME=/home/root" + ] + }, + "resource": [ + { + "type": "cgroup", + "object": "cpuset.cpus", + "value": "0-6" + }, + { + "type": "prlimit", + "object": "rtprio", + "value": "50" + } + ], + "fs": { + "mount": [ + { + "type": "filesystem", + "from": "tmpfs", + "to": "run", + "fstype": "tmpfs", + "option": "defaults 0 0" + }, + { + "type": "directory", + "from": "/sys/kernel/security", + "to": "sys/kernel/security", + "fstype": "none", + "option": "ro,bind,optional 0 0" + }, + { + "type": "directory", + "from": "/run/udev/data", + "to": "run/udev/data", + "fstype": "none", + "option": "ro,bind,optional,create=dir" + }, + { + "type": "directory", + "from": "/run/drm-lease-manager/lease-ivi", + "to": "var/display/drm-lease-manager/lease", + "fstype": "none", + "option": "bind,create=file" + }, + { + "type": "directory", + "from": "/run/dlt", + "to": "run/dlt", + "fstype": "none", + "option": "bind,optional,create=dir" + }, + { + "type": "directory", + "from": "/opt/container/guests/agl-flutter-ivi-demo/system.conf", + "to": "etc/systemd/system.conf.d/10-environment.conf", + "fstype": "none", + "option": "bind,optional,create=file" + } + ] + }, + "device": { + "static": [ + { + "type": "devdir", + "from": "/dev/dri", + "to": "dev/dri", + "devnode": "/dev/dri/card0", + "optional": 0, + "wideallow": 1, + "exclusive": 0 + }, + { + "type": "devdir", + "from": "/dev/input", + "to": "dev/input", + "devnode": "/dev/input/event0", + "optional": 1, + "wideallow": 1, + "exclusive": 0 + }, + { + "type": "devdir", + "from": "/dev/snd", + "to": "dev/snd", + "devnode": "/dev/snd/controlC0", + "optional": 1, + "wideallow": 1, + "exclusive": 0 + }, + { + "type": "devnode", + "from": "/dev/mali0", + "to": "dev/mali0", + "devnode": "/dev/mali0", + "optional": 0, + "wideallow": 0, + "exclusive": 0 + } + ], + "dynamic": [ + { + "devpath": "/devices/platform/usbdrd3_0/fc000000.usb/", + "items": [ + { + "subsystem": "usb", + "rule": { + "devtype": ["usb_device","usb_interface"], + "action": ["add", "remove"] + }, + "behavior": { + "injection": 1, + "devnode": 0, + "allow": 0, + "permission": "rw" + } + }, + { + "subsystem": "block", + "rule": { + "action": ["add", "remove","change"], + "extra" : [ + { + "checker": "exclude-fs", + "value": "ext4" + } + ] + }, + "behavior": { + "injection": 1, + "devnode": 0, + "allow": 1, + "permission": "rwm" + } + } + ] + }, + { + "devpath": "/devices/platform/usbdrd3_0/fc000000.usb/", + "items": [ + { + "subsystem": "hid", + "rule": { + "action": ["add", "remove"] + }, + "behavior": { + "injection": 1, + "devnode": 1, + "allow": 1, + "permission": "rw" + } + } + ] + } + ] + }, + "network": { + "static": [ + { + "type": "veth", + "param": { + "name": "veth0", + "link": "lxcbr0", + "flags": "up", + "hwaddr": "00:16:3e:xx:xx:xx", + "mode": "bridge" + } + } + ], + "dynamic": [ + { + "ifname": "vxcan2" + } + ] + } +} diff --git a/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-momi-ivi-demo/nanopct6/agl-momi-ivi-demo.json b/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-momi-ivi-demo/nanopct6/agl-momi-ivi-demo.json new file mode 100644 index 00000000..25caed4a --- /dev/null +++ b/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-momi-ivi-demo/nanopct6/agl-momi-ivi-demo.json @@ -0,0 +1,202 @@ +{ + "name": "agl-momi-ivi-demo", + "role": "ivi", + "base": { + "autoboot": true, + "bootpriority": 10, + "rootfs": { + "path": "/opt/container/guests/agl-momi-ivi-demo/rootfs", + "filesystem": "ext4", + "mode": "rw", + "blockdev": [ + "/dev/mmcblk0p5", + "/dev/mmcblk0p5" + ] + }, + "lifecycle": { + "halt": "SIGRTMIN+3", + "reboot": "SIGTERM", + "timeout": 15000 + }, + "cap": { + "drop": "sys_module mac_admin mac_override", + "keep": "" + }, + "environment": [ + "PIPEWIRE_RUNTIME_DIR=/var", + "HOME=/home/root" + ] + }, + "resource": [ + { + "type": "cgroup", + "object": "cpuset.cpus", + "value": "0-6" + }, + { + "type": "prlimit", + "object": "rtprio", + "value": "50" + } + ], + "fs": { + "mount": [ + { + "type": "filesystem", + "from": "tmpfs", + "to": "run", + "fstype": "tmpfs", + "option": "defaults 0 0" + }, + { + "type": "directory", + "from": "/sys/kernel/security", + "to": "sys/kernel/security", + "fstype": "none", + "option": "ro,bind,optional 0 0" + }, + { + "type": "directory", + "from": "/run/udev/data", + "to": "run/udev/data", + "fstype": "none", + "option": "ro,bind,optional,create=dir" + }, + { + "type": "directory", + "from": "/run/drm-lease-manager/lease-ivi", + "to": "var/display/drm-lease-manager/lease", + "fstype": "none", + "option": "bind,create=file" + }, + { + "type": "directory", + "from": "/run/dlt", + "to": "run/dlt", + "fstype": "none", + "option": "bind,optional,create=dir" + }, + { + "type": "directory", + "from": "/opt/container/guests/agl-momi-ivi-demo/system.conf", + "to": "etc/systemd/system.conf.d/10-environment.conf", + "fstype": "none", + "option": "bind,optional,create=file" + } + ] + }, + "device": { + "static": [ + { + "type": "devdir", + "from": "/dev/dri", + "to": "dev/dri", + "devnode": "/dev/dri/card0", + "optional": 0, + "wideallow": 1, + "exclusive": 0 + }, + { + "type": "devdir", + "from": "/dev/input", + "to": "dev/input", + "devnode": "/dev/input/event0", + "optional": 1, + "wideallow": 1, + "exclusive": 0 + }, + { + "type": "devdir", + "from": "/dev/snd", + "to": "dev/snd", + "devnode": "/dev/snd/controlC0", + "optional": 1, + "wideallow": 1, + "exclusive": 0 + }, + { + "type": "devnode", + "from": "/dev/mali0", + "to": "dev/mali0", + "devnode": "/dev/mali0", + "optional": 0, + "wideallow": 0, + "exclusive": 0 + } + ], + "dynamic": [ + { + "devpath": "/devices/platform/usbdrd3_0/fc000000.usb/", + "items": [ + { + "subsystem": "usb", + "rule": { + "devtype": ["usb_device","usb_interface"], + "action": ["add", "remove"] + }, + "behavior": { + "injection": 1, + "devnode": 0, + "allow": 0, + "permission": "rw" + } + }, + { + "subsystem": "block", + "rule": { + "action": ["add", "remove","change"], + "extra" : [ + { + "checker": "exclude-fs", + "value": "ext4" + } + ] + }, + "behavior": { + "injection": 1, + "devnode": 0, + "allow": 1, + "permission": "rwm" + } + } + ] + }, + { + "devpath": "/devices/platform/usbdrd3_0/fc000000.usb/", + "items": [ + { + "subsystem": "hid", + "rule": { + "action": ["add", "remove"] + }, + "behavior": { + "injection": 1, + "devnode": 1, + "allow": 1, + "permission": "rw" + } + } + ] + } + ] + }, + "network": { + "static": [ + { + "type": "veth", + "param": { + "name": "eth0", + "link": "lxcbr0", + "flags": "up", + "hwaddr": "00:16:3e:xx:xx:xx", + "mode": "bridge" + } + } + ], + "dynamic": [ + { + "ifname": "vxcan2" + } + ] + } +} diff --git a/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-qt-ivi-demo/nanopct6/agl-qt-ivi-demo.json b/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-qt-ivi-demo/nanopct6/agl-qt-ivi-demo.json new file mode 100644 index 00000000..b74170ef --- /dev/null +++ b/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-qt-ivi-demo/nanopct6/agl-qt-ivi-demo.json @@ -0,0 +1,204 @@ +{ + "name": "agl-qt-ivi-demo", + "role": "ivi", + "base": { + "autoboot": false, + "bootpriority": 20, + "rootfs": { + "path": "/opt/container/guests/agl-qt-ivi-demo/rootfs", + "filesystem": "ext4", + "mode": "rw", + "blockdev": [ + "/dev/mmcblk0p6", + "/dev/mmcblk0p6" + ] + }, + "extended": { + "shmounts": "/opt/container/guests/agl-qt-ivi-demo/shmounts" + }, + "lifecycle": { + "halt": "SIGRTMIN+3", + "reboot": "SIGTERM", + "timeout": 15000 + }, + "cap": { + "drop": "sys_module mac_admin mac_override", + "keep": "" + }, + "environment": [ + "HOME=/home/root" + ] + }, + "resource": [ + { + "type": "cgroup", + "object": "cpuset.cpus", + "value": "0-6" + }, + { + "type": "prlimit", + "object": "rtprio", + "value": "50" + } + ], + "fs": { + "mount": [ + { + "type": "filesystem", + "from": "tmpfs", + "to": "run", + "fstype": "tmpfs", + "option": "defaults 0 0" + }, + { + "type": "directory", + "from": "/sys/kernel/security", + "to": "sys/kernel/security", + "fstype": "none", + "option": "ro,bind,optional 0 0" + }, + { + "type": "directory", + "from": "/run/udev/data", + "to": "run/udev/data", + "fstype": "none", + "option": "ro,bind,optional,create=dir" + }, + { + "type": "directory", + "from": "/run/drm-lease-manager/lease-ivi", + "to": "var/display/drm-lease-manager/lease", + "fstype": "none", + "option": "bind,create=file" + }, + { + "type": "directory", + "from": "/run/dlt", + "to": "run/dlt", + "fstype": "none", + "option": "bind,optional,create=dir" + }, + { + "type": "directory", + "from": "/opt/container/guests/agl-qt-ivi-demo/system.conf", + "to": "etc/systemd/system.conf.d/10-environment.conf", + "fstype": "none", + "option": "bind,optional,create=file" + } + ] + }, + "device": { + "static": [ + { + "type": "devdir", + "from": "/dev/dri", + "to": "dev/dri", + "devnode": "/dev/dri/card0", + "optional": 0, + "wideallow": 1, + "exclusive": 0 + }, + { + "type": "devdir", + "from": "/dev/input", + "to": "dev/input", + "devnode": "/dev/input/event0", + "optional": 1, + "wideallow": 1, + "exclusive": 0 + }, + { + "type": "devdir", + "from": "/dev/snd", + "to": "dev/snd", + "devnode": "/dev/snd/controlC0", + "optional": 1, + "wideallow": 1, + "exclusive": 0 + }, + { + "type": "devnode", + "from": "/dev/mali0", + "to": "dev/mali0", + "devnode": "/dev/mali0", + "optional": 0, + "wideallow": 0, + "exclusive": 0 + } + ], + "dynamic": [ + { + "devpath": "/devices/platform/usbdrd3_0/fc000000.usb/", + "items": [ + { + "subsystem": "usb", + "rule": { + "devtype": ["usb_device","usb_interface"], + "action": ["add", "remove"] + }, + "behavior": { + "injection": 1, + "devnode": 0, + "allow": 0, + "permission": "rw" + } + }, + { + "subsystem": "block", + "rule": { + "action": ["add", "remove","change"], + "extra" : [ + { + "checker": "exclude-fs", + "value": "ext4" + } + ] + }, + "behavior": { + "injection": 1, + "devnode": 0, + "allow": 1, + "permission": "rwm" + } + } + ] + }, + { + "devpath": "/devices/platform/usbdrd3_0/fc000000.usb/", + "items": [ + { + "subsystem": "hid", + "rule": { + "action": ["add", "remove"] + }, + "behavior": { + "injection": 1, + "devnode": 1, + "allow": 1, + "permission": "rw" + } + } + ] + } + ] + }, + "network": { + "static": [ + { + "type": "veth", + "param": { + "name": "veth0", + "link": "lxcbr0", + "flags": "up", + "hwaddr": "00:16:3e:xx:xx:xx", + "mode": "bridge" + } + } + ], + "dynamic": [ + { + "ifname": "vxcan2" + } + ] + } +} diff --git a/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-cluster-demo/nanopct6/cluster-demo.json b/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-cluster-demo/nanopct6/cluster-demo.json new file mode 100644 index 00000000..90a9b0a8 --- /dev/null +++ b/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-cluster-demo/nanopct6/cluster-demo.json @@ -0,0 +1,121 @@ +{ + "name": "cluster-demo", + "role": "cluster", + "base": { + "autoboot": true, + "bootpriority": 1, + "rootfs": { + "path": "/opt/container/guests/cluster-demo/rootfs", + "filesystem": "ext4", + "mode": "rw", + "blockdev": [ + "/dev/mmcblk0p4", + "/dev/mmcblk0p4" + ] + }, + "lifecycle": { + "halt": "SIGRTMIN+3", + "reboot": "SIGTERM", + "timeout": 5000 + }, + "cap": { + "drop": "sys_module mac_admin mac_override sys_time", + "keep": "" + }, + "environment": [ + "HOME=/home/root" + ] + }, + "resource": [ + { + "type": "cgroup", + "object": "cpuset.cpus", + "value": "0" + }, + { + "type": "prlimit", + "object": "rtprio", + "value": "50" + } + ], + "fs": { + "mount": [ + { + "type": "filesystem", + "from": "tmpfs", + "to": "run", + "fstype": "tmpfs", + "option": "defaults 0 0" + }, + { + "type": "directory", + "from": "/sys/kernel/security", + "to": "sys/kernel/security", + "fstype": "none", + "option": "ro,bind,optional 0 0" + }, + { + "type": "directory", + "from": "/run/drm-lease-manager/lease-cluster", + "to": "var/display/drm-lease-manager/lease", + "fstype": "none", + "option": "bind,create=file" + }, + { + "type": "directory", + "from": "/run/dlt", + "to": "run/dlt", + "fstype": "none", + "option": "bind,optional,create=dir" + }, + { + "type": "directory", + "from": "/opt/container/guests/cluster-demo/system.conf", + "to": "etc/systemd/system.conf.d/10-environment.conf", + "fstype": "none", + "option": "bind,optional,create=file" + } + ] + }, + "device": { + "static": [ + { + "type": "devdir", + "from": "/dev/dri", + "to": "dev/dri", + "devnode": "/dev/dri/card0", + "optional": 0, + "wideallow": 1, + "exclusive": 0 + }, + { + "type": "devnode", + "from": "/dev/mali0", + "to": "dev/mali0", + "devnode": "/dev/mali0", + "optional": 0, + "wideallow": 0, + "exclusive": 0 + } + ] + }, + "network": { + "static": [ + { + "type": "veth", + "param": { + "name": "veth0", + "link": "lxcbr0", + "flags": "up", + "hwaddr": "00:16:3e:xx:xx:xx", + "mode": "bridge" + } + } + ], + "dynamic": [ + { + "ifname": "vxcan0" + } + ] + } +} diff --git a/meta-agl-ic-container/recipes-graphics/drm-lease-manager/drm-lease-manager-init/nanopct6/drm-lease-manager.ini b/meta-agl-ic-container/recipes-graphics/drm-lease-manager/drm-lease-manager-init/nanopct6/drm-lease-manager.ini new file mode 100644 index 00000000..45ecfc27 --- /dev/null +++ b/meta-agl-ic-container/recipes-graphics/drm-lease-manager/drm-lease-manager-init/nanopct6/drm-lease-manager.ini @@ -0,0 +1,7 @@ +[[lease]] +name="lease-ivi" +connectors=["HDMI-A-1"] + +[[lease]] +name="lease-cluster" +connectors=["HDMI-A-2"] diff --git a/meta-agl-ic-container/wic/agl-ic-container-rockchip-demo.wks b/meta-agl-ic-container/wic/agl-ic-container-rockchip-demo.wks new file mode 100644 index 00000000..6339a876 --- /dev/null +++ b/meta-agl-ic-container/wic/agl-ic-container-rockchip-demo.wks @@ -0,0 +1,13 @@ +# short-description: Single partition rootfs with UUID and no bootloader +# long-description: Creates a partitioned image with a single partition in +# use and does not contain a bootloader. + +bootloader --ptable gpt +part --source rawcopy --sourceparams="file=idblock.img" --align 32 --no-table +part --source rawcopy --sourceparams="file=uboot.img" --part-name uboot --align 8192 +part --source rawcopy --sourceparams="file=boot.img" --part-name boot +part / --source rootfs --fstype=ext4 --label host --align 4096 --size 1024 +part --source rawcopy --sourceparams="file=guest-image-cluster-demo.ext4" +part --source rawcopy --sourceparams="file=guest-image-ivi-demo.ext4" +part --source rawcopy --sourceparams="file=agl-ivi-demo-qt.ext4" +part --source rawcopy --sourceparams="file=agl-ivi-demo-flutter.ext4" diff --git a/meta-agl-ic-container/wic/agl-ic-container-rockchip.wks b/meta-agl-ic-container/wic/agl-ic-container-rockchip.wks new file mode 100644 index 00000000..5e7fe73e --- /dev/null +++ b/meta-agl-ic-container/wic/agl-ic-container-rockchip.wks @@ -0,0 +1,13 @@ +# short-description: Single partition rootfs with UUID and no bootloader +# long-description: Creates a partitioned image with a single partition in +# use and does not contain a bootloader. + +bootloader --ptable gpt +part --source rawcopy --sourceparams="file=idblock.img" --align 32 --no-table +part --source rawcopy --sourceparams="file=uboot.img" --part-name uboot --align 8192 +part --source rawcopy --sourceparams="file=boot.img" --part-name boot +part / --source rootfs --fstype=ext4 --label host --align 4096 --size 1024 +part --source rawcopy --sourceparams="file=guest-image-cluster-demo.ext4" +part --source rawcopy --sourceparams="file=guest-image-ivi-demo.ext4" +part --fstype=ext4 --label agl-qt-ivi --align 4096 --size 3072 +part --fstype=ext4 --label agl-flutter-ivi --align 4096 --size 3072 |