My goal is to create a custom Ubuntu Core image that boots, asks the user to setup the network connection and then displays a website using wpe-webkit-mir-kiosk.
I can already achieve the steps by using a pre-built Ubuntu Core Image and then running commands from a remote machine using ssh. However, this image is supposed to be rolled out to different stores where people are not always technically skilled enough to use ssh or do not have another machine available on hand.
When I follow the steps from “Ubuntu > Core > Docs > Build-an-image”, in the last step called “Boot an image” it says that on the first boot, the configuration page (console-conf) should pop up and ask the user to configure the network and login to their Ubuntu One account. This step happens when I use a pre-build Ubuntu Core image but not when using my own image.
When I boot, the system directly loads ubuntu-frame (gray screen) and then tries to load the page that I’ve setup in my gadget.yaml with wpe-webkit-mir-kiosk, but fails to load the page because there is no network connection. I only see the error page saying there is no internet connection from wpe-webkit-mir-kiosk.
How can I force the console-conf to show up on first boot?
I’ve built my custom Ubuntu Core image with this command:
ubuntu-image snap --snap=./tfs-gadget/pi-gadget-22-arm64/pi_22-2_arm64.snap -i 8G pi-model.model
My gadget.yaml looks like this:
volumes:
pi:
schema: mbr
bootloader: piboot
structure:
- name: ubuntu-seed
role: system-seed
filesystem: vfat
type: 0C
size: 3200M
content:
- source: $kernel:dtbs/dtbs/broadcom/
target: /
- source: $kernel:dtbs/dtbs/overlays/
target: /overlays
- source: boot-assets/
target: /
- name: ubuntu-boot
role: system-boot
filesystem: vfat
type: 0C
# whats the appropriate size?
size: 750M
# NOTE: ubuntu-save is optional for unencrypted devices like the pi, so
# this structure can be dropped in favor of a different partition for
# users who wish to instead use a different partition, since with MBR we
# are limited to only 4 primary partitions.
# TODO: look into switching over to GPT, the pi bootloader firmware now
# has support for this
- name: ubuntu-save
role: system-save
filesystem: ext4
type: 83,0FC63DAF-8483-4772-8E79-3D69D8477DE4
size: 32M
- name: ubuntu-data
role: system-data
filesystem: ext4
type: 83,0FC63DAF-8483-4772-8E79-3D69D8477DE4
# XXX: make auto-grow to partition
size: 1500M
defaults:
# wpe-webkit-mir-kiosk
01sV9tv4UTUQTU3jYsAF1gJ5qv7ZqGls:
url: "https://example.org"
and my pi-model.json looks like this:
{
"type": "model",
"series": "16",
"model": "ubuntu-core-22-pi-arm64",
"architecture": "arm64",
"authority-id": "sOAoXCEDygeb2A7qNSkYW8jEPBRHCq47",
"brand-id": "sOAoXCEDygeb2A7qNSkYW8jEPBRHCq47",
"timestamp": "2023-10-20T14:40:27+00:00",
"base": "core22",
"grade": "dangerous",
"snaps": [
{
"name": "pi",
"type": "gadget",
"default-channel": "22/stable",
"id": "YbGa9O3dAXl88YLI6Y1bGG74pwBxZyKg"
},
{
"name": "pi-kernel",
"type": "kernel",
"default-channel": "22/stable",
"id": "jeIuP6tfFrvAdic8DMWqHmoaoukAPNbJ"
},
{
"name": "core22",
"type": "base",
"default-channel": "latest/stable",
"id": "amcUKQILKXHHTlmSa7NMdnXSx02dNeeT"
},
{
"name": "mesa-core22",
"type": "app",
"default-channel": "latest/stable",
"id": "UijXdFgvIKp9ZZ6P4ijPAJHWZLtSKgWm"
},
{
"name": "core20",
"type": "base",
"default-channel": "latest/stable",
"id": "DLqre5XGLbDqg9jPtiAhRRjDuPVa5X1q"
},
{
"name": "mesa-core20",
"type": "app",
"default-channel": "latest/stable",
"id": "pDDsAW9ifzZnogboHJu3udsA6LsbGeGP"
},
{
"name": "snapd",
"type": "snapd",
"default-channel": "latest/stable",
"id": "PMrrV4ml8uWuEUDBT8dSGnKUYbevVhc4"
},
{
"name": "ubuntu-frame",
"type": "app",
"default-channel": "latest/stable",
"id": "BPZbvWzvoMTrpec4goCXlckLe2IhfthK"
},
{
"name": "wpe-webkit-mir-kiosk",
"type": "app",
"default-channel": "latest/stable",
"id": "01sV9tv4UTUQTU3jYsAF1gJ5qv7ZqGls"
}
]
}