1#!/bin/bash
2#* Copyright (c) 2020-2022 Intel Corporation SPDX-License-Identifier: BSD-3-Clause
3# postinst script for acrn-hypervisor
4# please NOTE !!!  scenario_info/board_info changed by python scripts, so do not add content there!!!
5# please NOTE !!!  scenario_info/board_info please add in release.json if needed !!!
6set -e
7
8#Build info Start
9
10SCENARIO=(shared)
11
12BOARD=(nuc11tnbi5)
13
14#Build info End
15
16
17#ACRN parameters Start
18
19GENERATED_PARAMS=(cpu_perf_policy=Performance)
20
21#ACRN parameters End
22
23ACRNBIN="/boot/acrn.${SCENARIO}.${BOARD}.bin"
24type=$(findmnt / |awk '$1 == "/" {print $2}')
25
26pattern='^/dev/.* UUID="([^"]+)".* PARTUUID="([^"]+)"'
27while IFS= read -r line; do
28    if [[ $line =~ $pattern ]]; then
29        uuid="${BASH_REMATCH[1]}"
30        partuuid="${BASH_REMATCH[2]}"
31    fi
32done < <(blkid |grep ${type})
33
34filename="/etc/grub.d/40_custom"
35
36if ls /boot/vmlinuz*acrn-service-vm* 1> /dev/null 2>&1;then
37    service_vm_kernel=$(ls -tr /boot/vmlinuz-*acrn-service-vm* | tail -1)
38else
39    service_vm_kernel=$(ls /boot/vmlinuz-* | tail -1)
40fi
41kernelimg="module2 $service_vm_kernel Linux_bzImage"
42
43if [ $SCENARIO == hybrid ];then
44    echo -e "\E[32m Please put zephyr64.elf in the /boot/ directory"
45    tput sgr0
46    cat>"${filename}"<<EOF
47#!/bin/sh
48exec tail -n +3 \$0
49menuentry 'ACRN multiboot2 ' --id ACRN_deb_multiboot2 {
50    load_video
51    insmod gzio
52    insmod part_gpt
53    insmod ext2
54    search --no-floppy --fs-uuid  --set $uuid
55multiboot2 $ACRNBIN root=PARTUUID=$partuuid $GENERATED_PARAMS
56$kernelimg
57module2 /boot/zephyr64.elf Zephyr_ElfImage
58module2 /boot/ACPI_VM0.bin ACPI_VM0
59}
60
61EOF
62elif [ $SCENARIO == hybrid_rt ];then
63    echo -e "\E[32m Please put bzImage_RT in the /boot/ directory"
64    tput sgr0
65    cat>"${filename}"<<EOF
66#!/bin/sh
67exec tail -n +3 \$0
68menuentry 'ACRN multiboot2 ' --id ACRN_deb_multiboot2 {
69    load_video
70    insmod gzio
71    insmod part_gpt
72    insmod ext2
73    search --no-floppy --fs-uuid  --set $uuid
74multiboot2 $ACRNBIN root=PARTUUID=$partuuid $GENERATED_PARAMS
75$kernelimg
76module2 /boot/bzImage_RT RT_bzImage
77module2 /boot/ACPI_VM0.bin ACPI_VM0
78}
79
80EOF
81elif [ $SCENARIO == partitioned ];then
82    cat>"${filename}"<<EOF
83#!/bin/sh
84exec tail -n +3 \$0
85menuentry 'ACRN multiboot2 ' --id ACRN_deb_multiboot2 {
86    load_video
87    insmod gzio
88    insmod part_gpt
89    insmod ext2
90    search --no-floppy --fs-uuid  --set $uuid
91    echo 'loading ACRN...'
92multiboot2 $ACRNBIN root=PARTUUID=$partuuid $GENERATED_PARAMS
93$kernelimg
94module2 /boot/ACPI_VM0.bin ACPI_VM0
95module2 /boot/ACPI_VM1.bin ACPI_VM1
96}
97
98EOF
99else
100    cat>"${filename}"<<EOF
101#!/bin/sh
102exec tail -n +3 \$0
103menuentry 'ACRN multiboot2 ' --id ACRN_deb_multiboot2 {
104    load_video
105    insmod gzio
106    insmod part_gpt
107    insmod ext2
108    search --no-floppy --fs-uuid  --set $uuid
109multiboot2 $ACRNBIN root=PARTUUID=$partuuid $GENERATED_PARAMS
110$kernelimg
111
112}
113
114EOF
115fi
116
117filename='/etc/default/grub'
118sed -i '/GRUB_DEFAULT=/d' ${filename}
119sed -i '/GRUB_TIMEOUT=/d' ${filename}
120sed -i '/GRUB_HIDDEN_TIMEOUT=/d' ${filename}
121sed -i '/GRUB_CMDLINE_LINUX_DEFAULT=/d' ${filename}
122sed -i '/GRUB_CMDLINE_LINUX=/d' ${filename}
123sed -i '/GRUB_TERMINAL=/d' ${filename}
124sed -i '/GRUB_SERIAL_COMMAND=/d' ${filename}
125sed -i '$a GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"' ${filename}
126sed -i '$a GRUB_TERMINAL="console serial"' ${filename}
127sed -i '$a GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"' ${filename}
128sed -i '$a GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,115200n8"' ${filename}
129sed -i '$a GRUB_DEFAULT=ACRN_deb_multiboot2' ${filename}
130sed -i '$a GRUB_TIMEOUT=20' ${filename}
131
132sync
133update-grub
134
135exit 0
136