# Filesystem type for the initrd. INITRD_FS = ext2 ifeq ($(targetstring),monolithic) # Keep just 16MiB for monolithic builds extra_sz=4000 else # Need a lot more room for udebs for network and CD builds # TODO: fix & use tmpfs instead extra_sz=18000 endif # We have to redefine genext2fs to use 4k blocks and leave some space define genext2fs nb=$$(find $(TREE) | wc -l); \ sz=$$(du -s $(TREE) | cut -f 1); \ genext2fs -d $(TREE) -B 4096 -o hurd -m 0 \ -b $$(expr $$sz / 4 + $$nb / 2 + $(extra_sz)) \ -N $$(expr $$nb + 1024) endef # The image to use for a syslinux splash screen. SPLASH_PNG=boot/hurd/pics/boot-splash.png SPLASH_SVG=$(patsubst %.png,%.svg,$(SPLASH_PNG)) # The font to load in GRUB GRUB_FONT=/usr/share/grub/ascii.pf2 # GRUB configuration files GRUB_CFG_CDROM=boot/hurd/grub-hurd-cdrom.cfg GRUB_CFG_PXE=boot/hurd/grub-hurd-pxe.cfg # GRUB modules GRUB_PLATFORM=i386-pc GRUB_MODDIR=/usr/lib/grub/$(GRUB_PLATFORM) GRUB_MODULES_PXE=pxe tftp multiboot cpuid echo play gfxterm gfxterm_background gzio minicmd normal png vbe # Location for Xen example configuration. XENCFG = $(SOME_DEST)/$(EXTRANAME)debian.cfg # Library reduction needs some extra stuff which for now # is not usually available. MKLIBS = mklibs-copy # fakeroot-hurd does not support -s and -i ifneq ($(shell id -u),0) ROOTCMD = fakeroot-tcp endif # Unsupported targets arch_tree: arch_boot: arch_boot_screens: # genisoimage CD info directory, including grub and configuration files # Note that the configuration is extensively manipulated by debian-cd to # support all the available CD/DVD variants. .PHONY: arch_cd_info_dir arch_cd_info_dir: x86-image $(TEMP_CD_INFO_DIR) $(GRUB_PLATFORM) sed -e "s/@ARCH@/$(ARCH)/g" $(GRUB_CFG_CDROM) \ > $(TEMP_CD_INFO_DIR)/boot/grub/grub.cfg if [ -n "$(GRUB_FONT)" ] ; then \ cp $(GRUB_FONT) $(TEMP_CD_INFO_DIR)/boot/grub/font.pf2; \ fi if [ -n "$(SPLASH_PNG)" ]; then \ if [ -n "$(SPLASH_SVG)" -a -f "$(SPLASH_SVG)" ]; then \ rsvg-convert $(SPLASH_SVG) > $(SPLASH_PNG); \ fi; \ cp $(SPLASH_PNG) $(TEMP_CD_INFO_DIR)/boot/grub/splash.png; \ fi # Miniature CD image using GRUB, with only an initrd, no udebs or debs. .PHONY: arch_miniiso arch_miniiso: $(TEMP_INITRD) $(TEMP_KERNEL) $(TREE) -rm -f $(TEMP_CD_TREE)/* mkdir -p $(TEMP_CD_TREE)/boot/kernel mkdir -p $(TEMP_CD_TREE)/boot/grub cp $(TEMP_KERNEL) $(TEMP_CD_TREE)/boot/kernel/ cp $(TEMP_INITRD) $(TEMP_CD_TREE)/boot/initrd.gz sed -e "s/@ARCH@/$(ARCH)/g" $(GRUB_CFG_CDROM) \ > $(TEMP_CD_TREE)/boot/grub/grub.cfg if [ -n "$(GRUB_FONT)" ] ; then \ cp $(GRUB_FONT) $(TEMP_CD_TREE)/boot/grub/font.pf2; \ fi if [ -n "$(SPLASH_PNG)" ]; then \ if [ -n "$(SPLASH_SVG)" -a -f "$(SPLASH_SVG)" ]; then \ rsvg-convert $(SPLASH_SVG) > $(SPLASH_PNG); \ fi; \ cp $(SPLASH_PNG) $(TEMP_CD_TREE)/boot/grub/splash.png; \ fi grub-mkrescue --output=$(TEMP_MINIISO) $(TEMP_CD_TREE) # Netboot files .PHONY: arch_netboot_dir arch_netboot_dir: -rm -f $(TEMP_NETBOOT_DIR) mkdir -p $(TEMP_NETBOOT_DIR)/$(NETBOOT_PATH) cp $(TEMP_INITRD) $(TEMP_NETBOOT_DIR)/$(NETBOOT_PATH) cp $(TEMP_KERNEL) $(TEMP_NETBOOT_DIR)/$(NETBOOT_PATH) sed -e "s/@ARCH@/$(ARCH)/g" $(GRUB_CFG_PXE) \ > $(TEMP_NETBOOT_DIR)/$(NETBOOT_PATH)/grub.cfg if [ -n "$(GRUB_FONT)" ] ; then \ cp $(GRUB_FONT) $(TEMP_NETBOOT_DIR)/$(NETBOOT_PATH)/font.pf2; \ fi if [ -n "$(SPLASH_PNG)" ]; then \ if [ -n "$(SPLASH_SVG)" -a -f "$(SPLASH_SVG)" ]; then \ rsvg-convert $(SPLASH_SVG) > $(SPLASH_PNG); \ fi; \ cp $(SPLASH_PNG) $(TEMP_NETBOOT_DIR)/$(NETBOOT_PATH)/splash.png; \ fi # Generate grub2pxe grub-mkimage -O $(GRUB_PLATFORM)-pxe --prefix="(pxe)/$(NETBOOT_PATH)" \ -o $(TEMP_NETBOOT_DIR)/$(NETBOOT_PATH)/grub2pxe \ $(GRUB_MODULES_PXE) # This symlink is not strictly required, but it allows more usual # dhcp server setups to work without modification. rm -f $(TEMP_NETBOOT_DIR)/grub2pxe ln -sf $(NETBOOT_PATH)/grub2pxe $(TEMP_NETBOOT_DIR)/grub2pxe .PHONY: xen_config xen_config: $(TEMP_INITRD) util/xen/build_modules $(SOME_DEST)/$(EXTRANAME)/modules $(TEMP_INITRD) 'initrd $$(ramdisk-create)' $(TEMP)/ext2fs.static 'ext2fs -A --multiboot-command-line=$${kernel-command-line} --host-priv-port=$${host-port} --device-master-port=$${device-port} --exec-server-task=$${exec-task} -T typed $${root} $$(task-create) $$(task-resume)' $(TEMP)/exec.static 'exec $$(exec-task=task-create)' sed -e "s/@ARCH@/$(ARCH)/g" \ -e "s/@XEN_INSTALL_METHOD@/$(XEN_INSTALL_METHOD)/g" \ -e "s/@DEBIAN_RELEASE@/$(DEBIAN_RELEASE)/g" \ $(XENCFG) chmod 644 $(XENCFG) update-manifest $(XENCFG) $(MANIFEST-XENCFG)