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
|