################################################################################ # # petitboot # ################################################################################ PETITBOOT_VERSION = 1.15 PETITBOOT_SOURCE = petitboot-v$(PETITBOOT_VERSION).tar.gz PETITBOOT_SITE = https://github.com/open-power/petitboot/releases/download/v$(PETITBOOT_VERSION) PETITBOOT_DEPENDENCIES = \ elfutils \ ncurses \ udev \ host-bison \ host-flex \ lvm2 \ $(if $(BR2_PACKAGE_LIBXCRYPT),libxcrypt) \ $(TARGET_NLS_DEPENDENCIES) PETITBOOT_LICENSE = GPL-2.0 PETITBOOT_LICENSE_FILES = COPYING PETITBOOT_CONF_ENV = LDFLAGS="$(TARGET_LDFLAGS) $(TARGET_NLS_LIBS)" PETITBOOT_CONF_OPTS = \ --enable-crypt \ --enable-platform-auto \ --disable-mtd \ --with-ncurses \ --without-signed-boot \ --without-twin-fbdev \ --without-twin-x11 \ $(if $(BR2_PACKAGE_BUSYBOX),--enable-busybox,--disable-busybox) \ HOST_PROG_KEXEC=/usr/sbin/kexec \ HOST_PROG_SH=/usr/libexec/petitboot/pb-shell \ HOST_PROG_SHUTDOWN=/usr/libexec/petitboot/kexec-restart # HPA and Busybox tftp are supported. HPA tftp is part of Buildroot's tftpd # package. ifeq ($(BR2_PACKAGE_TFTPD),y) PETITBOOT_CONF_OPTS += --with-tftp=hpa else ifeq ($(BR2_PACKAGE_BUSYBOX),y) PETITBOOT_CONF_OPTS += --with-tftp=busybox else # This actually means "autodetect", there's no way to really disable. PETITBOOT_CONF_OPTS += --without-tftp endif ifeq ($(BR2_PACKAGE_DTC),y) PETITBOOT_DEPENDENCIES += dtc PETITBOOT_CONF_OPTS += --with-fdt define PETITBOOT_POST_INSTALL_DTB $(INSTALL) -D -m 0755 $(@D)/utils/hooks/30-dtb-updates \ $(TARGET_DIR)/etc/petitboot/boot.d/30-dtb-updates endef PETITBOOT_POST_INSTALL_TARGET_HOOKS += PETITBOOT_POST_INSTALL_DTB else PETITBOOT_CONF_OPTS += --without-fdt endif ifeq ($(BR2_INIT_BUSYBOX),y) # inittab "restart" runlevel entry runs kexec PETITBOOT_KEXEC_COMMAND = /bin/kill -QUIT 1 define PETITBOOT_BUSYBOX_INITTAB grep -q kexec $(TARGET_DIR)/etc/inittab || \ printf "\nnull::restart:/usr/sbin/kexec -f -e\n" >> $(TARGET_DIR)/etc/inittab endef PETITBOOT_TARGET_FINALIZE_HOOKS += PETITBOOT_BUSYBOX_INITTAB else ifeq ($(BR2_INIT_SYSV),y) # inittab runlevel 6 entry runs kexec PETITBOOT_KEXEC_COMMAND = /sbin/shutdown -r now define PETITBOOT_SYSV_INITTAB grep -q kexec $(TARGET_DIR)/etc/inittab || \ $(SED) 's~^reb0:.*~reb0:6:wait:/usr/sbin/kexec -f -e~' $(TARGET_DIR)/etc/inittab endef PETITBOOT_TARGET_FINALIZE_HOOKS += PETITBOOT_SYSV_INITTAB else ifeq ($(BR2_INIT_OPENRC),y) PETITBOOT_KEXEC_COMMAND = /sbin/openrc-shutdown --kexec now else ifeq ($(BR2_INIT_SYSTEMD),y) PETITBOOT_KEXEC_COMMAND = /usr/bin/systemctl kexec else # BR2_INIT_NONE PETITBOOT_KEXEC_COMMAND = /usr/sbin/kexec -f -e endif PETITBOOT_GETTY_PORT = $(patsubst %,'%',$(call qstrip,$(BR2_PACKAGE_PETITBOOT_GETTY_PORT))) define PETITBOOT_POST_INSTALL $(INSTALL) -D -m 0755 $(PETITBOOT_PKGDIR)/kexec-restart.in \ $(TARGET_DIR)/usr/libexec/petitboot/kexec-restart $(SED) 's~@KEXEC_COMMAND@~$(PETITBOOT_KEXEC_COMMAND)~' \ $(TARGET_DIR)/usr/libexec/petitboot/kexec-restart $(INSTALL) -D -m 0755 $(@D)/utils/hooks/01-create-default-dtb \ $(TARGET_DIR)/etc/petitboot/boot.d/01-create-default-dtb $(INSTALL) -D -m 0755 $(@D)/utils/hooks/90-sort-dtb \ $(TARGET_DIR)/etc/petitboot/boot.d/90-sort-dtb $(INSTALL) -D -m 0755 $(PETITBOOT_PKGDIR)/S15pb-discover \ $(TARGET_DIR)/etc/init.d/S15pb-discover $(INSTALL) -D -m 0755 $(PETITBOOT_PKGDIR)/pb-console \ $(TARGET_DIR)/etc/init.d/pb-console $(INSTALL) -D -m 0755 $(PETITBOOT_PKGDIR)/pb-shell \ $(TARGET_DIR)/usr/libexec/petitboot/pb-shell $(INSTALL) -D -m 0755 $(PETITBOOT_PKGDIR)/shell_profile \ $(TARGET_DIR)/home/petituser/.profile mkdir -p $(TARGET_DIR)/etc/udev/rules.d for port in $(PETITBOOT_GETTY_PORT); do \ printf 'SUBSYSTEM=="tty", KERNEL=="%s", RUN+="/etc/init.d/pb-console start $$name"\n' "$$port"; \ done > $(TARGET_DIR)/etc/udev/rules.d/petitboot-console-ui.rules mkdir -p $(TARGET_DIR)/usr/share/udhcpc/default.script.d/ ln -sf /usr/sbin/pb-udhcpc \ $(TARGET_DIR)/usr/share/udhcpc/default.script.d/ endef PETITBOOT_POST_INSTALL_TARGET_HOOKS += PETITBOOT_POST_INSTALL define PETITBOOT_USERS petituser -1 petitgroup -1 * /home/petituser /bin/sh - petitboot user endef $(eval $(autotools-package))