1+ <?php
2+
3+ //reqs
4+ //apt install mkisofs advancecomp
5+
6+ chdir (__DIR__ );
7+ require_once ('config.php ' );
8+
9+ $ arch = 'x86 ' ;
10+ if (!empty ($ argv [1 ]))
11+ $ arch = strtolower ($ argv [1 ]);
12+
13+ if (empty ($ _CONFIG [$ arch ]))
14+ {
15+ echo 'Invalid Arch; use: ' .implode (', ' , array_keys ($ _CONFIG ));
16+ exit ;
17+ }
18+
19+ function clean ()
20+ {
21+ global $ _CONFIG ;
22+ global $ arch ;
23+
24+ echo '==CLEAN== ' ;
25+ echo shell_exec ('rm -rf ' .$ _CONFIG [$ arch ]['temp_folder ' ].'/newiso ' );
26+ echo shell_exec ('sudo umount ' .$ _CONFIG [$ arch ]['temp_mount ' ]);
27+ echo shell_exec ('rm -rf ' .$ _CONFIG [$ arch ]['temp_mount ' ]);
28+ echo shell_exec ('rm -rf ' .$ _CONFIG [$ arch ]['temp_folder ' ].'/extract ' );
29+ echo '==CLEAN DONE== ' ;
30+ }
31+
32+ $ fileDir = $ _CONFIG [$ arch ]['files ' ];
33+ $ outIso = $ _CONFIG [$ arch ]['out_iso ' ];
34+ if (file_exists ($ outIso ))
35+ {
36+ echo '==ISO EXISTS== ' ;
37+ echo shell_exec ('rm -rf ' .$ _CONFIG [$ arch ]['out_iso ' ].'' );
38+ }
39+
40+ clean ();
41+
42+ echo PHP_EOL .'==EXTRACT== ' .PHP_EOL ;
43+ echo shell_exec ('sudo mkdir ' .$ _CONFIG [$ arch ]['temp_mount ' ]);
44+ echo shell_exec ('sudo mount ' .$ _CONFIG [$ arch ]['tinycore_iso ' ].' ' .$ _CONFIG [$ arch ]['temp_mount ' ].' -o loop,ro ' );
45+ echo shell_exec ('cp -a ' .$ _CONFIG [$ arch ]['temp_mount ' ].'/boot /tmp ' );
46+
47+ #efi only
48+ if (is_dir ($ _CONFIG [$ arch ]['temp_mount ' ].'/cde ' ))
49+ echo shell_exec ('cp -a ' .$ _CONFIG [$ arch ]['temp_mount ' ].'/cde /tmp ' );
50+
51+ if (is_dir ($ _CONFIG [$ arch ]['temp_mount ' ].'/EFI ' ))
52+ echo shell_exec ('cp -a ' .$ _CONFIG [$ arch ]['temp_mount ' ].'/EFI /tmp ' );
53+
54+
55+
56+ echo shell_exec ('mv ' .$ _CONFIG [$ arch ]['temp_folder ' ].'/boot/ ' .$ _CONFIG [$ arch ]['core_file ' ].' ' .$ _CONFIG [$ arch ]['temp_folder ' ].'' );
57+ echo shell_exec ('sudo umount ' .$ _CONFIG [$ arch ]['temp_mount ' ]);
58+
59+ echo shell_exec ('mkdir ' .$ _CONFIG [$ arch ]['temp_folder ' ].'/extract ' );
60+ echo shell_exec ('cd ' .$ _CONFIG [$ arch ]['temp_folder ' ].'/extract && zcat ' .$ _CONFIG [$ arch ]['temp_folder ' ].'/ ' .$ _CONFIG [$ arch ]['core_file ' ].' | sudo cpio -i -H newc -d ' );
61+
62+ require_once ('download_extensions.php ' );
63+
64+ echo PHP_EOL .'==INSTALL EXTENSIONS== ' .PHP_EOL ;
65+
66+ $ files = scandir ($ _CONFIG [$ arch ]['extensions_folder ' ]);
67+
68+ foreach ($ files as $ file )
69+ {
70+ $ ext = pathinfo ($ file , PATHINFO_EXTENSION );
71+ if ($ ext == 'tcz ' )
72+ {
73+ echo 'Installing : ' .$ file .PHP_EOL ;
74+ shell_exec ('unsquashfs -f -d ' .$ _CONFIG [$ arch ]['temp_folder ' ].'/extract ' .$ _CONFIG [$ arch ]['extensions_folder ' ].'/ ' .$ file );
75+ }
76+ }
77+
78+ echo PHP_EOL .'==EDIT BOOT FILES== ' .PHP_EOL ;
79+ #/ is very important for rsync
80+ echo shell_exec ('rsync -c -a ' .$ _CONFIG [$ arch ]['bootfiles ' ].'/ ' .$ _CONFIG [$ arch ]['temp_folder ' ].'/boot ' );
81+ if (!empty ($ _CONFIG [$ arch ]['efifiles ' ]))
82+ echo shell_exec ('rsync -c -a ' .$ _CONFIG [$ arch ]['efifiles ' ].'/ ' .$ _CONFIG [$ arch ]['temp_folder ' ].'/EFI ' );
83+
84+
85+
86+ echo PHP_EOL .'==EDIT FILES== ' .PHP_EOL ;
87+ echo shell_exec ('rsync -c -a ' .$ _CONFIG [$ arch ]['files ' ].'/ ' .$ _CONFIG [$ arch ]['temp_folder ' ].'/extract ' );
88+
89+
90+
91+ if (!empty ($ _CONFIG [$ arch ]['sas_driver_hotfix ' ]) && $ _CONFIG [$ arch ]['sas_driver_hotfix ' ])
92+ {
93+ //driver hotfix
94+ echo PHP_EOL .'==MOVING DRIVERS== ' .PHP_EOL ;
95+ $ tinyCoreKernel = '5.15.10-tinycore ' ;
96+ shell_exec ('mkdir ' .$ _CONFIG [$ arch ]['temp_folder ' ].'/extract/lib/modules/ ' .$ tinyCoreKernel .'/kernel/drivers/scsi ' );
97+ shell_exec ('cp -a ' .$ _CONFIG [$ arch ]['temp_folder ' ].'/extract/usr/local/lib/modules/ ' .$ tinyCoreKernel .'/kernel/drivers/scsi/megaraid ' .$ extractDir .'/lib/modules/ ' .$ tinyCoreKernel .'/kernel/drivers/scsi ' );
98+ shell_exec ('cp -a ' .$ _CONFIG [$ arch ]['temp_folder ' ].'/extract/usr/local/lib/modules/ ' .$ tinyCoreKernel .'/kernel/drivers/scsi/mpt3sas ' .$ extractDir .'/lib/modules/ ' .$ tinyCoreKernel .'/kernel/drivers/scsi ' );
99+ shell_exec ('cp -a ' .$ _CONFIG [$ arch ]['temp_folder ' ].'/extract/usr/local/lib/modules/ ' .$ tinyCoreKernel .'/kernel/drivers/scsi/scsi_transport_sas.ko.gz ' .$ extractDir .'/lib/modules/ ' .$ tinyCoreKernel .'/kernel/drivers/scsi ' );
100+ }
101+
102+
103+ #repacking
104+ echo PHP_EOL .'==PACKING ' .$ _CONFIG [$ arch ]['core_file ' ].'== ' .PHP_EOL ;
105+ echo shell_exec ('sudo ldconfig -r ' .$ _CONFIG [$ arch ]['temp_folder ' ].'/extract ' );
106+ echo shell_exec ('cd ' .$ _CONFIG [$ arch ]['temp_folder ' ].'/extract && sudo find | sudo cpio -o -H newc | gzip -2 > ' .$ _CONFIG [$ arch ]['temp_folder ' ].'/ ' .$ _CONFIG [$ arch ]['core_file ' ]);
107+
108+ echo PHP_EOL .'==REPACKING ' .$ _CONFIG [$ arch ]['core_file ' ].'== ' .PHP_EOL ;
109+ //z4 for prod. z0 for dev
110+ echo shell_exec ('cd ' .$ _CONFIG [$ arch ]['temp_folder ' ].'/ && advdef -f -z ' .compression_level.' ' .$ _CONFIG [$ arch ]['temp_folder ' ].'/ ' .$ _CONFIG [$ arch ]['core_file ' ]);
111+
112+
113+ sleep (7 );
114+
115+ #make iso
116+ echo PHP_EOL .'==MAKING ISO== ' .PHP_EOL ;
117+ //cd /tmp
118+ echo shell_exec ('mv ' .$ _CONFIG [$ arch ]['temp_folder ' ].'/ ' .$ _CONFIG [$ arch ]['core_file ' ].' ' .$ _CONFIG [$ arch ]['temp_folder ' ].'/boot ' );
119+ echo shell_exec ('mkdir ' .$ _CONFIG [$ arch ]['temp_folder ' ].'/newiso ' );
120+ echo shell_exec ('mv ' .$ _CONFIG [$ arch ]['temp_folder ' ].'/boot ' .$ _CONFIG [$ arch ]['temp_folder ' ].'/newiso ' );
121+
122+
123+
124+ if ($ arch == 'x86_64 ' )
125+ {
126+ echo shell_exec ('mv ' .$ _CONFIG [$ arch ]['temp_folder ' ].'/cde ' .$ _CONFIG [$ arch ]['temp_folder ' ].'/newiso ' );
127+ echo shell_exec ('mv ' .$ _CONFIG [$ arch ]['temp_folder ' ].'/EFI ' .$ _CONFIG [$ arch ]['temp_folder ' ].'/newiso ' );
128+ //uefi version
129+ echo shell_exec ('cd ' .$ _CONFIG [$ arch ]['temp_folder ' ].' && xorriso -as mkisofs -r -V " ' .$ _CONFIG [$ arch ]['image_name ' ].'" -o ' .$ outIso .' -isohybrid-mbr newiso/boot/isolinux/isohdpfx.bin -J -joliet-long -c boot/isolinux/boot.cat -b boot/isolinux/isolinux.bin -boot-load-size 4 -boot-info-table -no-emul-boot -eltorito-alt-boot -e "EFI/BOOT/efiboot.img" -no-emul-boot -isohybrid-gpt-basdat ' .$ _CONFIG [$ arch ]['temp_folder ' ].'/newiso ' );
130+ }
131+ else
132+ echo shell_exec ('cd ' .$ _CONFIG [$ arch ]['temp_folder ' ].' && mkisofs -l -J -R -V " ' .$ _CONFIG [$ arch ]['image_name ' ].'" -no-emul-boot -boot-load-size 4 -boot-info-table -b boot/isolinux/isolinux.bin -c boot/isolinux/boot.cat -o ' .$ outIso .' ' .$ _CONFIG [$ arch ]['temp_folder ' ].'/newiso ' );
133+
134+ if (file_exists ($ outIso ))
135+ {
136+ clean ();
137+
138+ echo PHP_EOL .'==ISO CREATED== ' .PHP_EOL ;
139+ echo 'ISO: ' .$ outIso .PHP_EOL ;
140+ exit ;
141+ }
142+
143+ echo PHP_EOL .'==FAILED TO CREATE ISO== ' .PHP_EOL ;
144+
145+
146+
147+ ?>
0 commit comments