mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-06-20 12:42:54 +00:00
doc: update industry getting started guide to v1.6.1
Add instruction to launch multiple post launched VMs. Signed-off-by: lirui34 <ruix.li@intel.com> Signed-off-by: David B. Kinder <david.b.kinder@intel.com>
This commit is contained in:
parent
5850f00880
commit
0c36a93cee
@ -6,9 +6,9 @@ Getting Started Guide for ACRN Industry Scenario
|
|||||||
Verified version
|
Verified version
|
||||||
****************
|
****************
|
||||||
|
|
||||||
- Clear Linux version: **32680**
|
- Clear Linux version: **33050**
|
||||||
- ACRN-hypervisor tag: **v1.6 (acrn-2020w12.5-140000p)**
|
- ACRN-hypervisor tag: **v1.6.1 (acrn-2020w18.4-140000p)**
|
||||||
- ACRN-Kernel (Service VM kernel): **4.19.97-104.iot-lts2018-sos**
|
- ACRN-Kernel (Service VM kernel): **4.19.120-108.iot-lts2018-sos**
|
||||||
|
|
||||||
Prerequisites
|
Prerequisites
|
||||||
*************
|
*************
|
||||||
@ -19,13 +19,13 @@ for the RTVM.
|
|||||||
|
|
||||||
- Intel Whiskey Lake (aka WHL) NUC platform with two disks inside
|
- Intel Whiskey Lake (aka WHL) NUC platform with two disks inside
|
||||||
(refer to :ref:`the tables <hardware_setup>` for detailed information).
|
(refer to :ref:`the tables <hardware_setup>` 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
|
If you are still using the KBL NUC and trying to enable the serial port on it, navigate to the
|
||||||
:ref:`troubleshooting section <connect_serial_port>` that discusses how to prepare the cable.
|
:ref:`troubleshooting section <connect_serial_port>` 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:
|
.. _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*:
|
#. 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::
|
#. Unmount all the ``/dev/sdc`` partitions and burn the image onto the USB drive::
|
||||||
|
|
||||||
$ umount /dev/sdc* 2>/dev/null
|
$ 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.
|
#. Plug in the USB drive to the WHL NUC and boot from USB.
|
||||||
#. Launch the Clear Linux OS installer boot menu.
|
#. Launch the Clear Linux OS installer boot menu.
|
||||||
@ -131,7 +131,7 @@ Use the pre-installed industry ACRN hypervisor
|
|||||||
|
|
||||||
.. code-block:: none
|
.. 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``.
|
.. 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 <quick-setup-guide>`
|
For the detailed usage of the ``acrn_quick_setup.sh`` script, refer to the :ref:`quick setup ACRN guide <quick-setup-guide>`
|
||||||
@ -145,7 +145,7 @@ Use the pre-installed industry ACRN hypervisor
|
|||||||
BootCurrent: 0005
|
BootCurrent: 0005
|
||||||
Timeout: 1 seconds
|
Timeout: 1 seconds
|
||||||
BootOrder: 0000,0003,0005,0001,0004
|
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
|
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)
|
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
|
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
|
.. 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.
|
.. note:: You may also follow :ref:`set_up_ootb_service_vm` to build the image by yourself.
|
||||||
|
|
||||||
#. Decompress the .xz image::
|
#. 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::
|
#. 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:
|
#. 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
|
.. 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.
|
.. note:: You may also follow :ref:`set_up_ootb_rtvm` to build the Preempt-RT VM image by yourself.
|
||||||
|
|
||||||
#. Decompress the xz image::
|
#. 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::
|
#. 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.
|
#. Modify the script to use the virtio device.
|
||||||
|
|
||||||
@ -397,7 +397,7 @@ Run cyclictest
|
|||||||
|
|
||||||
#. Install the ``cyclictest`` tool::
|
#. Install the ``cyclictest`` tool::
|
||||||
|
|
||||||
# swupd bundle-add dev-utils
|
# swupd bundle-add dev-utils --skip-diskspace-check
|
||||||
|
|
||||||
#. Use the following command to start cyclictest::
|
#. Use the following command to start cyclictest::
|
||||||
|
|
||||||
@ -410,9 +410,138 @@ Run cyclictest
|
|||||||
:-m: lock current and future memory allocations
|
:-m: lock current and future memory allocations
|
||||||
:-N: print results in ns instead of us (default us)
|
:-N: print results in ns instead of us (default us)
|
||||||
:-D 1h: to run for 1 hour, you can change it to other values
|
:-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
|
:-H 30000 --histfile=test.log: dump the latency histogram to a local file
|
||||||
|
|
||||||
|
Launch additional User VMs
|
||||||
|
**************************
|
||||||
|
|
||||||
|
With the :ref:`CPU sharing <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 <install-build-tools-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 <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 <board address>:~/
|
||||||
|
|
||||||
|
|
||||||
|
Launch Windows VM
|
||||||
|
=================
|
||||||
|
|
||||||
|
#. Follow this :ref:`guide <using_windows_as_uos>` 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,<your win img directory>/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
|
Troubleshooting
|
||||||
***************
|
***************
|
||||||
|
|
||||||
@ -452,8 +581,9 @@ or an `RS232 DB9 female/female (NULL modem) cross-over cable
|
|||||||
<https://www.amazon.com/SF-Cable-Null-Modem-RS232/dp/B006W0I3BA>`_
|
<https://www.amazon.com/SF-Cable-Null-Modem-RS232/dp/B006W0I3BA>`_
|
||||||
to connect to your host system.
|
to connect to your host system.
|
||||||
|
|
||||||
Note that If you want to use the RS232 DB9 female/female cable, choose the ``cross-over``
|
Note that If you want to use the RS232 DB9 female/female cable, choose
|
||||||
type rather than ``straight-through`` type.
|
the **cross-over**
|
||||||
|
type rather than **straight-through** type.
|
||||||
|
|
||||||
.. _efi image not exist:
|
.. _efi image not exist:
|
||||||
|
|
||||||
@ -524,7 +654,7 @@ Passthrough a hard disk to the RTVM
|
|||||||
|
|
||||||
passthru_vpid=(
|
passthru_vpid=(
|
||||||
["eth"]="8086 156f"
|
["eth"]="8086 156f"
|
||||||
["sata"]="8086 9d03"
|
["sata"]="8086 9dd3"
|
||||||
["nvme"]="8086 f1a6"
|
["nvme"]="8086 f1a6"
|
||||||
)
|
)
|
||||||
passthru_bdf=(
|
passthru_bdf=(
|
||||||
@ -544,8 +674,9 @@ Passthrough a hard disk to the RTVM
|
|||||||
#echo ${passthru_bdf["nvme"]} > /sys/bus/pci/drivers/pci-stub/bind
|
#echo ${passthru_bdf["nvme"]} > /sys/bus/pci/drivers/pci-stub/bind
|
||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
:emphasize-lines: 4
|
:emphasize-lines: 5
|
||||||
|
|
||||||
|
--lapic_pt \
|
||||||
--rtvm \
|
--rtvm \
|
||||||
--virtio_poll 1000000 \
|
--virtio_poll 1000000 \
|
||||||
-U 495ae2e5-2603-4d64-af76-d4bc5a8ec0e5 \
|
-U 495ae2e5-2603-4d64-af76-d4bc5a8ec0e5 \
|
||||||
|
Loading…
Reference in New Issue
Block a user