1.. _gsg: 2.. _rt_industry_ubuntu_setup: 3.. _getting-started-building: 4 5Getting Started Guide 6##################### 7 8This guide will help you get started with ACRN. We'll show how to prepare a 9build environment on your development computer. Then we'll walk through the 10steps to set up a simple ACRN configuration on a target system. The 11configuration is an ACRN shared scenario and consists of an ACRN hypervisor, 12Service VM, and one post-launched User VM as illustrated in this figure: 13 14.. image:: ./images/gsg_scenario-1-0.75x.png 15 16Throughout this guide, you will be exposed to some of the tools, processes, and 17components of the ACRN project. Let's get started. 18 19.. _gsg-prereq: 20 21Prerequisites 22************** 23 24You will need two machines: a development computer and a target system. The 25development computer is where you configure and build ACRN and your application. 26The target system is where you deploy and run ACRN and your application. 27 28.. image:: ./images/gsg_host_target.png 29 30Before you begin, make sure your machines have the following prerequisites: 31 32**Development computer**: 33 34* Hardware specifications 35 36 - A PC with Internet access (A fast system with multiple cores and 16GB 37 memory or more will make the builds go faster.) 38 39* Software specifications 40 41 - Ubuntu Desktop 22.04 LTS (ACRN development is not supported on Windows.) 42 43**Target system**: 44 45* Hardware specifications 46 47 - Target board (see :ref:`hardware_tested`) 48 - Ubuntu Desktop 22.04 LTS bootable USB disk: download the latest `Ubuntu 49 Desktop 22.04 LTS ISO image <https://releases.ubuntu.com/jammy/>`__ and 50 follow the `Ubuntu documentation 51 <https://ubuntu.com/tutorials/create-a-usb-stick-on-ubuntu#1-overview>`__ 52 for creating the USB disk. 53 - USB keyboard and mouse 54 - Monitor 55 - Ethernet cable and Internet access 56 - Local storage device (NVMe or SATA drive, for example). We recommend having 57 40GB or more of free space. 58 59.. note:: 60 If you're working behind a corporate firewall, you'll likely need to 61 configure a proxy for accessing the Internet, if you haven't done so already. 62 While some tools use the environment variables ``http_proxy`` and ``https_proxy`` to 63 get their proxy settings, some use their own configuration files, most 64 notably ``apt`` and ``git``. If a proxy is needed and it's not configured, 65 commands that access the Internet may time out and you may see errors such 66 as "unable to access ..." or "couldn't resolve host ...". 67 68.. _gsg-dev-computer: 69 70.. rst-class:: numbered-step 71 72Prepare the Development Computer 73******************************** 74 75To set up the ACRN build environment on the development computer: 76 77#. On the development computer, run the following command to confirm that Ubuntu 78 Desktop 22.04 is running: 79 80 .. code-block:: bash 81 82 cat /etc/os-release 83 84 If you have an older version, see `Ubuntu documentation 85 <https://ubuntu.com/tutorials/install-ubuntu-desktop#1-overview>`__ to 86 install a new OS on the development computer. 87 88#. Download the apt information database about all available package updates for 89 your Ubuntu release. We'll need it to get the tools and libraries used 90 for ACRN builds: 91 92 .. code-block:: bash 93 94 sudo apt update 95 96 This next command upgrades packages already installed on your system with 97 minor updates and security patches. This command is optional as there is a 98 small risk that upgrading your system software can introduce unexpected 99 issues: 100 101 .. code-block:: bash 102 103 sudo apt upgrade -y #optional command to upgrade system 104 105#. Create a working directory: 106 107 .. code-block:: bash 108 109 mkdir -p ~/acrn-work 110 111#. Install the necessary ACRN build tools: 112 113 .. code-block:: bash 114 115 sudo apt install -y gcc git make vim libssl-dev libpciaccess-dev uuid-dev \ 116 libsystemd-dev libevent-dev libxml2-dev libxml2-utils libusb-1.0-0-dev \ 117 python3 python3-pip libblkid-dev e2fslibs-dev \ 118 pkg-config libnuma-dev libcjson-dev liblz4-tool flex bison \ 119 xsltproc clang-format bc libpixman-1-dev libsdl2-dev libegl-dev \ 120 libgles-dev libdrm-dev gnu-efi libelf-dev liburing-dev \ 121 build-essential git-buildpackage devscripts dpkg-dev equivs lintian \ 122 apt-utils pristine-tar dh-python acpica-tools python3-tqdm \ 123 python3-elementpath python3-lxml python3-xmlschema python3-defusedxml 124 125 126#. Get the ACRN hypervisor and ACRN kernel source code, and check out the 127 current release branch. 128 129 .. code-block:: bash 130 131 cd ~/acrn-work 132 git clone https://github.com/projectacrn/acrn-hypervisor.git 133 cd acrn-hypervisor 134 git checkout release_3.3 135 136 cd .. 137 git clone https://github.com/projectacrn/acrn-kernel.git 138 cd acrn-kernel 139 git checkout release_3.3 140 141.. _gsg-board-setup: 142 143.. rst-class:: numbered-step 144 145Prepare the Target and Generate a Board Configuration File 146*************************************************************** 147 148In this step, you will use the **Board Inspector** to generate a board 149configuration file. 150 151A **board configuration file** is an XML file that stores hardware-specific 152information extracted from the target system. The file is used to configure the 153ACRN hypervisor, because each hypervisor instance is specific to your target 154hardware. 155 156.. important:: 157 158 Before running the Board Inspector, you must set up your target hardware and 159 BIOS exactly as you want it, including connecting all peripherals, 160 configuring BIOS settings, and adding memory and PCI devices. For example, 161 you must connect all USB devices you intend to access; otherwise, the Board Inspector will not 162 detect these USB devices for passthrough. If you change the hardware or BIOS 163 configuration, or add or remove USB devices, you must run the Board Inspector 164 again to generate a new board configuration file. 165 166Set Up the Target Hardware 167============================ 168 169To set up the target hardware environment: 170 171#. Connect all USB devices, such as a mouse and keyboard. 172 173#. Connect the monitor and power supply cable. 174 175#. Connect the target system to the LAN with the Ethernet cable or wifi. 176 177Example of a target system with cables connected: 178 179.. image:: ./images/gsg_asus_minipc64.png 180 :align: center 181 182Install OS on the Target 183============================ 184 185The target system needs Ubuntu Desktop 22.04 LTS to run the Board Inspector 186tool. You can read the full instructions to download, create a bootable USB 187drive, and `Install Ubuntu desktop 188<https://ubuntu.com/tutorials/install-ubuntu-desktop#1-overview>`_ on the Ubuntu 189site. We'll provide a summary here: 190 191To install Ubuntu 22.04: 192 193#. Insert the Ubuntu bootable USB disk into the target system. 194 195#. Power on the target system, and select the USB disk as the boot device 196 in the UEFI 197 menu. Note that the USB disk label presented in the boot options depends on 198 the brand/make of the USB drive. (You will need to configure the BIOS to boot 199 off the USB device first, if that option isn't available.) 200 201#. After selecting the language and keyboard layout, select the **Normal 202 installation** and **Download updates while installing Ubuntu** (downloading 203 updates requires the target to have an Internet connection). 204 205 .. image:: ./images/gsg_ubuntu_install_01.png 206 :align: center 207 208#. Use the check boxes to choose whether you'd like to install Ubuntu alongside 209 another operating system (if one already exists), or delete your existing operating system and 210 replace it with Ubuntu: 211 212 .. image:: ./images/gsg_ubuntu_install_02.png 213 :align: center 214 215#. Complete the Ubuntu installation by choosing your geographical location, 216 and creating your login details. We use ``acrn`` as the username in this guide. 217 218 If you choose a username other than ``acrn``, be sure to use 219 that username in the command examples and paths shown in this guide. 220 221#. After the Ubuntu installation completes on the target and you reboot the 222 system, don't forget to update the system software (as Ubuntu recommends): 223 224 .. code-block:: bash 225 226 sudo apt update 227 sudo apt upgrade -y 228 229#. It's convenient to use the network to transfer files between the development 230 computer and target system, so we recommend installing the openssh-server 231 package on the target system:: 232 233 sudo apt install -y openssh-server 234 235 This command will install and start the ssh-server service on the target 236 system. We'll need to know the target system's IP address to make a 237 connection from the development computer, so find it now with this command:: 238 239 hostname -I | cut -d ' ' -f 1 240 241#. Make a working directory on the target system that we'll use later:: 242 243 mkdir -p ~/acrn-work 244 245Configure Target BIOS Settings 246=============================== 247 248#. Boot your target and enter the BIOS configuration editor. 249 250 Tip: When you are booting your target, you'll see an option (quickly) to 251 enter the BIOS configuration editor, typically by pressing :kbd:`F2` 252 or :kbd:`DEL` during the boot and before the GRUB menu (or Ubuntu login 253 screen) appears. If you are not quick enough, you can still choose 254 ``UEFI settings`` in the GRUB menu or just reboot the system to try again. 255 256#. Configure these BIOS settings: 257 258 * Enable **VMX** (Virtual Machine Extensions, which provide hardware 259 assist for CPU virtualization). 260 * Enable **VT-d** (Intel Virtualization Technology for Directed I/O, which 261 provides additional support for managing I/O virtualization). 262 * Disable **Secure Boot**. This setting simplifies the steps for this example. 263 264 The names and locations of the BIOS settings depend on the target 265 hardware and BIOS vendor and version. 266 267Generate a Board Configuration File 268========================================= 269 270#. Build the Board Inspector Debian package on the development computer: 271 272 a. Move to the development computer. 273 274 #. On the development computer, go to the ``acrn-hypervisor`` directory: 275 276 .. code-block:: bash 277 278 cd ~/acrn-work/acrn-hypervisor 279 280 #. Build the Board Inspector Debian package: 281 282 .. code-block:: bash 283 284 debian/debian_build.sh clean && debian/debian_build.sh board_inspector 285 286 In a few seconds, the build generates a board_inspector Debian package in the 287 parent (``~/acrn-work``) directory. 288 289#. Use the ``scp`` command to copy the board inspector Debian package from your 290 development computer to the ``/tmp`` directory on the target system. Replace 291 ``10.0.0.200`` with the target system's IP address you found earlier:: 292 293 scp ~/acrn-work/python3-acrn-board-inspector*.deb acrn@10.0.0.200:/tmp 294 295#. Now that we've got the Board Inspector Debian package on the target system, install it there: 296 297 .. code-block:: bash 298 299 sudo apt install -y /tmp/python3-acrn-board-inspector*.deb 300 301#. Reboot the target system: 302 303 .. code-block:: bash 304 305 sudo reboot 306 307#. Run the Board Inspector on the target system to generate the board configuration file. This 308 example uses the parameter ``my_board`` as the file name. The Board Inspector 309 can take a few minutes to scan your target system and create the board XML 310 file with your target system's information. 311 312 .. code-block:: bash 313 314 cd ~/acrn-work 315 sudo acrn-board-inspector my_board 316 317 .. note:: 318 319 If you get an error that mentions Pstate and editing the GRUB 320 configuration, reboot the system and run this command again. 321 322#. Confirm that the board configuration file ``my_board.xml`` was generated in 323 the current directory: 324 325 .. code-block:: bash 326 327 ls ./my_board.xml 328 329#. From your development computer, use the ``scp`` command to copy the board 330 configuration file on your target system back to the ``~/acrn-work`` 331 directory on your development computer. Replace ``10.0.0.200`` with the 332 target system's IP address you found earlier:: 333 334 scp acrn@10.0.0.200:~/acrn-work/my_board.xml ~/acrn-work/ 335 336.. _gsg-dev-setup: 337 338.. rst-class:: numbered-step 339 340Generate a Scenario Configuration File and Launch Script 341******************************************************** 342 343In this step, you will download, install, and use the `ACRN Configurator 344<https://github.com/projectacrn/acrn-hypervisor/releases/download/v3.3/acrn-configurator-3.3.deb>`__ 345to generate a scenario configuration file and launch script. 346 347A **scenario configuration file** is an XML file that holds the parameters of 348a specific ACRN configuration, such as the number of VMs that can be run, 349their attributes, and the resources they have access to. 350 351A **launch script** is a shell script that is used to configure and create a 352post-launched User VM. Each User VM has its own launch script. 353 354#. On the development computer, download and install the ACRN Configurator 355 Debian package: 356 357 .. code-block:: bash 358 359 cd ~/acrn-work 360 wget https://github.com/projectacrn/acrn-hypervisor/releases/download/v3.3/acrn-configurator-3.3.deb -P /tmp 361 362 If you already have a previous version of the acrn-configurator installed, 363 you should first remove it: 364 365 .. code-block:: bash 366 367 sudo apt purge acrn-configurator 368 369 Then you can install this new version: 370 371 .. code-block:: bash 372 373 sudo apt install -y /tmp/acrn-configurator-3.3.deb 374 375#. Launch the ACRN Configurator: 376 377 .. code-block:: bash 378 379 acrn-configurator 380 381#. Under **Start a new configuration**, confirm that the working folder is 382 ``<path to>/acrn-work/MyConfiguration``. Click **Use This Folder**. 383 384 .. image:: images/configurator-newconfig.png 385 :align: center 386 :class: drop-shadow 387 388#. Import your board configuration file as follows: 389 390 a. In the **1. Import a board configuration file** panel, click **Browse for 391 file**. 392 393 #. Browse to ``~/acrn-work/my_board.xml`` and click **Open**. 394 395 #. Click **Import Board File**. 396 397 .. image:: images/configurator-board01.png 398 :align: center 399 :class: drop-shadow 400 401 The ACRN Configurator makes a copy of your board file, changes the file 402 extension to ``.board.xml``, and saves the file to the working folder as 403 ``my_board.board.xml``. 404 405#. Create a new scenario as follows: 406 407 a. In the **2. Create new or import an existing scenario** panel, click 408 **Create Scenario**. 409 410 .. image:: images/configurator-newscenario01.png 411 :align: center 412 :class: drop-shadow 413 414 #. In the dialog box, confirm that **Shared (Post-launched VMs only)** is 415 selected. 416 417 #. Confirm that one Service VM and one post-launched VM are selected. 418 419 #. Click **Ok**. 420 421 .. image:: images/configurator-newscenario02.png 422 :align: center 423 :class: drop-shadow 424 425#. In the **3. Configure settings for scenario and launch scripts** panel, 426 the scenario's configurable items appear. Feel free to look through all 427 the available configuration settings. This is where you can change the 428 settings to meet your application's particular needs. But for now, you 429 will update only a few settings for functional and educational purposes. 430 431 You may see some error messages from the Configurator, such as shown here: 432 433 .. image:: images/gsg-config-errors.png 434 :align: center 435 :class: drop-shadow 436 437 The Configurator does consistency and validation checks when you load or save 438 a scenario. Notice the Hypervisor and VM1 tabs both have an error icon, 439 meaning there are issues with configuration options in two areas. Since the 440 Hypervisor tab is currently highlighted, we're seeing an issue we can resolve 441 on the Hypervisor settings. Once we resolve all the errors and save the 442 scenario (forcing a full validation of the schema again), these error 443 indicators and messages will go away. 444 445#. Click the **Hypervisor Global Settings > Basic Parameters** tab, select the 446 ``Debug`` build type, and select the serial console port (the example shows 447 ``/dev/ttyS0``, but yours may be different). If your board doesn't have a 448 serial console port, select the ``Release`` build type. The Debug build type 449 requires a serial console port (and is reporting an error because a serial 450 console port hasn't been configured yet). 451 452 .. image:: images/configurator-buildtype.png 453 :align: center 454 :class: drop-shadow 455 456#. Click the **VM0 ServiceVM > Basic Parameters** tab and change the VM name 457 to ``ACRN_Service_VM`` for this example. 458 459 .. image:: images/configurator-servicevm.png 460 :align: center 461 :class: drop-shadow 462 463#. Configure the post-launched VM as follows: 464 465 a. Click the **VM1 Post-launched > Basic Parameters** tab and change the VM 466 name to ``POST_STD_VM1`` for this example. 467 468 #. Confirm that the **VM type** is ``Standard``. In the previous step, 469 ``STD`` in the VM name is short for Standard. 470 471 #. Scroll down to **Memory size (MB)** and change the value to ``2048``. For 472 this example, we will use Ubuntu 22.04 to boot the post-launched VM. 473 Ubuntu 22.04 needs at least 2048 MB to boot. 474 475 #. For **Physical CPU affinity**, select pCPU ID ``0``, then click **+** and 476 select pCPU ID ``1`` to affine (or pin) the VM to CPU cores 0 and 1. (That will 477 resolve the missing physical CPU affinity assignment error.) 478 479 #. For **Virtio console device**, click **+** to add a device and keep the 480 default options. 481 482 #. For **Virtio block device**, click **+** and enter 483 ``/home/acrn/acrn-work/ubuntu-22.04.4-desktop-amd64.iso``. This parameter 484 specifies the VM's OS image and its location on the target system. Later 485 in this guide, you will save the ISO file to that directory. (If you used 486 a different username when installing Ubuntu on the target system, here's 487 where you'll need to change the ``acrn`` username to the username you used.) 488 489 .. image:: images/configurator_postvm01.png 490 :align: center 491 :class: drop-shadow 492 493 .. image:: images/configurator_postvm02.png 494 :align: center 495 :class: drop-shadow 496 497#. Scroll up to the top of the panel and click **Save Scenario And Launch 498 Scripts** to generate the scenario configuration file and launch script. 499 500#. Click the **x** in the upper-right corner to close the ACRN 501 Configurator. 502 503#. Confirm that the scenario configuration file ``scenario.xml`` appears in the 504 working directory:: 505 506 ls ~/acrn-work/MyConfiguration/scenario.xml 507 508#. Confirm that the launch script appears in the 509 working directory:: 510 511 ls ~/acrn-work/MyConfiguration/launch_user_vm_id1.sh 512 513.. _gsg_build: 514 515.. rst-class:: numbered-step 516 517Build ACRN 518********** 519 520#. On the development computer, build the ACRN hypervisor: 521 522 .. code-block:: bash 523 524 cd ~/acrn-work/acrn-hypervisor 525 debian/debian_build.sh clean && debian/debian_build.sh -c ~/acrn-work/MyConfiguration 526 527 The build typically takes a few minutes. When done, the build generates several 528 Debian packages in the parent (``~/acrn-work``) directory: 529 530 .. code-block:: bash 531 532 cd ../ 533 ls *.deb 534 acrnd_*.deb 535 acrn-dev_*.deb 536 acrn-devicemodel_*.deb 537 acrn-doc_*.deb 538 acrn-hypervisor_*.deb 539 acrn-lifemngr_*.deb 540 acrn-system_*.deb 541 acrn-tools_*.deb 542 grub-acrn_*.deb 543 544 These Debian packages contain the ACRN hypervisor and tools to ease installing 545 ACRN on the target. 546 547#. Build the ACRN kernel for the Service VM: 548 549 a. If you have built the ACRN kernel before, run the following command to 550 remove all artifacts from the previous build. Otherwise, an error will 551 occur during the build. 552 553 .. code-block:: bash 554 555 cd ~/acrn-work/acrn-kernel 556 make distclean 557 558 #. Build the ACRN kernel: 559 560 .. code-block:: bash 561 562 cd ~/acrn-work/acrn-kernel 563 cp kernel_config_service_vm .config 564 make olddefconfig 565 make -j $(nproc) deb-pkg 566 567 The kernel build can take 15 minutes or less on a fast computer, but could 568 take two hours or more depending on the performance of your development 569 computer. When done, the build generates four Debian packages in the 570 directory above the build root directory: 571 572 .. code-block:: bash 573 574 cd .. 575 ls *acrn-service-vm*.deb 576 linux-headers-6.1.80-acrn-service-vm_6.1.80-acrn-service-vm-1_amd64.deb 577 linux-image-6.1.80-acrn-service-vm_6.1.80-acrn-service-vm-1_amd64.deb 578 linux-libc-dev_6.1.80-acrn-service-vm-1_amd64.deb 579 580#. Use the ``scp`` command to copy files from your development computer to the 581 target system. Replace ``10.0.0.200`` with the target system's IP address 582 you found earlier:: 583 584 sudo scp ~/acrn-work/acrn*.deb \ 585 ~/acrn-work/grub*.deb \ 586 ~/acrn-work/*acrn-service-vm*.deb \ 587 ~/acrn-work/MyConfiguration/launch_user_vm_id1.sh \ 588 acrn@10.0.0.200:~/acrn-work 589 590.. _gsg-install-acrn: 591 592.. rst-class:: numbered-step 593 594Install ACRN 595************ 596 597#. On the target system, install the ACRN Debian package and ACRN kernel Debian packages using these 598 commands: 599 600 .. code-block:: bash 601 602 cd ~/acrn-work 603 cp ./acrn*.deb ./grub*.deb ./*acrn-service-vm*.deb /tmp 604 sudo apt install /tmp/acrn*.deb /tmp/grub*.deb /tmp/*acrn-service-vm*.deb 605 606#. Modify the GRUB menu display using ``sudo vi /etc/default/grub``, comment out the hidden style 607 and changing the timeout to 5 seconds (leave other lines as they are), as shown:: 608 609 #GRUB_TIMEOUT_STYLE=hidden 610 GRUB_TIMEOUT=5 611 612 and install the new GRUB menu using:: 613 614 sudo update-grub 615 616#. Reboot the system: 617 618 .. code-block:: bash 619 620 sudo reboot 621 622 The target system will reboot into the ACRN hypervisor and 623 start the Ubuntu Service VM. 624 625#. Confirm that you see the GRUB menu with "Ubuntu with ACRN hypervisor, with Linux 6.1.80-acrn-service-vm (ACRN 3.3)" 626 entry. Select it and proceed to booting ACRN. (It may be auto-selected, in which case it 627 will boot with this option automatically in 5 seconds.) 628 629 Example grub menu shown as below: 630 631 .. code-block:: console 632 633 GNU GRUB version 2.04 634 ──────────────────────────────────────────────────────────────────────────────── 635 Ubuntu 636 Advanced options for Ubuntu 637 Ubuntu-ACRN Board Inspector, with Linux 6.5.0-18-generic 638 Ubuntu-ACRN Board Inspector, with Linux 6.1.80-acrn-service-vm 639 Memory test (memtest86+x64.efi) 640 Memory test (memtest86+x64.efi, serial console) 641 Ubuntu with ACRN hypervisor, with Linux 6.5.0-18-generic (ACRN 3.3) 642 *Ubuntu with ACRN hypervisor, with Linux 6.1.80-acrn-service-vm (ACRN 3.3) 643 UEFI Firmware Settings 644 645.. _gsg-run-acrn: 646 647.. rst-class:: numbered-step 648 649Run ACRN and the Service VM 650****************************** 651 652The ACRN hypervisor boots the Ubuntu Service VM automatically. 653 654#. On the target, log in to the Service VM using the ``acrn`` username and 655 password you set up previously. (It will look like a normal 656 graphical Ubuntu session.) 657 658#. Verify that the hypervisor is running by checking ``dmesg`` in the Service 659 VM: 660 661 .. code-block:: bash 662 663 dmesg | grep -i hypervisor 664 665 You should see "Hypervisor detected: ACRN" in the output. Example output of a 666 successful installation (yours may look slightly different): 667 668 .. code-block:: console 669 670 [ 0.000000] Hypervisor detected: ACRN 671 672#. Enable and start the Service VM's system daemon for managing network configurations, 673 so the Device Model can create a bridge device (acrn-br0) that provides User VMs with 674 wired network access: 675 676 .. warning:: 677 The IP address of Service VM may change after executing the following command. 678 679 .. code-block:: bash 680 681 sudo cp /usr/share/doc/acrnd/examples/* /etc/systemd/network 682 sudo systemctl enable --now systemd-networkd 683 684.. _gsg-user-vm: 685 686.. rst-class:: numbered-step 687 688Launch the User VM 689******************* 690 691#. On the target system, use the web browser to visit the `official Ubuntu website <https://releases.ubuntu.com/jammy/>`__ and 692 get the Ubuntu Desktop 22.04 LTS ISO image 693 ``ubuntu-22.04.4-desktop-amd64.iso`` for the User VM. (The same image you 694 specified earlier in the ACRN Configurator UI.) Alternatively, instead of 695 downloading it again, you could use ``scp`` to copy the ISO 696 image file from the development system to the ``~/acrn-work`` directory on the target system. 697 698#. If you downloaded the ISO file on the target system, copy it from the 699 Downloads directory to the ``~/acrn-work/`` directory (the location we said 700 in the ACRN Configurator for the scenario configuration for the VM), for 701 example: 702 703 .. code-block:: bash 704 705 cp ~/Downloads/ubuntu-22.04.4-desktop-amd64.iso ~/acrn-work 706 707#. Launch the User VM: 708 709 .. code-block:: bash 710 711 sudo chmod +x ~/acrn-work/launch_user_vm_id1.sh 712 sudo ~/acrn-work/launch_user_vm_id1.sh 713 714#. It may take about a minute for the User VM to boot and start running the 715 Ubuntu image. You will see a lot of output, then the console of the User VM 716 will appear as follows: 717 718 .. code-block:: console 719 720 Welcome to Ubuntu 22.04.4 LTS (GNU/Linux 6.5.0-18-generic x86_64) 721 722 * Documentation: https://help.ubuntu.com 723 * Management: https://landscape.canonical.com 724 * Support: https://ubuntu.com/advantage 725 726 Expanded Security Maintenance for Applications is not enabled. 727 728 0 updates can be applied immediately. 729 730 Enable ESM Apps to receive additional future security updates. 731 See https://ubuntu.com/esm or run: sudo pro status 732 733 734 The list of available updates is more than a week old. 735 To check for new updates run: sudo apt update 736 737 The programs included with the Ubuntu system are free software; 738 the exact distribution terms for each program are described in the 739 individual files in /usr/share/doc/*/copyright. 740 741 Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by 742 applicable law. 743 744 To run a command as administrator (user "root"), use "sudo <command>". 745 See "man sudo_root" for details. 746 747 ubuntu@ubuntu:~$ 748 749#. This User VM and the Service VM are running different Ubuntu images. Use this 750 command to see that the User VM is running the downloaded Ubuntu image: 751 752 .. code-block:: console 753 754 acrn@ubuntu:~$ uname -r 755 6.5.0-18-generic 756 757 Then open a new terminal window and use the command to see that the Service 758 VM is running the ``acrn-kernel`` Service VM image: 759 760 .. code-block:: console 761 762 acrn@asus-MINIPC-PN64:~$ uname -r 763 6.1.80-acrn-service-vm 764 765 The User VM has launched successfully. You have completed this ACRN setup. 766 767#. (Optional) To shut down the User VM, run this command in the terminal that is 768 connected to the User VM: 769 770 .. code-block:: bash 771 772 sudo poweroff 773 774.. _gsg-next-steps: 775 776Next Steps 777************** 778 779* :ref:`overview_dev` describes the ACRN configuration process, with links to 780 additional details. 781 782* A follow-on :ref:`GSG_sample_app` tutorial shows how to 783 configure, build, and run a more real-world sample application with a Real-time 784 VM communicating with an HMI VM via inter-VM shared memory (IVSHMEM). 785