mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-04-28 11:43:56 +00:00
create acrn hypervisor/kernel deb packaging
Tracked-On: #5022 Signed-off-by: zhanqi <sherry.qi.zhang@intel.com>
This commit is contained in:
parent
e5c5337886
commit
288efd31b4
@ -20,6 +20,7 @@ Configuration and Tools
|
|||||||
user-guides/acrn-shell
|
user-guides/acrn-shell
|
||||||
user-guides/acrn-dm-parameters
|
user-guides/acrn-dm-parameters
|
||||||
misc/tools/acrn-crashlog/README
|
misc/tools/acrn-crashlog/README
|
||||||
|
misc/packaging/README
|
||||||
misc/tools/**
|
misc/tools/**
|
||||||
misc/acrn-manager/**
|
misc/acrn-manager/**
|
||||||
|
|
||||||
|
3
misc/packaging/50-acrn.netdev
Normal file
3
misc/packaging/50-acrn.netdev
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
[NetDev]
|
||||||
|
Name=acrn-br0
|
||||||
|
Kind=bridge
|
5
misc/packaging/50-acrn.network
Normal file
5
misc/packaging/50-acrn.network
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
[Match]
|
||||||
|
Name=e* acrn_tap* tap*
|
||||||
|
|
||||||
|
[Network]
|
||||||
|
Bridge=acrn-br0
|
5
misc/packaging/50-eth.network
Normal file
5
misc/packaging/50-eth.network
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
[Match]
|
||||||
|
Name=acrn-br0
|
||||||
|
|
||||||
|
[Network]
|
||||||
|
DHCP=ipv4
|
3
misc/packaging/50-tap0.netdev
Normal file
3
misc/packaging/50-tap0.netdev
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
[NetDev]
|
||||||
|
Name=tap0
|
||||||
|
Kind=tap
|
128
misc/packaging/README.rst
Normal file
128
misc/packaging/README.rst
Normal file
@ -0,0 +1,128 @@
|
|||||||
|
.. _ubuntu_sos:
|
||||||
|
|
||||||
|
ubuntu_sos
|
||||||
|
##########
|
||||||
|
|
||||||
|
Description
|
||||||
|
***********
|
||||||
|
this scripts show how to build acrn-hypervisor and acrn-kernel deb package
|
||||||
|
|
||||||
|
1. setup native ubuntu 18.04
|
||||||
|
=============================
|
||||||
|
Base on GEO; config your proxy
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
sudo apt install python3
|
||||||
|
|
||||||
|
sudo su
|
||||||
|
|
||||||
|
|
||||||
|
2. config release.json file
|
||||||
|
============================
|
||||||
|
below is explanation for items in release.json,please change item accordingly,if do not change means go with default value
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
{
|
||||||
|
|
||||||
|
"//":"release ubuntu as sos verion",
|
||||||
|
|
||||||
|
"install_package":"true",---------->this 1st time should set to true if you did not install acrn related compile package, if already install,set to false
|
||||||
|
|
||||||
|
"gcc_version":"7.3.0",---------->gcc version should higher than 7.3.0
|
||||||
|
|
||||||
|
"binutils":"2.27",---------->binutils version should higher than 2.27
|
||||||
|
|
||||||
|
"//":"acrn-hypervisor config",
|
||||||
|
|
||||||
|
"build_acrn":"true",---------->if you need build acrn-hypervisor set to true
|
||||||
|
|
||||||
|
"sync_acrn_code":"true",---------->if you need sync acrn-hypervisor code set to true
|
||||||
|
|
||||||
|
"acrn_repo":"https://github.com/projectacrn/acrn-hypervisor.git",---------->acrn repo
|
||||||
|
|
||||||
|
"release_version":"remotes/origin/release_2.0",---------->acrn release branch
|
||||||
|
|
||||||
|
"acrn_deb_package":"true",---------->if you need create acrn-hypervison deb set to true
|
||||||
|
|
||||||
|
"install_acrn_deb":"false",---------->if you need install acrn-hypervisor deb set to true
|
||||||
|
|
||||||
|
"build_cmd":---------->acrn-hypervisor build command must include scenario and board info and release type
|
||||||
|
|
||||||
|
{
|
||||||
|
|
||||||
|
"scenario":
|
||||||
|
|
||||||
|
{
|
||||||
|
|
||||||
|
"industry":"true",
|
||||||
|
|
||||||
|
"hybrid":"true",
|
||||||
|
|
||||||
|
"logical_partition":"true"
|
||||||
|
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
"board":
|
||||||
|
|
||||||
|
{
|
||||||
|
|
||||||
|
"nuc7i7dnb":"true",
|
||||||
|
|
||||||
|
"whl-ipc-i5":"true"
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
"release":"0"---------->0 means debug version,1 means release version
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
"//":"kernel config",
|
||||||
|
|
||||||
|
"build_acrn_kernel":"true",---------->if you need build acrn-kernel set to true
|
||||||
|
|
||||||
|
"sync_acrn_kernel_code":"true",---------->if you need sync acrn-kernel code set to true
|
||||||
|
|
||||||
|
"kernel_release_version":"remotes/origin/release_2.0",---------->acrn kernel release branch
|
||||||
|
|
||||||
|
|
||||||
|
"sos_kernel_repo":"https://github.com/projectacrn/acrn-kernel.git",---------->acrn kernel repo
|
||||||
|
|
||||||
|
|
||||||
|
"acrn_kernel_deb_package":"true",---------->if you need create acrn-kernel deb set to true
|
||||||
|
|
||||||
|
"install_acrn_kernel_deb":"false",---------->if you need install acrn-kernel deb set to true
|
||||||
|
|
||||||
|
"//":"misc",
|
||||||
|
|
||||||
|
"auto_reboot":"false"---------->if you need reboot set to true
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
3.python3 install_uSoS.py
|
||||||
|
=========================
|
||||||
|
after finished , will get below two item
|
||||||
|
|
||||||
|
acrn_deb_package.deb
|
||||||
|
|
||||||
|
acrn_kernel_deb_package.deb
|
||||||
|
|
||||||
|
|
||||||
|
install command
|
||||||
|
|
||||||
|
sudo dpkg -i acrn_deb_package.deb
|
||||||
|
|
||||||
|
sudo dpkg -i acrn_kernel_deb_package.deb
|
||||||
|
|
||||||
|
|
||||||
|
uninstall
|
||||||
|
|
||||||
|
sudo dpkg -r acrn-package
|
||||||
|
|
||||||
|
sudo dpkg -r acrn-kernel-package
|
||||||
|
|
||||||
|
4.python3 compile_iasl.py
|
||||||
|
=========================
|
||||||
|
this scriptrs is help compile iasl and cp to /usr/sbin
|
120
misc/packaging/acrn-hypervisor.postinst
Normal file
120
misc/packaging/acrn-hypervisor.postinst
Normal file
@ -0,0 +1,120 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#* Copyright (c) 2020 Intel Corporation All rights reserved.
|
||||||
|
# postinst script for acrn-hypervisor
|
||||||
|
set -e
|
||||||
|
|
||||||
|
|
||||||
|
echo "please choose <scenario> ,<board> ,<disk type>"
|
||||||
|
|
||||||
|
echo "Scenario is ->
|
||||||
|
1. industry
|
||||||
|
2. hybrid
|
||||||
|
3. logical_partition"
|
||||||
|
read num
|
||||||
|
|
||||||
|
if [[ $num -eq 1 ]]
|
||||||
|
then
|
||||||
|
echo "Scenario is industry"
|
||||||
|
SCENARIO="industry"
|
||||||
|
elif [[ $num -eq 2 ]]
|
||||||
|
then
|
||||||
|
echo "Scenario is hybrid"
|
||||||
|
SCENARIO="hybrid"
|
||||||
|
|
||||||
|
elif [[ $num -eq 3 ]]
|
||||||
|
then
|
||||||
|
echo "Scenario is logical_partition"
|
||||||
|
SCENARIO="logical_partition"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Board is ->
|
||||||
|
1. nuc7i7dnb
|
||||||
|
2. whl-ipc-i5"
|
||||||
|
read num2
|
||||||
|
|
||||||
|
if [[ $num2 -eq 1 ]]
|
||||||
|
then
|
||||||
|
echo "Board is nuc7i7dnb"
|
||||||
|
BOARD="nuc7i7dnb"
|
||||||
|
elif [[ $num2 -eq 2 ]]
|
||||||
|
then
|
||||||
|
echo "Board is whl-ipc-i5"
|
||||||
|
BOARD="whl-ipc-i5"
|
||||||
|
fi
|
||||||
|
|
||||||
|
ACRNBIN="/boot/acrn.${SCENARIO}.${BOARD}.bin"
|
||||||
|
|
||||||
|
echo "Your acrn bin is ->"
|
||||||
|
echo $ACRNBIN
|
||||||
|
|
||||||
|
|
||||||
|
echo "disk type is ->
|
||||||
|
1. nvme
|
||||||
|
2. sda"
|
||||||
|
read num3
|
||||||
|
|
||||||
|
if [[ $num3 -eq 1 ]]
|
||||||
|
then
|
||||||
|
echo "disk type is nvme"
|
||||||
|
type="nvme"
|
||||||
|
elif [[ $num3 -eq 2 ]]
|
||||||
|
then
|
||||||
|
echo "disk type is sda"
|
||||||
|
type="sda"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
str=$(blkid |grep ext4 |grep ${type})
|
||||||
|
|
||||||
|
uuid=$(echo $str |cut -d " " -f 2|cut -d "=" -f 2)
|
||||||
|
|
||||||
|
str=$(blkid |grep ext4 |grep ${type})
|
||||||
|
|
||||||
|
partuuid=$(echo ${str##*PARTUUID=})
|
||||||
|
|
||||||
|
filename="/etc/grub.d/40_custom"
|
||||||
|
|
||||||
|
kernelimg=$(grep module ${filename}|| true)
|
||||||
|
kernelimg2='/boot/'
|
||||||
|
|
||||||
|
if [ "$kernelimg" ]
|
||||||
|
then
|
||||||
|
kernelimg2=$(echo $kernelimg |cut -d ' ' -f 2)
|
||||||
|
fi
|
||||||
|
|
||||||
|
cat>"${filename}"<<EOF
|
||||||
|
#!/bin/sh
|
||||||
|
exec tail -n +3 \$0
|
||||||
|
menuentry 'ACRN multiboot2 ' --id ACRN_deb_multiboot2 {
|
||||||
|
load_video
|
||||||
|
insmod gzio
|
||||||
|
insmod part_gpt
|
||||||
|
insmod ext2
|
||||||
|
search --no-floppy --fs-uuid --set $uuid
|
||||||
|
multiboot2 $ACRNBIN root=PARTUUID=$partuuid i915.modeset=0 video=efifb:off
|
||||||
|
$kernelimg
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
menuentry 'ACRN efi' --id ACRN_deb_efi {
|
||||||
|
recordfail
|
||||||
|
load_video
|
||||||
|
insmod gzio
|
||||||
|
insmod part_gpt
|
||||||
|
insmod ext2
|
||||||
|
linux $kernelimg2 pci_devices_ignore=(0:18:1) console=tty0 console=ttyS0 root=PARTUUID=$partuuid rw rootwait ignore_loglevel no_timer_check consoleblank=0 i915.nuclear_pageflip=1 i915.avail_planes_per_pipe=0x01010F i915.domain_plane_owners=0x011111110000 i915.enable_gvt=1 i915.enable_guc=0 hvlog=2M@0xE00000
|
||||||
|
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
filename='/etc/default/grub'
|
||||||
|
sed -i '/GRUB_DEFAULT/d' ${filename}
|
||||||
|
sed -i '/GRUB_TIMEOUT/d' ${filename}
|
||||||
|
sed -i '/GRUB_HIDDEN_TIMEOUT/d' ${filename}
|
||||||
|
sed -i '$a GRUB_DEFAULT=ACRN_deb_multiboot2' ${filename}
|
||||||
|
sed -i '$a GRUB_TIMEOUT=20' ${filename}
|
||||||
|
|
||||||
|
sync
|
||||||
|
update-grub
|
||||||
|
|
||||||
|
exit 0
|
52
misc/packaging/acrn-kernel.postinst
Normal file
52
misc/packaging/acrn-kernel.postinst
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#* Copyright (c) 2020 Intel Corporation All rights reserved.
|
||||||
|
# postinst script for acrn kernel
|
||||||
|
filename="/etc/grub.d/40_custom"
|
||||||
|
menu=$(grep ACRN_deb_multiboot2 ${filename}) || true
|
||||||
|
type=$(lsblk -l |awk '$NF == "/" {print $1}')
|
||||||
|
str=$(blkid |grep ${type})
|
||||||
|
uuid=$(echo $str |cut -d " " -f 2|cut -d "=" -f 2)
|
||||||
|
str=$(blkid |grep ${type})
|
||||||
|
partuuid=$(echo ${str##*PARTUUID=})
|
||||||
|
if [ -z "$menu" ]
|
||||||
|
then
|
||||||
|
cat>"${filename}"<<EOF
|
||||||
|
#!/bin/sh
|
||||||
|
exec tail -n +3 \$0
|
||||||
|
menuentry 'ACRN multiboot2 ' --id ACRN_deb_multiboot2 {
|
||||||
|
load_video
|
||||||
|
insmod gzio
|
||||||
|
insmod part_gpt
|
||||||
|
insmod ext2
|
||||||
|
search --no-floppy --fs-uuid --set $uuid
|
||||||
|
multiboot2 /boot/acrn.bin root=PARTUUID=$partuuid i915.modeset=0 video=efifb:off
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
menuentry 'ACRN efi' --id ACRN_deb_efi {
|
||||||
|
recordfail
|
||||||
|
load_video
|
||||||
|
insmod gzio
|
||||||
|
insmod part_gpt
|
||||||
|
insmod ext2
|
||||||
|
linux /boot/kernelimg pci_devices_ignore=(0:18:1) console=tty0 console=ttyS0 root=PARTUUID=$partuuid rw rootwait ignore_loglevel no_timer_check consoleblank=0 i915.nuclear_pageflip=1 i915.avail_planes_per_pipe=0x01010F i915.domain_plane_owners=0x011111110000 i915.enable_gvt=1 i915.enable_guc=0 hvlog=2M@0xE00000
|
||||||
|
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
|
||||||
|
sed -i '/module/d' ${filename} || true
|
||||||
|
bzImage=$(cat /boot/version.txt)
|
||||||
|
sed -i '/multiboot2 \/boot/a\module2 /boot/'${bzImage}' Linux_bzImage' ${filename}
|
||||||
|
|
||||||
|
str=$(grep hvlog=2M@0xE00000 ${filename} || true)
|
||||||
|
|
||||||
|
old=${str%pci*}
|
||||||
|
echo $old
|
||||||
|
bzImage=$(cat /boot/version.txt)
|
||||||
|
new=$(echo linux \/boot\/${bzImage})
|
||||||
|
echo $new
|
||||||
|
sed -i "s:$old:$new :" ${filename}
|
||||||
|
|
||||||
|
sync
|
||||||
|
update-grub
|
26
misc/packaging/compile_iasl.py
Normal file
26
misc/packaging/compile_iasl.py
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#* Copyright (c) 2020 Intel Corporation
|
||||||
|
import os,sys,copy,json
|
||||||
|
import subprocess
|
||||||
|
import datetime
|
||||||
|
import time
|
||||||
|
|
||||||
|
os.system('sudo -E apt-get install iasl')
|
||||||
|
|
||||||
|
if os.path.exists('iasl_build'):
|
||||||
|
os.system('rm -rf iasl_build')
|
||||||
|
os.system('mkdir -p iasl_build')
|
||||||
|
|
||||||
|
cmd = "cd iasl_build" + "&&" +"wget https://acpica.org/sites/acpica/files/acpica-unix-20191018.tar.gz"
|
||||||
|
os.system(cmd)
|
||||||
|
|
||||||
|
cmd = "cd iasl_build" + "&&" +"tar zxvf acpica-unix-20191018.tar.gz"
|
||||||
|
os.system(cmd)
|
||||||
|
|
||||||
|
cmd = "cd iasl_build/acpica-unix-20191018" + "&&" +"make clean"
|
||||||
|
os.system(cmd)
|
||||||
|
|
||||||
|
cmd = "cd iasl_build/acpica-unix-20191018" + "&&" +"make iasl"
|
||||||
|
os.system(cmd)
|
||||||
|
|
||||||
|
cmd = "cd iasl_build/acpica-unix-20191018" + "&&" +"cp ./generate/unix/bin/iasl /usr/sbin/"
|
134
misc/packaging/deb.json
Normal file
134
misc/packaging/deb.json
Normal file
@ -0,0 +1,134 @@
|
|||||||
|
{
|
||||||
|
"acrn.bin":{
|
||||||
|
"source":"acrn-hypervisor/build/hypervisor/acrn.bin",
|
||||||
|
"target":"boot"
|
||||||
|
},
|
||||||
|
"acrnctl":{
|
||||||
|
"source":"acrn-hypervisor/build/misc/tools/acrnctl",
|
||||||
|
"target":"usr/bin"
|
||||||
|
},
|
||||||
|
"acrnd":{
|
||||||
|
"source":"acrn-hypervisor/build/misc/tools/acrnd",
|
||||||
|
"target":"usr/bin"
|
||||||
|
},
|
||||||
|
"acrn-dm":{
|
||||||
|
"source":"acrn-hypervisor/build/devicemodel/acrn-dm",
|
||||||
|
"target":"usr/bin"
|
||||||
|
},
|
||||||
|
"acrnlog":{
|
||||||
|
"source":"acrn-hypervisor/build/misc/tools/acrnlog",
|
||||||
|
"target":"usr/bin"
|
||||||
|
},
|
||||||
|
"acrnprobe":{
|
||||||
|
"source":"acrn-hypervisor/build/misc/tools/acrn-crashlog/acrnprobe/bin/acrnprobe",
|
||||||
|
"target":"usr/bin"
|
||||||
|
},
|
||||||
|
"acrntrace":{
|
||||||
|
"source":"acrn-hypervisor/build/misc/tools/acrntrace",
|
||||||
|
"target":"usr/bin"
|
||||||
|
},
|
||||||
|
"crashlogctl":{
|
||||||
|
"source":"acrn-hypervisor/misc/tools/acrn-crashlog/data/crashlogctl",
|
||||||
|
"target":"usr/bin"
|
||||||
|
},
|
||||||
|
"debugger":{
|
||||||
|
"source":"acrn-hypervisor/build/misc/tools/acrn-crashlog/usercrash/bin/debugger",
|
||||||
|
"target":"usr/bin"
|
||||||
|
},
|
||||||
|
"usercrash-wrapper":{
|
||||||
|
"source":"acrn-hypervisor/misc/tools/acrn-crashlog/data/usercrash-wrapper",
|
||||||
|
"target":"usr/bin"
|
||||||
|
},
|
||||||
|
"acrn.32.out":{
|
||||||
|
"source":"acrn-hypervisor/build/hypervisor/acrn.32.out",
|
||||||
|
"target":"boot"
|
||||||
|
},
|
||||||
|
"acrn.efi":{
|
||||||
|
"source":"acrn-hypervisor/build/hypervisor/acrn.efi",
|
||||||
|
"target":"boot"
|
||||||
|
},
|
||||||
|
"50-acrn.netdev":{
|
||||||
|
"source":"50-acrn.netdev",
|
||||||
|
"target":"usr/lib/systemd/network"
|
||||||
|
},
|
||||||
|
"50-acrn.network":{
|
||||||
|
"source":"50-acrn.network",
|
||||||
|
"target":"usr/lib/systemd/network"
|
||||||
|
},
|
||||||
|
"50-eth.network":{
|
||||||
|
"source":"50-eth.network",
|
||||||
|
"target":"usr/lib/systemd/network"
|
||||||
|
},
|
||||||
|
"50-tap0.netdev":{
|
||||||
|
"source":"50-tap0.netdev",
|
||||||
|
"target":"usr/lib/systemd/network"
|
||||||
|
},
|
||||||
|
"acrnd.service":{
|
||||||
|
"source":"acrn-hypervisor/build/misc/tools/acrnd.service",
|
||||||
|
"target":"usr/lib/systemd/system"
|
||||||
|
},
|
||||||
|
"acrnlog.service":{
|
||||||
|
"source":"acrn-hypervisor/build/misc/tools/acrnlog.service",
|
||||||
|
"target":"usr/lib/systemd/system"
|
||||||
|
},
|
||||||
|
"acrnprobe.service":{
|
||||||
|
"source":"acrn-hypervisor/misc/tools/acrn-crashlog/data/acrnprobe.service",
|
||||||
|
"target":"usr/lib/systemd/system"
|
||||||
|
},
|
||||||
|
"usercrash.service":{
|
||||||
|
"source":"acrn-hypervisor/misc/tools/acrn-crashlog/data/usercrash.service",
|
||||||
|
"target":"usr/lib/systemd/system"
|
||||||
|
},
|
||||||
|
"acrn-crashlog-dirs.conf":{
|
||||||
|
"source":"acrn-hypervisor//misc/tools/acrn-crashlog/data/acrn-crashlog-dirs.conf",
|
||||||
|
"target":"usr/tmpfiles.d"
|
||||||
|
},
|
||||||
|
"libacrn-mngr.a":{
|
||||||
|
"source":"acrn-hypervisor/build/misc/tools/libacrn-mngr.a",
|
||||||
|
"target":"usr/lib64"
|
||||||
|
},
|
||||||
|
"acrnprobe.xml":{
|
||||||
|
"source":"acrn-hypervisor/misc/tools/acrn-crashlog/data/acrnprobe.xml",
|
||||||
|
"target":"usr/share/defaults/telemetrics"
|
||||||
|
},
|
||||||
|
"OVMF.fd":{
|
||||||
|
"source":"acrn-hypervisor/devicemodel/bios/OVMF.fd",
|
||||||
|
"target":"usr/share/acrn/bios"
|
||||||
|
},
|
||||||
|
"40-watchdog.conf":{
|
||||||
|
"source":"acrn-hypervisor/misc/tools/acrn-crashlog/data/40-watchdog.conf",
|
||||||
|
"target":"usr/share/acrn/crashlog"
|
||||||
|
},
|
||||||
|
"80-coredump.conf":{
|
||||||
|
"source":"acrn-hypervisor/misc/tools/acrn-crashlog/data/80-coredump.conf",
|
||||||
|
"target":"usr/share/acrn/crashlog"
|
||||||
|
},
|
||||||
|
"acrn.conf":{
|
||||||
|
"source":"acrn-hypervisor/misc/efi-stub/clearlinux/acrn.conf",
|
||||||
|
"target":"usr/share/acrn/samples/nuc"
|
||||||
|
},
|
||||||
|
"launch_hard_rt_vm.sh":{
|
||||||
|
"source":"acrn-hypervisor/devicemodel/samples/nuc/launch_hard_rt_vm.sh",
|
||||||
|
"target":"usr/share/acrn/samples/nuc"
|
||||||
|
},
|
||||||
|
"launch_uos.sh":{
|
||||||
|
"source":"acrn-hypervisor/devicemodel/samples/nuc/launch_uos.sh",
|
||||||
|
"target":"usr/share/acrn/samples/nuc"
|
||||||
|
},
|
||||||
|
"launch_vxworks.sh":{
|
||||||
|
"source":"acrn-hypervisor/devicemodel/samples/nuc/launch_vxworks.sh",
|
||||||
|
"target":"usr/share/acrn/samples/nuc"
|
||||||
|
},
|
||||||
|
"launch_win.sh":{
|
||||||
|
"source":"acrn-hypervisor/devicemodel/samples/nuc/launch_win.sh",
|
||||||
|
"target":"usr/share/acrn/samples/nuc"
|
||||||
|
},
|
||||||
|
"launch_xenomai.sh":{
|
||||||
|
"source":"acrn-hypervisor/devicemodel/samples/nuc/launch_xenomai.sh",
|
||||||
|
"target":"usr/share/acrn/samples/nuc"
|
||||||
|
},
|
||||||
|
"launch_zephyr.sh":{
|
||||||
|
"source":"acrn-hypervisor/devicemodel/samples/nuc/launch_zephyr.sh",
|
||||||
|
"target":"usr/share/acrn/samples/nuc"
|
||||||
|
}
|
||||||
|
}
|
278
misc/packaging/install_uSoS.py
Normal file
278
misc/packaging/install_uSoS.py
Normal file
@ -0,0 +1,278 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#* Copyright (c) 2020 Intel Corporation
|
||||||
|
import os,sys,copy,json
|
||||||
|
import subprocess
|
||||||
|
import datetime
|
||||||
|
import time
|
||||||
|
|
||||||
|
#parse json file
|
||||||
|
with open("release.json","r") as load_f:
|
||||||
|
load_dict = json.load(load_f)
|
||||||
|
load_f.close()
|
||||||
|
|
||||||
|
with open("deb.json","r") as load_fdeb:
|
||||||
|
load_dictdeb = json.load(load_fdeb)
|
||||||
|
load_fdeb.close()
|
||||||
|
|
||||||
|
|
||||||
|
# install compile package
|
||||||
|
def install_compile_package():
|
||||||
|
#check compile env
|
||||||
|
os.system('apt install gcc \
|
||||||
|
git \
|
||||||
|
make \
|
||||||
|
gnu-efi \
|
||||||
|
libssl-dev \
|
||||||
|
libpciaccess-dev \
|
||||||
|
uuid-dev \
|
||||||
|
libsystemd-dev \
|
||||||
|
libevent-dev \
|
||||||
|
libxml2-dev \
|
||||||
|
libusb-1.0-0-dev \
|
||||||
|
python3 \
|
||||||
|
python3-pip \
|
||||||
|
libblkid-dev \
|
||||||
|
e2fslibs-dev \
|
||||||
|
pkg-config \
|
||||||
|
libelf-dev\
|
||||||
|
libnuma-dev -y')
|
||||||
|
gcc_version_out = os.popen('gcc --version')
|
||||||
|
gcc_version = gcc_version_out.read()
|
||||||
|
if tuple(gcc_version.split(' ')[3].split("\n")[0].split(".")) < tuple(load_dict['gcc_version'].split('.')):
|
||||||
|
print("your gcc version is too old")
|
||||||
|
binutils_version_out = os.popen('ld -v')
|
||||||
|
binutils_version = binutils_version_out.read().split(" ")
|
||||||
|
if tuple(binutils_version[-1].split("\n")[0].split(".")) < tuple(load_dict['binutils'].split('.')):
|
||||||
|
print("your binutils version is too old")
|
||||||
|
os.system('apt install python-pip -y')
|
||||||
|
os.system('pip3 install kconfiglib')
|
||||||
|
os.system('apt-get install bison -y')
|
||||||
|
os.system('apt-get install flex -y')
|
||||||
|
os.system('apt install liblz4-tool -y')
|
||||||
|
|
||||||
|
|
||||||
|
# build acrn
|
||||||
|
def build_acrn():
|
||||||
|
if os.path.exists('acrn_release_img'):
|
||||||
|
os.system('rm -rf acrn_release_img')
|
||||||
|
os.system('mkdir -p acrn_release_img')
|
||||||
|
|
||||||
|
if load_dict['sync_acrn_code'] == 'true':
|
||||||
|
if os.path.exists('acrn-hypervisor'):
|
||||||
|
os.system('rm -rf acrn-hypervisor')
|
||||||
|
cmd = 'git clone %s' % load_dict['acrn_repo']
|
||||||
|
os.system(cmd)
|
||||||
|
cmd = 'cd acrn-hypervisor' + "&&" +'git checkout -b mybranch %s'% load_dict['release_version']
|
||||||
|
os.system(cmd)
|
||||||
|
|
||||||
|
|
||||||
|
make_cmd_list =[]
|
||||||
|
|
||||||
|
release = load_dict['build_cmd']['release']
|
||||||
|
scenario = load_dict['build_cmd']['scenario']
|
||||||
|
board = load_dict['build_cmd']['board']
|
||||||
|
info_list = []
|
||||||
|
|
||||||
|
for i in scenario:
|
||||||
|
if scenario[i] == 'true':
|
||||||
|
for j in board:
|
||||||
|
if board[j] == 'true':
|
||||||
|
info_list.append((i,j))
|
||||||
|
make_cmd = 'make all BOARD_FILE=misc/acrn-config/xmls/board-xmls/%s.xml SCENARIO_FILE=misc/acrn-config/xmls/config-xmls/%s/%s.xml RELEASE=%s'%(j,j,i,release)
|
||||||
|
make_cmd_list.append(make_cmd)
|
||||||
|
|
||||||
|
for i in range(len(make_cmd_list)):
|
||||||
|
cmd = 'cd acrn-hypervisor' + "&&" +'make clean'
|
||||||
|
os.system(cmd)
|
||||||
|
|
||||||
|
cmd = 'cd acrn-hypervisor' + "&&" +'%s'% make_cmd_list[i]
|
||||||
|
os.system(cmd)
|
||||||
|
|
||||||
|
bin_name ='acrn.%s.%s.bin' % (info_list[i][0],info_list[i][1])
|
||||||
|
out_name ='acrn.%s.%s.32.out' % (info_list[i][0],info_list[i][1])
|
||||||
|
efi_name ='acrn.%s.%s.efi' % (info_list[i][0],info_list[i][1])
|
||||||
|
|
||||||
|
cmd = 'cp %s acrn_release_img/%s' %(load_dictdeb['acrn.bin']['source'],bin_name)
|
||||||
|
os.system(cmd)
|
||||||
|
|
||||||
|
cmd = 'cp %s acrn_release_img/%s' %(load_dictdeb['acrn.32.out']['source'],out_name)
|
||||||
|
os.system(cmd)
|
||||||
|
|
||||||
|
if os.path.exists(load_dictdeb['acrn.efi']['source']):
|
||||||
|
cmd = 'cp %s acrn_release_img/%s' %(load_dictdeb['acrn.efi']['source'],efi_name)
|
||||||
|
os.system(cmd)
|
||||||
|
|
||||||
|
def create_acrn_kernel_deb():
|
||||||
|
|
||||||
|
if os.path.exists('acrn_kernel_deb'):
|
||||||
|
os.system('rm -rf acrn_kernel_deb')
|
||||||
|
|
||||||
|
os.system('mkdir -p acrn_kernel_deb')
|
||||||
|
|
||||||
|
cmd = "cd acrn_kernel_deb" + "&&" +"mkdir DEBIAN"
|
||||||
|
os.system(cmd)
|
||||||
|
|
||||||
|
cmd = "cd acrn_kernel_deb" + "&&" +"touch DEBIAN/control"
|
||||||
|
os.system(cmd)
|
||||||
|
|
||||||
|
#control file description
|
||||||
|
|
||||||
|
listcontrol=['Package: acrn-kernel-package\n','version: %s \n'% datetime.date.today(),'Section: free \n','Priority: optional \n','Architecture: amd64 \n','Installed-Size: 66666 \n','Maintainer: Intel\n','Description: sos_kernel \n','\n']
|
||||||
|
|
||||||
|
|
||||||
|
with open('acrn_kernel_deb/DEBIAN/control','w',encoding='utf-8') as fr:
|
||||||
|
fr.writelines(listcontrol)
|
||||||
|
|
||||||
|
cmd = 'cd acrn-kernel' + '&&' + 'ls *.gz'
|
||||||
|
filename = os.popen(cmd).read().replace('\n', '').replace('\r', '')
|
||||||
|
cmd = 'cp acrn-kernel/%s acrn_kernel_deb/' % filename
|
||||||
|
os.system(cmd)
|
||||||
|
|
||||||
|
cmd = 'cd acrn_kernel_deb' + '&&' + 'tar -zvxf %s' % filename
|
||||||
|
os.system(cmd)
|
||||||
|
|
||||||
|
|
||||||
|
cmd = 'cd acrn_kernel_deb/boot' + '&&' + 'ls vmlinuz*'
|
||||||
|
version = os.popen(cmd)
|
||||||
|
|
||||||
|
f = open("acrn_kernel_deb/boot/version.txt",'w')
|
||||||
|
f.write(version.read())
|
||||||
|
f.close()
|
||||||
|
|
||||||
|
os.system('cp acrn-kernel.postinst acrn_kernel_deb/DEBIAN/postinst' )
|
||||||
|
|
||||||
|
os.system('chmod +x acrn_kernel_deb/DEBIAN/postinst')
|
||||||
|
|
||||||
|
os.system('sed -i \'s/\r//\' acrn_kernel_deb/DEBIAN/postinst')
|
||||||
|
|
||||||
|
os.system('rm acrn_kernel_deb/%s' % filename)
|
||||||
|
|
||||||
|
os.system('dpkg -b acrn_kernel_deb acrn_kernel_deb_package.deb ')
|
||||||
|
|
||||||
|
|
||||||
|
def build_acrn_kernel(acrn_repo,acrn_version):
|
||||||
|
if load_dict['sync_acrn_kernel_code'] == 'true':
|
||||||
|
if os.path.exists('acrn-kernel'):
|
||||||
|
os.system('rm -rf acrn-kernel')
|
||||||
|
|
||||||
|
os.system('git clone %s' % acrn_repo)
|
||||||
|
|
||||||
|
cmd = 'cd acrn-kernel' + "&&" +'git checkout %s'% acrn_version
|
||||||
|
os.system(cmd)
|
||||||
|
|
||||||
|
cmd = 'cd acrn-kernel' + "&&" +'make clean'
|
||||||
|
os.system(cmd)
|
||||||
|
# build kernel
|
||||||
|
cmd = 'cd acrn-kernel' + "&&" +'cp kernel_config_uefi_sos .config'
|
||||||
|
os.system(cmd)
|
||||||
|
|
||||||
|
cmd = 'cd acrn-kernel' + "&&" +'make olddefconfig'
|
||||||
|
os.system(cmd)
|
||||||
|
|
||||||
|
cmd = 'cd acrn-kernel' + "&&" +'make targz-pkg -j4'
|
||||||
|
os.system(cmd)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#install acrn
|
||||||
|
def install_acrn_deb():
|
||||||
|
os.system('dpkg -r acrn-package')
|
||||||
|
os.system('dpkg -i acrn_deb_package.deb ')
|
||||||
|
|
||||||
|
|
||||||
|
#install kernel
|
||||||
|
def install_acrn_kernel_deb():
|
||||||
|
os.system('dpkg -r acrn-kernel-package ')
|
||||||
|
os.system('dpkg -i acrn_kernel_deb_package.deb ')
|
||||||
|
|
||||||
|
|
||||||
|
def create_acrn_deb():
|
||||||
|
|
||||||
|
path = 'acrn_release_deb'
|
||||||
|
if os.path.exists(path):
|
||||||
|
os.system('rm -rf acrn_release_deb')
|
||||||
|
os.system('mkdir -p acrn_release_deb')
|
||||||
|
cmd = "cd acrn_release_deb" + "&&" +"mkdir DEBIAN"
|
||||||
|
os.system(cmd)
|
||||||
|
|
||||||
|
cmd = "cd acrn_release_deb" + "&&" +"touch DEBIAN/control"
|
||||||
|
os.system(cmd)
|
||||||
|
|
||||||
|
#control file description
|
||||||
|
acrn_info = load_dict['release_version']
|
||||||
|
|
||||||
|
listcontrol=['Package: acrn-package\n','version: %s \n'% datetime.date.today(),'Section: free \n','Priority: optional \n','Architecture: amd64 \n','Installed-Size: 66666 \n','Maintainer: Intel\n','Description: %s \n' % acrn_info,'\n']
|
||||||
|
|
||||||
|
|
||||||
|
with open('acrn_release_deb/DEBIAN/control','w',encoding='utf-8') as fr:
|
||||||
|
fr.writelines(listcontrol)
|
||||||
|
|
||||||
|
#design in acrn_data
|
||||||
|
|
||||||
|
with open("deb.json","r") as load_deb:
|
||||||
|
deb_info = json.load(load_deb)
|
||||||
|
|
||||||
|
load_deb.close()
|
||||||
|
|
||||||
|
deb_info_list = list(deb_info)
|
||||||
|
|
||||||
|
for i in deb_info_list:
|
||||||
|
source = deb_info[i]['source']
|
||||||
|
target = deb_info[i]['target']
|
||||||
|
if target == 'boot':
|
||||||
|
continue
|
||||||
|
if os.path.exists(target):
|
||||||
|
os.system('cp %s %s' % (source,target))
|
||||||
|
else:
|
||||||
|
os.system('mkdir -p %s' % target)
|
||||||
|
os.system('cp %s %s' % (source,target))
|
||||||
|
|
||||||
|
os.system('cp -r usr acrn_release_deb')
|
||||||
|
os.system('rm -rf usr')
|
||||||
|
|
||||||
|
os.system('mkdir -p acrn_release_deb/boot')
|
||||||
|
cmd = "cp acrn_release_img/acrn.* acrn_release_deb/boot"
|
||||||
|
os.system(cmd)
|
||||||
|
|
||||||
|
|
||||||
|
os.system('cp acrn-hypervisor.postinst acrn_release_deb/DEBIAN/postinst' )
|
||||||
|
os.system('chmod +x acrn_release_deb/DEBIAN/postinst')
|
||||||
|
os.system('sed -i \'s/\r//\' acrn_release_deb/DEBIAN/postinst')
|
||||||
|
|
||||||
|
os.system('dpkg -b acrn_release_deb acrn_deb_package.deb ')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def install_process():
|
||||||
|
|
||||||
|
if load_dict['install_package'] == 'true':
|
||||||
|
print('start install package')
|
||||||
|
install_compile_package()
|
||||||
|
|
||||||
|
if load_dict['build_acrn'] == 'true':
|
||||||
|
print('start build acrn')
|
||||||
|
build_acrn()
|
||||||
|
|
||||||
|
if load_dict['build_acrn_kernel'] == 'true':
|
||||||
|
print('start build_acrn_kernel')
|
||||||
|
build_acrn_kernel(load_dict['sos_kernel_repo'],load_dict['kernel_release_version'])
|
||||||
|
|
||||||
|
if load_dict['acrn_deb_package'] == 'true':
|
||||||
|
print('start create acrn_deb_package deb')
|
||||||
|
create_acrn_deb()
|
||||||
|
|
||||||
|
if load_dict['acrn_kernel_deb_package'] == 'true':
|
||||||
|
print('start create acrn_kernel_deb_package deb')
|
||||||
|
create_acrn_kernel_deb()
|
||||||
|
|
||||||
|
if load_dict['install_acrn_deb'] == 'true':
|
||||||
|
print('start install_acrn_deb')
|
||||||
|
install_acrn_deb()
|
||||||
|
|
||||||
|
|
||||||
|
if load_dict['install_acrn_kernel_deb'] == 'true':
|
||||||
|
print('start install install_acrn_kernel_deb')
|
||||||
|
install_acrn_kernel_deb()
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
install_process()
|
38
misc/packaging/release.json
Normal file
38
misc/packaging/release.json
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
{
|
||||||
|
"//":"release ubuntu as sos verion",
|
||||||
|
"install_package":"true",
|
||||||
|
"gcc_version":"7.3.0",
|
||||||
|
"binutils":"2.27",
|
||||||
|
"//":"acrn-hypervisor config",
|
||||||
|
"build_acrn":"true",
|
||||||
|
"sync_acrn_code":"true",
|
||||||
|
"acrn_repo":"https://github.com/projectacrn/acrn-hypervisor.git",
|
||||||
|
"release_version":"remotes/origin/release_2.0",
|
||||||
|
"acrn_deb_package":"true",
|
||||||
|
"install_acrn_deb":"false",
|
||||||
|
"build_cmd":
|
||||||
|
{
|
||||||
|
"scenario":
|
||||||
|
{
|
||||||
|
"industry":"true",
|
||||||
|
"hybrid":"true",
|
||||||
|
"logical_partition":"true"
|
||||||
|
|
||||||
|
},
|
||||||
|
"board":
|
||||||
|
{
|
||||||
|
"nuc7i7dnb":"true",
|
||||||
|
"whl-ipc-i5":"true"
|
||||||
|
},
|
||||||
|
"release":"0"
|
||||||
|
},
|
||||||
|
"//":"kernel config",
|
||||||
|
"build_acrn_kernel":"true",
|
||||||
|
"sync_acrn_kernel_code":"true",
|
||||||
|
"kernel_release_version":"remotes/origin/release_2.0",
|
||||||
|
"sos_kernel_repo":"https://github.com/projectacrn/acrn-kernel.git",
|
||||||
|
"acrn_kernel_deb_package":"true",
|
||||||
|
"install_acrn_kernel_deb":"false",
|
||||||
|
"//":"misc",
|
||||||
|
"auto_reboot":"false"
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user