blob: 8099fc19525d75d08a49d15f28cfe6d0f4a60b3b (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
#!/bin/bash
. ./stable-commits
BUILD_DIR=`pwd`/src
OUTPUT_DIR=`pwd`/output
NUM_OF_CORES=`grep -c ^processor /proc/cpuinfo`
run_cmd()
{
echo "$*"
$*
if [ $? -ne 0 ]; then
echo "ERROR: $*"
exit 1
fi
}
fetch_kernel()
{
run_cmd "mkdir -p ${BUILD_DIR}/$1"
run_cmd "git clone --single-branch -b ${KERNEL_COMMIT} ${KERNEL_GIT_URL} ${BUILD_DIR}/$1"
}
build_kernel()
{
if [ ! -d $BUILD_DIR/$1 ]; then
fetch_kernel "$1"
fi
run_cmd "cd $BUILD_DIR/$1"
run_cmd "cp /boot/config-$(uname -r) .config"
sed -ie s/CONFIG_LOCALVERSION.*/CONFIG_LOCALVERSION=\"\"/g .config
./scripts/config --enable CONFIG_AMD_MEM_ENCRYPT
./scripts/config --enable AMD_MEM_ENCRYPT_ACTIVE_BY_DEFAULT
./scripts/config --enable CONFIG_KVM_AMD_SEV
./scripts/config --disable CONFIG_DEBUG_INFO
./scripts/config --enable CRYPTO_DEV_SP_PSP
./scripts/config --module CRYPTO_DEV_CCP_DD
./scripts/config --enable CONFIG_CRYPTO_DEV_CCP
./scripts/config --disable CONFIG_LOCALVERSION_AUTO
yes "" | make olddefconfig
if [ "$2" = "rpm" ]; then
echo "%_topdir `pwd`/rpmbuild" > $HOME/.rpmmacros
fi
run_cmd "make -j `getconf _NPROCESSORS_ONLN` $2-pkg LOCALVERSION=-sev"
run_cmd "mkdir -p $OUTPUT_DIR/$1"
if [ "$2" = "rpm" ]; then
run_cmd "mv `pwd`/rpmbuild/RPMS/* $OUTPUT_DIR/$1"
run_cmd "rm -rf `pwd`/rpmbuild"
run_cmd "rm -rf $HOME/.rpmmacros"
else
run_cmd "mv ../linux-*sev*.deb $OUTPUT_DIR/$1"
fi
}
fetch_ovmf()
{
run_cmd "mkdir -p ${BUILD_DIR}/edk2"
run_cmd "git clone ${EDK2_GIT_URL} ${BUILD_DIR}/edk2"
cd ${BUILD_DIR}/edk2
}
build_ovmf()
{
if [ ! -d $BUILD_DIR/edk2 ]; then
fetch_ovmf
fi
cd $BUILD_DIR/edk2
run_cmd "make -C BaseTools"
. ./edksetup.sh
run_cmd "nice build --cmd-len=64436 \
-DDEBUG_ON_SERIAL_PORT=TRUE \
-n $(getconf _NPROCESSORS_ONLN) \
-a X64 \
-a IA32 \
-t GCC5 \
-p OvmfPkg/OvmfPkgIa32X64.dsc"
run_cmd "mkdir -p $OUTPUT_DIR/qemu-output/share/qemu"
run_cmd "cp Build/Ovmf3264/DEBUG_GCC5/FV/OVMF_CODE.fd $OUTPUT_DIR/qemu-output/share/qemu"
run_cmd "cp Build/Ovmf3264/DEBUG_GCC5/FV/OVMF_VARS.fd $OUTPUT_DIR/qemu-output/"
}
fetch_qemu()
{
run_cmd "mkdir -p ${BUILD_DIR}/qemu"
run_cmd "git clone --single-branch -b ${QEMU_COMMIT} ${QEMU_GIT_URL} ${BUILD_DIR}/qemu"
cd ${BUILD_DIR}/qemu
}
build_qemu()
{
if [ ! -d $BUILD_DIR/qemu ]; then
fetch_qemu
fi
cd $BUILD_DIR/qemu
run_cmd "./configure --target-list=x86_64-softmmu --enable-trace-backend=log\
--prefix=$OUTPUT_DIR/qemu-output"
run_cmd "make -j$(getconf _NPROCESSORS_ONLN)"
run_cmd "make -j$(getconf _NPROCESSORS_ONLN) install"
run_cmd "cp $BUILD_DIR/../launch-qemu.sh $OUTPUT_DIR/qemu-output"
}
dep_install ()
{
# install the build dependencies
run_cmd "sudo apt-get -y install git build-essential zlib1g-dev libglib2.0-dev libpixman-1-dev uuid-dev nasm bison acpica-tools libncurses5-dev libssl-dev fakeroot dpkg-dev bc libelf-dev"
}
grep ubuntu /etc/*-release* >/dev/null
if [ $? -eq 0 ]; then
dep_install
pkg="deb"
else
pkg="rpm"
fi
build_kernel "linux" "$pkg"
build_qemu
build_ovmf
|