doc: update gsg and acrn_quick_setup.sh

1. From Clear Linux 31030, we could use kernel-iot-lts2018-sos kernel
   command line as Service OS kernel command line directly, so update
   the setps and codes to set the Service OS kernel command line.
2. Command "swupd verfiy" and the flag "-m" is superseded, use "swupd
   repair" and the flag "-V" instead
3. As UOS is launched by OVMF, the old steps and code to set up UOS does
   not work on Clear Linux 31030, update its related steps and code.
4. Update install Clear Linux steps.
5. Fix some small issues.

Signed-off-by: Lei, Lu <leix.lu@intel.com>
This commit is contained in:
Lei, Lu 2019-09-18 16:06:16 +08:00 committed by deb-intel
parent 76da81370b
commit d1796d7565
2 changed files with 165 additions and 182 deletions

View File

@ -41,8 +41,6 @@ skip_download_uos=0
# switcher for disabling reboot device
disable_reboot=0
# acrn.conf path
acrn_conf_path=/usr/share/acrn/samples/nuc/acrn.conf
# acrn.efi path
acrn_efi_path=/usr/lib/acrn/acrn.efi
@ -60,8 +58,6 @@ function upgrade_sos()
# Check EFI path exists.
[[ ! -b $efi_partition ]] && echo "Please set the right EFI System partition firstly." && exit 1
efi_mount_point=`findmnt $efi_partition -n | cut -d' ' -f1`
root_partition=`echo $efi_partition | sed 's/1$/3/g'`
partition=`echo $efi_partition | sed 's/1$//g;s/p$//g'`
echo "Disable auto update..."
@ -72,25 +68,17 @@ function upgrade_sos()
echo "Clear Linux version $sos_ver is already installed. Continuing to setup SOS..."
else
echo "Upgrading Clear Linux version from $VERSION_ID to $sos_ver ..."
swupd verify --fix --picky -m $sos_ver 2>/dev/null
swupd repair --picky -V $sos_ver 2>/dev/null
fi
# Do the setups if previous process succeed.
if [[ $? -eq 0 ]]; then
echo "Adding the service-os, kernel-iot-lts2018 and systemd-networkd-autostart bundles..."
swupd bundle-add service-os kernel-iot-lts2018 systemd-networkd-autostart 2>/dev/null
echo "Adding the service-os and systemd-networkd-autostart bundles..."
swupd bundle-add service-os systemd-networkd-autostart 2>/dev/null
mount $efi_partition /mnt
echo "Add /mnt/EFI/acrn folder"
mkdir -p /mnt/EFI/acrn
echo "Copy $acrn_conf_path /mnt/loader/entries/"
if [[ ! -f $acrn_conf_path ]]; then
echo "Missing acrn.conf file in folder: $acrn_conf_path"
umount /mnt && sync
exit 1
fi
cp -r $acrn_conf_path /mnt/loader/entries/
if [[ $? -ne 0 ]]; then echo "Fail to copy $acrn_conf_path" && exit 1; fi
echo "Copy $acrn_efi_path to /mnt/EFI/acrn"
if [[ ! -f $acrn_efi_path ]]; then
echo "Missing acrn.efi file in folder: $acrn_efi_path"
@ -101,7 +89,7 @@ function upgrade_sos()
if [[ $? -ne 0 ]]; then echo "Fail to copy $acrn_efi_path" && exit 1; fi
echo "Check ACRN efi boot event"
check_acrn_bootefi=`efibootmgr | grep ACRN`
if [[ "$check_arcn_bootefi" -ge "ACRN" ]]; then
if [[ "$check_acrn_bootefi" -ge "ACRN" ]]; then
echo "Clean all ACRN efi boot event"
efibootmgr | grep ACRN | cut -d'*' -f1 | cut -d't' -f2 | xargs -i efibootmgr -b {} -B >/dev/null
fi
@ -115,38 +103,22 @@ function upgrade_sos()
echo "Add new ACRN efi boot event"
efibootmgr -c -l "\EFI\acrn\acrn.efi" -d $partition -p 1 -L "ACRN" >/dev/null
echo "Create loader.conf"
mv /mnt/loader/loader.conf /mnt/loader/loader.conf.bck && touch /mnt/loader/loader.conf
echo "Add default (5 seconds) boot wait time"
echo "timeout 5" > /mnt/loader/loader.conf
echo "Add default boot to ACRN"
echo "default acrn" >> /mnt/loader/loader.conf
new_kernel=`ls /mnt/EFI/org.clearlinux/*sos* -tl | grep kernel | head -n1 | awk -F'/' '{print $5}'`
new_kernel=${new_kernel#kernel-}
echo "Getting latest Service OS kernel version: $new_kernel"
cur_kernel=`cat /mnt/loader/entries/acrn.conf | sed -n 2p | cut -d'/' -f4`
echo "Getting current Service OS kernel version: $cur_kernel"
echo "Replacing root partition uuid in acrn.conf"
sed -i "s/<UUID of rootfs partition>/`blkid -s PARTUUID -o value $root_partition`/g" /mnt/loader/entries/acrn.conf
# test replacing succeed or not.
if [[ -z `grep $(blkid -s PARTUUID -o value $root_partition) /mnt/loader/entries/acrn.conf` ]]; then
echo "Fail to replace root uuid in this file: /mnt/loader/entries/acrn.conf"
exit 1
fi
echo "Add default (5 seconds) boot wait time."
clr-boot-manager set-timeout 5 || { echo "Faild to add default boot wait time" && exit 1; }
clr-boot-manager update
if [[ "$cur_kernel" == "$new_kernel" ]]; then
echo "No need to replace kernel conf info"
else
echo "Replace with new SOS kernel in acrn.conf"
sed -i "s/$cur_kernel/$new_kernel/g" /mnt/loader/entries/acrn.conf
fi
echo "Set $new_kernel as default boot kernel."
clr-boot-manager set-kernel $new_kernel || { echo "Fail to set $new_kernel as default boot kernel." && exit 1; }
echo "Service OS setup done!"
else
echo "Fail to upgrade SOS to $sos_ver."
echo "Please try upgrade SOS with this command:"
echo "swupd update -m $sos_ver"
echo "swupd update -V $sos_ver"
exit 1
fi
@ -198,10 +170,20 @@ function upgrade_uos()
fi
echo "Get UOS image: $uos_img"
uos_partition=`losetup -f -P --show $uos_img`p3
mount $uos_partition /mnt
[[ $? -ne 0 ]] && echo "Fail to mount UOS partition" && exit 1
cp -r /usr/lib/modules/"`readlink /usr/lib/kernel/default-iot-lts2018 | awk -F '2018.' '{print $2}'`.iot-lts2018" /mnt/lib/modules
uos_loop_device=`losetup -f -P --show $uos_img`
mount ${uos_loop_device}p3 /mnt || { echo "Fail to mount UOS rootfs partition" && exit 1; }
mount ${uos_loop_device}p1 /mnt/boot || { echo "Fail to mount UOS EFI partition" && exit 1; }
echo "Install kernel-iot-lts2018 to $uos_img"
swupd bundle-add --path=/mnt kernel-iot-lts2018 || { echo "Fail to install kernel-iot-lts2018" && exit 1; }
echo "Configure kernel-ios-lts2018 as $uos_img default boot kernel"
uos_kernel_conf=`ls -t /mnt/boot/loader/entries/ | grep Clear-linux-iot-lts2018 | head -n1`
uos_kernel=${uos_kernel_conf%.conf}
echo "default $uos_kernel" > /mnt/boot/loader/loader.conf
umount /mnt/boot
umount /mnt
sync

View File

@ -86,10 +86,10 @@ manually, as described below).
Please refer to the ACRN :ref:`release_notes` for the Clear Linux OS
version number tested with a specific ACRN release. Adjust the
instruction below to reference the appropriate version number of Clear
Linux OS (we use version 30210 as an example).
Linux OS (we use version 31030 as an example).
#. Download the compressed Clear Linux OS installer image from
https://download.clearlinux.org/releases/30210/clear/clear-30210-live-server.img.xz
https://download.clearlinux.org/releases/31030/clear/clear-31030-live-server.iso.xz
and follow the `Clear Linux OS installation guide
<https://clearlinux.org/documentation/clear-linux/get-started/bare-metal-install-server>`_
as a starting point for installing Clear Linux OS onto your platform. Follow the recommended
@ -106,16 +106,17 @@ manually, as described below).
$ clr-installer
#. From the Main Menu, select "Configure Media" and set
"Auto Partition" to your desired hard disk.
#. From the Main Menu, select "Configure Installation Media" and set
"Destructive Installation" to your desired hard disk.
#. Select "Telemetry" to set Tab to highlight your choice.
#. Press :kbd:`A` to show the "Advanced options".
#. Select "Additional Bundle Selection" to add bundles for
#. Select "Select additional bundles" to add bundles for
"desktop-autostart", "editors", "network-basic", "user-basic"
#. Select "User Manager" to add an administrative user "clear" and
#. Select "Manager User" to add an administrative user "clear" and
password.
#. Select "Assign Hostname" to set the hostname as "clr-sos-guest"
#. Select Confirm to start installation.
#. Select "Install".
#. Select "Confirm Install" in "Confirm Installtion" window to start installation.
#. After installation is complete, boot into Clear Linux OS, login as
**clear** (using the password you set earlier).
@ -163,31 +164,39 @@ and UOS using the ``acrn_quick_setup.sh`` script, and launch the UOS:
$ cd ~
$ wget https://raw.githubusercontent.com/projectacrn/acrn-hypervisor/master/doc/getting-started/acrn_quick_setup.sh
$ sudo sh acrn_quick_setup.sh -s 30210
$ sudo sh acrn_quick_setup.sh -s 31030
Password:
Upgrading SOS...
Disable auto update...
Clear Linux version 30210 is already installed. Continuing to setup SOS...
Running systemctl to disable updates
Clear Linux version 31030 is already installed. Continuing to setup SOS...
Adding the service-os, kernel-iot-lts2018 and systemd-networkd-autostart bundles...
...100%
...100%
...100%
Loading required manifests...
Downloading packs (104.41 MB) for:
- kernel-iot-lts2018-sos
- iasimage
- service-os
- kernel-iot-lts2018
- systemd-networkd-autostart
...100%
Finishing packs extraction...
No extra files need to be downloaded
Installing bundle(s) files...
...100%
Calling post-update helper scripts
none
Successfully installed 3 bundles
Add /mnt/EFI/acrn folder
Copy /usr/share/acrn/samples/nuc/acrn.conf /mnt/loader/entries/
Copy /usr/lib/acrn/acrn.efi to /mnt/EFI/acrn
Check ACRN efi boot event
Clean all ACRN efi boot event
Check linux bootloader event
Clean all Linux bootloader event
Add new ACRN efi boot event
Create loader.conf
Add default (5 seconds) boot wait time
Add default boot to ACRN
Getting latest Service OS kernel version: kernel-org.clearlinux.iot-lts2018-sos.4.19.34-45
Getting current Service OS kernel version: kernel-org.clearlinux.iot-lts2018-sos.4.19.13-1901141830
Replacing root partition uuid in acrn.conf
Replace with new SOS kernel in acrn.conf
Getting latest Service OS kernel version: org.clearlinux.iot-lts2018-sos.4.19.71-89
Add default (5 seconds) boot wait time.
New timeout value is: 5
Set org.clearlinux.iot-lts2018-sos.4.19.71-89 as default boot kernel.
Service OS setup done!
Rebooting Service OS to take effects.
Rebooting.
@ -198,7 +207,7 @@ and UOS using the ``acrn_quick_setup.sh`` script, and launch the UOS:
it using ``-e`` option. For example, to set up the SOS on an NVMe
SSD, you could specify::
sudo sh acrn_quick_setup.sh -s 30210 -e /dev/nvme0n1p1
sudo sh acrn_quick_setup.sh -s 31030 -e /dev/nvme0n1p1
.. note::
If you don't need to reboot automatically after setting up the SOS, you
@ -209,10 +218,12 @@ and UOS using the ``acrn_quick_setup.sh`` script, and launch the UOS:
.. code-block:: console
$ dmesg | grep ACRN
$ sudo dmesg | grep ACRN
Password:
[ 0.000000] Hypervisor detected: ACRN
[ 1.220887] ACRNTrace: Initialized acrn trace module with 4 cpu
[ 1.224401] ACRN HVLog: Initialized hvlog module with 4 cpu
[ 1.252840] ACRNTrace: Initialized acrn trace module with 4 cpu
[ 1.253291] ACRN HVLog: Failed to init last hvlog devs, errno -19
[ 1.253292] ACRN HVLog: Initialized hvlog module with 4 cpu
#. Continue by setting up a Guest OS using the ``acrn_quick_setup.sh``
script with the ``-u`` option (and the same Clear Linux version
@ -220,10 +231,10 @@ and UOS using the ``acrn_quick_setup.sh`` script, and launch the UOS:
.. code-block:: console
$ sudo sh acrn_quick_setup.sh -u 30210
$ sudo sh acrn_quick_setup.sh -u 31030
Password:
Upgrading UOS...
Downloading UOS image: https://download.clearlinux.org/releases/30210/clear/clear-30210-kvm.img.xz
Downloading UOS image: https://download.clearlinux.org/releases/31030/clear/clear-31030-kvm.img.xz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
14 248M 14 35.4M 0 0 851k 0 0:04:57 0:00:42 0:04:15 293k
@ -232,59 +243,79 @@ and UOS using the ``acrn_quick_setup.sh`` script, and launch the UOS:
.. code-block:: console
Unxz UOS image: clear-30210-kvm.img.xz
Get UOS image: clear-30210-kvm.img
Unxz UOS image: clear-31030-kvm.img.xz
Get UOS image: clear-31030-kvm.img
Upgrade UOS done...
Now you can run this command to start UOS...
$ sudo /root/launch_uos_30210.sh
$ sudo /root/launch_uos_31030.sh
#. Now you can launch the UOS using the customized launch_uos script
(with sudo):
.. code-block:: console
$ sudo /root/launch_uos_30210.sh
$ sudo /root/launch_uos_31030.sh
Password:
cpu1 online=0
cpu2 online=0
cpu3 online=0
passed gvt-g optargs low_gm 64, high_gm 448, fence 8
SW_LOAD: get kernel path /usr/lib/kernel/default-iot-lts2018
SW_LOAD: get bootargs root=/dev/vda3 rw rootwait maxcpus=1 nohpet console=tty0 console=hvc0 console=ttyS0 no_timer_check ignore_loglevel log_buf_len=16M consoleblank=0 tsc=reliable i915.avail_planes_per_pipe=0x070F00 i915.enable_hangcheck=0 i915.nuclear_pageflip=1 i915.enable_guc_loading=0 i915.enable_guc_submission=0 i915.enable_guc=0
SW_LOAD: get ovmf path /usr/share/acrn/bios/OVMF.fd, size 0x200000
pm by vuart node-index = 0
logger: name=console, level=4
logger: name=kmsg, level=3
logger: name=disk, level=5
vm_create: vm1
VHM api version 1.0
open hugetlbfs file /run/hugepage/acrn/huge_lv1/D279543825D611E8864ECB7A18B34643
open hugetlbfs file /run/hugepage/acrn/huge_lv2/D279543825D611E8864ECB7A18B34643
level 0 free/need pages:512/0 page size:0x200000
level 1 free/need pages:1/2 page size:0x40000000
to reserve more free pages:
to reserve pages (+orig 1): echo 2 > /sys/kernel/mm/hugepages/hugepages-1048576kB/nr_hugepages
now enough free pages are reserved!
vm_setup_memory: size=0x80000000
open hugetlbfs file /run/hugepage/acrn/huge_lv1/vm1/D279543825D611E8864ECB7A18B34643
open hugetlbfs file /run/hugepage/acrn/huge_lv2/vm1/D279543825D611E8864ECB7A18B34643
level 0 free/need pages:1/1 page size:0x200000
level 1 free/need pages:2/2 page size:0x40000000
try to setup hugepage with:
level 0 - lowmem 0x0, biosmem 0x0, highmem 0x0
level 1 - lowmem 0x80000000, biosmem 0x0, highmem 0x0
level 0 - lowmem 0x0, biosmem 0x200000, highmem 0x0
level 1 - lowmem 0x80000000, biosmem 0x0, highmem 0x0
total_size 0x180000000
mmap ptr 0x0x7efef33bb000 -> baseaddr 0x0x7eff00000000
mmap 0x40000000@0x7eff00000000
touch 1 pages with pagesz 0x40000000
mmap 0x40000000@0x7eff40000000
touch 512 pages with pagesz 0x200000
mmap ptr 0x0x7f792ace5000 -> baseaddr 0x0x7f7940000000
mmap 0x80000000@0x7f7940000000
touch 2 pages with pagesz 0x40000000
mmap 0x200000@0x7f7a3fe00000
touch 1 pages with pagesz 0x200000
...
[ OK ] Started Login Service.
[ OK ] Started Network Name Resolution.
[ OK ] Reached target Network.
Starting Permit User Sessions...
[ OK ] Reached target Host and Network Name Lookups.
[ OK ] Started Permit User Sessions.
[ OK ] Started Serial Getty on ttyS0.
[ OK ] Started Getty on tty1.
[ OK ] Started Serial Getty on hvc0.
[ OK ] Reached target Login Prompts.
[ OK ] Reached target Multi-User System.
[ OK ] Reached target Graphical Interface.
[ 1.414873] Run /usr/lib/systemd/systemd-bootchart as init process
[ 1.521343] systemd[1]: systemd 242 running in system mode. (+PAM +AUDIT -SELINUX +IMA -APPARMOR -SMACK -SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN2 -IDN -PCRE2 default-hierarchy=legacy)
[ 1.531173] systemd[1]: Detected virtualization acrn.
[ 1.533287] systemd[1]: Detected architecture x86-64.
[ 1.542775] systemd[1]: Failed to bump fs.file-max, ignoring: Invalid argument
[ 1.681326] systemd[1]: File /usr/lib/systemd/system/systemd-journald.service:12 configures an IP firewall (IPAddressDeny=any), but the local system does not support BPF/cgroup based firewalling.
[ 1.689540] systemd[1]: Proceeding WITHOUT firewalling in effect! (This warning is only shown for the first loaded unit using IP firewalling.)
[ 1.734816] [drm] Cannot find any crtc or sizes
[ 1.860168] systemd[1]: Set up automount Arbitrary Executable File Formats File System Automount Point.
[ 1.870434] systemd[1]: Listening on udev Kernel Socket.
[ 1.875555] systemd[1]: Created slice system-serial\x2dgetty.slice.
[ 1.878446] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
[ 2.075891] random: systemd-random-: uninitialized urandom read (512 bytes read)
[ 2.239775] [drm] Cannot find any crtc or sizes
[ 3.011537] systemd-journald[133]: Received request to flush runtime journal from PID 1
[ 3.386326] i8042: PNP: PS/2 Controller [PNP0303:KBD,PNP0f13:MOU] at 0x60,0x64 irq 1,12
[ 3.429277] i8042: Warning: Keylock active
[ 3.556872] serio: i8042 KBD port at 0x60,0x64 irq 1
[ 3.610010] serio: i8042 AUX port at 0x60,0x64 irq 12
[ 3.658689] Adding 33788k swap on /dev/vda2. Priority:-2 extents:1 across:33788k
[ 4.034712] random: dbus-daemon: uninitialized urandom read (12 bytes read)
[ 4.101122] random: tallow: uninitialized urandom read (4 bytes read)
[ 4.119713] random: dbus-daemon: uninitialized urandom read (12 bytes read)
[ 4.223296] virtio_net virtio1 enp0s4: renamed from eth0
[ 4.342645] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input1
[ 4.560662] IPv6: ADDRCONF(NETDEV_UP): enp0s4: link is not ready
Unhandled ps2 mouse command 0xe1
[ 4.725622] IPv6: ADDRCONF(NETDEV_CHANGE): enp0s4: link becomes ready
[ 5.114339] input: PS/2 Generic Mouse as /devices/platform/i8042/serio1/input/input3
clr-0d449d5327d64aee8a6b8a3484dcd880 login:
clr-a632ec84744d4e02974fe1891130002e login:
#. Login as root (and specify the new password). You can verify you're
running in the UOS by checking the kernel release version or seeing
@ -293,7 +324,7 @@ and UOS using the ``acrn_quick_setup.sh`` script, and launch the UOS:
.. code-block:: console
# uname -r
4.19.34-45.iot-lts2018
4.19.71-89.iot-lts2018
# ls /dev/acrn*
ls: cannot access '/dev/acrn*': No such file or directory
@ -302,9 +333,9 @@ and UOS using the ``acrn_quick_setup.sh`` script, and launch the UOS:
.. code-block:: console
# uname -r
4.19.55-67.iot-lts2018-sos
# ls /dev/acrn*
$ uname -r
4.19.71-89.iot-lts2018-sos
$ ls /dev/acrn*
/dev/acrn_hvlog_cur_0 /dev/acrn_hvlog_cur_2 /dev/acrn_trace_0 /dev/acrn_trace_2 /dev/acrn_vhm
/dev/acrn_hvlog_cur_1 /dev/acrn_hvlog_cur_3 /dev/acrn_trace_1 /dev/acrn_trace_3
@ -332,22 +363,22 @@ and UOS manually following these steps:
.. note::
The Clear Linux OS installer will automatically check for updates and install the
latest version available on your system. If you wish to use a specific version
(such as 30210), you can achieve that after the installation has completed using
``sudo swupd verify --fix --picky -m 30210``
(such as 31030), you can achieve that after the installation has completed using
``sudo swupd repair --picky -V 31030``
#. If you have an older version of Clear Linux OS already installed
on your hardware, use this command to upgrade Clear Linux OS
to version 30210 (or newer):
to version 31030 (or newer):
.. code-block:: none
$ sudo swupd update -m 30210 # or newer version
$ sudo swupd update -V 31030 # or newer version
#. Use the ``sudo swupd bundle-add`` command and add these Clear Linux OS bundles:
.. code-block:: none
$ sudo swupd bundle-add service-os kernel-iot-lts2018 systemd-networkd-autostart
$ sudo swupd bundle-add service-os systemd-networkd-autostart
.. table:: Clear Linux OS bundles
:widths: auto
@ -359,10 +390,6 @@ and UOS manually following these steps:
| service-os | Add the acrn hypervisor, acrn |
| | devicemodel, and Service OS kernel |
+----------------------------+-------------------------------------------+
| kernel-iot-lts2018 | Run the Intel kernel "kernel-iot-lts2018" |
| | which is enterprise-style kernel with |
| | backports |
+----------------------------+-------------------------------------------+
| systemd-networkd-autostart | Enable systemd-networkd as the default |
| | network manager |
+----------------------------+-------------------------------------------+
@ -382,9 +409,10 @@ partition. Follow these steps:
$ sudo ls -1 /boot/EFI/org.clearlinux
bootloaderx64.efi
kernel-org.clearlinux.native.4.20.11-702
kernel-org.clearlinux.iot-lts2018-sos.4.19.23-19
kernel-org.clearlinux.iot-lts2018.4.19.23-19
freestanding-00-intel-ucode.cpio
freestanding-i915-firmware.cpio.xz
kernel-org.clearlinux.iot-lts2018-sos.4.19.71-89
kernel-org.clearlinux.native.5.2.14-833
loaderx64.efi
.. note::
@ -392,8 +420,7 @@ partition. Follow these steps:
is mounted under ``/boot`` by default
The Clear Linux project releases updates often, sometimes
twice a day, so make note of the specific kernel versions
(*iot-lts2018 and *iot-lts2018-sos*) listed on your system,
as you will need them later.
(*iot-lts2018) listed on your system, as you will need them later.
.. note::
The EFI System Partition (ESP) may be different based on your hardware.
@ -468,73 +495,41 @@ partition. Follow these steps:
$ sudo efibootmgr -c -l "\EFI\acrn\acrn.efi" -d /dev/sda -p 1 -L "ACRN NUC Hypervisor" \
-u "bootloader=\EFI\org.clearlinux\bootloaderx64.efi uart=port@0x3f8"
#. Create a boot entry for the ACRN Service OS by copying a provided ``acrn.conf``
and editing it to account for the kernel versions noted in a previous step.
It must contain these settings:
+-----------+----------------------------------------------------------------+
| Setting | Description |
+===========+================================================================+
| title | Text to show in the boot menu |
+-----------+----------------------------------------------------------------+
| linux | Linux kernel for the Service OS (\*-sos) |
+-----------+----------------------------------------------------------------+
| options | Options to pass to the Service OS kernel (kernel parameters) |
+-----------+----------------------------------------------------------------+
A starter acrn.conf configuration file is included in the Clear Linux
OS release and is
also available in the acrn-hypervisor/hypervisor GitHub repo as `acrn.conf
<https://github.com/projectacrn/acrn-hypervisor/blob/master/efi-stub/clearlinux/acrn.conf>`__
as shown here:
.. literalinclude:: ../../misc/efi-stub/clearlinux/acrn.conf
:caption: efi-stub/clearlinux/acrn.conf
On the platform, copy the ``acrn.conf`` file to the EFI partition we mounted earlier:
.. code-block:: none
$ sudo cp /usr/share/acrn/samples/nuc/acrn.conf /boot/loader/entries/
You will need to edit this file to adjust the kernel version (``linux`` section),
insert the ``PARTUUID`` of your ``/dev/sda3`` partition
(``root=PARTUUID=<UUID of rootfs partition>``) in the ``options`` section, and
add the ``hugepagesz=1G hugepages=2`` at end of the ``options`` section.
Use ``blkid`` to find out what your ``/dev/sda3`` ``PARTUUID`` value is. Here
is a handy one-line command to do that:
.. code-block:: none
# sed -i "s/<UUID of rootfs partition>/`blkid -s PARTUUID -o value \
/dev/sda3`/g" /boot/loader/entries/acrn.conf
.. note::
It is also possible to use the device name directly, e.g. ``root=/dev/sda3``
#. Add a timeout period for Systemd-Boot to wait, otherwise it will not
present the boot menu and will always boot the base Clear Linux OS
.. code-block:: none
$ sudo clr-boot-manager set-timeout 20
$ sudo clr-boot-manager set-timeout 5
$ sudo clr-boot-manager update
#. Set the kernel-iot-lts2018 kernel as the default kernel:
#. Reboot and select "The ACRN Service OS" to boot, as shown below:
.. code-block:: none
$ sudo clr-boot-manager list-kernels
* org.clearlinux.native.5.2.14-833
org.clearlinux.iot-lts2018-sos.4.19.71-89
set the default kernel from ``org.clearlinux.native.5.2.14-833`` to
``org.clearlinux.iot-lts2018-sos.4.19.71-89``
.. code-block:: none
$ sudo clr-boot-manager set-kernel org.clearlinux.iot-lts2018-sos.4.19.71-89
$ sudo clr-boot-manager list-kernels
org.clearlinux.native.5.2.14-833
* org.clearlinux.iot-lts2018-sos.4.19.71-89
#. Reboot and wait until boot menu is displayed, as shown below:
.. code-block:: console
:emphasize-lines: 1
:caption: ACRN Service OS Boot Menu
=> The ACRN Service OS
Clear Linux OS for Intel Architecture (Clear-linux-iot-lts2018-4.19.23-19)
Clear Linux OS for Intel Architecture (Clear-linux-iot-lts2018-sos-4.19.23-19)
Clear Linux OS for Intel Architecture (Clear-linux-native.4.20.11-702)
EFI Default Loader
Clear Linux OS (Clear-linux-iot-lts2018-sos-4.19.71-89)
Clear Linux OS (Clear-linux-native.5.2.14-833)
Reboot Into Firmware Interface
#. After booting up the ACRN hypervisor, the Service OS will be launched
@ -550,14 +545,15 @@ partition. Follow these steps:
.. code-block:: none
$ dmesg | grep ACRN
$ sudo dmesg | grep ACRN
[ 0.000000] Hypervisor detected: ACRN
[ 1.687128] ACRNTrace: acrn_trace_init, cpu_num 4
[ 1.693129] ACRN HVLog: acrn_hvlog_init
[ 1.253093] ACRNTrace: Initialized acrn trace module with 4 cpu
[ 1.253535] ACRN HVLog: Failed to init last hvlog devs, errno -19
[ 1.253536] ACRN HVLog: Initialized hvlog module with 4 cpu
If you see log information similar to this, the ACRN hypervisor is running properly
and you can start deploying a User OS. If not, verify the EFI boot options, SOS
kernel, and ``acrn.conf`` settings are correct (as described above).
and you can start deploying a User OS. If not, verify the EFI boot options, and SOS
kernel settings are correct (as described above).
ACRN Network Bridge
@ -572,18 +568,18 @@ Set up Reference UOS
====================
#. On your platform, download the pre-built reference Clear Linux OS UOS
image version 30210 (or newer) into your (root) home directory:
image version 31030 (or newer) into your (root) home directory:
.. code-block:: none
$ cd ~
$ mkdir uos
$ cd uos
$ curl https://download.clearlinux.org/releases/30210/clear/clear-30210-kvm.img.xz -o uos.img.xz
$ curl https://download.clearlinux.org/releases/31030/clear/clear-31030-kvm.img.xz -o uos.img.xz
.. note::
In case you want to use or try out a newer version of Clear Linux OS as the UOS, you can
download the latest from http://download.clearlinux.org/image. Make sure to adjust the steps
download the latest from http://download.clearlinux.org/image/. Make sure to adjust the steps
described below accordingly (image file name and kernel modules version).
#. Uncompress it:
@ -599,7 +595,12 @@ Set up Reference UOS
$ sudo losetup -f -P --show uos.img
$ sudo mount /dev/loop0p3 /mnt
$ sudo cp -r /usr/lib/modules/"`readlink /usr/lib/kernel/default-iot-lts2018 | awk -F '2018.' '{print $2}'`.iot-lts2018" /mnt/lib/modules
$ sudo mount /dev/loop0p1 /mnt/boot
$ sudo swupd bundle-add --path=/mnt kernel-iot-lts2018
$ uos_kernel_conf=`ls -t /mnt/boot/loader/entries/ | grep Clear-linux-iot-lts2018 | head -n1`
$ uos_kernel=${uos_kernel_conf%.conf}
$ sudo echo "default $uos_kernel" > /mnt/boot/loader/loader.conf
$ sudo umount /mnt/boot
$ sudo umount /mnt
$ sync