1 x86 Virtual Machines
Contents
1.1 Build Targets
1.1.1 Machines
VM1 |
Target YAML2 |
Machine3 |
Target Recipe(s)4 |
Running Media5 |
Installation Media6 |
---|---|---|---|---|---|
Common x86 |
|
|
|
Virtual HDD |
ISO image (Virtual CD) |
Common x86 with screen support |
|
|
|
Virtual HDD |
ISO image (Virtual CD) |
Common x86-64 |
|
|
|
Virtual HDD |
ISO image (Virtual CD) |
Common x86-64 with screen support |
|
|
|
Virtual HDD |
ISO image (Virtual CD) |
- 1
Target virtual machine.
- 2
Target YAML-file located in the
kas/targets
directory.- 3
Target machine name stored in the
MACHINE
BitBake variable for selected Target YAML.- 4
Recipes that will be built by default for the target. In Section 1.1.2, you can find list of supported recipes for the target images, which you can build in addition to the default recipes using optional
--target
option in build command (see Section 1.2).- 5
External or internal data storage where the TanoWrt operating system is running.
- 6
External storage device for which an installation image is generated. When booting from the Installation Media, the TanoWrt system is installed on the Running Media storage.
1.1.2 Images
Read-Only Root Filesystem Image |
Recipe7 |
Supported by Target(s) |
Description |
---|---|---|---|
|
|
All |
Standard TanoWrt image. |
|
All |
Standard TanoWrt image
and firmware upgrade
image. When building this image,
|
|
|
All |
Factory installation image for standard TanoWrt .
image. When building this image,
|
|
|
|
qemux86-screen.yml qemux86-64-screen.yml |
Standard TanoWrt image with Qt5 support. |
|
qemux86-screen.yml qemux86-64-screen.yml |
Standard TanoWrt image with Qt5 support
and firmware upgrade
image. When building this image,
|
|
|
qemux86-screen.yml qemux86-64-screen.yml |
Factory installation image for standard TanoWrt .
image with Qt5 support. When building this image,
|
- 7
Image recipe name. This name can be used as argument for
--target
build command option (see Section 1.2 section).
1.2 Build
Please read the common information on how to perform a TanoWrt images build and preparing the build environment in section “Building TanoWrt”.
See also
See section Section 1.1.1 to select the required target YAML file (
<target-yml>
).See section Section 1.1.2 to select the required root filesystem image recipe (
<target-recipe>
).See section Section 1.3 for detailed information about the produced build artifacts.
1.2.1 Examples
1.2.1.1 Build Default Image for Common x86-64 Virtual Machine
$ kas build targets/kas/qemux86-64.yml
1.2.1.2 Build Default Image for Common x86-64 with Screen Support Virtual Machine
$ kas build targets/kas/qemux86-64-screen.yml
1.2.1.3 Build Image with Qt5 for Common x86-64 with Screen Support Virtual Machine
$ kas build --target twimg-qt5 targets/kas/qemux86-64-screen.yml
1.3 Produced Build Artifacts
All produced build artifacts are stored in the ~/tanowrt/build/tanowrt-glibc/deploy/images/<MACHINE>
directory.
Refer to table Produced Build Artifacts for a description of some common (not all) build artifacts.
Artifact |
Target(s) |
Description |
---|---|---|
UEFI Firmware |
||
|
All |
Flash image with UEFI Firmware based on TianoCore. |
Bootloader |
||
|
qemux86.yml qemux86-screen.yml |
GRUB bootloader image for x86 architecture. |
|
qemux86-64.yml qemux86-64-screen.yml |
GRUB bootloader image for x86_64 architecture. |
|
All |
GRUB bootloader initial environment. |
|
All |
Startup script for UEFI shell |
|
All |
GRUB bootloader configuration file |
Linux Kernel |
||
|
All |
Compressed Linux kernel binary image. |
|
All |
Compressed Linux kernel binary image packed into an ext4 file system image. |
Images |
||
|
All |
Bootable image including all required partitions for booting and running the virtual machine. This image is ready to be run with QEMU or write to USB flash drive or HDD drive using the dd utility or similar. |
|
All |
Same as |
|
All |
Read-only root filesystem image (squashfs with LZO compression). |
|
All |
ISO factory installation image. |
|
All |
Root filesystem initramfs image for factory installtion image. This image is included in factory installation image as initramfs image. |
|
All |
Firmware upgrade image. |
Note
<MACHINE>
in the artifacts path and artifacts file names are replaced by the actual
value of the MACHINE
BitBake variable for the chosen target.
<rootfs-image>
is replaced by the actual read-only root filesystem image name.
For example, below is the lists of artifacts produced by the qemux86-64-screen.yml
target build. There are two types of listings here —
a complete listing, and a reduced listing without the symbolic links display.
[~/tanowrt/build/tanowrt-glibc/deploy/images/qemux86-64-screen]$ ls -gGh | grep -v -e "^l"
total 413M
-rw-r--r-- 2 9.2M Jul 29 16:26 bzImage--5.10.70+git0+7dda2a9f69-tano0.2.7.20.0-qemux86-64-screen-20220729132401.bin
-rw-r--r-- 2 12M Jul 29 16:26 bzImage-5.10.70+gitAUTOINC+7dda2a9f69-tano0.2.7.20.0-qemux86-64-screen.ext4
-rw-r--r-- 2 12M Jul 29 16:26 bzImage-qemux86-64-screen.ext4
drwxr-xr-x 2 4.0K Mar 15 14:12 grub
-rwxr-xr-x 2 1.9K Mar 15 14:12 grub.cfg
-rw-r--r-- 2 712K Mar 15 06:06 grub-efi-bootx64.efi
-rw-r--r-- 2 23 Mar 15 06:06 grub-efi-bootx64.efi.version
-rwxr-xr-x 2 1.0K Mar 15 14:12 grub-efi-grubenv
-rw-r--r-- 2 26 Mar 15 06:06 grub-efi-startup.nsh
-rw-r--r-- 2 7.3M Jul 29 16:26 modules--5.10.70+git0+7dda2a9f69-tano0.2.7.20.0-qemux86-64-screen-20220729132401.tgz
-rw-r--r-- 2 3.9M Mar 15 05:58 ovmf.code.qcow2
-rw-r--r-- 2 4.4M Mar 15 05:58 ovmf.qcow2
-rw-r--r-- 2 896K Mar 15 05:58 ovmf.vars.qcow2
-rw-r--r-- 2 5.6K Jul 29 16:27 twimg-default.env
-rw-r--r-- 2 1.7K Jul 29 16:27 twimg-default-qemux86-64-screen-20220729132401.qemuboot.conf
-rw-r--r-- 2 87K Jul 29 16:27 twimg-default-qemux86-64-screen-20220729132401.rootfs.manifest
-rw-r--r-- 2 37M Jul 29 16:27 twimg-default-qemux86-64-screen-20220729132401.rootfs.squashfs-lzo
-rw-r--r-- 2 24 Jul 29 16:28 twimg-default-qemux86-64-screen-20220729132401.rootfs.version
-rw-r--r-- 2 1.2G Jul 29 16:28 twimg-default-qemux86-64-screen-20220729132401.rootfs.wic
-rw-r--r-- 2 95M Jul 29 16:28 twimg-default-qemux86-64-screen-20220729132401.rootfs.wic.vmdk
-rw-r--r-- 2 273K Jul 29 16:27 twimg-default-qemux86-64-screen-20220729132401.testdata.json
-rw-r--r-- 2 6.0K Jul 4 22:03 twimg-default-swu-factory.env
-rw-r--r-- 2 71M Jul 29 16:28 twimg-default-swu-factory-qemux86-64-screen-20220729132401.iso
-rw-r--r-- 2 273 Jul 4 22:03 twimg-default-swu-factory-qemux86-swu-factory.wks
-rw-r--r-- 2 50M Jul 29 16:28 twimg-default-swu-qemux86-64-screen-20220729132401.swu
-rw-r--r-- 2 2.0K Jul 29 16:27 twimg-default-tanowrt-image-qemux86.wks
-rw-r--r-- 2 1.7K Jul 29 16:26 twimg-initramfs-swu-factory-qemux86-64-screen-20220729132401.qemuboot.conf
-rw-r--r-- 2 11M Jul 29 16:26 twimg-initramfs-swu-factory-qemux86-64-screen-20220729132401.rootfs.cpio.gz
-rw-r--r-- 2 2.9K Jul 29 16:26 twimg-initramfs-swu-factory-qemux86-64-screen-20220729132401.rootfs.manifest
-rw-r--r-- 2 24 Jul 29 16:26 twimg-initramfs-swu-factory-qemux86-64-screen-20220729132401.rootfs.version
-rw-r--r-- 2 278K Jul 29 16:26 twimg-initramfs-swu-factory-qemux86-64-screen-20220729132401.testdata.json
[~/tanowrt/build/tanowrt-glibc/deploy/images/qemux86-64-screen]$ ls -gGh
total 413M
lrwxrwxrwx 2 84 Jul 29 16:26 bzImage -> bzImage--5.10.70+git0+7dda2a9f69-tano0.2.7.20.0-qemux86-64-screen-20220729132401.bin
-rw-r--r-- 2 9.2M Jul 29 16:26 bzImage--5.10.70+git0+7dda2a9f69-tano0.2.7.20.0-qemux86-64-screen-20220729132401.bin
-rw-r--r-- 2 12M Jul 29 16:26 bzImage-5.10.70+gitAUTOINC+7dda2a9f69-tano0.2.7.20.0-qemux86-64-screen.ext4
lrwxrwxrwx 2 84 Jul 29 16:26 bzImage-qemux86-64-screen.bin -> bzImage--5.10.70+git0+7dda2a9f69-tano0.2.7.20.0-qemux86-64-screen-20220729132401.bin
-rw-r--r-- 2 12M Jul 29 16:26 bzImage-qemux86-64-screen.ext4
drwxr-xr-x 2 4.0K Mar 15 14:12 grub
-rwxr-xr-x 2 1.9K Mar 15 14:12 grub.cfg
-rw-r--r-- 2 712K Mar 15 06:06 grub-efi-bootx64.efi
-rw-r--r-- 2 23 Mar 15 06:06 grub-efi-bootx64.efi.version
-rwxr-xr-x 2 1.0K Mar 15 14:12 grub-efi-grubenv
-rw-r--r-- 2 26 Mar 15 06:06 grub-efi-startup.nsh
-rw-r--r-- 2 7,3M Jul 29 16:26 modules--5.10.70+git0+7dda2a9f69-tano0.2.7.20.0-qemux86-64-screen-20220729132401.tgz
lrwxrwxrwx 2 84 Jul 29 16:26 modules-qemux86-64-screen.tgz -> modules--5.10.70+git0+7dda2a9f69-tano0.2.7.20.0-qemux86-64-screen-20220729132401.tgz
-rw-r--r-- 2 3.9M Mar 15 05:58 ovmf.code.qcow2
-rw-r--r-- 2 4.4M Mar 15 05:58 ovmf.qcow2
-rw-r--r-- 2 896K Mar 15 05:58 ovmf.vars.qcow2
-rw-r--r-- 2 5.6K Jul 29 16:27 twimg-default.env
-rw-r--r-- 2 1.7K Jul 29 16:27 twimg-default-qemux86-64-screen-20220729132401.qemuboot.conf
-rw-r--r-- 2 87K Jul 29 16:27 twimg-default-qemux86-64-screen-20220729132401.rootfs.manifest
-rw-r--r-- 2 37M Jul 29 16:27 twimg-default-qemux86-64-screen-20220729132401.rootfs.squashfs-lzo
-rw-r--r-- 2 24 Jul 29 16:28 twimg-default-qemux86-64-screen-20220729132401.rootfs.version
-rw-r--r-- 2 1.2G Jul 29 16:28 twimg-default-qemux86-64-screen-20220729132401.rootfs.wic
-rw-r--r-- 2 95M Jul 29 16:28 twimg-default-qemux86-64-screen-20220729132401.rootfs.wic.vmdk
-rw-r--r-- 2 273K Jul 29 16:27 twimg-default-qemux86-64-screen-20220729132401.testdata.json
lrwxrwxrwx 2 67 Jul 29 16:27 twimg-default-qemux86-64-screen.manifest -> twimg-default-qemux86-64-screen-20220729132401.rootfs.manifest
lrwxrwxrwx 2 65 Jul 29 16:27 twimg-default-qemux86-64-screen.qemuboot.conf -> twimg-default-qemux86-64-screen-20220729132401.qemuboot.conf
lrwxrwxrwx 2 71 Jul 29 16:27 twimg-default-qemux86-64-screen.squashfs-lzo -> twimg-default-qemux86-64-screen-20220729132401.rootfs.squashfs-lzo
lrwxrwxrwx 2 65 Jul 29 16:27 twimg-default-qemux86-64-screen.testdata.json -> twimg-default-qemux86-64-screen-20220729132401.testdata.json
lrwxrwxrwx 2 66 Jul 29 16:28 twimg-default-qemux86-64-screen.version -> twimg-default-qemux86-64-screen-20220729132401.rootfs.version
lrwxrwxrwx 2 62 Jul 29 16:28 twimg-default-qemux86-64-screen.wic -> twimg-default-qemux86-64-screen-20220729132401.rootfs.wic
lrwxrwxrwx 2 67 Jul 29 16:28 twimg-default-qemux86-64-screen.wic.vmdk -> twimg-default-qemux86-64-screen-20220729132401.rootfs.wic.vmdk
-rw-r--r-- 2 6.0K Jul 4 22:03 twimg-default-swu-factory.env
-rw-r--r-- 2 71M Jul 29 16:28 twimg-default-swu-factory-qemux86-64-screen-20220729132401.iso
lrwxrwxrwx 2 67 Jul 29 16:28 twimg-default-swu-factory-qemux86-64-screen.iso -> twimg-default-swu-factory-qemux86-64-screen-20220729132401.iso
-rw-r--r-- 2 273 Jul 4 22:03 twimg-default-swu-factory-qemux86-swu-factory.wks
-rw-r--r-- 2 50M Jul 29 16:28 twimg-default-swu-qemux86-64-screen-20220729132401.swu
lrwxrwxrwx 2 59 Jul 29 16:28 twimg-default-swu-qemux86-64-screen.swu -> twimg-default-swu-qemux86-64-screen-20220729132401.swu
-rw-r--r-- 2 2.0K Jul 29 16:27 twimg-default-tanowrt-image-qemux86.wks
-rw-r--r-- 2 1.7K Jul 29 16:26 twimg-initramfs-swu-factory-qemux86-64-screen-20220729132401.qemuboot.conf
-rw-r--r-- 2 11M Jul 29 16:26 twimg-initramfs-swu-factory-qemux86-64-screen-20220729132401.rootfs.cpio.gz
-rw-r--r-- 2 2,9K Jul 29 16:26 twimg-initramfs-swu-factory-qemux86-64-screen-20220729132401.rootfs.manifest
-rw-r--r-- 2 24 Jul 29 16:26 twimg-initramfs-swu-factory-qemux86-64-screen-20220729132401.rootfs.version
-rw-r--r-- 2 278K Jul 29 16:26 twimg-initramfs-swu-factory-qemux86-64-screen-20220729132401.testdata.json
lrwxrwxrwx 2 83 Jul 29 16:26 twimg-initramfs-swu-factory-qemux86-64-screen.cpio.gz -> twimg-initramfs-swu-factory-qemux86-64-screen-20220729132401.rootfs.cpio.gz
lrwxrwxrwx 2 84 Jul 29 16:26 twimg-initramfs-swu-factory-qemux86-64-screen.manifest -> twimg-initramfs-swu-factory-qemux86-64-screen-20220729132401.rootfs.manifest
lrwxrwxrwx 2 82 Jul 29 16:26 twimg-initramfs-swu-factory-qemux86-64-screen.qemuboot.conf -> twimg-initramfs-swu-factory-qemux86-64-screen-20220729132401.qemuboot.conf
lrwxrwxrwx 2 82 Jul 29 16:26 twimg-initramfs-swu-factory-qemux86-64-screen.testdata.json -> twimg-initramfs-swu-factory-qemux86-64-screen-20220729132401.testdata.json
lrwxrwxrwx 2 83 Jul 29 16:26 twimg-initramfs-swu-factory-qemux86-64-screen.version -> twimg-initramfs-swu-factory-qemux86-64-screen-20220729132401.rootfs.version
1.4 Booting and Running
To run the built virtual machine image in QEMU you should run the command:
$ kas shell -c "runqemu <MACHINE>" kas/targets/<TARGET_YAML>
Where <MACHINE>
is a target machine name for required target
and <TARGET_YAML>
is a target YAML-file located in the kas/targets
directory.
You can find values for <MACHINE>
and <TARGET_YAML>
in the table Table 1.1.
For example, to start virtual machine for qemux86-64.yml
target you need
to run the following command:
$ kas shell -c "runqemu qemux86-64" kas/targets/qemux86-64.yml
When the virtual machine boots, you can log in using the default credentials or access via network to WebUI.
For running virtual machine with screen support you also need to set proper value
to environment variable DISPLAY
. For example, for qemux86-64-screen.yml
target:
$ kas shell -c "DISPLAY:=0 runqemu qemux86-64-screen" kas/targets/qemux86-64-screen.yml
See the following figures, showing the boot up process of the qemux86-64-screen
virtual machine on the QEMU virtual screen.

Fig. 1.1 Booting in QEMU 1/5

Fig. 1.2 Booting in QEMU 2/5

Fig. 1.3 Booting in QEMU 3/5

Fig. 1.4 Booting in QEMU 4/5

Fig. 1.5 Booting in QEMU 5/5
See also
See Running TanoWrt Image Inside Oracle VirtualBox for details about running built x86 virtual machine in Oracle VirtualBox.
1.5 Default Network Configuration
By default eth0
interface are joined into a bridge
(br-lan
interface). Bridge (br-lan
) configured with static IP address 192.168.7.2/24 with
enabled DHCP server.
The eth0
interface has enabled LLDP by default.
Default configuration /etc/config/network
for qemux86-64-screen
machine:
[root@tanowrt ~]# cat /etc/config/network
config interface 'loopback'
option device 'lo'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'
config device
option name 'br-lan'
option type 'bridge'
option stp '1'
list ports 'eth0'
config interface 'lan'
option proto 'static'
option ipaddr '192.168.7.2'
option netmask '255.255.255.0'
option gateway '192.168.7.1'
option ip6assign '60'
option device 'br-lan'
config globals 'globals'
option ula_prefix 'fd05:b980:c78a::/48'
1.6 Web User Interface
The WebUI can be accessed via Ethernet port or USB network connection through HTTP(s) protocol. You must see something like this in browser after you logged in:

Fig. 1.6 LuCI WebUI Login Page

Fig. 1.7 LuCI WebUI Overview Page
1.7 Firmware Upgrade
No special information about firmware upgrade.
Use produced .swu
artifact for upgrading running system.
See also
See common instructions in Firmware Upgrade section.