# $Id$ VERSION := @VERSION@ DIR := @DIR@ ROOT := @DIR@/root NEEDROOT := @NEEDROOT@ CPU := $(shell nproc) MUSL := $(ROOT)/usr/include/stdio.h MUSLDIR := ./src/musl INIT := $(ROOT)/sbin/init INITDIR := ./src/cinit LOGIN := $(ROOT)/bin/login LOGINDIR := ./src/clogin GETTY := $(ROOT)/bin/getty GETTYDIR := ./src/cgetty MOUNT := $(ROOT)/bin/mount MOUNTDIR := ./src/cmount OKSH := $(ROOT)/bin/sh OKSHDIR := ./src/oksh NASHVILLE := $(ROOT)/bin/nv NASHVILLEDIR := ./src/nashville .PHONY: default clean default: ./linux.iso $(MUSL): make -C $(MUSLDIR) -j$(CPU) && make -C $(MUSLDIR) install $(INIT): $(MUSL) make -C $(INITDIR) -j$(CPU) mkdir -p $(ROOT)/sbin cp $(INITDIR)/bin/cinit $(ROOT)/sbin/init cp $(INITDIR)/bin/cshutdown $(ROOT)/sbin/shutdown $(GETTY): $(MUSL) make -C $(GETTYDIR) -j$(CPU) mkdir -p $(ROOT)/bin cp $(GETTYDIR)/bin/cgetty $(ROOT)/bin/getty $(LOGIN): $(MUSL) make -C $(LOGINDIR) -j$(CPU) mkdir -p $(ROOT)/bin cp $(LOGINDIR)/bin/clogin $(ROOT)/bin/login $(MOUNT): $(MUSL) make -C $(MOUNTDIR) -j$(CPU) mkdir -p $(ROOT)/bin cp $(MOUNTDIR)/bin/cmount $(ROOT)/bin/mount cp $(MOUNTDIR)/bin/cumount $(ROOT)/bin/umount $(OKSH): $(MUSL) make -C $(OKSHDIR) -j$(CPU) mkdir -p $(ROOT)/bin cp $(OKSHDIR)/oksh $(ROOT)/bin/sh $(NASHVILLE): $(MUSL) make -C $(NASHVILLEDIR) -j$(CPU) SYSUTILS=NO mkdir -p $(ROOT)/bin cp $(NASHVILLEDIR)/bin/nashville $(ROOT)/bin/nv ./linux.iso: $(MUSL) \ $(INIT) \ $(LOGIN) \ $(OKSH) \ $(GETTY) \ $(MOUNT) \ $(NASHVILLE) \ ./files/getty-wrapper \ ./files/isolinux.cfg \ ./files/inittab \ ./files/startup \ ./files/issue \ ./bzImage mkdir -p $(ROOT)/isolinux mkdir -p $(ROOT)/etc mkdir -p $(ROOT)/sys mkdir -p $(ROOT)/proc mkdir -p $(ROOT)/run mkdir -p $(ROOT)/dev -$(NEEDROOT) groupadd -R $(ROOT) -g 0 root -$(NEEDROOT) useradd -R $(ROOT) -g 0 -u 0 -d /root -s /bin/sh root -echo "root:`mkpasswd root`:0::::::" > $(ROOT)/etc/shadow -rm $(ROOT)/lib ln -sf /usr/lib $(ROOT)/lib ln -sf libc.so $(ROOT)/usr/lib/ld-musl-x86_64.so.1 cp ./bzImage $(ROOT)/ cp /usr/share/syslinux/isolinux.bin $(ROOT)/isolinux/ cp /usr/share/syslinux/ldlinux.c32 $(ROOT)/isolinux/ cp /usr/share/syslinux/libutil.c32 $(ROOT)/isolinux/ cp /usr/share/syslinux/libcom32.c32 $(ROOT)/isolinux/ cp /usr/share/syslinux/menu.c32 $(ROOT)/isolinux/ cp /usr/share/syslinux/vesamenu.c32 $(ROOT)/isolinux/ cp ./files/isolinux.cfg $(ROOT)/isolinux/ cp ./files/inittab $(ROOT)/etc/ cp ./files/issue $(ROOT)/etc/ cp ./files/startup $(ROOT)/ chmod +x $(ROOT)/startup cp ./files/getty-wrapper $(ROOT)/bin/ chmod +x $(ROOT)/bin/getty-wrapper -strip $(ROOT)/bin/* $(ROOT)/sbin/* $(ROOT)/usr/lib/* xorriso -as mkisofs -r -o $@ -isohybrid-mbr /usr/share/syslinux/isohdpfx.bin -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table $(ROOT) clean: rm -rf $(ROOT)