mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-05-02 21:46:58 +00:00
ACRN 2.1 supports two virtual boot modes, deprivilege boot mode and direct boot mode. The deprivilege boot mode’s main purpose is to support booting Clear Linux Service VM with UEFI service support, but this brings scalability problems when porting ACRN to new Intel platforms. For the 2.2 release, deprivilege mode is removed, and only direct boot is supported, and with this we've removed support for Clear Linux as the service VM, which impacts over 50 ACRN documents. This PR removes documents we don't intend to update, and fixes broken links that would occur from references to these deleted docs. Signed-off-by: David B. Kinder <david.b.kinder@intel.com>
166 lines
5.5 KiB
ReStructuredText
166 lines
5.5 KiB
ReStructuredText
.. _using_vxworks_as_uos:
|
|
|
|
Run VxWorks as the User VM
|
|
##########################
|
|
|
|
`VxWorks`_\* is a real-time proprietary OS designed for use in embedded systems requiring real-time, deterministic
|
|
performance. This tutorial describes how to run VxWorks as the User VM on the ACRN hypervisor
|
|
based on Clear Linux 29970 (ACRN tag v1.1).
|
|
|
|
.. note:: You'll need to be a WindRiver* customer and have purchased VxWorks to follow this tutorial.
|
|
|
|
Steps for Using VxWorks as User VM
|
|
**********************************
|
|
|
|
#. Build VxWorks
|
|
|
|
Follow the `VxWorks Getting Started Guide <https://docs.windriver.com/bundle/vxworks_7_tutorial_kernel_application_workbench_sr0610/page/rbu1422461642318.html>`_
|
|
to setup the VxWorks development environment and build the VxWorks Image.
|
|
|
|
.. note::
|
|
The following kernel configuration should be **excluded**:
|
|
* INCLUDE_PC_CONSOLE
|
|
* DRV_SIO_PCI_NS16550
|
|
* SELECT_PC_CONSOLE_KBD
|
|
|
|
The following kernel configuration should be **included**:
|
|
* DRV_SIO_IA_NS16550
|
|
* DRV_SIO_FDT_NS16550
|
|
|
|
The following kernel configuration value should be **set**:
|
|
* CONSOLE_BAUD_RATE = 115200
|
|
* SYS_CLK_RATE_MAX = 1000
|
|
|
|
#. Build GRUB2 BootLoader Image
|
|
|
|
We use grub-2.02 as the bootloader of VxWorks in this tutorial; other versions may also work.
|
|
|
|
.. code-block:: none
|
|
|
|
$ curl ftp://ftp.gnu.org/gnu/grub/grub-2.02.tar.xz | tar xJv
|
|
$ cd grub-2.02
|
|
$ ./autogen.sh
|
|
$ ./configure --with-platform=efi --target=x86_64
|
|
$ make
|
|
$ ./grub-mkimage -p /EFI/BOOT -d ./grub-core/ -O x86_64-efi -o grub_x86_64.efi \
|
|
boot efifwsetup efi_gop efinet efi_uga lsefimmap lsefi lsefisystab \
|
|
exfat fat multiboot2 multiboot terminal part_msdos part_gpt normal \
|
|
all_video aout configfile echo file fixvideo fshelp gfxterm gfxmenu \
|
|
gfxterm_background gfxterm_menu legacycfg video_bochs video_cirrus \
|
|
video_colors video_fb videoinfo video net tftp
|
|
|
|
This will build a ``grub_x86_64.efi`` image in the current directory.
|
|
|
|
#. Preparing the Boot Device
|
|
|
|
.. code-block:: none
|
|
|
|
$ dd if=/dev/zero of=VxWorks.img bs=1M count=35
|
|
$ mkfs.vfat -F 32 VxWorks.img
|
|
$ sudo mount `sudo losetup -f -P --show VxWorks.img` /mnt
|
|
|
|
Create the following directories.
|
|
|
|
.. code-block:: none
|
|
|
|
$ sudo mkdir -p /mnt/efi/boot
|
|
$ sudo mkdir -p /mnt/kernel
|
|
|
|
Copy ``vxWorks`` and ``grub_x86_64.efi``.
|
|
|
|
.. code-block:: none
|
|
|
|
$ sudo cp vxWorks /mnt/kernel/
|
|
$ sudo cp grub-2.02/grub_x86_64.efi /mnt/efi/boot/bootx64.efi
|
|
|
|
Create ``/mnt/efi/boot/grub.cfg`` containing the following:
|
|
|
|
.. code-block:: none
|
|
|
|
set default=0
|
|
set timeout=5
|
|
|
|
menuentry "VxWorks Guest" {
|
|
multiboot /kernel/vxWorks
|
|
}
|
|
|
|
Unmount the loopback device:
|
|
|
|
.. code-block:: none
|
|
|
|
$ sudo umount /mnt
|
|
|
|
You now have a virtual disk image with bootable VxWorks in ``VxWorks.img``.
|
|
|
|
#. Follow XXX to boot the ACRN Service VM.
|
|
|
|
.. important:: need instructions from deleted document (using sdc
|
|
mode on the NUC)
|
|
|
|
#. Boot VxWorks as User VM.
|
|
|
|
On the ACRN Service VM, prepare a directory and populate it with VxWorks files.
|
|
|
|
.. code-block:: none
|
|
|
|
$ mkdir vxworks && cd vxworks
|
|
$ cp /usr/share/acrn/samples/nuc/launch_vxworks.sh .
|
|
|
|
You will also need to copy the ``VxWorks.img`` created in the VxWorks build environment into directory
|
|
``vxworks`` (via, e.g. a USB stick or network).
|
|
|
|
Run the ``launch_vxworks.sh`` script to launch VxWorks as the User VM.
|
|
|
|
.. code-block:: none
|
|
|
|
$ sudo ./launch_vxworks.sh
|
|
|
|
Then VxWorks will boot automatically. You will see the prompt.
|
|
|
|
.. code-block:: console
|
|
|
|
VxWorks 7 SMP 64-bit
|
|
|
|
Copyright 1984-2019 Wind River Systems, Inc.
|
|
|
|
Core Kernel version: 1.2.7.0
|
|
Build date: May 5 2019 21:40:28
|
|
Board: x86 Processor (ACPI_BOOT_OP) SMP/SMT
|
|
CPU Count: 1
|
|
OS Memory Size: ~1982MB
|
|
ED&R Policy Mode: Permanently Deployed
|
|
|
|
Adding 9315 symbols for standalone.
|
|
|
|
->
|
|
|
|
Finally, you can type ``help`` to check whether the VxWorks works well.
|
|
|
|
.. code-block:: console
|
|
|
|
-> help
|
|
|
|
help Print this list
|
|
dbgHelp Print debugger help info
|
|
edrHelp Print ED&R help info
|
|
ioHelp Print I/O utilities help info
|
|
nfsHelp Print nfs help info
|
|
netHelp Print network help info
|
|
rtpHelp Print process help info
|
|
spyHelp Print task histogrammer help info
|
|
timexHelp Print execution timer help info
|
|
h [n] Print (or set) shell history
|
|
i [task] Summary of tasks' TCBs
|
|
ti task Complete info on TCB for task
|
|
sp adr,args... Spawn a task, pri=100, opt=0x19, stk=20000
|
|
taskSpawn name,pri,opt,stk,adr,args... Spawn a task
|
|
tip "dev=device1#tag=tagStr1", "dev=device2#tag=tagStr2", ...
|
|
Connect to one or multiple serial lines
|
|
td task Delete a task
|
|
ts task Suspend a task
|
|
tr task Resume a task
|
|
|
|
Type <CR> to continue, Q<CR> or q<CR> to stop:
|
|
|
|
.. _VxWorks: https://www.windriver.com/products/vxworks/
|