summaryrefslogtreecommitdiff
path: root/Makefile
blob: 8adde39b05c5a818e1e35065075147c590a63276 (plain)
    1 #
    2 # Makefile for CRUX
    3 # Copyright (c) 2003-2005 Per Liden <per@fukt.bth.se>
    4 #
    5 
    6 CRUXVERSION       = 3.0
    7 CUSTOMVERSION     =
    8 COLLECTIONS       = core opt xorg
    9 KERNEL_MIRROR     = http://www.kernel.org
   10 KERNEL_VERSION    = 3.7.10
   11 KERNEL_PATCHES    =
   12 BB_VERSION        = 1.20.2
   13 SYSLINUX_VERSION  = 4.04
   14 GRUB2_VERSION     = 2.00
   15 MEMTEST_VERSION   = 4.20
   16 PKG_EXT           = pkg.tar.xz
   17 PKGMK_CONF        = $(PWD)/pkgmk.conf
   18 PORTS_DIR         = $(PWD)/ports
   19 FAKE_ROOT_DIR     = $(PWD)/tmp/fake_root
   20 ROOTFS_DIR        = $(PWD)/tmp/rootfs
   21 DATE_STR          = $(shell date +'%Y%m%d')
   22 IMG_ROOT_DIR      = $(PWD)/tmp/img_root
   23 SRCISO_ROOT_DIR   = $(PWD)/tmp/srciso_root
   24 ISO_FILENAME      = $(PWD)/crux-$(CRUXVERSION)$(CUSTOMVERSION).iso
   25 SRCISO_FILENAME   = $(PWD)/crux-$(CRUXVERSION)$(CUSTOMVERSION)-source.iso
   26 ISO_PACKAGES      = filesystem bash coreutils bzip2 e2fsprogs jfsutils \
   27                     xfsprogs reiserfsprogs patch findutils glibc grep gzip kbd \
   28                     kmod less gawk ncurses net-tools pkgutils \
   29                     procps readline sed shadow sysklogd sysvinit tar \
   30                     util-linux vim which dialog nano mdadm pciutils libusb libusb-compat \
   31                     sysfsutils usbutils udev zlib openssl openssh \
   32                     dhcpcd wget iproute2 libpcre iputils libgmp libdevmapper lvm2 \
   33                     attr acl libcap tcp_wrappers btrfs-progs parted xz
   34 
   35 PORTS_core        = $(shell /bin/ls -I README $(PORTS_DIR)/core)
   36 PORTS_opt         = $(shell /bin/cat packages.opt)
   37 PORTS_xorg        = $(shell /bin/cat packages.xorg)
   38 
   39 ifeq ($(FORCE),yes)
   40 PKGMK_FORCE=-f
   41 else
   42 PKGMK_FORCE=
   43 endif
   44 
   45 ifeq ($(DOWNLOAD),yes)
   46 PKGMK_DOWNLOAD=-do
   47 else
   48 PKGMK_DOWNLOAD=-d
   49 endif
   50 
   51 .PHONY: help check-root check-log $(COLLECTIONS) all all-chroot bootstrap \
   52 	initramfs kernel-clean syslinux-clean clean iso \
   53 	busybox-clean initramfs-clean memtest-clean
   54 
   55 help:
   56 	@echo "CRUX Makefile"
   57 	@echo "Targets:"
   58 	@echo "  <collection>   build single collection"
   59 	@echo "  all            build all collections"
   60 	@echo "  bootstrap      bootstrap all collections"
   61 	@echo "  kernel         download and build kernel"
   62 	@echo "  iso            create iso image"
   63 	@echo "Collections:"
   64 	@echo "  $(COLLECTIONS)"
   65 
   66 check-root:
   67 	@if [ "$$UID" != "0" ]; then \
   68 		echo "You need to be root to do this."; \
   69 		exit 1; \
   70 	fi
   71 
   72 check-log:
   73 	@grep "^=======> ERROR:"; \
   74 	if [ "$$?" = "0" ]; then \
   75 		echo "(see log file for details)"; \
   76 		exit 1; \
   77 	else \
   78 		exit 0; \
   79 	fi
   80 
   81 
   82 # kernel
   83 kernel/linux-$(KERNEL_VERSION).tar.xz:
   84 	cd kernel && wget $(KERNEL_MIRROR)/pub/linux/kernel/v3.0/linux-$(KERNEL_VERSION).tar.xz
   85 
   86 kernel/linux-$(KERNEL_VERSION): kernel/linux-$(KERNEL_VERSION).tar.xz
   87 	tar -C kernel -xJmf kernel/linux-$(KERNEL_VERSION).tar.xz
   88 	for FILE in $(KERNEL_PATCHES); do \
   89 		(cd kernel/linux-$(KERNEL_VERSION) && patch -p1 -i ../$$FILE;) \
   90 	done
   91 	sed -i -e 's,\($$(Q)echo "$$(KERNELVERSION)\)$$$$($$(CONFIG_SHELL).*" >,\1" >,' kernel/linux-$(KERNEL_VERSION)/Makefile
   92 
   93 kernel/linux-$(KERNEL_VERSION)/arch/x86/boot/bzImage: kernel/linux-$(KERNEL_VERSION).config | kernel/linux-$(KERNEL_VERSION)
   94 	make -C kernel/linux-$(KERNEL_VERSION) mrproper
   95 	cp -f kernel/linux-$(KERNEL_VERSION).config kernel/linux-$(KERNEL_VERSION)/.config
   96 	make -C kernel/linux-$(KERNEL_VERSION) oldconfig
   97 	make -C kernel/linux-$(KERNEL_VERSION) all
   98 
   99 kernel: kernel/linux-$(KERNEL_VERSION)/arch/x86/boot/bzImage
  100 
  101 kernel-clean:
  102 	rm -rf kernel/linux-$(KERNEL_VERSION)
  103 
  104 kernel-distclean: kernel-clean
  105 	rm -f kernel/linux-$(KERNEL_VERSION).tar.xz
  106 
  107 
  108 
  109 # busybox
  110 busybox/busybox-$(BB_VERSION).tar.bz2:
  111 	@cd busybox && wget http://busybox.net/downloads/busybox-$(BB_VERSION).tar.bz2
  112 
  113 busybox/busybox-$(BB_VERSION): busybox/busybox-$(BB_VERSION).tar.bz2
  114 	@tar -C busybox -xjmf busybox/busybox-$(BB_VERSION).tar.bz2
  115 	@(cd busybox/busybox-$(BB_VERSION) && patch -p1 -i ../busybox-$(BB_VERSION)-glibc-2.16.patch)
  116 
  117 busybox/busybox: busybox/busybox-$(BB_VERSION)
  118 	@cp -f busybox/busybox-$(BB_VERSION).config busybox/busybox-$(BB_VERSION)/.config
  119 	@make -C busybox/busybox-$(BB_VERSION) oldconfig
  120 	@make -C busybox/busybox-$(BB_VERSION)
  121 	@cp busybox/busybox-$(BB_VERSION)/busybox busybox/busybox
  122 
  123 busybox: busybox/busybox
  124 
  125 busybox-source: busybox/busybox-$(BB_VERSION).tar.bz2
  126 
  127 busybox-clean:
  128 	rm -rf busybox/busybox-$(BB_VERSION) busybox/busybox
  129 
  130 busybox-distclean: busybox-clean
  131 	rm -f busybox/busybox-$(BB_VERSION).tar.bz2
  132 
  133 
  134 
  135 # isolinux
  136 iso/syslinux-$(SYSLINUX_VERSION).tar.gz:
  137 	cd iso && wget $(KERNEL_MIRROR)/pub/linux/utils/boot/syslinux/syslinux-$(SYSLINUX_VERSION).tar.gz
  138 
  139 iso/syslinux-$(SYSLINUX_VERSION): iso/syslinux-$(SYSLINUX_VERSION).tar.gz
  140 	tar -C iso -xzmf iso/syslinux-$(SYSLINUX_VERSION).tar.gz
  141 
  142 iso/syslinux-$(SYSLINUX_VERSION)/isolinux.bin: iso/syslinux-$(SYSLINUX_VERSION)
  143 
  144 syslinux: iso/syslinux-$(SYSLINUX_VERSION)/isolinux.bin
  145 
  146 syslinux-clean:
  147 	rm -rf iso/syslinux-$(SYSLINUX_VERSION)
  148 
  149 syslinux-distclean: syslinux-clean
  150 	rm -f iso/syslinux-$(SYSLINUX_VERSION).tar.gz
  151 
  152 
  153 
  154 # grub2-efi
  155 iso/grub-$(GRUB2_VERSION).tar.xz:
  156 	cd iso && wget http://ftp.gnu.org/gnu/grub/grub-$(GRUB2_VERSION).tar.xz
  157 
  158 iso/grub-$(GRUB2_VERSION): iso/grub-$(GRUB2_VERSION).tar.xz
  159 	tar -C iso -xJmf iso/grub-$(GRUB2_VERSION).tar.xz
  160 	sed -i -e '/gets is a/d' iso/grub-$(GRUB2_VERSION)/grub-core/gnulib/stdio.in.h
  161 
  162 iso/grub-$(GRUB2_VERSION)/x86_64/grub2-x86_64.efi: iso/grub-$(GRUB2_VERSION)
  163 	(cd iso/grub-$(GRUB2_VERSION) && \
  164 	 mkdir x86_64 && \
  165 	 cd x86_64 && \
  166 	 CFLAGS="-Wno-error" ../configure --with-platform=efi --target=x86_64 && \
  167 	 make && \
  168 	 cd grub-core && \
  169 	 ../grub-mkimage -d . -p '(cd0)/boot/grub' -o ../grub2-x86_64.efi \
  170 		-O x86_64-efi '--prefix=(cd0)/boot/grub' \
  171         $(shell find *.mod | xargs | sed 's/.mod//g'))
  172 
  173 iso/grub-$(GRUB2_VERSION)/i386/grub2-i386.efi: iso/grub-$(GRUB2_VERSION)
  174 	(cd iso/grub-$(GRUB2_VERSION) && \
  175 	 mkdir i386 && \
  176 	 cd i386 && \
  177 	 CFLAGS="-Wno-error" ../configure --with-platform=efi --target=i386 && \
  178 	 make && \
  179 	 cd grub-core && \
  180 	 ../grub-mkimage -d . -p '(cd0)/boot/grub' -o ../grub2-i386.efi \
  181 		-O i386-efi '--prefix=(cd0)/boot/grub' \
  182         $(shell find *.mod | xargs | sed 's/.mod//g'))
  183 
  184 grub2-efi: iso/grub-$(GRUB2_VERSION)/x86_64/grub2-x86_64.efi iso/grub-$(GRUB2_VERSION)/i386/grub2-i386.efi
  185 
  186 iso/efiboot.img: grub2-efi
  187 	dd if=/dev/zero of=iso/efiboot.img bs=1M count=8
  188 	mkdosfs -n CRUX-EFI iso/efiboot.img
  189 	mkdir -p iso/efiboot
  190 	mount -o loop iso/efiboot.img iso/efiboot
  191 	mkdir -pv iso/efiboot/EFI/boot \
  192 		iso/efiboot/boot/grub/x86_64-efi \
  193 		iso/efiboot/boot/grub/i386-efi
  194 	cp iso/grub-$(GRUB2_VERSION)/x86_64/grub2-x86_64.efi \
  195 		iso/efiboot/EFI/boot/bootx64.efi
  196 	cp iso/grub-$(GRUB2_VERSION)/i386/grub2-i386.efi \
  197 		iso/efiboot/EFI/boot/bootia32.efi
  198 	umount iso/efiboot
  199 
  200 grub2-efi-clean:
  201 	rm -rf iso/grub-$(GRUB2_VERSION) iso/efiboot iso/efiboot.img
  202 
  203 grub2-efi-distclean: grub2-efi-clean
  204 	rm -f iso/grub2-$(GRUB2_VERSION).tar.xz
  205 
  206 
  207 
  208 
  209 # memtest86+
  210 iso/isolinux/memtest86+-$(MEMTEST_VERSION).bin.gz:
  211 	cd iso/isolinux && wget http://www.memtest.org/download/$(MEMTEST_VERSION)/memtest86+-$(MEMTEST_VERSION).bin.gz
  212 
  213 iso/isolinux/memtest86+-$(MEMTEST_VERSION).bin: iso/isolinux/memtest86+-$(MEMTEST_VERSION).bin.gz
  214 	zcat iso/isolinux/memtest86+-$(MEMTEST_VERSION).bin.gz > iso/isolinux/memtest86+-$(MEMTEST_VERSION).bin
  215 
  216 memtest: iso/isolinux/memtest86+-$(MEMTEST_VERSION).bin
  217 
  218 memtest-clean:
  219 	rm -f iso/isolinux/memtest86+-$(MEMTEST_VERSION).bin
  220 
  221 memtest-distclean: memtest-clean
  222 	rm -f iso/isolinux/memtest86+-$(MEMTEST_VERSION).bin.gz
  223 
  224 
  225 
  226 clean: kernel-clean busybox-clean syslinux-clean initramfs-clean
  227 	@rm -rf tmp modules_install.log $(ISO_FILENAME) \
  228 		`basename $(ISO_FILENAME) .iso`.md5
  229 
  230 distclean: clean kernel-distclean syslinux-distclean setup.dependencies-clean
  231 
  232 $(COLLECTIONS): check-root
  233 	@for p in $(PORTS_$(@)); do \
  234 		echo "port: $$p"; \
  235 		(cd $(PORTS_DIR)/$@/$$p && pkgmk -cf $(PKGMK_CONF) $(PKGMK_DOWNLOAD) $(PKGMK_FORCE)); \
  236 	done
  237 
  238 all: $(COLLECTIONS)
  239 
  240 all-chroot: check-root
  241 	@echo "Creating chroot environment"
  242 	@rm -rf $(FAKE_ROOT_DIR)
  243 	@mkdir -p $(FAKE_ROOT_DIR)
  244 	@echo "Installing packages"
  245 	@mkdir -p $(FAKE_ROOT_DIR)/var/lib/pkg
  246 	@touch $(FAKE_ROOT_DIR)/var/lib/pkg/db
  247 	@for COLL in $(COLLECTIONS); do \
  248 		for PACKAGE in $(PORTS_DIR)/$$COLL/*/*.$(PKG_EXT); do \
  249 			echo " $$PACKAGE"; \
  250 			pkgadd -r $(FAKE_ROOT_DIR) $$PACKAGE; \
  251 		done; \
  252 	done
  253 	@echo "Installing kernel source (linux-$(KERNEL_VERSION)) into $(FAKE_ROOT_DIR)/usr/src/linux-$(KERNEL_VERSION)..."
  254 	@mkdir -p $(FAKE_ROOT_DIR)/usr/src
  255 	@tar Jxf kernel/linux-$(KERNEL_VERSION).tar.xz -C $(FAKE_ROOT_DIR)/usr/src/
  256 	@for FILE in $(KERNEL_PATCHES); do \
  257 		cp kernel/$$FILE $(FAKE_ROOT_DIR)/usr/src/linux-$(KERNEL_VERSION)/; \
  258 		(cd $(FAKE_ROOT_DIR)/usr/src/linux-$(KERNEL_VERSION) && \
  259 		 patch -p1 -i $$FILE); \
  260 	 done
  261 	@cp kernel/linux-$(KERNEL_VERSION).config $(FAKE_ROOT_DIR)/usr/src/linux-$(KERNEL_VERSION)/.config
  262 	@echo "Preparing kernel source..."
  263 	@(cd $(FAKE_ROOT_DIR)/usr/src/linux-$(KERNEL_VERSION) && \
  264 	  make oldconfig && make)
  265 	@mkdir -p $(FAKE_ROOT_DIR)/lib/modules/$(KERNEL_VERSION)
  266 	@ln -s /usr/src/linux-$(KERNEL_VERSION) $(FAKE_ROOT_DIR)/lib/modules/$(KERNEL_VERSION)/build
  267 	@cp -L /etc/resolv.conf $(FAKE_ROOT_DIR)/etc/
  268 	@cp -L $(PKGMK_CONF) $(FAKE_ROOT_DIR)/etc/
  269 	@echo "Mounting /dev on $(FAKE_ROOT_DIR)/dev"
  270 	@mount --bind /dev $(FAKE_ROOT_DIR)/dev
  271 	@echo "Mounting /proc on $(FAKE_ROOT_DIR)/proc"
  272 	@mount --bind /proc $(FAKE_ROOT_DIR)/proc
  273 	@echo "Mounting $$PWD on $(FAKE_ROOT_DIR)/src"
  274 	@mkdir $(FAKE_ROOT_DIR)/src
  275 	@mount --bind $$PWD $(FAKE_ROOT_DIR)/src
  276 	@echo "Entering chroot enrivonment"
  277 	@chroot $(FAKE_ROOT_DIR) /bin/bash --login -c "cd /src && $(MAKE) FORCE=yes all"
  278 	@echo "Exiting chroot enrivonment"
  279 	@echo "Unmounting $(FAKE_ROOT_DIR)/src"
  280 	@umount $(FAKE_ROOT_DIR)/src
  281 	@rmdir $(FAKE_ROOT_DIR)/src
  282 	@echo "Unmounting $(FAKE_ROOT_DIR)/proc"
  283 	@umount $(FAKE_ROOT_DIR)/proc
  284 	@echo "Unmounting $(FAKE_ROOT_DIR)/dev"
  285 	@umount $(FAKE_ROOT_DIR)/dev
  286 	@echo "Removing chroot environment"
  287 	@rm -rf $(FAKE_ROOT_DIR)
  288 
  289 bootstrap: check-root
  290 	@echo "Bootstrap started    (`date +'%F %T'`)"
  291 	@echo "- Stage 0            (`date +'%F %T'`)"
  292 	@$(MAKE) all &> log.stage0
  293 	@$(MAKE) check-log < log.stage0
  294 	@echo "- Stage 1            (`date +'%F %T'`)"
  295 	@$(MAKE) all-chroot &> log.stage1
  296 	@$(MAKE) check-log < log.stage1
  297 	@echo "- Stage 2            (`date +'%F %T'`)"
  298 	@$(MAKE) all-chroot &> log.stage2
  299 	@$(MAKE) check-log < log.stage2
  300 	@echo "Bootstrap completed  (`date +'%F %T'`)"
  301 
  302 
  303 
  304 # initramfs
  305 initramfs: kernel busybox initramfs/init | rootfs
  306 	@echo "Creating initramfs..."
  307 	@sed -e "s/#KERNEL_VERSION#/$(KERNEL_VERSION)/g" initramfs/initramfs.lst \
  308 		> initramfs/initramfs.lst-sed
  309 	@cd initramfs && ../kernel/linux-$(KERNEL_VERSION)/usr/gen_init_cpio \
  310 		initramfs.lst-sed > initramfs
  311 
  312 initramfs-clean:
  313 	if [ -e initramfs/initramfs.lst-sed ]; then rm -f initramfs/initramfs.lst-sed; fi
  314 	if [ -e initramfs/initramfs ]; then rm -f initramfs/initramfs; fi
  315 
  316 
  317 
  318 # rootfs.tar.xz
  319 rootfs: kernel busybox
  320 	@echo "Creating rootfs..."
  321 	@rm -rf $(ROOTFS_DIR)
  322 	@mkdir -p $(ROOTFS_DIR)
  323 	@echo "- Installing packages..."
  324 	@for PACKAGE in $(ISO_PACKAGES); do \
  325 		bsdtar -C $(ROOTFS_DIR) -xpf $(PORTS_DIR)/*/$$PACKAGE/$$PACKAGE\#*.$(PKG_EXT); \
  326 	done
  327 	@sed -i -e 's/^#PermitRootLogin yes/PermitRootLogin yes/' \
  328 		$(ROOTFS_DIR)/etc/ssh/sshd_config
  329 	@echo "- Installing kernel and modules..."
  330 	@cp kernel/linux-$(KERNEL_VERSION)/System.map $(ROOTFS_DIR)/boot/System.map
  331 	@cp kernel/linux-$(KERNEL_VERSION)/arch/x86/boot/bzImage $(ROOTFS_DIR)/boot/vmlinuz
  332 	@make -C kernel/linux-$(KERNEL_VERSION) INSTALL_MOD_PATH=$(ROOTFS_DIR) modules_install &> modules_install.log
  333 	@echo "- Deleting superfluous files..."
  334 	@cd $(ROOTFS_DIR) && rm -rf var opt home
  335 	@mkdir -p $(ROOTFS_DIR)/var/empty $(ROOTFS_DIR)/var/lib
  336 	@cd $(ROOTFS_DIR)/usr && rm -rf man include lib/*.a lib/*.o lib/gconv lib/locale src
  337 	@cd $(ROOTFS_DIR)/usr/share && mkdir l v x; cp terminfo/l/linux l; cp terminfo/v/vt100 v; cp terminfo/x/xterm x; rm -rf terminfo/*; mv l v x terminfo
  338 	@cd $(ROOTFS_DIR)/usr/share && rm -rf et ss vim i18n zoneinfo
  339 	@cd $(ROOTFS_DIR)/usr/bin && rm cal locale localedef rpcgen compile_et mk_cmds
  340 	@cd $(ROOTFS_DIR)/usr/sbin && rm group{add,del,mod} user{add,del,mod} grpck pwck iconvconfig
  341 	@cd $(ROOTFS_DIR)/etc && rm -rf cron {resolv,lilo,sysctl,pkgadd,pkgmk}.conf securetty
  342 	@cd $(ROOTFS_DIR)/etc/rc.d && find . -type f ! -name "sshd" -exec rm -f '{}' \;
  343 	@cd $(ROOTFS_DIR)/lib/modules/$(KERNEL_VERSION) && rm -f build
  344 	@echo "- Creating symlinks"
  345 	@ln -sf /tmp/var $(ROOTFS_DIR)/var
  346 	@ln -sf /proc/mounts $(ROOTFS_DIR)/etc/mtab
  347 	@echo "- Updating library links and cache"
  348 	@ldconfig -r $(ROOTFS_DIR)
  349 	@echo "- Copying iso/ files..."
  350 	@cp iso/etc/{motd,fstab,hosts,inittab,issue,ld.so.conf,protocols,rc,rc.shutdown,rc.single,services,shadow} \
  351 		$(ROOTFS_DIR)/etc
  352 	@cp iso/bin/{setup,setup-helper,setup-chroot,serial_console} $(ROOTFS_DIR)/usr/bin
  353 	@echo "- Compressing (rootfs.tar.xz)..."
  354 	@mkdir -p rootfs
  355 	@(cd $(ROOTFS_DIR) && tar -Jcf ../../rootfs/rootfs.tar.xz . 2>/dev/null)
  356 
  357 rootfs-clean:
  358 	@rm -rf rootfs
  359 	
  360 
  361 # setup.dependencies
  362 iso/setup.dependencies: packages.opt packages.xorg
  363 	@echo "Creating iso/setup.dependencies ..."
  364 	@for PORT in $(foreach c,$(COLLECTIONS),$(PORTS_$(c))); do \
  365 		echo -n $$PORT": "; \
  366 		prt-get \
  367 			--no-std-config \
  368 			$(foreach c,$(COLLECTIONS),--config-append="prtdir $(PORTS_DIR)/$(c)") \
  369 			quickdep $$PORT; \
  370 	done > $@
  371 	
  372 setup.dependencies: iso/setup.dependencies packages.all check-deps
  373 
  374 setup.dependencies-clean:
  375 	@rm iso/setup.dependencies
  376 	@rm packages.all
  377 
  378 # Write a file with all packages we provide on the iso 
  379 packages.all: packages.opt packages.xorg
  380 	@echo "Writing file packages.all ..."
  381 	@for PORT in $(foreach c,$(COLLECTIONS),$(PORTS_$(c))); do \
  382 		echo $$PORT; \
  383 	done | sort > $@
  384 
  385 # here we check if we have a dep, listed in a Pkgfile, which we do not provide on the iso
  386 check-deps: packages.all iso/setup.dependencies
  387 	@echo "Check for missing dependencies ..."
  388 	@gawk ' \
  389 		BEGIN { while ((getline p < "packages.all") > 0) { pkgs[p] }} \
  390 		{ for (p=2; p<=NF; p++) { if ( ! ($$p in pkgs)) { printf(" * %s %s\n", $$1, $$p) }}} \
  391 	' iso/setup.dependencies
  392 
  393 # check for duplicate, missing and orphan packages in the ports tree
  394 check-portstree: packages.all
  395 	@cd $(PORTS_DIR) && ./checkportstree
  396 
  397 
  398 ##### image building #####
  399 image-base: check-root kernel syslinux initramfs rootfs setup.dependencies iso/efiboot.img
  400 	@echo "Creating installation image base"
  401 	@if [ -e $(IMG_ROOT_DIR) ]; then rm -rf $(IMG_ROOT_DIR); fi
  402 	@mkdir -p $(IMG_ROOT_DIR)/boot
  403 	@echo "- Installing kernel"
  404 	@cp kernel/linux-$(KERNEL_VERSION)/System.map $(IMG_ROOT_DIR)/boot/System.map
  405 	@cp kernel/linux-$(KERNEL_VERSION)/arch/x86/boot/bzImage $(IMG_ROOT_DIR)/boot/vmlinuz
  406 	@echo "- Installing initramfs"
  407 	@cp initramfs/initramfs $(IMG_ROOT_DIR)/boot/initramfs
  408 	@echo "- Copying CRUX packages"
  409 	@mkdir -p $(IMG_ROOT_DIR)/crux
  410 	@cp doc/handbook/{handbook,releasenotes}.txt $(IMG_ROOT_DIR)/crux
  411 	@cp iso/setup.dependencies $(IMG_ROOT_DIR)/crux
  412 	@mkdir -p $(IMG_ROOT_DIR)/crux/kernel
  413 	@cp kernel/linux-$(KERNEL_VERSION).tar.xz $(IMG_ROOT_DIR)/crux/kernel
  414 	@cp kernel/linux-$(KERNEL_VERSION).config $(IMG_ROOT_DIR)/crux/kernel
  415 	@cp kernel/linux-$(KERNEL_VERSION).defconfig $(IMG_ROOT_DIR)/crux/kernel
  416 	@for FILE in $(KERNEL_PATCHES); do \
  417 		cp kernel/$$FILE $(IMG_ROOT_DIR)/crux/kernel; \
  418 	done
  419 	@for COLL in $(COLLECTIONS); do \
  420 		mkdir -p $(IMG_ROOT_DIR)/crux/$$COLL; \
  421 		cp $(PORTS_DIR)/$$COLL/*/*.$(PKG_EXT) $(IMG_ROOT_DIR)/crux/$$COLL; \
  422 	done
  423 	@mkdir -p $(IMG_ROOT_DIR)/tools
  424 	@echo "- Creating a gzip compressed pkgutils package in /tools"
  425 	@cp $(IMG_ROOT_DIR)/crux/core/pkgutils*.$(PKG_EXT) $(IMG_ROOT_DIR)/tools
  426 	@xz -d $(IMG_ROOT_DIR)/tools/pkgutils*.$(PKG_EXT)
  427 	@gzip $(IMG_ROOT_DIR)/tools/pkgutils*.tar
  428 	@echo "- Copying rootfs.tar.xz"
  429 	@cp rootfs/rootfs.tar.xz $(IMG_ROOT_DIR)
  430 	@echo $(CRUXVERSION)-$(DATE_STR) > $(IMG_ROOT_DIR)/crux-media
  431 
  432 
  433 ##### iso image building #####
  434 iso: image-base memtest
  435 	@echo "Copying ISO specific files"
  436 	@mkdir -p $(IMG_ROOT_DIR)/boot/isolinux
  437 	@cp iso/syslinux-$(SYSLINUX_VERSION)/core/isolinux.bin $(IMG_ROOT_DIR)/boot/isolinux
  438 	@cp iso/isolinux/{isolinux.cfg,*.msg} \
  439 		$(IMG_ROOT_DIR)/boot/isolinux
  440 	@cp iso/isolinux/memtest86+-$(MEMTEST_VERSION).bin $(IMG_ROOT_DIR)/boot/isolinux/memtest86plus
  441 	@cp iso/efiboot.img $(IMG_ROOT_DIR)/boot/
  442 	@mkdir -p $(IMG_ROOT_DIR)/boot/grub/{x86_64,i386}-efi
  443 	@cp -a iso/grub-$(GRUB2_VERSION)/x86_64/grub-core/*.{mod,lst} $(IMG_ROOT_DIR)/boot/grub/x86_64-efi/
  444 	@cp -a iso/grub-$(GRUB2_VERSION)/i386/grub-core/*.{mod,lst} $(IMG_ROOT_DIR)/boot/grub/i386-efi/
  445 	@cp iso/grub.cfg $(IMG_ROOT_DIR)/boot/grub/
  446 	@echo "- Creating ISO sort table"
  447 	@echo "$(IMG_ROOT_DIR)/boot 100" > /tmp/iso.sort
  448 	@echo "$(IMG_ROOT_DIR)/boot/isolinux 200" >> /tmp/iso.sort
  449 	@echo "$(IMG_ROOT_DIR)/boot/isolinux/isolinux.bin 300" >> /tmp/iso.sort
  450 	@echo "- Starting genisoimage"
  451 	@if [ -f $(ISO_FILENAME) ]; then rm -f $(ISO_FILENAME); fi
  452 	@genisoimage -R -l -J -V "CRUX-$(CRUXVERSION)$(CUSTOMVERSION)" -A CRUX \
  453 		-b boot/isolinux/isolinux.bin \
  454 		-c boot/isolinux/isolinux.boot -no-emul-boot -boot-load-size 4 \
  455 		-boot-info-table \
  456 		-eltorito-alt-boot -e boot/efiboot.img -no-emul-boot \
  457 		-sort /tmp/iso.sort -o "$(ISO_FILENAME)" $(IMG_ROOT_DIR)
  458 	@md5sum `basename $(ISO_FILENAME)` > `basename $(ISO_FILENAME) .iso`.md5
  459 	@rm /tmp/iso.sort
  460 	@echo "Done"
  461 
  462 
  463 source-iso: busybox-source packages.all iso/syslinux-$(SYSLINUX_VERSION).tar.gz kernel/linux-$(KERNEL_VERSION).tar.xz
  464 	@echo "Creating ISO image with sources ($(SRCISO_FILENAME))"
  465 	@rm -rf $(SRCISO_ROOT_DIR)
  466 	@mkdir -p $(SRCISO_ROOT_DIR)/{ports,kernel,misc}
  467 	@echo "- Copying ports"
  468 	@for PORT in $(shell /bin/cat packages.all); do \
  469 		find $(PORTS_DIR) -mindepth 2 -maxdepth 2 -name $$PORT -type d -exec cp -r {} $(SRCISO_ROOT_DIR)/ports \; ; \
  470 		rm -f $(SRCISO_ROOT_DIR)/ports/$$PORT/{.footprint,.md5sum,*.$(PKG_EXT)}; \
  471 	done
  472 	@echo "- Copying misc sources"
  473 	@cp busybox/busybox-$(BB_VERSION).tar.bz2   $(SRCISO_ROOT_DIR)/misc
  474 	@cp iso/syslinux-$(SYSLINUX_VERSION).tar.gz $(SRCISO_ROOT_DIR)/misc
  475 	@echo "- Copying kernel and patches"
  476 	@cp kernel/linux-$(KERNEL_VERSION).tar.xz  $(SRCISO_ROOT_DIR)/kernel
  477 	@for PATCH in $(KERNEL_PATCHES); do cp kernel/$$PATCH $(SRCISO_ROOT_DIR)/kernel; done
  478 	@echo "- Creating README"
  479 	@echo "This ISO image contains sources for the packages, kernel and utilities" > $(SRCISO_ROOT_DIR)/README
  480 	@echo "supplied with/used in CRUX $(CRUXVERSION)." >> $(SRCISO_ROOT_DIR)/README
  481 	@echo "- Starting genisoimage"
  482 	@genisoimage -R -l -J -V CRUX-$(CRUXVERSION) -A CRUX -o $(SRCISO_FILENAME) $(SRCISO_ROOT_DIR)
  483 	@md5sum `basename $(SRCISO_FILENAME)` > `basename $(SRCISO_FILENAME) .iso`.md5
  484 
  485 # End of file

Generated by cgit