test result: /srv/result/host-info/2020-12-28/vm-2p8g/openeuler-20.09-aarch64/z9.272000
Signed-off-by: Liu Yinsi liuyinsi@163.com --- providers/qemu/kvm.sh | 171 +++++++++++++++++++++++++----------------- 1 file changed, 104 insertions(+), 67 deletions(-)
diff --git a/providers/qemu/kvm.sh b/providers/qemu/kvm.sh index f84c5ae..48bacab 100755 --- a/providers/qemu/kvm.sh +++ b/providers/qemu/kvm.sh @@ -7,74 +7,111 @@ : ${nr_cpu:=1} : ${memory:=1G}
-log_file=/srv/cci/serial/logs/${hostname} -if [ ! -f "$log_file" ]; then - touch $log_file - # fluentd refresh time is 1s - # let fluentd to monitor this file first - sleep 2 -fi - -qemu=qemu-system-aarch64 -command -v $qemu >/dev/null || qemu=qemu-kvm - -echo $SCHED_PORT -ipxe_script=ipxe_script -curl http://$%7BSCHED_HOST:-172.17.0.1%7D:$%7BSCHED_PORT:-3000%7D/boot.ipxe/mac/$... > $ipxe_script -cat $ipxe_script >> ${log_file} - -append= -initrds= -while read a b c -do - case "$a" in - initrd) - file=$(basename "$b") - wget --timestamping -a ${log_file} --progress=bar:force $b - initrds+="$file " - ;; - kernel) - kernel=$(basename "$b") - wget --timestamping -a ${log_file} --progress=bar:force $b - append=$(echo "$c" | sed -r "s/ initrd=[^ ]+//g") - ;; - esac -done < $ipxe_script - -[ -s "$kernel" ] || { - echo "can't get kernel or kernel size is 0" - exit +check_logfile() +{ + log_file=/srv/cci/serial/logs/${hostname} + if [ ! -f "$log_file" ]; then + touch $log_file + # fluentd refresh time is 1s + # let fluentd to monitor this file first + sleep 2 + fi }
-[ -n "$initrds" ] || { - exit +qemu_command() +{ + qemu=qemu-system-aarch64 + command -v $qemu >/dev/null || qemu=qemu-kvm }
-initrd=initrd -cat $initrds > $initrd - -echo kernel: $kernel -echo initrds: $initrds -echo append: $append -echo less $log_file - -sleep 5 - -kvm=( - $qemu - -machine virt-4.0,accel=kvm,gic-version=3 - -kernel $kernel - -initrd $initrd - -smp $nr_cpu - -m $memory - -cpu Kunpeng-920 - -bios /usr/share/qemu-efi-aarch64/QEMU_EFI.fd - -nic tap,model=virtio-net-pci,helper=/usr/libexec/qemu-bridge-helper,br=br0,mac=${mac} - -k en-us - -no-reboot - -nographic - -serial file:${log_file} - -monitor null -) - -"${kvm[@]}" --append "${append}" +write_logfile() +{ + ipxe_script=ipxe_script + curl http://$%7BSCHED_HOST:-172.17.0.1%7D:$%7BSCHED_PORT:-3000%7D/boot.ipxe/mac/$... > $ipxe_script + cat $ipxe_script >> ${log_file} +} + +get_rootfs() +{ + append= + initrds= + while read a b c + do + case "$a" in + initrd) + file=$(basename "$b") + wget --timestamping -a ${log_file} --progress=bar:force $b + initrds+="$file " + ;; + kernel) + kernel=$(basename "$b") + wget --timestamping -a ${log_file} --progress=bar:force $b + append=$(echo "$c" | sed -r "s/ initrd=[^ ]+//g") + ;; + esac + done < $ipxe_script +} + +check_rootfs() +{ + [ -s "$kernel" ] || { + echo "can't get kernel or kernel size is 0" + exit + } + + [ -n "$initrds" ] || { + exit + } + + initrd=initrd + cat $initrds > $initrd +} + +print_message() +{ + echo $SCHED_PORT + echo kernel: $kernel + echo initrds: $initrds + echo append: $append + echo less $log_file + + sleep 5 +} + +kvm_command() +{ + kvm=( + $qemu + -machine virt-4.0,accel=kvm,gic-version=3 + -kernel $kernel + -initrd $initrd + -smp $nr_cpu + -m $memory + -cpu Kunpeng-920 + -bios /usr/share/qemu-efi-aarch64/QEMU_EFI.fd + -nic tap,model=virtio-net-pci,helper=/usr/libexec/qemu-bridge-helper,br=br0,mac=${mac} + -k en-us + -no-reboot + -nographic + -serial file:${log_file} + -monitor null + ) +} + +run_qemu() +{ + "${kvm[@]}" --append "${append}" +} + +check_logfile +write_logfile + +get_rootfs +check_rootfs + +qemu_command + +print_message + +kvm_command +run_qemu
+write_logfile() +{
- ipxe_script=ipxe_script
- curl http://$%7BSCHED_HOST:-172.17.0.1%7D:$%7BSCHED_PORT:-3000%7D/boot.ipxe/mac/$... > $ipxe_script
- cat $ipxe_script >> ${log_file}
+}
+get_rootfs()
not rootfs
how about parse_parameter_from_ipxe_script
+{
- append=
- initrds=
- while read a b c
- do
case "$a" in
initrd)
file=$(basename "$b")
wget --timestamping -a ${log_file} --progress=bar:force $b
initrds+="$file "
;;
kernel)
kernel=$(basename "$b")
wget --timestamping -a ${log_file} --progress=bar:force $b
append=$(echo "$c" | sed -r "s/ initrd=[^ ]+//g")
;;
esac
- done < $ipxe_script
+}
+check_rootfs()
ditto
+{
- [ -s "$kernel" ] || {
echo "can't get kernel or kernel size is 0"
exit
- }
- [ -n "$initrds" ] || {
exit
- }
- initrd=initrd
- cat $initrds > $initrd
+}
+print_message()
echo_message
+{
- echo $SCHED_PORT
- echo kernel: $kernel
- echo initrds: $initrds
- echo append: $append
- echo less $log_file
i think change less to tail -f may be better
- sleep 5
+}
+kvm_command()
qemu_command
+{
- kvm=(
$qemu
-machine virt-4.0,accel=kvm,gic-version=3
-kernel $kernel
-initrd $initrd
-smp $nr_cpu
-m $memory
-cpu Kunpeng-920
-bios /usr/share/qemu-efi-aarch64/QEMU_EFI.fd
-nic tap,model=virtio-net-pci,helper=/usr/libexec/qemu-bridge-helper,br=br0,mac=${mac}
-k en-us
-no-reboot
-nographic
-serial file:${log_file}
-monitor null
- )
+}
+run_qemu() +{
- "${kvm[@]}" --append "${append}"
+}
run_qemu can merge with qemu_command?
Thanks, Shenwei
+check_logfile +write_logfile
+get_rootfs +check_rootfs
+qemu_command
+print_message
+kvm_command
+run_qemu
2.23.0
On Tue, Dec 29, 2020 at 09:12:05AM +0800, Xiao Shenwei wrote:
+write_logfile() +{
- ipxe_script=ipxe_script
- curl http://$%7BSCHED_HOST:-172.17.0.1%7D:$%7BSCHED_PORT:-3000%7D/boot.ipxe/mac/$... > $ipxe_script
- cat $ipxe_script >> ${log_file}
+}
+get_rootfs()
not rootfs
how about parse_parameter_from_ipxe_script
i will put this in other functions, all belong to function-(options value) delete get_rootfs.
Thanks, Yinsi
+{
- append=
- initrds=
- while read a b c
- do
case "$a" in
initrd)
file=$(basename "$b")
wget --timestamping -a ${log_file} --progress=bar:force $b
initrds+="$file "
;;
kernel)
kernel=$(basename "$b")
wget --timestamping -a ${log_file} --progress=bar:force $b
append=$(echo "$c" | sed -r "s/ initrd=[^ ]+//g")
;;
esac
- done < $ipxe_script
+}
+check_rootfs()
ditto
+{
- [ -s "$kernel" ] || {
echo "can't get kernel or kernel size is 0"
exit
- }
- [ -n "$initrds" ] || {
exit
- }
- initrd=initrd
- cat $initrds > $initrd
+}
+print_message()
echo_message
+{
- echo $SCHED_PORT
- echo kernel: $kernel
- echo initrds: $initrds
- echo append: $append
- echo less $log_file
i think change less to tail -f may be better
- sleep 5
+}
+kvm_command()
qemu_command
+{
- kvm=(
$qemu
-machine virt-4.0,accel=kvm,gic-version=3
-kernel $kernel
-initrd $initrd
-smp $nr_cpu
-m $memory
-cpu Kunpeng-920
-bios /usr/share/qemu-efi-aarch64/QEMU_EFI.fd
-nic tap,model=virtio-net-pci,helper=/usr/libexec/qemu-bridge-helper,br=br0,mac=${mac}
-k en-us
-no-reboot
-nographic
-serial file:${log_file}
-monitor null
- )
+}
+run_qemu() +{
- "${kvm[@]}" --append "${append}"
+}
run_qemu can merge with qemu_command?
Thanks, Shenwei
+check_logfile +write_logfile
+get_rootfs +check_rootfs
+qemu_command
+print_message
+kvm_command
+run_qemu
2.23.0