Bare Metal Appliance Store¶
Bare Metal Appliance Store is a unique feature in the recovery firmware that simplifies the process of downloading and installing an operating system image.
Advantages:
- Download the latest available image for a distribution directly from the internet.
- Avoids having to use image writer software from another machine and having to use SD cards/USB flash etc.
- Self-hosting, no need for an external PXE server- Good for remote sites where the Ten64 is the sole internet connection (e.g using a cellular modem installed inside the Ten64)
 
- Some possibilies to script and customize the process for your needs
- Ability to setup your own image registry
Disadvantages:
- No access to distribution installer settings (e.g partitioning, locales, disk encryption)- Installed environment is generally similar to cloud server images
 
The bare metal appliance store shares the same backend as the μVirt appliance store - images listings are maintained in the same arm image registry.
Note that the default registry has the ability to mark images as compatible/incompatible with hardware so not all appliances wil be presented for install. (You can use appstore-list --show-all to show all appliances in the registry)
Demo - from power on to Debian login prompt¶
Usage¶
Once you have booted into the recovery firmware, make sure you have internet access (e.g use set-wan):
recovery# set-wan eth8
You can then use appstore-list to download the listings (if not already downloaded) and list available images:
recovery# appstore-list
Lists not downloaded, will attempt to download
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  9498  100  9498    0     0  12852      0 --:--:-- --:--:-- --:--:-- 12852
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100  1581  100  1581    0     0   2139      0 --:--:-- --:--:-- --:--:--  2142
registry        |appliance id                    |description
----------------|--------------------------------|--------------------------------
traverse        |traverse-openwrt-arm64          |Traverse OpenWrt build for ARM64 (disk devices)
traverse        |muvirt                          |muvirt (disk install)
officialdistro  |ubuntu-bionic                  *|Ubuntu Server 18.04 LTS ("Bionic Beaver")
officialdistro  |ubuntu-focal                   *|Ubuntu Server 20.04 LTS ("Focal Fossa")
officialdistro  |ubuntu-hirsute                 *|Ubuntu Server 21.04 ("Hirsute Hippo")
officialdistro  |opensuse-tumbleweed-jeos        |OpenSUSE Tumbleweed JeOS
officialdistro  |opensuse-leap-15.3-jeos         |OpenSUSE Leap 15.3 JeOS
officialdistro  |debian-stable                  *|Debian stable (10)
officialdistro  |debian-testing                 *|Debian testing (11)
officialdistro  |debian-unstable                *|Debian unstable (sid)
officialdistro  |fedora-34                      *|Fedora 34 Server/Cloud
[4 entries hidden due to incompatibility with this platform]
* = uses fixup manipulator to work on this platform
P = provisioner manipulator available
Then using baremetal-deploy you can write the image to a disk:
baremetal-deploy ubuntu-hirsute /dev/nvme0n1
Checking compatibility...
NOTE: A manipulator will be used to fix compatibility issues between this image and hardware platform
ID: ten64-apt-manipulator            by Traverse Technologies
URL: https://archive.traverse.com.au/pub/arm-image-registry/manipulators/apt/apt-manipulator.lua
Appliance to deploy: ubuntu-hirsute - Ubuntu Server 21.04 ("Hirsute Hippo")
Device to deploy to: /dev/nvme0n1 (119.24GiB)
Downloading image
Image URL: https://cloud-images.ubuntu.com/server/releases/hirsute/release-20210513/ubuntu-21.04-server-cloudimg-arm64.img
Size of the image download: 519.0625M
! ! ! ! ! ! ! ! ! !
About to write image to device /dev/nvme0n1 if you don't want this, Ctrl-C now!
! ! ! ! ! ! ! ! ! !
[  189.256871]  nbd0: p1 p15
[  208.370261] block nbd0: NBD_DISCONNECT
[  208.374117] block nbd0: Disconnected due to user request.
[  208.379524] block nbd0: shutting down sockets
When a "manipulator" script is available, it will create a cloud-config file with your desired defaults and do any required fixes:
What should the user password be? hunter2 Force user to change password on first login (y/n)? [n] Change system locale (e.g en_AU, de_DE)? [leave blank to keep default image locale] What should the hostname be? [leave blank to use appliance default] Set the default upstream interface? eth6 Use DHCP6 to get an IPv6 address? On a home network that uses router advertisments for IPv6, answer "n" (y/n) [n]
Setting default user password: hunter2
Hostname:
netintf: eth6
Invoking run-manipulate --userpw=hunter2 --netintf=eth6 /tmp/manipulator-script.lua /dev/nvme0n1
------------------------------------------------------
Using manipulator script: /tmp/manipulator-script.lua
Resizing rootfs and adding swap partition
Root partition type is ext4
Setting up target chroot
[  226.883748] EXT4-fs (nvme0n1p1): mounted filesystem with ordered data mode. Opts: (null)
Adding swap to fstab
Distribution is ubuntu
Disabling flash-kernel
Running apt-get update
Executing: chroot /mnt/deployroot/ /bin/sh -l -c 'apt-get update'
Installing extra module package (DPAA2 drivers)
Executing: chroot /mnt/deployroot/ /bin/sh -l -c 'FK_MACHINE=none apt-get -y install linux-image-extra-virtual'
Setting default kernel cmdline
Running update-grub
Executing: chroot /mnt/deployroot/ /bin/sh -l -c update-grub
Have network interface: eth6
Making plain GRUB the default EFI application (disable SHIM)
#cloud-config
password: hunter2
Done!
------------------------------------------------------
Manipulator finished
Ensuring managed mode is set for Gigabit Ethernet
Setting legacy management mode for SFP+
You can then reboot and enjoy your new operating system.
The default username is usually the distribution name (debian,fedora,ubuntu etc)
Note that cloud-init processing on first boot can take time on some distributions. If your first login attempt fails, wait until you see this line in the console:
cloud-init[1832]: Cloud-init v. 21.1-19-gbad84ad4-0ubuntu3 finished at Tue, 08 Jun 2021 05:13:37 +0000. Datasource DataSourceNoCloud [seed=/dev/nvme0n1p15][dsmode=ne