mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-04-28 19:54:01 +00:00
deb-pkg: add acrn-hypervisor and acrn-board-inspector into debian package
1. "make clean && make BOARD=nuc11tnbi5 SCENARIO=shared" will generate the acrn debian package. 2. "make clean && make board_inspector" will generate the acrn board_inspector debian package Tracked-On: #6688 Signed-off-by: Hu Fenglin <fenglin.hu@intel.com>
This commit is contained in:
parent
856815bb5c
commit
f65a87585b
134
.deb.conf
Normal file
134
.deb.conf
Normal file
@ -0,0 +1,134 @@
|
||||
{
|
||||
"acrn.bin":{
|
||||
"source":"acrn-hypervisor/build/hypervisor/acrn.bin",
|
||||
"target":"boot/"
|
||||
},
|
||||
"acrnctl":{
|
||||
"source":"acrn-hypervisor/build/misc/services/acrnctl",
|
||||
"target":"usr/bin/"
|
||||
},
|
||||
"acrnd":{
|
||||
"source":"acrn-hypervisor/build/misc/services/acrnd",
|
||||
"target":"usr/bin/"
|
||||
},
|
||||
"acrn-dm":{
|
||||
"source":"acrn-hypervisor/build/devicemodel/acrn-dm",
|
||||
"target":"usr/bin/"
|
||||
},
|
||||
"acrnlog":{
|
||||
"source":"acrn-hypervisor/build/misc/debug_tools/acrnlog",
|
||||
"target":"usr/bin/"
|
||||
},
|
||||
"acrnprobe":{
|
||||
"source":"acrn-hypervisor/build/misc/debug_tools/acrn-crashlog/acrnprobe/bin/acrnprobe",
|
||||
"target":"usr/bin/"
|
||||
},
|
||||
"acrntrace":{
|
||||
"source":"acrn-hypervisor/build/misc/debug_tools/acrntrace",
|
||||
"target":"usr/bin/"
|
||||
},
|
||||
"crashlogctl":{
|
||||
"source":"acrn-hypervisor/misc/debug_tools/acrn_crashlog/data/crashlogctl",
|
||||
"target":"usr/bin/"
|
||||
},
|
||||
"debugger":{
|
||||
"source":"acrn-hypervisor/build/misc/debug_tools/acrn-crashlog/usercrash/bin/debugger",
|
||||
"target":"usr/bin/"
|
||||
},
|
||||
"usercrash-wrapper":{
|
||||
"source":"acrn-hypervisor/misc/debug_tools/acrn_crashlog/data/usercrash-wrapper",
|
||||
"target":"usr/bin/"
|
||||
},
|
||||
"acrn.32.out":{
|
||||
"source":"acrn-hypervisor/build/hypervisor/acrn.32.out",
|
||||
"target":"boot/"
|
||||
},
|
||||
"ACPI_VM0.bin":{
|
||||
"source":"acrn-hypervisor/build/hypervisor/acpi/ACPI_VM0.bin",
|
||||
"target":"boot"
|
||||
},
|
||||
"ACPI_VM1.bin":{
|
||||
"source":"acrn-hypervisor/build/hypervisor/acpi/ACPI_VM1.bin",
|
||||
"target":"boot"
|
||||
},
|
||||
"100-acrn-grub":{
|
||||
"source":"acrn-hypervisor/misc/packaging/100_ACRN",
|
||||
"target":"etc/grub.d/"
|
||||
},
|
||||
"50-acrn.netdev":{
|
||||
"source":"acrn-hypervisor/misc/packaging/50-acrn.netdev",
|
||||
"target":"usr/lib/systemd/network"
|
||||
},
|
||||
"50-acrn.network":{
|
||||
"source":"acrn-hypervisor/misc/packaging/50-acrn.network",
|
||||
"target":"usr/lib/systemd/network"
|
||||
},
|
||||
"50-eth.network":{
|
||||
"source":"acrn-hypervisor/misc/packaging/50-eth.network",
|
||||
"target":"usr/lib/systemd/network"
|
||||
},
|
||||
"50-tap0.netdev":{
|
||||
"source":"acrn-hypervisor/misc/packaging/50-tap0.netdev",
|
||||
"target":"usr/lib/systemd/network"
|
||||
},
|
||||
"acrnd.service":{
|
||||
"source":"acrn-hypervisor/build/misc/services/acrnd.service",
|
||||
"target":"usr/lib/systemd/system"
|
||||
},
|
||||
"acrnlog.service":{
|
||||
"source":"acrn-hypervisor/build/misc/debug_tools/acrnlog.service",
|
||||
"target":"usr/lib/systemd/system"
|
||||
},
|
||||
"acrnprobe.service":{
|
||||
"source":"acrn-hypervisor/misc/debug_tools/acrn_crashlog/data/acrnprobe.service",
|
||||
"target":"usr/lib/systemd/system"
|
||||
},
|
||||
"usercrash.service":{
|
||||
"source":"acrn-hypervisor/misc/debug_tools/acrn_crashlog/data/usercrash.service",
|
||||
"target":"usr/lib/systemd/system"
|
||||
},
|
||||
"libacrn-mngr.a":{
|
||||
"source":"acrn-hypervisor/build/misc/services/libacrn-mngr.a",
|
||||
"target":"usr/lib64"
|
||||
},
|
||||
"acrnprobe.xml":{
|
||||
"source":"acrn-hypervisor/misc/debug_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/debug_tools/acrn_crashlog/data/40-watchdog.conf",
|
||||
"target":"usr/share/acrn/crashlog"
|
||||
},
|
||||
"80-coredump.conf":{
|
||||
"source":"acrn-hypervisor/misc/debug_tools/acrn_crashlog/data/80-coredump.conf",
|
||||
"target":"usr/share/acrn/crashlog"
|
||||
},
|
||||
"launch_hard_rt_vm.sh":{
|
||||
"source":"acrn-hypervisor/misc/config_tools/data/sample_launch_scripts/nuc/launch_hard_rt_vm.sh",
|
||||
"target":"usr/share/acrn/samples/nuc"
|
||||
},
|
||||
"launch_uos.sh":{
|
||||
"source":"acrn-hypervisor/misc/config_tools/data/sample_launch_scripts/nuc/launch_uos.sh",
|
||||
"target":"usr/share/acrn/samples/nuc"
|
||||
},
|
||||
"launch_vxworks.sh":{
|
||||
"source":"acrn-hypervisor/misc/config_tools/data/sample_launch_scripts/nuc/launch_vxworks.sh",
|
||||
"target":"usr/share/acrn/samples/nuc"
|
||||
},
|
||||
"launch_win.sh":{
|
||||
"source":"acrn-hypervisor/misc/config_tools/data/sample_launch_scripts/nuc/launch_win.sh",
|
||||
"target":"usr/share/acrn/samples/nuc"
|
||||
},
|
||||
"launch_xenomai.sh":{
|
||||
"source":"acrn-hypervisor/misc/config_tools/data/sample_launch_scripts/nuc/launch_xenomai.sh",
|
||||
"target":"usr/share/acrn/samples/nuc"
|
||||
},
|
||||
"launch_zephyr.sh":{
|
||||
"source":"acrn-hypervisor/misc/config_tools/data/sample_launch_scripts/nuc/launch_zephyr.sh",
|
||||
"target":"usr/share/acrn/samples/nuc"
|
||||
}
|
||||
}
|
3
Makefile
3
Makefile
@ -83,6 +83,7 @@ ASL_COMPILER ?= $(shell which iasl)
|
||||
.PHONY: all hypervisor devicemodel tools life_mngr doc
|
||||
all: hypervisor devicemodel tools
|
||||
@cat $(HV_CFG_LOG)
|
||||
@python3 misc/packaging/gen_acrn_deb.py acrn_all $(ROOT_OUT) --version=$(FULL_VERSION) --board_name=$(BOARD) --scenario=$(SCENARIO)
|
||||
|
||||
#help functions to build acrn and install acrn/acrn symbols
|
||||
define build_acrn
|
||||
@ -99,6 +100,8 @@ define install_acrn_debug
|
||||
endef
|
||||
|
||||
HV_MAKEOPTS := -C $(T)/hypervisor BOARD=$(BOARD) SCENARIO=$(SCENARIO) HV_OBJDIR=$(HV_OUT) RELEASE=$(RELEASE)
|
||||
board_inspector:
|
||||
@python3 misc/packaging/gen_acrn_deb.py board_inspector $(ROOT_OUT) --version=$(FULL_VERSION)
|
||||
|
||||
hypervisor: hvdefconfig
|
||||
$(MAKE) $(HV_MAKEOPTS)
|
||||
|
@ -12,7 +12,7 @@ sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', '
|
||||
import lxml.etree
|
||||
from acpi_const import *
|
||||
import acpiparser.tpm2
|
||||
import lib.cdata
|
||||
import inspectorlib.cdata
|
||||
import common
|
||||
|
||||
def asl_to_aml(dest_vm_acpi_path, dest_vm_acpi_bin_path):
|
||||
@ -91,9 +91,9 @@ def tpm2_acpi_gen(acpi_bin, board_etree, scenario_etree, allocation_etree):
|
||||
if common.get_node("//capability[@id = 'log_area']", board_etree) is not None:
|
||||
ctype_data.log_area_minimum_length = int(common.get_node("//log_area_minimum_length/text()", allocation_etree), 16)
|
||||
ctype_data.log_area_start_address = int(common.get_node("//log_area_start_address/text()", allocation_etree), 16)
|
||||
ctype_data.header.checksum = (~(sum(lib.cdata.to_bytes(ctype_data))) + 1) & 0xFF
|
||||
ctype_data.header.checksum = (~(sum(inspectorlib.cdata.to_bytes(ctype_data))) + 1) & 0xFF
|
||||
acpi_bin.seek(ACPI_TPM2_ADDR_OFFSET)
|
||||
acpi_bin.write(lib.cdata.to_bytes(ctype_data))
|
||||
acpi_bin.write(inspectorlib.cdata.to_bytes(ctype_data))
|
||||
else:
|
||||
logging.warning("Passtrhough tpm2 is enabled in scenario but the device is not presented on board.")
|
||||
logging.warning("Check there is tpm2 device on board and re-generate the xml using board inspector with --advanced option.")
|
||||
|
@ -5,8 +5,8 @@
|
||||
|
||||
import ctypes
|
||||
|
||||
import lib.cdata as cdata
|
||||
import lib.unpack as unpack
|
||||
import inspectorlib.cdata as cdata
|
||||
import inspectorlib.unpack as unpack
|
||||
|
||||
class TableHeader(cdata.Struct):
|
||||
_pack_ = 1
|
||||
|
@ -6,8 +6,8 @@
|
||||
import ctypes
|
||||
import copy
|
||||
|
||||
import lib.cdata as cdata
|
||||
import lib.unpack as unpack
|
||||
import inspectorlib.cdata as cdata
|
||||
import inspectorlib.unpack as unpack
|
||||
from acpiparser._utils import TableHeader
|
||||
|
||||
class APICSubtable(cdata.Struct):
|
||||
|
@ -6,7 +6,7 @@
|
||||
import ctypes
|
||||
import copy
|
||||
|
||||
import lib.cdata as cdata
|
||||
import inspectorlib.cdata as cdata
|
||||
from acpiparser._utils import TableHeader
|
||||
|
||||
class ASFSubtable(cdata.Struct):
|
||||
|
@ -6,7 +6,7 @@
|
||||
import ctypes
|
||||
import copy
|
||||
|
||||
import lib.cdata as cdata
|
||||
import inspectorlib.cdata as cdata
|
||||
from acpiparser._utils import TableHeader
|
||||
|
||||
class DMARSubtable(cdata.Struct):
|
||||
|
@ -6,8 +6,8 @@
|
||||
import ctypes
|
||||
import copy
|
||||
|
||||
import lib.cdata as cdata
|
||||
import lib.unpack as unpack
|
||||
import inspectorlib.cdata as cdata
|
||||
import inspectorlib.unpack as unpack
|
||||
from acpiparser._utils import TableHeader, GAS
|
||||
|
||||
_preferred_pm_profile = {
|
||||
|
@ -5,8 +5,8 @@
|
||||
|
||||
import ctypes
|
||||
|
||||
import lib.cdata as cdata
|
||||
import lib.unpack as unpack
|
||||
import inspectorlib.cdata as cdata
|
||||
import inspectorlib.unpack as unpack
|
||||
|
||||
# 6.4.2 Small Resource Data Type
|
||||
|
||||
|
@ -6,7 +6,7 @@
|
||||
import ctypes
|
||||
import copy
|
||||
|
||||
import lib.cdata as cdata
|
||||
import inspectorlib.cdata as cdata
|
||||
from acpiparser._utils import TableHeader
|
||||
|
||||
# Common structures
|
||||
|
@ -6,7 +6,7 @@
|
||||
import ctypes
|
||||
import logging
|
||||
|
||||
import lib.cdata as cdata
|
||||
import inspectorlib.cdata as cdata
|
||||
from acpiparser._utils import TableHeader
|
||||
|
||||
def tpm2_optional_data(data_len):
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
import ctypes
|
||||
import copy
|
||||
import lib.cdata as cdata
|
||||
import inspectorlib.cdata as cdata
|
||||
|
||||
class Capability:
|
||||
# Capability names from PCI Local Bus Specification and PCI Express Base Specification
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
import ctypes
|
||||
import copy
|
||||
import lib.cdata as cdata
|
||||
import inspectorlib.cdata as cdata
|
||||
|
||||
class ExtendedCapability:
|
||||
# Capability names from PCI Express Base Specification, mostly Table 9-23
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
import ctypes
|
||||
import copy
|
||||
import lib.cdata as cdata
|
||||
import inspectorlib.cdata as cdata
|
||||
|
||||
class Common(cdata.Struct):
|
||||
_pack_ = 1
|
||||
|
@ -9,8 +9,8 @@ import sys
|
||||
import ctypes
|
||||
import struct
|
||||
import uuid
|
||||
import lib.bitfields as bitfields
|
||||
import lib.unpack as unpack
|
||||
import inspectorlib.bitfields as bitfields
|
||||
import inspectorlib.unpack as unpack
|
||||
|
||||
class SMBIOS(unpack.Struct):
|
||||
def __new__(cls):
|
||||
|
56
misc/packaging/100_ACRN
Executable file
56
misc/packaging/100_ACRN
Executable file
@ -0,0 +1,56 @@
|
||||
#!/bin/bash
|
||||
#* Copyright (c) 2020 Intel Corporation All rights reserved.
|
||||
# postinst script for acrn kernel
|
||||
set -e
|
||||
|
||||
if [ -f /usr/lib/grub/grub-mkconfig_lib ]; then
|
||||
. /usr/lib/grub/grub-mkconfig_lib
|
||||
LX=linux16
|
||||
elif [ -f /usr/lib/grub/update-grub_lib ]; then
|
||||
. /usr/lib/grub/update-grub_lib
|
||||
LX=linux
|
||||
else
|
||||
# no grub file, so we notify and exit gracefully
|
||||
echo "Cannot find grub config file, exiting." >&2
|
||||
exit 0
|
||||
fi
|
||||
|
||||
filename="/etc/grub.d/40_custom"
|
||||
menu=$(grep ACRN_deb_multiboot2 ${filename}) || true
|
||||
|
||||
type=$(lsblk -l |awk '$NF == "/" {print $1}')
|
||||
pattern='^/dev/.* UUID="([^"]+)".* PARTUUID="([^"]+)"'
|
||||
while IFS= read -r line; do
|
||||
if [[ $line =~ $pattern ]]; then
|
||||
uuid="${BASH_REMATCH[1]}"
|
||||
partuuid="${BASH_REMATCH[2]}"
|
||||
fi
|
||||
done < <(blkid |grep ext4 |grep ${type})
|
||||
|
||||
if ls /boot/vmlinuz*acrn-sos* 1> /dev/null 2>&1;then
|
||||
sos_kernel=$(ls -tr /boot/vmlinuz-*acrn-sos* | tail -1)
|
||||
else
|
||||
sos_kernel=$(ls /boot/vmlinuz-* | tail -1)
|
||||
fi
|
||||
|
||||
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
|
||||
|
||||
}
|
||||
|
||||
EOF
|
||||
fi
|
||||
|
||||
sed -i '/Linux_bzImage/d' ${filename} || true
|
||||
sed -i '/multiboot2 \/boot/a\module2 '$sos_kernel' Linux_bzImage' ${filename}
|
||||
|
||||
sync
|
18
misc/packaging/acrn-board-inspector.postinst
Normal file
18
misc/packaging/acrn-board-inspector.postinst
Normal file
@ -0,0 +1,18 @@
|
||||
#!/bin/bash
|
||||
#* Copyright (c) 2020 Intel Corporation SPDX-License-Identifier: BSD-3-Clause
|
||||
# postinst script for acrn-board-inspector
|
||||
|
||||
set -e
|
||||
|
||||
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 '/GRUB_CMDLINE_LINUX_DEFAULT/d' ${filename}
|
||||
sed -i '$a GRUB_CMDLINE_LINUX_DEFAULT="quiet splash idle=nomwait iomem=relaxed intel_idle.max_cstate=0 intel_pstate=disable"' ${filename}
|
||||
sed -i '$a GRUB_TIMEOUT=20' ${filename}
|
||||
|
||||
sync
|
||||
update-grub
|
||||
|
||||
exit 0
|
5
misc/packaging/acrn-board-inspector.prerm
Normal file
5
misc/packaging/acrn-board-inspector.prerm
Normal file
@ -0,0 +1,5 @@
|
||||
# Remove the folder of the /bin/ directory
|
||||
rm -rf /bin/pcieparser
|
||||
rm -rf /bin/memmapparser
|
||||
rm -rf /bin/legacy
|
||||
rm -rf /bin/extractors
|
@ -5,116 +5,30 @@
|
||||
# please NOTE !!! scenario_info/board_info please add in release.json if needed !!!
|
||||
set -e
|
||||
|
||||
#Build info Start
|
||||
|
||||
echo "please choose <scenario> ,<board> ,<disk type>"
|
||||
SCENARIO=(shared)
|
||||
|
||||
scenario_info=(industry hybrid logical_partition )
|
||||
|
||||
board_info=(nuc7i7dnb whl-ipc-i5 )
|
||||
|
||||
echo "Scenario is ->"
|
||||
|
||||
scenario_num=${#scenario_info[@]}
|
||||
|
||||
for ((i=0;i<scenario_num;i++))
|
||||
|
||||
{
|
||||
let s_num=i+1
|
||||
echo $s_num ${scenario_info[i]};
|
||||
|
||||
}
|
||||
|
||||
|
||||
while :
|
||||
do
|
||||
read num
|
||||
if [ $num = 0 ] || [ $num -gt ${scenario_num} ]; then
|
||||
|
||||
echo "out of scenario scope,please retry"
|
||||
else
|
||||
c=$(($num-1))
|
||||
echo "scenario is" ${scenario_info[c]};
|
||||
SCENARIO="${scenario_info[c]}"
|
||||
break
|
||||
fi
|
||||
|
||||
done
|
||||
|
||||
echo "Board is ->"
|
||||
board_num=${#board_info[@]}
|
||||
|
||||
for ((i=0;i<board_num;i++))
|
||||
|
||||
{
|
||||
let b_num=i+1
|
||||
echo $b_num ${board_info[i]};
|
||||
|
||||
}
|
||||
|
||||
|
||||
while :
|
||||
do
|
||||
read num2
|
||||
if [ $num2 = 0 ] || [ $num2 -gt ${board_num} ]; then
|
||||
|
||||
echo "out of board scope,please retry"
|
||||
else
|
||||
c1=$(($num2-1))
|
||||
echo "board is" ${board_info[c1]};
|
||||
BOARD="${board_info[c1]}"
|
||||
break
|
||||
fi
|
||||
|
||||
done
|
||||
BOARD=(nuc11tnbi5)
|
||||
|
||||
#Build info End
|
||||
|
||||
ACRNBIN="/boot/acrn.${SCENARIO}.${BOARD}.bin"
|
||||
type=$(lsblk -l |awk '$NF == "/" {print $1}')
|
||||
|
||||
echo "Your acrn bin is ->"
|
||||
echo $ACRNBIN
|
||||
|
||||
|
||||
echo "disk type is ->"
|
||||
|
||||
disk_info=(nvme sda)
|
||||
disk_num=${#disk_info[@]}
|
||||
|
||||
for ((i=0;i<disk_num;i++))
|
||||
|
||||
{
|
||||
let d_num=i+1
|
||||
echo $d_num ${disk_info[i]};
|
||||
|
||||
}
|
||||
|
||||
|
||||
while :
|
||||
do
|
||||
read num3
|
||||
if [ $num3 = 0 ] || [ $num3 -gt ${disk_num} ]; then
|
||||
|
||||
echo "out of disk scope,please retry"
|
||||
else
|
||||
c3=$(($num3-1))
|
||||
echo "disk is" ${disk_info[c3]};
|
||||
type="${disk_info[c3]}"
|
||||
break
|
||||
pattern='^/dev/.* UUID="([^"]+)".* PARTUUID="([^"]+)"'
|
||||
while IFS= read -r line; do
|
||||
if [[ $line =~ $pattern ]]; then
|
||||
uuid="${BASH_REMATCH[1]}"
|
||||
partuuid="${BASH_REMATCH[2]}"
|
||||
fi
|
||||
|
||||
done
|
||||
|
||||
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=})
|
||||
done < <(blkid |grep ext4 |grep ${type})
|
||||
|
||||
filename="/etc/grub.d/40_custom"
|
||||
|
||||
kernelimg=$(grep module ${filename}|| true)
|
||||
kernelimg=$(grep module ${filename} | tail -1 || true)
|
||||
|
||||
if [ $SCENARIO == shared ];then
|
||||
cat>"${filename}"<<EOF
|
||||
#!/bin/sh
|
||||
exec tail -n +3 \$0
|
||||
@ -124,17 +38,61 @@ menuentry 'ACRN multiboot2 ' --id ACRN_deb_multiboot2 {
|
||||
insmod part_gpt
|
||||
insmod ext2
|
||||
search --no-floppy --fs-uuid --set $uuid
|
||||
multiboot2 $ACRNBIN root=PARTUUID=$partuuid i915.modeset=0 video=efifb:off
|
||||
multiboot2 $ACRNBIN root=PARTUUID=$partuuid
|
||||
$kernelimg
|
||||
|
||||
}
|
||||
|
||||
EOF
|
||||
elif [ $SCENARIO == hybrid ];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 $ACRNBIN root=PARTUUID=$partuuid
|
||||
$kernelimg
|
||||
module2 /boot/zephyr64.elf Zephyr_ElfImage
|
||||
module2 /boot/ACPI_VM0.bin ACPI_VM0
|
||||
}
|
||||
|
||||
EOF
|
||||
elif [ $SCENARIO == partitioned ];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
|
||||
echo 'loading ACRN...'
|
||||
multiboot2 $ACRNBIN root=PARTUUID=$partuuid
|
||||
$kernelimg
|
||||
module2 /boot/ACPI_VM0.bin ACPI_VM0
|
||||
module2 /boot/ACPI_VM1.bin ACPI_VM1
|
||||
}
|
||||
|
||||
EOF
|
||||
fi
|
||||
|
||||
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 '/GRUB_DEFAULT=/d' ${filename}
|
||||
sed -i '/GRUB_TIMEOUT=/d' ${filename}
|
||||
sed -i '/GRUB_HIDDEN_TIMEOUT=/d' ${filename}
|
||||
sed -i '/GRUB_CMDLINE_LINUX_DEFAULT=/d' ${filename}
|
||||
sed -i '/GRUB_CMDLINE_LINUX=/d' ${filename}
|
||||
sed -i '/GRUB_TERMINAL=/d' ${filename}
|
||||
sed -i '/GRUB_SERIAL_COMMAND=/d' ${filename}
|
||||
sed -i '$a GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"' ${filename}
|
||||
sed -i '$a GRUB_TERMINAL="console serial"' ${filename}
|
||||
sed -i '$a GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"' ${filename}
|
||||
sed -i '$a GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,115200n8"' ${filename}
|
||||
sed -i '$a GRUB_DEFAULT=ACRN_deb_multiboot2' ${filename}
|
||||
sed -i '$a GRUB_TIMEOUT=20' ${filename}
|
||||
|
||||
|
@ -19,7 +19,7 @@ cat>"${filename}"<<EOF
|
||||
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
|
||||
multiboot2 /boot/acrn.bin root=PARTUUID=$partuuid
|
||||
|
||||
}
|
||||
|
||||
|
172
misc/packaging/gen_acrn_deb.py
Normal file
172
misc/packaging/gen_acrn_deb.py
Normal file
@ -0,0 +1,172 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#* Copyright (c) 2020 Intel Corporation
|
||||
import os,sys,copy,json
|
||||
import subprocess
|
||||
import datetime
|
||||
import time
|
||||
import shlex
|
||||
import glob
|
||||
import argparse
|
||||
import multiprocessing
|
||||
|
||||
def run_command(cmd, path):
|
||||
ret_code = 0
|
||||
#print("cmd = %s, path = %s" % (cmd, path))
|
||||
cmd_proc = subprocess.Popen(shlex.split(cmd), stdout=subprocess.PIPE, stderr=subprocess.STDOUT, cwd = path, universal_newlines=True)
|
||||
while True:
|
||||
output = cmd_proc.stdout.readline()
|
||||
#print(output.strip())
|
||||
ret_code = cmd_proc.poll()
|
||||
if ret_code is not None:
|
||||
break
|
||||
return ret_code
|
||||
|
||||
def add_cmd_list(cmd_list, cmd_str, dir_str):
|
||||
cmd = {}
|
||||
cmd['cmd'] = cmd_str
|
||||
cmd['dir'] = dir_str
|
||||
cmd_list.append(cmd)
|
||||
|
||||
def run_cmd_list(cmd_list):
|
||||
for i, cmd in enumerate(cmd_list):
|
||||
ret = run_command(cmd['cmd'], cmd['dir'])
|
||||
if ret != 0:
|
||||
print("cmd(%s) run in dir(%s) failed and exit" % (cmd['cmd'], cmd['dir']))
|
||||
exit(-1)
|
||||
return
|
||||
|
||||
def create_acrn_deb(board, scenario, version, build_dir):
|
||||
cur_dir = build_dir + '/../'
|
||||
deb_dir = build_dir + '/acrn_release_deb/'
|
||||
cmd_list = []
|
||||
if os.path.exists(deb_dir):
|
||||
add_cmd_list(cmd_list, 'rm -rf acrn_release_deb', build_dir)
|
||||
add_cmd_list(cmd_list, 'mkdir -p acrn_release_deb', build_dir)
|
||||
add_cmd_list(cmd_list, 'mkdir -p acrn_release_deb/boot', build_dir)
|
||||
add_cmd_list(cmd_list, 'mkdir DEBIAN', deb_dir)
|
||||
add_cmd_list(cmd_list, 'touch DEBIAN/control', deb_dir)
|
||||
deb_bin_name ='acrn.%s.%s.bin' % (scenario,board)
|
||||
deb_out_name ='acrn.%s.%s.32.out' % (scenario,board)
|
||||
build_bin_name = build_dir + '/hypervisor/acrn.bin'
|
||||
build_out_name = build_dir + '/hypervisor/acrn.32.out'
|
||||
add_cmd_list(cmd_list, 'cp %s acrn_release_deb/boot/%s' %(build_bin_name, deb_bin_name), build_dir)
|
||||
add_cmd_list(cmd_list, 'cp %s acrn_release_deb/boot/%s' %(build_out_name, deb_out_name), build_dir)
|
||||
run_cmd_list(cmd_list)
|
||||
|
||||
lines=[]
|
||||
f=open(cur_dir + "/misc/packaging/acrn-hypervisor.postinst",'r')
|
||||
for line in f:
|
||||
lines.append(line)
|
||||
f.close()
|
||||
start = lines.index('#Build info Start\n')
|
||||
end = lines.index('#Build info End\n')
|
||||
del lines[(start+1):(end-1)]
|
||||
lines.insert(start+1,"\nSCENARIO=(%s)\n"%scenario)
|
||||
lines.insert(start+2,"\nBOARD=(%s)\n"%board)
|
||||
with open(cur_dir + "/misc/packaging/acrn-hypervisor.postinst", "w") as f:
|
||||
for line in lines:
|
||||
f.write(line)
|
||||
f.close()
|
||||
|
||||
listcontrol=['Package: acrn-hypervisor\n',
|
||||
'version: %s \n'% version,
|
||||
'Section: free \n',
|
||||
'Priority: optional \n',
|
||||
'Architecture: amd64 \n',
|
||||
'Maintainer: acrn-dev@lists.projectacrn.org \n',
|
||||
'Description: ACRN Hypervisor for IoT \n',
|
||||
'\n']
|
||||
with open(deb_dir + '/DEBIAN/control','w',encoding='utf-8') as fr:
|
||||
fr.writelines(listcontrol)
|
||||
|
||||
#design in acrn_data
|
||||
with open(cur_dir + "/.deb.conf","r") as load_deb:
|
||||
deb_info = json.load(load_deb)
|
||||
load_deb.close()
|
||||
|
||||
deb_info_list = list(deb_info)
|
||||
run_command('rm -rf acrn_release_img/usr/*', build_dir)
|
||||
|
||||
for i in deb_info_list:
|
||||
source = deb_info[i]['source']
|
||||
target = deb_info[i]['target']
|
||||
if target == 'boot/':
|
||||
continue
|
||||
source = cur_dir + '/../' + source
|
||||
target = deb_dir + target
|
||||
if os.path.exists(target):
|
||||
run_command('cp %s %s' % (source, target), cur_dir)
|
||||
else:
|
||||
run_command('mkdir -p %s' % target, cur_dir)
|
||||
run_command('cp %s %s' % (source, target), cur_dir)
|
||||
|
||||
run_command('cp ./misc/packaging/acrn-hypervisor.postinst ./build/acrn_release_deb/DEBIAN/postinst', cur_dir)
|
||||
run_command('chmod +x ./build/acrn_release_deb/etc/grub.d/100_ACRN', cur_dir)
|
||||
run_command('chmod +x ./build/acrn_release_deb/DEBIAN/postinst', cur_dir)
|
||||
run_command('sed -i \'s/\r//\' ./build/acrn_release_deb/DEBIAN/postinst', cur_dir)
|
||||
run_command('cp ./misc/packaging/acrn-hypervisor.preinst ./build/acrn_release_deb/DEBIAN/preinst', cur_dir)
|
||||
run_command('chmod +x ./build/acrn_release_deb/DEBIAN/preinst', cur_dir)
|
||||
run_command('sed -i \'s/\r//\' ./build/acrn_release_deb/DEBIAN/preinst', cur_dir)
|
||||
|
||||
ret = run_command('dpkg -b acrn_release_deb acrn-%s-%s-%s.deb' %(board, scenario, version), build_dir)
|
||||
if ret != 0:
|
||||
print("ERROR : generate ACRN debian package acrn-{}-{}-{}.deb failed! \
|
||||
Please check all the files in {}/acrn_release_deb".format(board, scenario, version, build_dir))
|
||||
else:
|
||||
print("ACRN debian package acrn-{}-{}-{}.deb was successfully created in the {}.".format(board, scenario, version, build_dir))
|
||||
return
|
||||
|
||||
def create_acrn_board_inspector_deb(version, build_dir):
|
||||
cur_dir = build_dir + '/../'
|
||||
deb_dir = build_dir + '/acrn_board_inspector_deb/'
|
||||
cmd_list = []
|
||||
if os.path.exists(deb_dir):
|
||||
add_cmd_list(cmd_list, 'rm -rf acrn_board_inspector_deb', build_dir)
|
||||
add_cmd_list(cmd_list, 'mkdir -p acrn_board_inspector_deb', build_dir)
|
||||
add_cmd_list(cmd_list, 'mkdir DEBIAN', deb_dir)
|
||||
add_cmd_list(cmd_list, 'touch DEBIAN/control', deb_dir)
|
||||
run_cmd_list(cmd_list)
|
||||
|
||||
#control file description
|
||||
listcontrol=['Package: acrn-board-inspector\n',
|
||||
'version: %s \n'% version,
|
||||
'Section: free \n',
|
||||
'Priority: optional \n',
|
||||
'Architecture: amd64 \n',
|
||||
'Maintainer: acrn-dev@lists.projectacrn.org \n',
|
||||
'Description: ACRN board inspector tools \n',
|
||||
'Depends: cpuid, msr-tools, pciutils, dmidecode, python3, python3-pip, python3-lxml \n',
|
||||
'\n']
|
||||
with open(deb_dir + '/DEBIAN/control','w',encoding='utf-8') as fr:
|
||||
fr.writelines(listcontrol)
|
||||
run_command('cp -r ./misc/config_tools/board_inspector/ ./build/acrn_board_inspector_deb/bin/', cur_dir)
|
||||
run_command('cp ./misc/packaging/acrn-board-inspector.postinst ./build/acrn_board_inspector_deb/DEBIAN/postinst', cur_dir)
|
||||
run_command('chmod +x ./build/acrn_board_inspector_deb/DEBIAN/postinst', cur_dir)
|
||||
run_command('sed -i \'s/\r//\' ./build/acrn_board_inspector_deb/DEBIAN/postinst', cur_dir)
|
||||
run_command('cp ./misc/packaging/acrn-board-inspector.prerm ./build/acrn_board_inspector_deb/DEBIAN/prerm', cur_dir)
|
||||
run_command('chmod +x ./build/acrn_board_inspector_deb/DEBIAN/prerm', cur_dir)
|
||||
run_command('sed -i \'s/\r//\' ./build/acrn_board_inspector_deb/DEBIAN/prerm', cur_dir)
|
||||
|
||||
ret = run_command('dpkg -b acrn_board_inspector_deb acrn-board-inspector-%s.deb' %(version), build_dir)
|
||||
if ret != 0:
|
||||
print("ERROR : generate board_inspector debian package acrn-board-inspector-{}.deb failed! \
|
||||
Please check all the files in {}/acrn_board_inspector_deb".format(version, build_dir))
|
||||
else:
|
||||
print("board_inspector debian package acrn-board-inspector-{}.deb was successfully created in the {}.".format(version, build_dir))
|
||||
return
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("deb_mode", help="choose deb mode, e.g. acrn_all or board_inspector")
|
||||
parser.add_argument("build_dir", help="the absolute address of the acrn-hypervisor build directory")
|
||||
parser.add_argument("--version", default="1.0", help="the acrn-hypervisor version")
|
||||
parser.add_argument("--board_name", default="board", help="the name of the board that runs the ACRN hypervisor")
|
||||
parser.add_argument("--scenario", default="scenario", help="the acrn hypervisor scenario setting")
|
||||
args = parser.parse_args()
|
||||
|
||||
if args.deb_mode == 'board_inspector':
|
||||
create_acrn_board_inspector_deb(args.version, args.build_dir)
|
||||
elif args.deb_mode == 'acrn_all':
|
||||
create_acrn_deb(args.board_name, args.scenario, args.version, args.build_dir)
|
||||
else:
|
||||
print("ERROR: Please check the value of deb_mode: the value shall be acrn_all or board_inspector.")
|
Loading…
Reference in New Issue
Block a user