Skip to content

Commit

Permalink
Merge pull request #5073 from meinaLi/direct_kernel
Browse files Browse the repository at this point in the history
guest os booting: add new modular case for direct kernel boot
  • Loading branch information
chloerh authored Sep 28, 2023
2 parents 645ea07 + 3f6c46c commit ba94749
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
- guest_os_booting.direct_kernel_boot:
type = direct_kernel_boot
start_vm = no
memory_value = 3573760
repo_url = "EXAMPLE_REPO_URL"
initrd_url = "${repo_url}/images/pxeboot/initrd.img"
vmlinuz_url = "${repo_url}/images/pxeboot/vmlinuz"
direct_kernel_dict = {'cmdline': 'console=ttyS0 inst.repo=${repo_url}', 'initrd': '%s', 'kernel': '%s'}
variants:
- start_guest:
check_prompt = "Starting installer"
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright Red Hat
#
# SPDX-License-Identifier: GPL-2.0

# Author: Meina Li <[email protected]>
#
import os

from avocado.utils.download import url_download

from virttest import data_dir
from virttest.libvirt_xml import vm_xml

from provider.guest_os_booting import guest_os_booting_base as guest_os


def run(test, params, env):
"""
This case is to verify the direct kernel boot.
1) Prepare a guest with direct kernel boot.
2) Start the guest.
3) Save and restore the guest.
"""
vm_name = params.get("main_vm")
memory_value = int(params.get("memory_value", "2097152"))
initrd_url = params.get("initrd_url")
vmlinuz_url = params.get("vmlinuz_url")
check_prompt = params.get("check_prompt")

vm = env.get_vm(vm_name)
vmxml = vm_xml.VMXML.new_from_inactive_dumpxml(vm_name)
bkxml = vmxml.copy()

try:
boot_initrd = os.path.join(data_dir.get_data_dir(), "initrd.img")
boot_vmlinuz = os.path.join(data_dir.get_data_dir(), "vmlinuz")
url_download(initrd_url, boot_initrd)
url_download(vmlinuz_url, boot_vmlinuz)
direct_kernel_dict = eval(params.get("direct_kernel_dict")
% (boot_initrd, boot_vmlinuz))
vmxml = guest_os.prepare_os_xml(vm_name, direct_kernel_dict)
vmxml.set_memory(memory_value)
vmxml.set_current_mem(memory_value)
vmxml.sync()
test.log.debug("The final guest xml is %s", vmxml)
if not vm.is_alive():
vm.start()
vm.serial_console.read_until_any_line_matches([check_prompt], timeout=360)
finally:
bkxml.sync()
for file_path in [boot_initrd, boot_vmlinuz]:
if os.path.exists(file_path):
os.remove(file_path)

0 comments on commit ba94749

Please sign in to comment.