-
Notifications
You must be signed in to change notification settings - Fork 34
/
Copy pathrun_openeuler.sh
executable file
·107 lines (92 loc) · 2.84 KB
/
run_openeuler.sh
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
#!/bin/bash
kernel_version=2003
opensbi_version=1.2
function print_usage() {
RED='\033[0;31m'
BLUE='\033[0;34m'
BOLD='\033[1m'
NONE='\033[0m'
echo -e "\n${RED}Usage${NONE}:
.${BOLD}/run_openeuler.sh${NONE} [OPTION]"
echo -e "\n${RED}OPTIONS${NONE}:
${BLUE}-k${NONE}: Select the openeuler version,default use openEuler2003
${BLUE}-o${NONE}: Select the opensbi version,default use opensbi-1.2
"
echo -e "\n${RED}EXAMPLE${NONE}:
${BLUE}./run_openeuler.sh -k 2003 -o 1.2${NONE}"
}
if [[ $1 == *"help"* ]]; then
print_usage
exit 0
fi
while getopts ":k:o:" opt; do
case $opt in
k)
kernel_version=$OPTARG
;;
o)
opensbi_version=$OPTARG
;;
\?)
echo "Invalid option: -$OPTARG" >&2
print_usage
exit 1
;;
esac
done
imagepath=openEuler-$kernel_version-qemu-riscv64.qcow2
if [ $(echo "$opensbi_version == 0.9" | bc -l) -eq 1 ]
then
opensbi_path=opensbi-0.9
elif [ $(echo "$opensbi_version == 1.0" | bc -l) -eq 1 ]
then
opensbi_path=opensbi-1.0
elif [ $(echo "$opensbi_version == 1.2" | bc -l) -eq 1 ]
then
opensbi_path=opensbi-1.2
else
echo "Invalid opensbi version: $opensbi_version" >&2
print_usage
exit 1
fi
function run_qemu_1(){
qemu-system-riscv64 -nographic -machine virt \
-smp 4 -m 2G \
-kernel ./${2}/build-oe/qemu-virt/platform/generic/firmware/fw_payload.elf \
-drive file=${1},format=qcow2,id=hd0 \
-object rng-random,filename=/dev/urandom,id=rng0 \
-device virtio-rng-device,rng=rng0 \
-device virtio-blk-device,drive=hd0 \
-device virtio-net-device,netdev=usernet \
-netdev user,id=usernet,hostfwd=tcp::12055-:22 \
-append 'root=/dev/vda1 rw console=ttyS0 systemd.default_timeout_start_sec=600 selinux=0 highres=off mem=4096M earlycon' \
-bios none
}
function run_qemu_2(){
qemu-system-riscv64 -nographic -machine virt \
-smp 4 -m 2G \
-bios ./${2}/build-oe/qemu-virt/platform/generic/firmware/fw_payload.bin \
-drive file=${1},format=qcow2,id=hd0 \
-object rng-random,filename=/dev/urandom,id=rng0 \
-device virtio-rng-device,rng=rng0 \
-device virtio-blk-device,drive=hd0 \
-device virtio-net-device,netdev=usernet \
-netdev user,id=usernet,hostfwd=tcp::12055-:22 \
-device qemu-xhci -usb -device usb-kbd -device usb-tablet
}
if ((kernel_version < 2303))
then
echo "Run openEuer $kernel_version with opensbi $opensbi_version"
run_qemu_1 $imagepath $opensbi_path
exit 0
else
echo "Run openEuer $kernel_version with opensbi $opensbi_version"
run_qemu_2 $imagepath $opensbi_path
exit 0
fi
## For v1.0, use the following path
#-kernel ./opensbi-1.0/build-oe/qemu-virt/platform/generic/firmware/fw_payload.elf \
## For v0.9, use the following path
#-kernel ./opensbi-0.9/build-oe/qemu-virt/platform/generic/firmware/fw_payload.elf \
## For v0.6, use the following path
#-kernel ./opensbi-0.6/build-oe/qemu-virt/platform/qemu/virt/firmware/fw_payload.elf \