From ad3d39a27467395256662ab65a30f6fa7884a535 Mon Sep 17 00:00:00 2001 From: "David B. Kinder" Date: Fri, 8 May 2020 10:13:44 -0700 Subject: [PATCH] doc: update release_1.6 with master docs Another update for the release_1.6 branch with changed docs from the master branch. Signed-off-by: David B. Kinder --- doc/asa.rst | 16 + doc/develop.rst | 1 + doc/getting-started/rt_industry.rst | 173 +++++++-- doc/tutorials/cpu_sharing.rst | 89 +++-- doc/tutorials/images/cpu_sharing_affinity.png | Bin 68328 -> 47559 bytes doc/tutorials/setup_openstack_libvirt.rst | 343 ++++++++++++++++++ doc/tutorials/using_celadon_as_uos.rst | 11 +- doc/tutorials/using_ubuntu_as_sos.rst | 1 + doc/tutorials/using_zephyr_as_uos.rst | 5 + doc/user-guides/kernel-parameters.rst | 27 +- 10 files changed, 604 insertions(+), 62 deletions(-) create mode 100644 doc/tutorials/setup_openstack_libvirt.rst diff --git a/doc/asa.rst b/doc/asa.rst index fe7769d44..45c3ceef6 100644 --- a/doc/asa.rst +++ b/doc/asa.rst @@ -3,6 +3,22 @@ Security Advisory ################# +Addressed in ACRN v1.6.1 +************************ + +We recommend that all developers upgrade to this v1.6.1 release (or later), which +addresses the following security issue that was discovered in previous releases: + +------ + +- Service VM kernel Crashes When Fuzzing HC_ASSIGN_PCIDEV and HC_DEASSIGN_PCIDEV + NULL pointer dereference due to invalid address of PCI device to be assigned or + de-assigned may result in kernel crash. The return value of 'pci_find_bus()' shall + be validated before using in 'update_assigned_vf_state()'. + + **Affected Release:** v1.6. + + Addressed in ACRN v1.6 ********************** diff --git a/doc/develop.rst b/doc/develop.rst index b0710611c..1e58c3eae 100644 --- a/doc/develop.rst +++ b/doc/develop.rst @@ -65,6 +65,7 @@ Enable ACRN Features tutorials/run_kata_containers tutorials/trustyACRN tutorials/rtvm_workload_design_guideline + tutorials/setup_openstack_libvirt Debug ***** diff --git a/doc/getting-started/rt_industry.rst b/doc/getting-started/rt_industry.rst index 46a936fff..119d95b5d 100644 --- a/doc/getting-started/rt_industry.rst +++ b/doc/getting-started/rt_industry.rst @@ -6,9 +6,9 @@ Getting Started Guide for ACRN Industry Scenario Verified version **************** -- Clear Linux version: **32680** -- ACRN-hypervisor tag: **v1.6 (acrn-2020w12.5-140000p)** -- ACRN-Kernel (Service VM kernel): **4.19.97-104.iot-lts2018-sos** +- Clear Linux version: **33050** +- ACRN-hypervisor tag: **v1.6.1 (acrn-2020w18.4-140000p)** +- ACRN-Kernel (Service VM kernel): **4.19.120-108.iot-lts2018-sos** Prerequisites ************* @@ -19,13 +19,13 @@ for the RTVM. - Intel Whiskey Lake (aka WHL) NUC platform with two disks inside (refer to :ref:`the tables ` for detailed information). -- `com1` is the serial port on WHL NUC. +- **com1** is the serial port on WHL NUC. If you are still using the KBL NUC and trying to enable the serial port on it, navigate to the :ref:`troubleshooting section ` that discusses how to prepare the cable. -- Follow the steps below to install Clear Linux OS (ver: 32680) onto the NVMe disk of the WHL NUC. +- Follow the steps below to install Clear Linux OS (ver: 33050) onto the NVMe disk of the WHL NUC. .. _Clear Linux OS Server image: - https://download.clearlinux.org/releases/32680/clear/clear-32680-live-server.iso + https://download.clearlinux.org/releases/33050/clear/clear-33050-live-server.iso #. Create a bootable USB drive on Linux*: @@ -47,7 +47,7 @@ for the RTVM. #. Unmount all the ``/dev/sdc`` partitions and burn the image onto the USB drive:: $ umount /dev/sdc* 2>/dev/null - $ sudo dd if=./clear-32680-live-server.iso of=/dev/sdc oflag=sync status=progress bs=4M + $ sudo dd if=./clear-33050-live-server.iso of=/dev/sdc oflag=sync status=progress bs=4M #. Plug in the USB drive to the WHL NUC and boot from USB. #. Launch the Clear Linux OS installer boot menu. @@ -131,7 +131,7 @@ Use the pre-installed industry ACRN hypervisor .. code-block:: none - $ sudo ./acrn_quick_setup.sh -s 32680 -d -e /dev/nvme0n1p1 -i + $ sudo ./acrn_quick_setup.sh -s 33050 -d -e /dev/nvme0n1p1 -i .. note:: ``-i`` option means the industry scenario efi image will be used, e.g. ``acrn.nuc7i7dnb.industry.efi``. For the detailed usage of the ``acrn_quick_setup.sh`` script, refer to the :ref:`quick setup ACRN guide ` @@ -145,7 +145,7 @@ Use the pre-installed industry ACRN hypervisor BootCurrent: 0005 Timeout: 1 seconds BootOrder: 0000,0003,0005,0001,0004 - Boot0000* ACRN HD(1,GPT,cb72266b-c83d-4c56-99e3-3e7d2f4bc175,0x800,0x47000)/File(\EFI\acrn\acrn.efi)u.a.r.t.=.d.i.s.a.b.l.e.d. + Boot0000* ACRN HD(1,GPT,cb72266b-c83d-4c56-99e3-3e7d2f4bc175,0x800,0x47000)/File(\EFI\acrn\acrn.efi)u.a.r.t.=.d.i.s.a.b.l.e.d. . Boot0001* UEFI OS HD(1,GPT,335d53f0-50c1-4b0a-b58e-3393dc0389a4,0x800,0x47000)/File(\EFI\BOOT\BOOTX64.EFI)..BO Boot0003* Linux bootloader HD(3,GPT,af681d62-3a96-43fb-92fc-e98e850f867f,0xc1800,0x1dc31800)/File(\EFI\org.clearlinux\bootloaderx64.efi) Boot0004* Hard Drive BBS(HD,,0x0)..GO..NO........o.K.I.N.G.S.T.O.N. .R.B.U.S.N.S.8.1.8.0.S.3.1.2.8.G.J...................A..........................>..Gd-.;.A..MQ..L.0.5.2.0.B.6.6.7.2.8.F.F.3.D.1.0. . . . .......BO..NO........m.F.O.R.E.S.E.E. .2.5.6.G.B. .S.S.D...................A......................................0..Gd-.;.A..MQ..L.J.2.7.1.0.0.R.0.0.0.9.6.9.......BO @@ -191,17 +191,17 @@ Use the ACRN industry out-of-the-box image .. code-block:: none - # wget https://github.com/projectacrn/acrn-hypervisor/releases/download/acrn-2020w12.5-140000p/sos-industry-32680.img.xz + # wget https://github.com/projectacrn/acrn-hypervisor/releases/download/acrn-2020w18.4-140000p/sos-industry-33050.img.xz .. note:: You may also follow :ref:`set_up_ootb_service_vm` to build the image by yourself. #. Decompress the .xz image:: - # xz -d sos-industry-32680.img.xz + # xz -d sos-industry-33050.img.xz #. Burn the Service VM image onto the NVMe disk:: - # dd if=sos-industry-32680.img of=/dev/nvme0n1 bs=4M oflag=sync status=progress iflag=fullblock seek=0 conv=notrunc + # dd if=sos-industry-33050.img of=/dev/nvme0n1 bs=4M oflag=sync status=progress iflag=fullblock seek=0 conv=notrunc #. Configure the EFI firmware to boot the ACRN hypervisor by default: @@ -238,17 +238,17 @@ build the ACRN kernel for the Service VM, and then :ref:`passthrough the SATA di .. code-block:: none - # wget https://github.com/projectacrn/acrn-hypervisor/releases/download/acrn-2020w12.5-140000p/preempt-rt-32680.img.xz + # wget https://github.com/projectacrn/acrn-hypervisor/releases/download/acrn-2020w18.4-140000p/preempt-rt-33050.img.xz .. note:: You may also follow :ref:`set_up_ootb_rtvm` to build the Preempt-RT VM image by yourself. #. Decompress the xz image:: - # xz -d preempt-rt-32680.img.xz + # xz -d preempt-rt-33050.img.xz #. Burn the Preempt-RT VM image onto the SATA disk:: - # dd if=preempt-rt-32680.img of=/dev/sda bs=4M oflag=sync status=progress iflag=fullblock seek=0 conv=notrunc + # dd if=preempt-rt-33050.img of=/dev/sda bs=4M oflag=sync status=progress iflag=fullblock seek=0 conv=notrunc #. Modify the script to use the virtio device. @@ -397,7 +397,7 @@ Run cyclictest #. Install the ``cyclictest`` tool:: - # swupd bundle-add dev-utils + # swupd bundle-add dev-utils --skip-diskspace-check #. Use the following command to start cyclictest:: @@ -410,9 +410,138 @@ Run cyclictest :-m: lock current and future memory allocations :-N: print results in ns instead of us (default us) :-D 1h: to run for 1 hour, you can change it to other values - :-q: quiee mode; print a summary only on exit + :-q: quiet mode; print a summary only on exit :-H 30000 --histfile=test.log: dump the latency histogram to a local file +Launch additional User VMs +************************** + +With the :ref:`CPU sharing ` feature enabled, the Industry +scenario supports a maximum of 6 post-launched VMs, including 1 post +Real-Time VM (Preempt-RT, VxWorks\*, Xenomai\*) and 5 post standard VMs +(Clear Linux\*, Android\*, Windows\*). + +You should follow the steps below to launch those post standard VMs. + +Prepare the launch scripts +========================== + +#. Install :ref:`dependencies ` on your workspace + and get the acrn-hypervisor source code:: + + $ git clone https://github.com/projectacrn/acrn-hypervisor + +#. Generate launch scripts by :ref:`acrn-configuration-tool `:: + + $ cd acrn-hypervisor + $ export board_file=$PWD/misc/acrn-config/xmls/board-xmls/whl-ipc-i5.xml + $ export scenario_file=$PWD/misc/acrn-config/xmls/config-xmls/whl-ipc-i5/industry.xml + $ export launch_file=$PWD/misc/acrn-config/xmls/config-xmls/whl-ipc-i5/industry_launch_6uos.xml + $ python misc/acrn-config/launch_config/launch_cfg_gen.py --board $board_file --scenario $scenario_file --launch $launch_file --uosid 0 + +#. Launch scripts will be generated in + ``misc/acrn-config/xmls/config-xmls/whl-ipc-i5/output`` directory. + + The launch scripts are: + + +-------------------+--------------------+---------------------+ + | For Windows: | For Preempt-RT: | For other VMs: | + +===================+====================+=====================+ + | launch_uos_id1.sh | launch_uos_id2.sh | | launch_uos_id3.sh | + | | | | launch_uos_id4.sh | + | | | | launch_uos_id5.sh | + | | | | launch_uos_id6.sh | + +-------------------+--------------------+---------------------+ + +#. Copy those files to your WHL board:: + + $ scp -r misc/acrn-config/xmls/config-xmls/whl-ipc-i5/output :~/ + + +Launch Windows VM +================= + +#. Follow this :ref:`guide ` to prepare the Windows image file, + update Service VM kernel and then reboot with new ``acrngt.conf``. + +#. Modify ``launch_uos_id1.sh`` script as following and then launch Windows VM as one of the post-launched standard VMs: + + .. code-block:: none + :emphasize-lines: 4,6 + + acrn-dm -A -m $mem_size -s 0:0,hostbridge -U d2795438-25d6-11e8-864e-cb7a18b34643 \ + --windows \ + $logger_setting \ + -s 5,virtio-blk,/win10-ltsc.img \ + -s 6,virtio-net,tap_WaaG \ + -s 2,passthru,0/2/0,gpu \ + --ovmf /usr/share/acrn/bios/OVMF.fd \ + -s 1:0,lpc \ + -l com1,stdio \ + $boot_audio_option \ + $vm_name + } + + .. note:: ``-s 2,passthru,0/2/0,gpu`` means Windows VM will be launched as GVT-d mode, which is passthrough VGA + controller to the Windows. You may find more details in :ref:`using_windows_as_uos`. + +Launch other standard VMs +========================= + +If you want to launch other VMs such as Clearlinux\* or Android\*, then you should use one of these scripts: +``launch_uos_id3.sh``, ``launch_uos_id4.sh``, ``launch_uos_id5.sh``, +``launch_uos_id6.sh``. + +Here is an example to launch a Clear Linux VM: + +#. Download Clear Linux KVM image:: + + $ cd ~/output && curl https://cdn.download.clearlinux.org/releases/33050/clear/clear-33050-kvm.img.xz -o clearlinux.img.xz + $ unxz clearlinux.img.xz + +#. Modify ``launch_uos_id3.sh`` script to launch Clear Linux VM: + + .. code-block:: none + :emphasize-lines: 1,2,3,5,16,17,23 + + #echo ${passthru_vpid["gpu"]} > /sys/bus/pci/drivers/pci-stub/new_id + #echo ${passthru_bdf["gpu"]} > /sys/bus/pci/devices/${passthru_bdf["gpu"]}/driver/unbind + #echo ${passthru_bdf["gpu"]} > /sys/bus/pci/drivers/pci-stub/bind + echo 100 > /sys/bus/usb/drivers/usb-storage/module/parameters/delay_use + mem_size=200M + #interrupt storm monitor for pass-through devices, params order: + #threshold/s,probe-period(s),intr-inject-delay-time(ms),delay-duration(ms) + intr_storm_monitor="--intr_monitor 10000,10,1,100" + + #logger_setting, format: logger_name,level; like following + logger_setting="--logger_setting console,level=4;kmsg,level=3;disk,level=5" + + acrn-dm -A -m $mem_size -s 0:0,hostbridge -U 615db82a-e189-4b4f-8dbb-d321343e4ab3 \ + --mac_seed $mac_seed \ + $logger_setting \ + -s 2,virtio-blk,./clearlinux.img \ + -s 3,virtio-console,@stdio:stdio_port \ + --ovmf /usr/share/acrn/bios/OVMF.fd \ + -s 8,virtio-hyper_dmabuf \ + $intr_storm_monitor \ + $vm_name + } + launch_clearlinux 3 + + .. note:: + + Remove ``-s 2,passthru,0/2/0,gpu`` parameter before you launch Clear Linux VM + because the VGA controller is already passthrough to the Windows + VM and it's no longer visible for other VMs. + + Before launching VMs, check available free memory using ``free -m`` + and update the ``mem_size`` value. + + If you will run multiple Clear Linux User VMs, also make sure + the VM names don't conflict + with others or you must change the number in the last line of + the script, such as ``launch_clearlinux 3``. + Troubleshooting *************** @@ -452,8 +581,9 @@ or an `RS232 DB9 female/female (NULL modem) cross-over cable `_ to connect to your host system. -Note that If you want to use the RS232 DB9 female/female cable, choose the ``cross-over`` -type rather than ``straight-through`` type. +Note that If you want to use the RS232 DB9 female/female cable, choose +the **cross-over** +type rather than **straight-through** type. .. _efi image not exist: @@ -524,7 +654,7 @@ Passthrough a hard disk to the RTVM passthru_vpid=( ["eth"]="8086 156f" - ["sata"]="8086 9d03" + ["sata"]="8086 9dd3" ["nvme"]="8086 f1a6" ) passthru_bdf=( @@ -544,8 +674,9 @@ Passthrough a hard disk to the RTVM #echo ${passthru_bdf["nvme"]} > /sys/bus/pci/drivers/pci-stub/bind .. code-block:: none - :emphasize-lines: 4 + :emphasize-lines: 5 + --lapic_pt \ --rtvm \ --virtio_poll 1000000 \ -U 495ae2e5-2603-4d64-af76-d4bc5a8ec0e5 \ diff --git a/doc/tutorials/cpu_sharing.rst b/doc/tutorials/cpu_sharing.rst index 5a2c5eb2c..18700c7bd 100644 --- a/doc/tutorials/cpu_sharing.rst +++ b/doc/tutorials/cpu_sharing.rst @@ -37,21 +37,29 @@ Scheduling initialization is invoked in the hardware management layer. .. figure:: images/cpu_sharing_api.png :align: center -vCPU affinity +CPU affinity ************* -Currently, we do not support vCPU migration; the assignment of vCPU -mapping to pCPU is statically configured by acrn-dm through -``--cpu_affinity``. Use these rules to configure the vCPU affinity: +Currently, we do not support vCPU migration; the assignment of vCPU mapping to +pCPU is fixed at the time the VM is launched. The statically configured +cpu_affinity in the VM configuration defines a superset of pCPUs that +the VM is allowed to run on. One bit in this bitmap indicates that one pCPU +could be assigned to this VM, and the bit number is the pCPU ID. A pre-launched +VM is supposed to be launched on exact number of pCPUs that are assigned in +this bitmap. The vCPU to pCPU mapping is implicitly indicated: vCPU0 maps +to the pCPU with lowest pCPU ID, vCPU1 maps to the second lowest pCPU ID, and +so on. -- Only one bit can be set for each affinity item of vCPU. -- vCPUs in the same VM cannot be assigned to the same pCPU. +For post-launched VMs, acrn-dm could choose to launch a subset of pCPUs that +are defined in cpu_affinity by specifying the assigned pCPUs +(``--cpu_affinity`` option). But it can't assign any pCPUs that are not +included in the VM's cpu_affinity. Here is an example for affinity: - VM0: 2 vCPUs, pinned to pCPU0 and pCPU1 -- VM1: 2 vCPUs, pinned to pCPU2 and pCPU3 -- VM2: 2 vCPUs, pinned to pCPU0 and pCPU1 +- VM1: 2 vCPUs, pinned to pCPU0 and pCPU1 +- VM2: 2 vCPUs, pinned to pCPU2 and pCPU3 .. figure:: images/cpu_sharing_affinity.png :align: center @@ -119,15 +127,20 @@ and BVT (Borrowed Virtual Time) scheduler. Scheduler configuration -*********************** -Two places in the code decide the usage for the scheduler. +*********************** * The option in Kconfig decides the only scheduler used in runtime. ``hypervisor/arch/x86/Kconfig`` .. code-block:: none + choice + prompt "ACRN Scheduler" + default SCHED_BVT + help + Select the CPU scheduler to be used by the hypervisor + config SCHED_BVT bool "BVT scheduler" help @@ -137,14 +150,19 @@ Two places in the code decide the usage for the scheduler. i.e. higher priority threads get scheduled first, and same priority tasks are scheduled per BVT. -The default scheduler is **SCHED_NOOP**. To use the BVT, change it to -**SCHED_BVT** in the **ACRN Scheduler**. +The default scheduler is **SCHED_BVT**. -* The cpu_affinity is configured by acrn-dm command. +* The cpu_affinity could be configured by one of these approaches: - For example, assign physical CPUs (pCPUs) 1 and 3 to this VM using:: + - Without ``cpu_affinity`` option in acrn-dm. This launches the user VM + on all the pCPUs that are included in the statically configured cpu_affinity_bitmap. - --cpu_affinity 1,3 + - With ``cpu_affinity`` option in acrn-dm. This launches the user VM on + a subset of the configured cpu_affinity_bitmap pCPUs. + + For example, assign physical CPUs 0 and 1 to this VM:: + + --cpu_affinity 0,1 Example @@ -152,32 +170,35 @@ Example Use the following settings to support this configuration in the industry scenario: -+---------+-------+-------+-------+ -|pCPU0 |pCPU1 |pCPU2 |pCPU3 | -+=========+=======+=======+=======+ -|SOS + WaaG |RT Linux | -+-----------------+---------------+ ++---------+--------+-------+-------+ +|pCPU0 |pCPU1 |pCPU2 |pCPU3 | ++=========+========+=======+=======+ +|Service VM + Waag |RT Linux | ++------------------+---------------+ + +- offline pcpu2-3 in Service VM. -- offline pcpu2-3 in SOS. - launch guests. - - launch WaaG with "--cpu_affinity=0,1" - - launch RT with "--cpu_affinity=2,3" + - launch WaaG with "--cpu_affinity 0,1" + - launch RT with "--cpu_affinity 2,3" -After you start all VMs, check the vCPU affinities from the Hypervisor +After you start all VMs, check the CPU affinities from the Hypervisor console with the ``vcpu_list`` command: -.. code-block:: console +.. code-block:: none - ACRN:\>vcpu_list + ACRN:\>vcpu_list - VM ID PCPU ID VCPU ID VCPU ROLE VCPU STATE THREAD STATE - ===== ======= ======= ========= ========== ========== - 0 0 0 PRIMARY Running BLOCKED - 0 1 0 SECONDARY Running BLOCKED - 1 0 0 PRIMARY Running RUNNING - 1 1 0 SECONDARY Running RUNNING - 2 2 0 PRIMARY Running RUNNING - 2 3 1 SECONDARY Running RUNNING + VM ID PCPU ID VCPU ID VCPU ROLE VCPU STATE THREAD STATE + ===== ======= ======= ========= ========== ========== + 0 0 0 PRIMARY Running RUNNING + 0 1 1 SECONDARY Running RUNNING + 1 0 0 PRIMARY Running RUNNABLE + 1 1 1 SECONDARY Running BLOCKED + 2 2 0 PRIMARY Running RUNNING + 2 3 1 SECONDARY Running RUNNING + +Note: the THREAD STATE are instant states, they will change at any time. diff --git a/doc/tutorials/images/cpu_sharing_affinity.png b/doc/tutorials/images/cpu_sharing_affinity.png index 27e359536820eafb7daff801c061f089759d826d..ae224477432262eea5df9a69cb2a4d49012afee8 100644 GIT binary patch literal 47559 zcma&O2UJsQ(*_zuL_xs0DL&;qN=M30+lDQ?>MjkpN~A!vhV|e zcuwqpF@3wVt^xwpS!>@>H3_sOGmfDyZrbF>#1l4_#>xI;9NJ}ZEga>Zvia)#C+|ii zzQ1=i|Ep$a{?+PhdDr4a>|POOXYX9A)9X}hJ8?&|^#s~4f%m|r3%goVdDG9Iho);^ zc7$AibVBg1nzigNd6$x<8-3~4x2_!5I)JkBAyb!j$!n#9w!+{lcU-X0LhpFJ^6p-h zJHxaX5wM3GRAC00pJeT{RoYnDa(R(2d`zgc(2dt}`ANCRNs(eRFBL>*>g3!7Cg4{4 zf3nVVb%>U|;dsPF6a^Vw$(y+5Egl-YD7vc8b}gRExeLD+;GkheVqn;=*;<<03}QDu zCyQE-MmlmPz{+}<(%LG}kBhK@Uh~)U@m%jkuN&IGeG@6uyH|W=S~qfJ zZ3A=Kd2w)J&+vWkVDR3@E7R4joo zMNDR41CiJu*f?qPX!rX3GD2}@d62A4& zm6rGV*D~8Re|98MLujG=v*9hH?0Dw0f{=l1=+MI1HtZ0qIdAInGdaPA8}@$YraVFm zS<)c{lx^-&>KjR)J(Wma=(!Y++hk`{Kj|0<)FY?ZR5+fj+R0(mc_KA4dpj{+n4~;Z zWn0}qc2^RP8W0R1Uf1?=Z>oN>I}7&)=Fu zhxBMD%IeR&o+8=@0k9RXuM$kd3TBGLppR?yGdQad?v+b^HVJlcx@8Bpn^>E*w7sxO zTAlaR7UsdDJB$3MAA_mpGNHHb76O*z@kEUUwzcrAb}37>>!EP|hA?}jp}4KS@Hp*C z!0{|*CMtOI9LHIKz=h`fREvPuMGMO2sKNXlLTfCYy>iBj5KPpEF1~R_IC2OvfwGpj z{BWHx+Rm#+K1(k34k?}{BZs&_AbY1()o7J7(DjwA>=eN>u9nu9hcjrHD0kACo+<*E;R4|=M$8Xx#I|_Pwy2VMrk7|0@Q8sBid+HymjX? zbT7T1^e%hoUTKD{9cEuV8B@ΜaMZz02Q~e=dR}c~?R0td|ZNUO9-EOm-h*h4Ah< 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

H8@DCy6 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%0AKjhWt<6BP15O+A6r?m;QRP^ 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

bhQXjg`SsUS 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 + configuration file (from the ``acrn-kernel`` repo). + +#. Add the following kernel bootarg to give the Service VM more loop + devices. Refer to `Kernel Boot Parameters + `_ documentation:: + + max_loop=16 + +#. Boot the Service VM with this new ``acrn-kernel`` using the ACRN + hypervisor. +#. Use the command: ``losetup -a`` to verify that Ubuntu's snap service is **not** + using all available loop devices. Typically, OpenStack needs at least 4 + available loop devices. Follow the `snaps guide + `_ to clean up old + snap revisions if you're running out of loop devices. +#. Make sure the networking bridge ``acrn-br0`` is created. If not, + create it using the instructions in + :ref:`Enable network sharing `. + +Set up and launch LXC/LXD +************************* + +1. Set up the LXC/LXD Linux container engine using these `instructions + `_ provided + by Ubuntu (for release 16.04). + + Refer to the following additional information for the setup + procedure: + + - Disregard ZFS utils (we're not going to use the ZFS storage + backend). + - Answer ``dir`` (and not ``zfs``) when prompted for the name of the storage backend to use. + - Set up ``lxdbr0`` as instructed. + - Before launching a container, make sure ``lxc-checkconfig | grep missing`` does not show any missing + kernel features. + +2. Create an Ubuntu 18.04 container named **openstack**:: + + $ lxc init ubuntu:18.04 openstack + +3. Export the kernel interfaces necessary to launch a Service VM in the + **openstack** container: + + a. Edit the **openstack** config file using the command:: + + $ lxc config edit openstack + + In the editor, add the following lines under **config**: + + .. code-block:: none + + linux.kernel_modules: iptable_nat, ip6table_nat, ebtables, openvswitch + raw.lxc: |- + lxc.cgroup.devices.allow = c 10:237 rwm + lxc.cgroup.devices.allow = b 7:* rwm + lxc.cgroup.devices.allow = c 243:0 rwm + lxc.mount.entry = /dev/net/tun dev/net/tun none bind,create=file 0 0 + lxc.mount.auto=proc:rw sys:rw cgroup:rw + security.nesting: "true" + security.privileged: "true" + + Save and exit the editor. + + b. Run the following commands to configure OpenStack:: + + $ lxc config device add openstack eth1 nic name=eth1 nictype=bridged parent=acrn-br0 + $ lxc config device add openstack acrn_vhm unix-char path=/dev/acrn_vhm + $ lxc config device add openstack loop-control unix-char path=/dev/loop-control + $ for n in {0..15}; do lxc config device add openstack loop$n unix-block path=/dev/loop$n; done; + +4. Launch the **openstack** container:: + + $ lxc start openstack + +5. Log in to the **openstack** container:: + + $ lxc exec openstack -- su -l + +6. Let ``systemd`` manage **eth1** in the container, with **eth0** as the + default route: + + Edit ``/etc/netplan/50-cloud-init.yaml`` + + .. code-block:: none + + network: + version: 2 + ethernets: + eth0: + dhcp4: true + eth1: + dhcp4: true + dhcp4-overrides: + route-metric: 200 + + +7. Log out and restart the **openstack** container:: + + $ lxc restart openstack + +8. Log in to the **openstack** container again:: + + $ xc exec openstack -- su -l + +9. If needed, set up the proxy inside the **openstack** container via + ``/etc/environment`` and make sure ``no_proxy`` is properly set up. + Both IP addresses assigned to **eth0** and + **eth1** and their subnets must be included. For example:: + + no_proxy=xcompany.com,.xcompany.com,10.0.0.0/8,192.168.0.0/16,localhost,.local,127.0.0.0/8,134.134.0.0/16 + +10. Add a new user named **stack** and set permissions:: + + $ sudo useradd -s /bin/bash -d /opt/stack -m stack + $ echo "stack ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers + +11. Log out and restart the **openstack** container:: + + $ lxc restart openstack + +The **openstack** container is now properly configured for OpenStack. +Use the ``lxc list`` command to verify that both **eth0** and **eth1** +appear in the container. + +Set up ACRN prerequisites inside the container +********************************************** + +1. Log in to the **openstack** container as the **stack** user:: + + $ lxc exec openstack -- su -l stack + +2. Download and compile ACRN's source code. Refer to :ref:`getting-started-building`. + + .. note:: + All tools and build dependencies must be installed before you run the first ``make`` command. + + .. code-block:: none + + $ git clone https://github.com/projectacrn/acrn-hypervisor + $ cd acrn-hypervisor + $ git checkout v1.6.1 + $ make + $ cd misc/acrn-manager/; make + + Install only the user-space components: acrn-dm, acrnctl, and acrnd + +3. Download, compile, and install ``iasl``. Refer to :ref:`Prepare the User VM `. + +Set up libvirt +************** + +1. Install the required packages:: + + $ sudo apt install libdevmapper-dev libnl-route-3-dev libnl-3-dev python \ + automake autoconf autopoint libtool xsltproc libxml2-utils gettext + +2. Download libvirt/ACRN:: + + $ git clone https://github.com/projectacrn/acrn-libvirt.git + +3. Build and install libvirt:: + + $ cd acrn-libvirt + $ ./autogen.sh --prefix=/usr --disable-werror --with-test-suite=no \ + --with-qemu=no --with-openvz=no --with-vmware=no --with-phyp=no \ + --with-vbox=no --with-lxc=no --with-uml=no --with-esx=no + + $ make + $ sudo make install + +4. Edit and enable these options in ``/etc/libvirt/libvirtd.conf``:: + + unix_sock_ro_perms = "0777" + unix_sock_rw_perms = "0777" + unix_sock_admin_perms = "0777" + +5. Restart the libvirt daemon:: + + $ sudo systemctl daemon-reload + + +Set up OpenStack +**************** + +Use DevStack to install OpenStack. Refer to the `DevStack instructions `_. + +1. Use the latest maintenance branch **stable/train** to ensure OpenStack + stability:: + + $ git clone https://opendev.org/openstack/devstack.git -b stable/train + +2. Go to the devstack directory (``cd devstack``) and apply the following + patch: + + ``0001-devstack-installation-for-acrn.patch`` + +3. Edit ``lib/nova_plugins/hypervisor-libvirt``: + + Change ``xen_hvmloader_path`` to the location of your OVMF image + file. A stock image is included in the ACRN source tree + (``devicemodel/bios/OVMF.fd``). + +4. Create a ``devstack/local.conf`` file as shown below (setting the password as + appropriate): + + .. code-block:: none + + + [[local|localrc]] + PUBLIC_INTERFACE=eth1 + + ADMIN_PASSWORD= + DATABASE_PASSWORD= + RABBIT_PASSWORD= + SERVICE_PASSWORD= + + ENABLE_KSM=False + VIRT_DRIVER=libvirt + LIBVIRT_TYPE=acrn + DEBUG_LIBVIRT=True + DEBUG_LIBVIRT_COREDUMPS=True + USE_PYTHON3=True + + .. note:: + Now is a great time to take a snapshot of the container using ``lxc + snapshot``. If the OpenStack installation fails, manually rolling back + to the previous state can be difficult. Currently, no step exists to + reliably restart OpenStack after restarting the container. + +5. Install OpenStack:: + + execute ./stack.sh in devstack/ + + The installation should take about 20-30 minutes. Upon successful + installation, the installer reports the URL of OpenStack's management + interface. This URL is accessible from the native Ubuntu. + + .. code-block:: console + + ... + + Horizon is now available at http:///dashboard + + ... + + 2020-04-09 01:21:37.504 | stack.sh completed in 1755 seconds. + +6. Verify using the command ``systemctl status libvirtd.service`` that libvirtd is active + and running. + +7. Set up SNAT for OpenStack instances to connect to the external network. + + a. Inside the container, use the command ``ip a`` to identify the ``br-ex`` bridge + interface. ``br-ex`` should have two IPs. One should be visible to + the native Ubuntu's ``acrn-br0`` interface (e.g. inet 192.168.1.104/24). + The other one is internal to OpenStack (e.g. inet 172.24.4.1/24). The + latter corresponds to the public network in OpenStack. + + b. Set up SNAT to establish a link between ``acrn-br0`` and OpenStack. + For example:: + + $ sudo iptables -t nat -A POSTROUTING -s 172.24.4.1/24 -o br-ex -j SNAT --to-source 192.168.1.104 + +Final Steps +*********** + +1. Create OpenStack instances. + + - OpenStack logs to systemd journal + - libvirt logs to /var/log/libvirt/libvirtd.log + + You can now use the URL to manage OpenStack in your native Ubuntu + as admin and using the password set in the local.conf file when you + set up OpenStack earlier. + +2. Create a router between **public** (external network) and **shared** + (internal network) using `OpenStack's network instructions + `_. + + +3. Launch an ACRN instance using `OpenStack's launch instructions + `_. + + - Use Clear Linux Cloud Guest as the image (qcow2 format): + https://clearlinux.org/downloads + - Skip **Create Key Pair** as it's not supported by Clear Linux. + - Select **No** for **Create New Volume** when selecting the instance + boot source image. + - Use **shared** as the instance's network. + +4. After the instance is created, use the hypervisor console to verify that + it is running (``vm_list``). + +5. Ping the instance inside the container using the instance's floating IP + address. + +6. Clear Linux prohibits root SSH login by default. Use libvirt's ``virsh`` + console to configure the instance. Inside the container, run:: + + $ sudo virsh -c acrn:///system + list #you should see the instance listed as running + console + +7. Log in to the Clear Linux instance and set up the root SSH. Refer to + the Clear Linux instructions on `enabling root login + `_. + + a. If needed, set up the proxy inside the instance. + b. Configure ``systemd-resolved`` to use the correct DNS server. + c. Install ping: ``swupd bundle-add clr-network-troubleshooter``. + + The ACRN instance should now be able to ping ``acrn-br0`` and another + ACRN instance. It should also be accessible inside the container via SSH + and its floating IP address. + + The ACRN instance can be deleted via the OpenStack management interface. + +For more advanced CLI usage, refer to this `OpenStack cheat sheet +`_. diff --git a/doc/tutorials/using_celadon_as_uos.rst b/doc/tutorials/using_celadon_as_uos.rst index a75d2ea6a..9808d7056 100644 --- a/doc/tutorials/using_celadon_as_uos.rst +++ b/doc/tutorials/using_celadon_as_uos.rst @@ -24,6 +24,11 @@ Prerequisites `_ to identify the USB 3.0 port header on the main board. +.. note:: + This document uses the (default) SDC scenario. If you use a different + scenario, to see its console, you will need a serial port connection to your platform + or change the configuration of the User VM that will run Celadon. + Build Celadon from source ************************* @@ -31,8 +36,10 @@ Build Celadon from source `_ guide to set up the Celadon project source code. - .. note:: The master branch is based on the Google Android 10 pre-Production Early Release. - Use the following command to specify a stable Celadon branch based on the Google Android 9 source code in order to apply those patches in the :ref:`ACRN patch list`:: + .. note:: The master branch is based on the Google Android 10 + pre-Production Early Release. Use the following command to specify a + stable Celadon branch based on the Google Android 9 source code in order + to apply those patches in the :ref:`ACRN patch list`:: $ repo init -u https://github.com/projectceladon/manifest.git -b celadon/p/mr0/master -m stable-build/ww201925_H.xml diff --git a/doc/tutorials/using_ubuntu_as_sos.rst b/doc/tutorials/using_ubuntu_as_sos.rst index be2ee29ab..48ea25f62 100644 --- a/doc/tutorials/using_ubuntu_as_sos.rst +++ b/doc/tutorials/using_ubuntu_as_sos.rst @@ -318,6 +318,7 @@ You are now all set to start the User VM: **Congratulations**, you are now watching the User VM booting up! +.. _enable-network-sharing-user-vm: Enable network sharing ********************** diff --git a/doc/tutorials/using_zephyr_as_uos.rst b/doc/tutorials/using_zephyr_as_uos.rst index 1cc140d7b..14a299e75 100644 --- a/doc/tutorials/using_zephyr_as_uos.rst +++ b/doc/tutorials/using_zephyr_as_uos.rst @@ -7,6 +7,11 @@ This tutorial describes how to run Zephyr as the User VM on the ACRN hypervisor. Kaby Lake-based NUC (model NUC7i5DNHE) in this tutorial. Other :ref:`ACRN supported platforms ` should work as well. +.. note:: + This tutorial uses the (default) SDC scenario. If you use a different + scenario, you will need a serial port connection to your platform to see + Zephyr console output. + Introduction to Zephyr ********************** diff --git a/doc/user-guides/kernel-parameters.rst b/doc/user-guides/kernel-parameters.rst index 9b5282228..bf5c7ebcc 100644 --- a/doc/user-guides/kernel-parameters.rst +++ b/doc/user-guides/kernel-parameters.rst @@ -201,11 +201,25 @@ relevant for configuring or debugging ACRN-based systems. * - hvlog - Service VM - - Reserve memory for the ACRN hypervisor log. The reserved space should not - overlap any other blocks (e.g. hypervisor's reserved space). + - Sets the guest physical address and size of the dedicated hypervisor + log ring buffer between the hypervisor and Service VM. + A ``memmap`` parameter is also required to reserve the specified memory + from the guest VM. + + If hypervisor relocation is disabled, verify that + :option:`CONFIG_HV_RAM_START` and :option:`CONFIG_HV_RAM_SIZE` + does not overlap with the hypervisor's reserved buffer space allocated + in the Service VM. Service VM GPA and HPA are a 1:1 mapping. + + If hypervisor relocation is enabled, reserve the memory below 256MB, + since hypervisor could be relocated anywhere between 256MB and 4GB. + + You should enable ASLR on SOS. This ensures that when guest Linux is + relocating kernel image, it will avoid this buffer address. + - :: - hvlog=2M@0x6de00000 + hvlog=2M@0xe00000 * - memmap - Service VM @@ -217,7 +231,7 @@ relevant for configuring or debugging ACRN-based systems. Gigabytes, respectively. - :: - memmap=0x400000$0x6da00000 + memmap=0x400000$0xa00000 * - ramoops.mem_address ramoops.mem_size @@ -228,9 +242,12 @@ relevant for configuring or debugging ACRN-based systems. to store the dump. See `Linux Kernel Ramoops oops/panic logger `_ for details. + + This buffer should not overlap with hypervisor reserved memory and + guest kernel image. See ``hvlog``. - :: - ramoops.mem_address=0x6da00000 + ramoops.mem_address=0xa00000 ramoops.mem_size=0x400000 ramoops.console_size=0x200000