Run Ubuntu as the User VM¶
Prerequisites¶
This tutorial assumes you have already set up the ACRN Service VM on an Intel NUC Kit. If you have not, refer to the following instructions:
- Install a Clear Linux OS on your NUC kit.
- Follow the instructions at Use the script to set up ACRN automatically to set up the Service VM automatically on your NUC kit. Follow steps 1 - 4.
Before you start this tutorial, make sure the KVM tools are installed on the development machine and set IGD Aperture Size to 512 in the BIOS settings (refer to Figure 51). Connect two monitors to your NUC:
$ sudo apt install qemu-kvm libvirt-clients libvirt-daemon-system bridge-utils virt-manager ovmf
We installed these KVM tools on Ubuntu 18.04; refer to the table below for our hardware configurations.
Hardware Configurations¶
Platform (Intel x86) | Product/Kit Name | Hardware | Description | ||
---|---|---|---|---|
Kaby Lake | NUC7i7DNH | Processor |
|
|
Graphics |
|
|||
System memory |
|
|||
Storage capabilities |
|
|||
PC (development machine) | Processor |
|
||
System memory |
|
|||
Storage capabilities |
|
Validated Versions¶
- Clear Linux version: 30920
- ACRN hypervisor tag: acrn-2019w36.2-140000p
- Service VM Kernel version: 4.19.68-84.iot-lts2018-sos
Build the Ubuntu KVM Image¶
This tutorial uses the Ubuntu 18.04 desktop ISO as the base image.
Download the Ubuntu 18.04 desktop ISO on your development machine:
Install Ubuntu via the virt-manager tool:
$ sudo virt-manager
Verify that you can see the main menu as shown in Figure 52 below.
Right-click QEMU/KVM and select New.
Choose Local install media (ISO image or CDROM) and then click Forward. A Create a new virtual machine box displays, as shown in Figure 53 below.
- Choose Use ISO image and click Browse - Browse Local. Select the ISO which you get from Step 2 above.
- Choose the OS type: Linux, Version: Ubuntu 18.04 LTS and then click Forward.
- Select Forward if you do not need to make customized CPU settings.
- Choose Create a disk image for virtual machine. Set the storage to 20 GB or more if necessary and click Forward.
- Rename the image if you desire. You must check the customize configuration before install option before you finish all stages.
Verify that you can see the Overview screen as set up, as shown in Figure 54 below:
Complete the Ubuntu installation. Verify that you have set up the disk partition as follows:
- /dev/vda1: EFI System Partition
- /dev/vda2: File System Partition
Upon installation completion, click Restart Now to make sure the Ubuntu OS boots successfully.
The KVM image is created in the
/var/lib/libvirt/images
folder. Convert the gcow2 format to img as the root user:$ cd ~ && mkdir ubuntu_images && cd ubuntu_images $ sudo qemu-img convert -f qcow2 -O raw /var/lib/libvirt/images/ubuntu18.04.qcow2 uos.img
Launch the Ubuntu Image as the User VM¶
Modify the launch_win.sh script in order to launch Ubuntu as the User VM.
Note
This tutorial assumes SATA is the default boot drive; replace “/dev/sda1” mentioned below with “/dev/nvme0n1p1” if you are using SSD.
Copy the uos.img to your NUC:
# scp ~/ubuntu_images/uos.img user_name@ip_address:~/uos.img
Log in to the ACRN Service VM, and create a launch script from the existing script:
$ cd ~ $ cp /usr/share/acrn/samples/nuc/launch_win.sh ./launch_ubuntu.sh $ sed -i "s/win10-ltsc.img/uos.img/" launch_ubuntu.sh
Assign USB ports to the Ubuntu VM in order to use the mouse and keyboard before the launch:
$ vim launch_ubuntu.sh <Add below as the acrn-dm parameter> -s 7,xhci,1-2:1-3:1-4:1-5 \
Note
This will assign all USB ports (2 front and 2 rear) to the User VM. If you want to only assign the USB ports at the front, use “-s 7,xhci,1-2:1-3 ” instead. Refer to Device Model Parameters for ACRN for more information.
Modify acrn.conf and reboot the Service VM:
$ sudo mount /dev/sda1 /mnt $ sudo sed -i "s/0x01010F/0x010101/" /mnt/loader/entries/acrn.conf $ sudo sed -i "s/0x011111110000/0x011100001111/" /mnt/loader/entries/acrn.conf $ sed -i 3"s/$/ i915.enable_conformance_check=0/" /mnt/loader/entries/acrn.conf $ sudo sync && sudo umount /mnt && reboot
Launch the Ubuntu VM after logging in to the Service VM:
$ sudo sh launch_ubuntu.sh
View the Ubuntu desktop on the secondary monitor, as shown in Figure 55 below:
Enable the Ubuntu Console instead of the User Interface¶
After the Ubuntu VM reboots, follow the steps below to enable the Ubuntu VM console so you can make command-line entries directly from it.
Log in to the Ubuntu user interface and launch Terminal from the Application list.
Add “console=ttyS0,115200” to the grub file on the terminal:
$ sudo vim /etc/default/grub <Add console=ttyS0,115200> GRUB_CMDLINE_LINUX="console=ttyS0,115200" $ sudo update-grub $ sudo poweroff
Modify the launch script to enable virtio-console for the Ubuntu VM:
$ vim ~/launch_ubuntu.sh <add below to the acrn-dm command line> -s 9,virtio-console,@stdio:stdio_port \
Log in to the Service VM and launch Ubuntu. Verify that you see the console output shown in Figure 56 below: