def do_configure_grubefi(cls, creator, cr_workdir): """ Create loader-specific (grub-efi) config """ configfile = creator.ks.bootloader.configfile if not configfile: raise WicError("Missing configfile argument") custom_cfg = None custom_cfg = get_custom_config(configfile) if custom_cfg: # Use a custom configuration for grub grubefi_conf = custom_cfg logger.debug("Using custom configuration file " "%s for grub.cfg", configfile) else: raise WicError("configfile is specified but failed to " "get it from %s." % configfile) logger.debug("Writing grubefi config %s/hdd/boot/EFI/BOOT/grub.cfg", cr_workdir) cfg = open("%s/hdd/boot/EFI/BOOT/grub.cfg" % cr_workdir, "w") cfg.write(grubefi_conf) cfg.close()
def do_configure_partition(cls, part, source_params, creator, cr_workdir, oe_builddir, bootimg_dir, kernel_dir, native_sysroot): """ Called before do_prepare_partition(), creates syslinux config """ hdddir = "%s/hdd/boot" % cr_workdir install_cmd = "install -d %s" % hdddir exec_cmd(install_cmd) bootloader = creator.ks.bootloader custom_cfg = None if bootloader.configfile: custom_cfg = get_custom_config(bootloader.configfile) if custom_cfg: # Use a custom configuration for grub syslinux_conf = custom_cfg logger.debug( "Using custom configuration file %s " "for syslinux.cfg", bootloader.configfile) else: raise WicError("configfile is specified but failed to " "get it from %s." % bootloader.configfile) if not custom_cfg: # Create syslinux configuration using parameters from wks file splash = os.path.join(cr_workdir, "/hdd/boot/splash.jpg") if os.path.exists(splash): splashline = "menu background splash.jpg" else: splashline = "" syslinux_conf = "" syslinux_conf += "PROMPT 0\n" syslinux_conf += "TIMEOUT " + str(bootloader.timeout) + "\n" syslinux_conf += "\n" syslinux_conf += "ALLOWOPTIONS 1\n" syslinux_conf += "SERIAL 0 115200\n" syslinux_conf += "\n" if splashline: syslinux_conf += "%s\n" % splashline syslinux_conf += "DEFAULT boot\n" syslinux_conf += "LABEL boot\n" kernel = get_bitbake_var("KERNEL_IMAGE") initrd = get_bitbake_var("INITRD_IMAGE") syslinux_conf += "KERNEL " + kernel + "\n" syslinux_conf += "APPEND label=boot root=%s initrd=%s %s\n" % \ (creator.rootdev, initrd, bootloader.append) logger.debug("Writing syslinux config %s/hdd/boot/syslinux.cfg", cr_workdir) cfg = open("%s/hdd/boot/syslinux.cfg" % cr_workdir, "w") cfg.write(syslinux_conf) cfg.close()
def do_configure_partition(cls, part, source_params, creator, cr_workdir, oe_builddir, bootimg_dir, kernel_dir, native_sysroot): """ Called before do_prepare_partition(), creates syslinux config """ hdddir = "%s/hdd/boot" % cr_workdir install_cmd = "install -d %s" % hdddir exec_cmd(install_cmd) bootloader = creator.ks.bootloader custom_cfg = None if bootloader.configfile: custom_cfg = get_custom_config(bootloader.configfile) if custom_cfg: # Use a custom configuration for grub syslinux_conf = custom_cfg logger.debug("Using custom configuration file %s " "for syslinux.cfg", bootloader.configfile) else: raise WicError("configfile is specified but failed to " "get it from %s." % bootloader.configfile) if not custom_cfg: # Create syslinux configuration using parameters from wks file splash = os.path.join(cr_workdir, "/hdd/boot/splash.jpg") if os.path.exists(splash): splashline = "menu background splash.jpg" else: splashline = "" syslinux_conf = "" syslinux_conf += "PROMPT 0\n" syslinux_conf += "TIMEOUT " + str(bootloader.timeout) + "\n" syslinux_conf += "\n" syslinux_conf += "ALLOWOPTIONS 1\n" syslinux_conf += "SERIAL 0 115200\n" syslinux_conf += "\n" if splashline: syslinux_conf += "%s\n" % splashline syslinux_conf += "DEFAULT boot\n" syslinux_conf += "LABEL boot\n" kernel = get_bitbake_var("KERNEL_IMAGE") initrd = get_bitbake_var("INITRD_IMAGE") syslinux_conf += "KERNEL " + kernel + "\n" syslinux_conf += "APPEND label=boot root=%s initrd=%s %s\n" % \ (creator.rootdev, initrd, bootloader.append) logger.debug("Writing syslinux config %s/hdd/boot/syslinux.cfg", cr_workdir) cfg = open("%s/hdd/boot/syslinux.cfg" % cr_workdir, "w") cfg.write(syslinux_conf) cfg.close()
def do_configure_grubefi(cls, hdddir, creator, cr_workdir, source_params): """ Create loader-specific (grub-efi) config """ configfile = creator.ks.bootloader.configfile custom_cfg = None if configfile: custom_cfg = get_custom_config(configfile) if custom_cfg: # Use a custom configuration for grub grubefi_conf = custom_cfg logger.debug( "Using custom configuration file " "%s for grub.cfg", configfile) else: raise WicError("configfile is specified but failed to " "get it from %s." % configfile) initrd = source_params.get('initrd') if initrd: bootimg_dir = get_bitbake_var("DEPLOY_DIR_IMAGE") if not bootimg_dir: raise WicError("Couldn't find DEPLOY_DIR_IMAGE, exiting") cp_cmd = "cp %s/%s %s" % (bootimg_dir, initrd, hdddir) exec_cmd(cp_cmd, True) else: logger.debug("Ignoring missing initrd") if not custom_cfg: # Create grub configuration using parameters from wks file bootloader = creator.ks.bootloader title = source_params.get('title') grubefi_conf = "" grubefi_conf += "serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1\n" grubefi_conf += "default=boot\n" grubefi_conf += "timeout=%s\n" % bootloader.timeout grubefi_conf += "menuentry '%s'{\n" % (title if title else "boot") kernel = "/bzImage" grubefi_conf += "linux %s root=%s rootwait %s\n" \ % (kernel, creator.rootdev, bootloader.append) if initrd: grubefi_conf += "initrd /%s\n" % initrd grubefi_conf += "}\n" logger.debug("Writing grubefi config %s/hdd/boot/EFI/BOOT/grub.cfg", cr_workdir) cfg = open("%s/hdd/boot/EFI/BOOT/grub.cfg" % cr_workdir, "w") cfg.write(grubefi_conf) cfg.close()
def do_configure_grubefi(cls, hdddir, creator, cr_workdir, source_params): """ Create loader-specific (grub-efi) config """ configfile = creator.ks.bootloader.configfile custom_cfg = None if configfile: custom_cfg = get_custom_config(configfile) if custom_cfg: # Use a custom configuration for grub grubefi_conf = custom_cfg logger.debug("Using custom configuration file " "%s for grub.cfg", configfile) else: raise WicError("configfile is specified but failed to " "get it from %s." % configfile) initrd = source_params.get('initrd') if initrd: bootimg_dir = get_bitbake_var("DEPLOY_DIR_IMAGE") if not bootimg_dir: raise WicError("Couldn't find DEPLOY_DIR_IMAGE, exiting") cp_cmd = "cp %s/%s %s" % (bootimg_dir, initrd, hdddir) exec_cmd(cp_cmd, True) else: logger.debug("Ignoring missing initrd") if not custom_cfg: # Create grub configuration using parameters from wks file bootloader = creator.ks.bootloader grubefi_conf = "" grubefi_conf += "serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1\n" grubefi_conf += "default=boot\n" grubefi_conf += "timeout=%s\n" % bootloader.timeout grubefi_conf += "menuentry 'boot'{\n" kernel = "/bzImage" grubefi_conf += "linux %s root=%s rootwait %s\n" \ % (kernel, creator.rootdev, bootloader.append) if initrd: grubefi_conf += "initrd /%s\n" % initrd grubefi_conf += "}\n" logger.debug("Writing grubefi config %s/hdd/boot/EFI/BOOT/grub.cfg", cr_workdir) cfg = open("%s/hdd/boot/EFI/BOOT/grub.cfg" % cr_workdir, "w") cfg.write(grubefi_conf) cfg.close()
def do_configure_grubefi(cls, creator, cr_workdir): """ Create loader-specific (grub-efi) config """ configfile = creator.ks.bootloader.configfile custom_cfg = None if configfile: custom_cfg = get_custom_config(configfile) if custom_cfg: # Use a custom configuration for grub grubefi_conf = custom_cfg logger.debug( "Using custom configuration file " "%s for grub.cfg", configfile) else: raise WicError("configfile is specified but failed to " "get it from %s." % configfile) if not custom_cfg: # Create grub configuration using parameters from wks file bootloader = creator.ks.bootloader grubefi_conf = "" grubefi_conf += "serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1\n" grubefi_conf += "default=boot\n" grubefi_conf += "timeout=%s\n" % bootloader.timeout grubefi_conf += "set root='hd0,gpt2'\n" grubefi_conf += "menuentry 'boot'{\n" kernel_image = get_bitbake_var("KERNEL_IMAGE") kernel = "/boot/%s" % kernel_image grubefi_conf += "linux %s root=/dev/sda2 rootwait %s\n" \ % (kernel, bootloader.append) initrd_image = get_bitbake_var("INITRD_IMAGE") initrd = "/boot/%s" % initrd_image grubefi_conf += "initrd %s\n" % initrd grubefi_conf += "}\n" logger.debug("Writing grubefi config %s/hdd/boot/EFI/BOOT/grub.cfg", cr_workdir) cfg = open("%s/hdd/boot/EFI/BOOT/grub.cfg" % cr_workdir, "w") cfg.write(grubefi_conf) cfg.close() cfg = open("%s/hdd/boot/EFI/BOOT/grub-mkimage.cfg" % cr_workdir, "w") mkimage_conf = "set root='hd0,gpt1'\n" mkimage_conf += "set prefix=($root)/EFI/BOOT\n" cfg.write(mkimage_conf) cfg.close()
def do_configure_grubefi(cls, part, creator, target_dir): """ Create loader-specific (grub-efi) config """ configfile = creator.ks.bootloader.configfile if configfile: grubefi_conf = get_custom_config(configfile) if grubefi_conf: logger.debug("Using custom configuration file %s for grub.cfg", configfile) else: raise WicError( "configfile is specified " "but failed to get it from %s", configfile) else: splash = os.path.join(target_dir, "splash.jpg") if os.path.exists(splash): splashline = "menu background splash.jpg" else: splashline = "" bootloader = creator.ks.bootloader grubefi_conf = "" grubefi_conf += "serial --unit=0 --speed=115200 --word=8 " grubefi_conf += "--parity=no --stop=1\n" grubefi_conf += "default=boot\n" grubefi_conf += "timeout=%s\n" % (bootloader.timeout or 10) grubefi_conf += "\n" grubefi_conf += "search --set=root --label %s " % part.label grubefi_conf += "\n" grubefi_conf += "menuentry 'boot'{\n" kernel = get_bitbake_var("KERNEL_IMAGETYPE") if get_bitbake_var("INITRAMFS_IMAGE_BUNDLE") == "1": if get_bitbake_var("INITRAMFS_IMAGE"): kernel = "%s-%s.bin" % \ (get_bitbake_var("KERNEL_IMAGETYPE"), get_bitbake_var("INITRAMFS_LINK_NAME")) grubefi_conf += "linux /%s rootwait %s\n" \ % (kernel, bootloader.append) grubefi_conf += "initrd /initrd \n" grubefi_conf += "}\n" if splashline: grubefi_conf += "%s\n" % splashline cfg_path = os.path.join(target_dir, "grub.cfg") logger.debug("Writing grubefi config %s", cfg_path) with open(cfg_path, "w") as cfg: cfg.write(grubefi_conf)
def do_configure_grubefi(cls, creator, cr_workdir): """ Create loader-specific (grub-efi) config """ configfile = creator.ks.bootloader.configfile custom_cfg = None if configfile: custom_cfg = get_custom_config(configfile) if custom_cfg: # Use a custom configuration for grub grubefi_conf = custom_cfg logger.debug("Using custom configuration file " "%s for grub.cfg", configfile) else: raise WicError("configfile is specified but failed to " "get it from %s." % configfile) if not custom_cfg: # Create grub configuration using parameters from wks file bootloader = creator.ks.bootloader grubefi_conf = "" grubefi_conf += "serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1\n" grubefi_conf += "default=boot\n" grubefi_conf += "timeout=%s\n" % bootloader.timeout grubefi_conf += "set root='hd0,gpt2'\n" grubefi_conf += "menuentry 'boot'{\n" kernel = "/vmlinuz" grubefi_conf += "linux %s root=%s rootwait %s\n" \ % (kernel, creator.rootdev, bootloader.append) initrd = "/initrd.img" grubefi_conf += "initrd %s\n" % initrd grubefi_conf += "}\n" logger.debug("Writing grubefi config %s/hdd/boot/EFI/BOOT/grub.cfg", cr_workdir) cfg = open("%s/hdd/boot/EFI/BOOT/grub.cfg" % cr_workdir, "w") cfg.write(grubefi_conf) cfg.close() cfg = open("%s/hdd/boot/EFI/BOOT/grub-mkimage.cfg" % cr_workdir, "w") mkimage_conf = "set root='hd0,gpt1'\n" mkimage_conf += "set prefix=($root)/EFI/BOOT\n" cfg.write(mkimage_conf) cfg.close()
def _syslinux_config(cls, bootloader): """ Generate syslinux configuration or take a custom one as such. """ custom = None if bootloader.configfile: custom = get_custom_config(bootloader.configfile) if custom: logger.debug( "Using custom configuration file %s " "for syslinux.cfg", bootloader.configfile) return custom else: raise WicError("configfile is specified but failed to " "get it from %s." % bootloader.configfile) # We try to comply to the stock syslinux.bbclass for the basic # configuration variables. serial = get_bitbake_var("SYSLINUX_SERIAL") serial_tty = get_bitbake_var("SYSLINUX_SERIAL_TTY") prompt = get_bitbake_var("SYSLINUX_PROMPT") timeout = get_bitbake_var("SYSLINUX_TIMEOUT") allow_options = get_bitbake_var("SYSLINUX_ALLOWOPTIONS") initrd = ("initrd=/initrd" if get_bitbake_var("INITRD") else "") append = get_bitbake_var("APPEND") cfg = "UI menu.c32\n" cfg += "\n" cfg += "PROMPT " + str(prompt or 0) + "\n" cfg += "TIMEOUT " + str(timeout or 50) + "\n" cfg += "\n" cfg += "ALLOWOPTIONS " + str(allow_options or 1) + "\n" cfg += "SERIAL " + str(serial or "0 38400") + "\n" cfg += "DEFAULT rootfs1\n" cfg += "\n" cfg += "LABEL rootfs1\n" cfg += " KERNEL /vmlinuz\n" cfg += " APPEND label=rootfs1 rootwait root=LABEL=rootfs1" cfg += " %s" % (serial_tty or "console=ttyS0,38400n8") cfg += " " + initrd cfg += "\n" cfg += "LABEL rootfs2\n" cfg += " KERNEL /vmlinuz\n" cfg += " APPEND label=rootfs2 rootwait root=LABEL=rootfs2" cfg += " %s" % (serial_tty or "console=ttyS0,38400n8") cfg += " " + initrd cfg += "\n" return cfg
def do_configure_grubefi(cls, creator, cr_workdir, bootpart): """ Create loader-specific (grub-efi) config """ configfile = creator.ks.bootloader.configfile custom_cfg = None if configfile: custom_cfg = get_custom_config(configfile) if custom_cfg: # Use a custom configuration for grub grubefi_conf = custom_cfg logger.debug( "Using custom configuration file " "%s for grub.cfg", configfile) else: raise WicError("configfile is specified but failed to " "get it from %s." % configfile) if not custom_cfg: # Create grub configuration using parameters from wks file bootloader = creator.ks.bootloader kernel_initrd_path = "/" if get_bitbake_var("DISTRO").startswith("ubuntu"): kernel_initrd_path = "/boot/" grubefi_conf = "serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1\n" grubefi_conf += "terminal_input --append serial\n" grubefi_conf += "terminal_output --append serial\n" grubefi_conf += "\n" grubefi_conf += "default=boot\n" grubefi_conf += "timeout=%s\n" % bootloader.timeout for part in creator.parts: if part.mountpoint == "/": grubefi_conf += "regexp --set bootdisk '(hd[0-9]*),' $prefix\n" grubefi_conf += "set root=$bootdisk',gpt%d'\n" % part.realnum grubefi_conf += "\n" grubefi_conf += "menuentry 'boot'{\n" grubefi_conf += " linux %svmlinuz root=%s rootwait %s\n" \ % (kernel_initrd_path, creator.rootdev, bootloader.append or "") grubefi_conf += " initrd %sinitrd.img\n" % kernel_initrd_path grubefi_conf += "}\n" logger.debug("Writing grubefi config %s/hdd/boot/EFI/BOOT/grub.cfg", cr_workdir) cfg = open("%s/hdd/boot/EFI/BOOT/grub.cfg" % cr_workdir, "w") cfg.write(grubefi_conf) cfg.close()
def do_configure_grubefi(cls, part, creator, target_dir): """ Create loader-specific (grub-efi) config """ configfile = creator.ks.bootloader.configfile if configfile: grubefi_conf = get_custom_config(configfile) if grubefi_conf: logger.debug("Using custom configuration file %s for grub.cfg", configfile) else: raise WicError("configfile is specified " "but failed to get it from %s", configfile) else: splash = os.path.join(target_dir, "splash.jpg") if os.path.exists(splash): splashline = "menu background splash.jpg" else: splashline = "" bootloader = creator.ks.bootloader grubefi_conf = "" grubefi_conf += "serial --unit=0 --speed=115200 --word=8 " grubefi_conf += "--parity=no --stop=1\n" grubefi_conf += "default=boot\n" grubefi_conf += "timeout=%s\n" % (bootloader.timeout or 10) grubefi_conf += "\n" grubefi_conf += "search --set=root --label %s " % part.label grubefi_conf += "\n" grubefi_conf += "menuentry 'boot'{\n" kernel = "/bzImage" grubefi_conf += "linux %s rootwait %s\n" \ % (kernel, bootloader.append) grubefi_conf += "initrd /initrd \n" grubefi_conf += "}\n" if splashline: grubefi_conf += "%s\n" % splashline cfg_path = os.path.join(target_dir, "grub.cfg") logger.debug("Writing grubefi config %s", cfg_path) with open(cfg_path, "w") as cfg: cfg.write(grubefi_conf)
def do_configure_grubefi(cls, part, creator, cr_workdir): """ Create loader-specific (grub-efi) config """ configfile = creator.ks.bootloader.configfile if configfile: grubefi_conf = get_custom_config(configfile) if grubefi_conf: logger.debug("Using custom configuration file %s for grub.cfg", configfile) else: raise WicError( "configfile is specified " "but failed to get it from %s", configfile) else: splash = os.path.join(cr_workdir, "EFI/boot/splash.jpg") if os.path.exists(splash): splashline = "menu background splash.jpg" else: splashline = "" bootloader = creator.ks.bootloader grubefi_conf = "" grubefi_conf += "serial --unit=0 --speed=115200 --word=8 " grubefi_conf += "--parity=no --stop=1\n" grubefi_conf += "default=boot\n" grubefi_conf += "timeout=%s\n" % (bootloader.timeout or 10) grubefi_conf += "\n" grubefi_conf += "search --set=root --label %s " % part.label grubefi_conf += "\n" grubefi_conf += "menuentry 'boot'{\n" kernel = "/bzImage" grubefi_conf += "linux %s rootwait %s\n" \ % (kernel, bootloader.append) grubefi_conf += "initrd /initrd \n" grubefi_conf += "}\n" if splashline: grubefi_conf += "%s\n" % splashline logger.debug("Writing grubefi config %s/EFI/BOOT/grub.cfg", cr_workdir) with open("%s/EFI/BOOT/grub.cfg" % cr_workdir, "w") as cfg: cfg.write(grubefi_conf)
def do_configure_grubefi(cls, creator, cr_workdir, bootpart): """ Create loader-specific (grub-efi) config """ configfile = creator.ks.bootloader.configfile custom_cfg = None if configfile: custom_cfg = get_custom_config(configfile) if custom_cfg: # Use a custom configuration for grub grubefi_conf = custom_cfg logger.debug("Using custom configuration file " "%s for grub.cfg", configfile) else: raise WicError("configfile is specified but failed to " "get it from %s." % configfile) if not custom_cfg: # Create grub configuration using parameters from wks file bootloader = creator.ks.bootloader grubefi_conf = "serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1\n" grubefi_conf += "terminal_input --append serial\n" grubefi_conf += "terminal_output --append serial\n" grubefi_conf += "\n" grubefi_conf += "default=boot\n" grubefi_conf += "timeout=%s\n" % bootloader.timeout for part in creator.parts: if part.mountpoint == "/": grubefi_conf += "regexp --set bootdisk '(hd[0-9]*),' $prefix\n" grubefi_conf += "set root=$bootdisk',gpt%d'\n" % part.realnum grubefi_conf += "\n" grubefi_conf += "menuentry 'boot'{\n" grubefi_conf += " linux /vmlinuz root=%s rootwait %s\n" \ % (creator.rootdev, bootloader.append or "") grubefi_conf += " initrd /initrd.img\n" grubefi_conf += "}\n" logger.debug("Writing grubefi config %s/hdd/boot/EFI/BOOT/grub.cfg", cr_workdir) cfg = open("%s/hdd/boot/EFI/BOOT/grub.cfg" % cr_workdir, "w") cfg.write(grubefi_conf) cfg.close()
def do_configure_grubefi(cls, creator, cr_workdir): """ Create loader-specific (grub-efi) config """ configfile = creator.ks.bootloader.configfile custom_cfg = None if configfile: custom_cfg = get_custom_config(configfile) if custom_cfg: # Use a custom configuration for grub grubefi_conf = custom_cfg logger.debug( "Using custom configuration file " "%s for grub.cfg", configfile) else: raise WicError("configfile is specified but failed to " "get it from %s." % configfile) if not custom_cfg: # Create grub configuration using parameters from wks file bootloader = creator.ks.bootloader grubefi_conf = "" grubefi_conf += "serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1\n" grubefi_conf += "default=boot\n" grubefi_conf += "timeout=%s\n" % bootloader.timeout grubefi_conf += "menuentry 'boot'{\n" kernel = "/bzImage" grubefi_conf += "linux %s root=%s rootwait %s\n" \ % (kernel, creator.rootdev, bootloader.append) grubefi_conf += "}\n" logger.debug("Writing grubefi config %s/hdd/boot/EFI/BOOT/grub.cfg", cr_workdir) cfg = open("%s/hdd/boot/EFI/BOOT/grub.cfg" % cr_workdir, "w") cfg.write(grubefi_conf) cfg.close()
def do_configure_partition(cls, part, source_params, cr, cr_workdir, oe_builddir, bootimg_dir, kernel_dir, native_sysroot): """ Called before do_prepare_partition(), create u-boot specific boot config """ hdddir = "%s/boot.%d" % (cr_workdir, part.lineno) install_cmd = "install -d %s" % hdddir exec_cmd(install_cmd) if not kernel_dir: kernel_dir = get_bitbake_var("DEPLOY_DIR_IMAGE") if not kernel_dir: raise WicError("Couldn't find DEPLOY_DIR_IMAGE, exiting") boot_files = None for (fmt, id) in (("_uuid-%s", part.uuid), ("_label-%s", part.label), (None, None)): if fmt: var = fmt % id else: var = "" boot_files = get_bitbake_var("IMAGE_BOOT_FILES" + var) if boot_files is not None: break if boot_files is None: raise WicError('No boot files defined, IMAGE_BOOT_FILES unset for entry #%d' % part.lineno) logger.debug('Boot files: %s', boot_files) # list of tuples (src_name, dst_name) deploy_files = [] for src_entry in re.findall(r'[\w;\-\./\*]+', boot_files): if ';' in src_entry: dst_entry = tuple(src_entry.split(';')) if not dst_entry[0] or not dst_entry[1]: raise WicError('Malformed boot file entry: %s' % src_entry) else: dst_entry = (src_entry, src_entry) logger.debug('Destination entry: %r', dst_entry) deploy_files.append(dst_entry) cls.install_task = []; for deploy_entry in deploy_files: src, dst = deploy_entry if '*' in src: # by default install files under their basename entry_name_fn = os.path.basename if dst != src: # unless a target name was given, then treat name # as a directory and append a basename entry_name_fn = lambda name: \ os.path.join(dst, os.path.basename(name)) srcs = glob(os.path.join(kernel_dir, src)) logger.debug('Globbed sources: %s', ', '.join(srcs)) for entry in srcs: src = os.path.relpath(entry, kernel_dir) entry_dst_name = entry_name_fn(entry) cls.install_task.append((src, entry_dst_name)) else: cls.install_task.append((src, dst)) if source_params.get('loader') != "u-boot": return configfile = cr.ks.bootloader.configfile custom_cfg = None if configfile: custom_cfg = get_custom_config(configfile) if custom_cfg: # Use a custom configuration for extlinux.conf extlinux_conf = custom_cfg logger.debug("Using custom configuration file " "%s for extlinux.cfg", configfile) else: raise WicError("configfile is specified but failed to " "get it from %s." % configfile) if not custom_cfg: # The kernel types supported by the sysboot of u-boot kernel_types = ["zImage", "Image", "fitImage", "uImage", "vmlinux"] has_dtb = False fdt_dir = '/' kernel_name = None # Find the kernel image name, from the highest precedence to lowest for image in kernel_types: for task in cls.install_task: src, dst = task if re.match(image, src): kernel_name = os.path.join('/', dst) break if kernel_name: break for task in cls.install_task: src, dst = task # We suppose that all the dtb are in the same directory if re.search(r'\.dtb', src) and fdt_dir == '/': has_dtb = True fdt_dir = os.path.join(fdt_dir, os.path.dirname(dst)) break if not kernel_name: raise WicError('No kernel file founded') # Compose the extlinux.conf extlinux_conf = "default Yocto\n" extlinux_conf += "label Yocto\n" extlinux_conf += " kernel %s\n" % kernel_name if has_dtb: extlinux_conf += " fdtdir %s\n" % fdt_dir bootloader = cr.ks.bootloader extlinux_conf += "append root=%s rootwait %s\n" \ % (cr.rootdev, bootloader.append if bootloader.append else '') install_cmd = "install -d %s/extlinux/" % hdddir exec_cmd(install_cmd) cfg = open("%s/extlinux/extlinux.conf" % hdddir, "w") cfg.write(extlinux_conf) cfg.close()
def do_configure_grubefi(cls, hdddir, creator, cr_workdir, source_params): """ Create grub.cfg """ configfile = creator.ks.bootloader.configfile custom_cfg = None if configfile: custom_cfg = get_custom_config(configfile) if custom_cfg: # Use a custom configuration grubefi_conf = custom_cfg logger.debug( "Using custom configuration file " "%s for grub.cfg", configfile) else: raise WicError("configfile is specified but failed to " "get it from %s." % configfile) initrd = source_params.get('initrd') if initrd: bootimg_dir = get_bitbake_var("DEPLOY_DIR_IMAGE") if not bootimg_dir: raise WicError("Couldn't find DEPLOY_DIR_IMAGE, exiting") initrds = initrd.split(';') for rd in initrds: cp_cmd = "cp %s/%s %s" % (bootimg_dir, rd, hdddir) exec_cmd(cp_cmd, True) else: logger.debug("Ignoring missing initrd") if not custom_cfg: # Create grub configuration using parameters from wks file bootloader = creator.ks.bootloader title = source_params.get('title') grubefi_conf = "" grubefi_conf += "serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1\n" grubefi_conf += "default='ACRN (Yocto)'\n" grubefi_conf += "timeout=%s\n" % bootloader.timeout grubefi_conf += "menuentry '%s'{\n" % (title if title else "boot") kernel = get_bitbake_var("KERNEL_IMAGETYPE") if get_bitbake_var("INITRAMFS_IMAGE_BUNDLE") == "1": if get_bitbake_var("INITRAMFS_IMAGE"): kernel = "%s-%s.bin" % \ (get_bitbake_var("KERNEL_IMAGETYPE"), get_bitbake_var("INITRAMFS_LINK_NAME")) label = source_params.get('label') label_conf = "root=%s" % creator.rootdev if label: label_conf = "LABEL=%s" % label grubefi_conf += "linux /%s %s rootwait %s\n" \ % (kernel, label_conf, bootloader.append) if initrd: initrds = initrd.split(';') grubefi_conf += "initrd" for rd in initrds: grubefi_conf += " /%s" % rd grubefi_conf += "\n" grubefi_conf += "}\n" grubefi_conf += "menuentry 'ACRN (Yocto)'{\n" aux_modules = get_bitbake_var("ACRN_EFI_GRUB2_MOD_CFG") if aux_modules: aux_modules = aux_modules.split(";") for aux_module in aux_modules: if not aux_module: continue grubefi_conf += "%s\n" % aux_module grubefi_conf += "\nmultiboot2 /acrn.bin %s %s \n" % \ (label_conf, bootloader.append) boot_confs = get_bitbake_var("ACRN_EFI_BOOT_CONF").split(";") for boot_conf in boot_confs: if not boot_conf: continue conf = boot_conf.split(":") if len(conf) == 2: grubefi_conf += "module2 /%s %s\n" % (conf[0], conf[1]) elif len(conf) == 3: grubefi_conf += "module2 /%s %s %s\n" % (conf[0], conf[1], conf[2]) else: raise WicError("unable to parse ACRN_EFI_BOOT_CONF, in \"%s\" exiting" \ % boot_conf ) grubefi_conf += "}\n" logger.debug("Writing grubefi config %s/hdd/boot/EFI/BOOT/grub.cfg", cr_workdir) cfg = open("%s/hdd/boot/EFI/BOOT/grub.cfg" % cr_workdir, "w") cfg.write(grubefi_conf) cfg.close()
def do_configure_systemdboot(cls, hdddir, creator, cr_workdir, source_params): """ Create loader-specific systemd-boot/gummiboot config """ install_cmd = "install -d %s/loader" % hdddir exec_cmd(install_cmd) install_cmd = "install -d %s/loader/entries" % hdddir exec_cmd(install_cmd) bootloader = creator.ks.bootloader loader_conf = "" loader_conf += "default boot\n" loader_conf += "timeout %d\n" % bootloader.timeout initrd = source_params.get('initrd') if initrd: # obviously we need to have a common common deploy var bootimg_dir = get_bitbake_var("DEPLOY_DIR_IMAGE") if not bootimg_dir: raise WicError("Couldn't find DEPLOY_DIR_IMAGE, exiting") cp_cmd = "cp %s/%s %s" % (bootimg_dir, initrd, hdddir) exec_cmd(cp_cmd, True) else: logger.debug("Ignoring missing initrd") logger.debug("Writing systemd-boot config " "%s/hdd/boot/loader/loader.conf", cr_workdir) cfg = open("%s/hdd/boot/loader/loader.conf" % cr_workdir, "w") cfg.write(loader_conf) cfg.close() configfile = creator.ks.bootloader.configfile custom_cfg = None if configfile: custom_cfg = get_custom_config(configfile) if custom_cfg: # Use a custom configuration for systemd-boot boot_conf = custom_cfg logger.debug("Using custom configuration file " "%s for systemd-boots's boot.conf", configfile) else: raise WicError("configfile is specified but failed to " "get it from %s.", configfile) if not custom_cfg: # Create systemd-boot configuration using parameters from wks file kernel = "/bzImage" boot_conf = "" boot_conf += "title boot\n" boot_conf += "linux %s\n" % kernel boot_conf += "options LABEL=Boot root=%s %s\n" % \ (creator.rootdev, bootloader.append) if initrd: boot_conf += "initrd /%s\n" % initrd logger.debug("Writing systemd-boot config " "%s/hdd/boot/loader/entries/boot.conf", cr_workdir) cfg = open("%s/hdd/boot/loader/entries/boot.conf" % cr_workdir, "w") cfg.write(boot_conf) cfg.close()
def do_configure_grubefi(cls, hdddir, creator, cr_workdir, source_params): """ Create loader-specific (grub-efi) config """ configfile = creator.ks.bootloader.configfile custom_cfg = None if configfile: custom_cfg = get_custom_config(configfile) if custom_cfg: # Use a custom configuration for grub grubefi_conf = custom_cfg logger.debug( "Using custom configuration file " "%s for grub.cfg", configfile) else: raise WicError("configfile is specified but failed to " "get it from %s." % configfile) initrd = source_params.get('initrd') if initrd: bootimg_dir = get_bitbake_var("DEPLOY_DIR_IMAGE") if not bootimg_dir: raise WicError("Couldn't find DEPLOY_DIR_IMAGE, exiting") initrds = initrd.split(';') for rd in initrds: cp_cmd = "cp %s/%s %s" % (bootimg_dir, rd, hdddir) exec_cmd(cp_cmd, True) else: logger.debug("Ignoring missing initrd") if not custom_cfg: # Create grub configuration using parameters from wks file bootloader = creator.ks.bootloader title = source_params.get('title') grubefi_conf = "" grubefi_conf += "serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1\n" grubefi_conf += "terminal_input --append serial\n" grubefi_conf += "terminal_output --append serial\n" grubefi_conf += "\n" grubefi_conf += "default=boot\n" grubefi_conf += "timeout=%s\n" % bootloader.timeout grubefi_conf += "menuentry '%s'{\n" % (title if title else "boot") kernel = get_bitbake_var("KERNEL_IMAGETYPE") if get_bitbake_var("INITRAMFS_IMAGE_BUNDLE") == "1": if get_bitbake_var("INITRAMFS_IMAGE"): kernel = "%s-%s.bin" % \ (get_bitbake_var("KERNEL_IMAGETYPE"), get_bitbake_var("INITRAMFS_LINK_NAME")) label = source_params.get('label') label_conf = "root=%s" % creator.rootdev if label: label_conf = "LABEL=%s" % label kernel, initrd = isar_get_filenames( get_bitbake_var("IMAGE_ROOTFS")) grubefi_conf += "linux /%s %s rootwait %s\n" \ % (kernel, label_conf, bootloader.append) if initrd: initrds = initrd.split(';') grubefi_conf += "initrd" for rd in initrds: grubefi_conf += " /%s" % rd grubefi_conf += "\n" grubefi_conf += "}\n" logger.debug("Writing grubefi config %s/hdd/boot/EFI/BOOT/grub.cfg", cr_workdir) cfg = open("%s/hdd/boot/EFI/BOOT/grub.cfg" % cr_workdir, "w") cfg.write(grubefi_conf) cfg.close()
def do_configure_systemdboot(cls, hdddir, creator, cr_workdir, source_params): """ Create loader-specific systemd-boot/gummiboot config """ install_cmd = "install -d %s/loader" % hdddir exec_cmd(install_cmd) install_cmd = "install -d %s/loader/entries" % hdddir exec_cmd(install_cmd) bootloader = creator.ks.bootloader loader_conf = "" loader_conf += "default boot\n" loader_conf += "timeout %d\n" % bootloader.timeout initrd = source_params.get('initrd') if initrd: # obviously we need to have a common common deploy var bootimg_dir = get_bitbake_var("DEPLOY_DIR_IMAGE") if not bootimg_dir: raise WicError("Couldn't find DEPLOY_DIR_IMAGE, exiting") initrds = initrd.split(';') for rd in initrds: cp_cmd = "cp %s/%s %s" % (bootimg_dir, rd, hdddir) exec_cmd(cp_cmd, True) else: logger.debug("Ignoring missing initrd") logger.debug( "Writing systemd-boot config " "%s/hdd/boot/loader/loader.conf", cr_workdir) cfg = open("%s/hdd/boot/loader/loader.conf" % cr_workdir, "w") cfg.write(loader_conf) cfg.close() configfile = creator.ks.bootloader.configfile custom_cfg = None if configfile: custom_cfg = get_custom_config(configfile) if custom_cfg: # Use a custom configuration for systemd-boot boot_conf = custom_cfg logger.debug( "Using custom configuration file " "%s for systemd-boots's boot.conf", configfile) else: raise WicError( "configfile is specified but failed to " "get it from %s.", configfile) if not custom_cfg: # Create systemd-boot configuration using parameters from wks file kernel = get_bitbake_var("KERNEL_IMAGETYPE") if get_bitbake_var("INITRAMFS_IMAGE_BUNDLE") == "1": if get_bitbake_var("INITRAMFS_IMAGE"): kernel = "%s-%s.bin" % \ (get_bitbake_var("KERNEL_IMAGETYPE"), get_bitbake_var("INITRAMFS_LINK_NAME")) title = source_params.get('title') kernel, initrd = isar_get_filenames( get_bitbake_var("IMAGE_ROOTFS")) boot_conf = "" boot_conf += "title %s\n" % (title if title else "boot") boot_conf += "linux /%s\n" % kernel label = source_params.get('label') label_conf = "LABEL=Boot root=%s" % creator.rootdev if label: label_conf = "LABEL=%s" % label boot_conf += "options %s %s\n" % \ (label_conf, bootloader.append) if initrd: initrds = initrd.split(';') for rd in initrds: boot_conf += "initrd /%s\n" % rd logger.debug( "Writing systemd-boot config " "%s/hdd/boot/loader/entries/boot.conf", cr_workdir) cfg = open("%s/hdd/boot/loader/entries/boot.conf" % cr_workdir, "w") cfg.write(boot_conf) cfg.close()
def do_configure_partition(cls, part, source_params, cr, cr_workdir, oe_builddir, bootimg_dir, kernel_dir, native_sysroot): """ Called before do_prepare_partition(), create u-boot specific boot config """ hdddir = "%s/boot.%d" % (cr_workdir, part.lineno) install_cmd = "install -d %s" % hdddir exec_cmd(install_cmd) if not kernel_dir: kernel_dir = get_bitbake_var("DEPLOY_DIR_IMAGE") if not kernel_dir: raise WicError("Couldn't find DEPLOY_DIR_IMAGE, exiting") boot_files = None for (fmt, id) in (("_uuid-%s", part.uuid), ("_label-%s", part.label), (None, None)): if fmt: var = fmt % id else: var = "" boot_files = get_bitbake_var("IMAGE_BOOT_FILES" + var) if boot_files is not None: break if boot_files is None: raise WicError( 'No boot files defined, IMAGE_BOOT_FILES unset for entry #%d' % part.lineno) logger.debug('Boot files: %s', boot_files) # list of tuples (src_name, dst_name) deploy_files = [] for src_entry in re.findall(r'[\w;\-\./\*]+', boot_files): if ';' in src_entry: dst_entry = tuple(src_entry.split(';')) if not dst_entry[0] or not dst_entry[1]: raise WicError('Malformed boot file entry: %s' % src_entry) else: dst_entry = (src_entry, src_entry) logger.debug('Destination entry: %r', dst_entry) deploy_files.append(dst_entry) cls.install_task = [] for deploy_entry in deploy_files: src, dst = deploy_entry if '*' in src: # by default install files under their basename entry_name_fn = os.path.basename if dst != src: # unless a target name was given, then treat name # as a directory and append a basename entry_name_fn = lambda name: \ os.path.join(dst, os.path.basename(name)) srcs = glob(os.path.join(kernel_dir, src)) logger.debug('Globbed sources: %s', ', '.join(srcs)) for entry in srcs: src = os.path.relpath(entry, kernel_dir) entry_dst_name = entry_name_fn(entry) cls.install_task.append((src, entry_dst_name)) else: cls.install_task.append((src, dst)) if source_params.get('loader') != "u-boot": return configfile = cr.ks.bootloader.configfile custom_cfg = None if configfile: custom_cfg = get_custom_config(configfile) if custom_cfg: # Use a custom configuration for extlinux.conf extlinux_conf = custom_cfg logger.debug( "Using custom configuration file " "%s for extlinux.cfg", configfile) else: raise WicError("configfile is specified but failed to " "get it from %s." % configfile) if not custom_cfg: # The kernel types supported by the sysboot of u-boot kernel_types = ["zImage", "Image", "fitImage", "uImage", "vmlinux"] has_dtb = False fdt_dir = '/' kernel_name = None # Find the kernel image name, from the highest precedence to lowest for image in kernel_types: for task in cls.install_task: src, dst = task if re.match(image, src): kernel_name = os.path.join('/', dst) break if kernel_name: break for task in cls.install_task: src, dst = task # We suppose that all the dtb are in the same directory if re.search(r'\.dtb', src) and fdt_dir == '/': has_dtb = True fdt_dir = os.path.join(fdt_dir, os.path.dirname(dst)) break if not kernel_name: raise WicError('No kernel file founded') # Compose the extlinux.conf extlinux_conf = "default Yocto\n" extlinux_conf += "label Yocto\n" extlinux_conf += " kernel %s\n" % kernel_name if has_dtb: extlinux_conf += " fdtdir %s\n" % fdt_dir bootloader = cr.ks.bootloader extlinux_conf += "append root=%s rootwait %s\n" \ % (cr.rootdev, bootloader.append if bootloader.append else '') install_cmd = "install -d %s/extlinux/" % hdddir exec_cmd(install_cmd) cfg = open("%s/extlinux/extlinux.conf" % hdddir, "w") cfg.write(extlinux_conf) cfg.close()