blob: aff5319f0f19c64baadacea88c3e69768c00e0a4 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
|
ERSION=0.0.1
SYSLINUX_VERSION=6.03
KERNEL_VERSION=6.1.11
TARGET=./target
INITRAMFS=${TARGET}/initramfs
ROOTFS=${TARGET}/rootfs
ISO=${TARGET}/rex.iso
default_target: iso
core: lib
@echo Building Core
@$(MAKE) -C core/
lib:
@echo Building Lib
@$(MAKE) -C lib/
smash: lib
@echo Building Smash
@$(MAKE) -C smash/
dist:
@echo Extracting Dist
@mkdir -p dist/core dist/smash
@cp core/objects/* dist/core/
@cp smash/smash dist/smash/
@cp lib/slib.a dist/
target:
@echo Creating Target Directory
@mkdir target
initramfs: target core smash
@echo Installing Initramfs
@mkdir -p ${INITRAMFS}/system/config \
${INITRAMFS}/system/manual \
${INITRAMFS}/system/core \
${INITRAMFS}/system/utils \
${INITRAMFS}/system/scripts \
${INITRAMFS}/system/devices \
${INITRAMFS}/system/info \
${INITRAMFS}/system/process \
${INITRAMFS}/system/data
@cp core/objects/* ${INITRAMFS}/system/core/
@cp utils/init ${INITRAMFS}/system/core/
@cp smash/smash ${INITRAMFS}/system/core/
@cp utils/* ${INITRAMFS}/system/utils/
@cp man/* ${INITRAMFS}/system/manual/
@cp -r config/* ${INITRAMFS}/system/config/
@cp -r data/* ${INITRAMFS}/system/data/
@echo Building Initramfs
@cd ${INITRAMFS} && find . | cpio -o --quiet --format=newc > ../initramfs.img
${TARGET}/kernel:
@echo Downloading Kernel
@curl -s "https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-${KERNEL_VERSION}.tar.xz" -o ${TARGET}/kernel.tar.gz
@echo Extracting Kernel
@tar -xf ${TARGET}/kernel.tar.gz
@mv linux-${KERNEL_VERSION} ${TARGET}/kernel-src
@cp build_config/linux.config ${TARGET}/kernel-src/.config
@echo Building Kernel
$(MAKE) -C ${TARGET}/kernel-src
@cp ${TARGET}/kernel-src/arch/x86_64/boot/bzImage ${TARGET}/kernel
${TARGET}/syslinux:
@echo Downloading SYSLINUX
@curl -s "https://mirrors.edge.kernel.org/pub/linux/utils/boot/syslinux/syslinux-${SYSLINUX_VERSION}.tar.gz" -o ${TARGET}/syslinux.tar.gz
@echo Extracting SYSLINUX
@tar -xf ${TARGET}/syslinux.tar.gz
@mv syslinux-${SYSLINUX_VERSION} ${TARGET}/syslinux
rootfs: target initramfs ${TARGET}/syslinux ${TARGET}/kernel
@echo Installing Rootfs
@mkdir -p ${ROOTFS}/syslinux ${ROOTFS}/images/rex/
@cp ${TARGET}/initramfs.img ${ROOTFS}/images/rex/boot.img
@cp ${TARGET}/kernel ${ROOTFS}/images/rex/kernel
@cp build_config/syslinux.cfg ${ROOTFS}/syslinux/syslinux.cfg
@cp ${TARGET}/syslinux/bios/core/isolinux.bin \
${TARGET}/syslinux/bios/com32/elflink/ldlinux/ldlinux.c32 \
${TARGET}/syslinux/bios/com32/libutil/libutil.c32 \
${TARGET}/syslinux/bios/com32/menu/menu.c32 \
${ROOTFS}/syslinux/
iso: rootfs
@echo Creating ISO
@mkisofs -o ${ISO} \
-rational-rock \
-volid "reX ${VERSION}" \
-cache-inodes \
-joliet \
-full-iso9660-filenames \
-input-charset UTF8 \
-no-emul-boot \
-b syslinux/isolinux.bin \
-c syslinux/boot.cat \
-boot-load-size 4 \
-boot-info-table \
-quiet \
${ROOTFS}
@isohybrid ${ISO}
@echo Building ISO finished.
@echo
@echo The ISO is located under ${ISO}
@echo
qemu: iso
@echo Running QEMU
@qemu-system-x86_64 -cdrom ${ISO} -vga virtio
qemu-nographic: iso
@echo Running QEMU in nongraphic mode
@echo
@echo IMPORTANT: Select Serial Mode in the bootloader.
@echo Else there will be no output.
@echo
@qemu-system-x86_64 -cdrom ${ISO} -nographic
clean:
@echo Cleaning Up reX Repository
@-rm -r target
@$(MAKE) -C core clean
@$(MAKE) -C lib clean
@$(MAKE) -C smash clean
clean-build:
@$(MAKE) -C core clean
@$(MAKE) -C lib clean
@$(MAKE) -C smash clean
.PHONY: core lib smash initramfs rootfs iso qemu qemu-nographic clean
|