]> glassweightruler.freedombox.rocks Git - Ventoy.git/blob - DOC/BuildVentoyFromSource.txt
update script for jenkins
[Ventoy.git] / DOC / BuildVentoyFromSource.txt
1
2 ==========================================
3 1. Compile Enviroment
4 ==========================================
5 My build envrioment is CentOS 7.8 x86_64. So here I first explain how to create the build environment from scratch.
6 Because Ventoy is based on many open source projects, so the environment is important. I suggest you test it on a virtual machine firstly.
7
8 1.1 Install CentOS 7.8
9 I use CentOS-7-x86_64-Everything-2003.iso and select Minimal install
10
11 1.2 Install Packages
12 yum install \
13 libXpm net-tools bzip2 wget vim gcc gcc-c++ samba dos2unix glibc-devel glibc.i686 glibc-devel.i686 \
14 mpfr.i686 mpfr-devel.i686 zlib.i686 rsync autogen autoconf automake libtool gettext* bison binutils \
15 flex device-mapper-devel SDL libpciaccess libusb freetype freetype-devel gnu-free-* qemu-* virt-* \
16 libvirt* vte* NetworkManager-bluetooth brlapi fuse-devel dejavu* gnu-efi* pesign shim \
17 iscsi-initiator-utils grub2-tools zip nasm acpica-tools glibc-static zlib-static xorriso
18
19
20
21 ==========================================
22 2. Download Source Code
23 ==========================================
24 2.1 Download Ventoy source code from github and decompress it.
25 Next I assume that you have unzipped the code into the /home directory (check /home/Ventoy-master/README.md file for the directory layout).
26
27 2.2 Download third-part source code and tool
28
29 https://www.fefe.de/dietlibc/dietlibc-0.34.tar.xz ===> /home/Ventoy-master/DOC/dietlibc-0.34.tar.xz
30 https://musl.libc.org/releases/musl-1.2.1.tar.gz ===> /home/Ventoy-master/DOC/musl-1.2.1.tar.gz
31 https://ftp.gnu.org/gnu/grub/grub-2.04.tar.xz ===> /home/Ventoy-master/GRUB2/grub-2.04.tar.xz
32 https://codeload.github.com/tianocore/edk2/zip/edk2-stable201911 ===> /home/Ventoy-master/EDK2/edk2-edk2-stable201911.zip
33 https://codeload.github.com/relan/exfat/zip/v1.3.0 ===> /home/Ventoy-master/ExFAT/exfat-1.3.0.zip
34 https://codeload.github.com/libfuse/libfuse/zip/fuse-2.9.9 ===> /home/Ventoy-master/ExFAT/libfuse-fuse-2.9.9.zip
35 https://releases.linaro.org/components/toolchain/binaries/7.4-2019.02/aarch64-linux-gnu/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu.tar.xz ===> /opt/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu.tar.xz
36 https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64/tarballs/aarch64--uclibc--stable-2020.08-1.tar.bz2 ===> /opt/aarch64--uclibc--stable-2020.08-1.tar.bz2
37
38 http://www.tinycorelinux.net/11.x/x86_64/release/distribution_files/vmlinuz64 ===> /home/Ventoy-master/LiveCD/ISO/EFI/boot/vmlinuz64
39 http://www.tinycorelinux.net/11.x/x86_64/release/distribution_files/corepure64.gz ===> /home/Ventoy-master/LiveCD/ISO/EFI/boot/corepure64.gz
40 http://www.tinycorelinux.net/11.x/x86_64/release/distribution_files/modules64.gz ===> /home/Ventoy-master/LiveCD/ISO/EFI/boot/modules64.gz
41 http://distro.ibiblio.org/tinycorelinux/11.x/x86_64/tcz/glib2.tcz /home/Ventoy-master/LiveCD/VTOY/ventoy/tcz/glib2.tcz
42 http://distro.ibiblio.org/tinycorelinux/11.x/x86_64/tcz/libffi.tcz /home/Ventoy-master/LiveCD/VTOY/ventoy/tcz/libffi.tcz
43 http://distro.ibiblio.org/tinycorelinux/11.x/x86_64/tcz/liblvm2.tcz /home/Ventoy-master/LiveCD/VTOY/ventoy/tcz/liblvm2.tcz
44 http://distro.ibiblio.org/tinycorelinux/11.x/x86_64/tcz/ncursesw.tcz /home/Ventoy-master/LiveCD/VTOY/ventoy/tcz/ncursesw.tcz
45 http://distro.ibiblio.org/tinycorelinux/11.x/x86_64/tcz/parted.tcz /home/Ventoy-master/LiveCD/VTOY/ventoy/tcz/parted.tcz
46 http://distro.ibiblio.org/tinycorelinux/11.x/x86_64/tcz/readline.tcz /home/Ventoy-master/LiveCD/VTOY/ventoy/tcz/readline.tcz
47 http://distro.ibiblio.org/tinycorelinux/11.x/x86_64/tcz/udev-lib.tcz /home/Ventoy-master/LiveCD/VTOY/ventoy/tcz/udev-lib.tcz
48
49 2.3 Prepare third-part tools
50 cd /home/Ventoy-master/DOC/
51 tar xf musl-1.2.1.tar.gz
52 cd musl-1.2.1
53 ./configure && make install
54
55 tar xf /opt/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu.tar.xz -C /opt
56 tar xf /opt/aarch64--uclibc--stable-2020.08-1.tar.bz2 -C /opt
57
58 2.4 Set PATH envrioment
59 export PATH=$PATH:/opt/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/bin:/opt/aarch64--uclibc--stable-2020.08-1/bin
60 better to add this line to /root/.bashrc and relogin as root
61
62
63 ==========================================
64 3. All in one script
65 ==========================================
66 I have made a all_in_one.sh, you can run this script to build and pack ventoy.
67 If you want to compile a certain part separately, you can continue to refer to the later chapters of this text.
68
69 cd /home/Ventoy-master/INSTALL
70 sh all_in_one.sh
71
72 It should be noted that:
73 1. Only grub2/EDK2/IPXE will be recompiled in all_in_one.sh. Other part contains the binaries and are few modified, so will no be recompiled everytime.
74 You can rebuild these parts separately if you want.
75
76 2. some part of Ventoy has 32bit&64bit version (like 4.9 4.10 4.11 follows)
77 all_in_one.sh only build 64bit version of them, if you want to rebuild the 32bit verison. You should create a 32bit CentOS environment and build them.
78 Fortunately these parts are few modified, you only need to build once or you can directly use the binary I have built.
79
80 Besides, after a fully compile and pack, you can only build the part you modified (for example grub2) and run ventoy_pack.sh to generate the package.
81
82 ==========================================
83 4. Build every part of Ventoy
84 ==========================================
85 4.1 == Build grub2 ==
86 cd /home/Ventoy-master/GRUB2
87 sh buildgrub.sh
88
89 4.2 == Build ipxe.krn ==
90 cd /home/Ventoy-master/IPXE
91 sh buildipxe.sh
92
93 4.3 == Build Ventoy2Disk.exe ==
94 Ventoy2Disk.exe is the installer in Windows platform. And it must be built in Windows with Microsoft Visual Studio (2013+).
95 Open /home/Ventoy-master/Ventoy2Disk/Ventoy2Disk.sln with Visual Studio and build it.
96
97 4.4 == Build vtoyjump64.exe/vtoyjump32.exe ==
98 vtoyjump64.exe/vtoyjump32.exe is used to mount iso file in windows PE. You should install Microsoft Visual Studio (2013+) to build it.
99 Open /home/Ventoy-master/vtoyjump/vtoyjump.sln with Visual Studio and build it (64&32).
100
101 4.5 == Build dmsetup ==
102 Please refer to DMSETUP/build.txt
103
104 4.6 == Build ventoy_x64.efi ==
105 cd /home/Ventoy-master/EDK2
106 sh buildedk.sh
107
108 4.7 == Build VtoyTool ==
109 cd /home/Ventoy-master/VtoyTool
110 sh build.sh
111
112 4.8 == Build vtoyfat ==
113 cd /home/Ventoy-master/vtoyfat/fat_io_lib
114 sh buildlib.sh
115 cd /home/Ventoy-master/vtoyfat
116 sh build.sh
117
118 4.9 == Build exfat-util ==
119 cd /home/Ventoy-master/ExFAT
120 sh buidlibfuse.sh
121 sh buidexfat.sh
122
123 After that, copy EXFAT/shared/mkexfatfs ===> /home/Ventoy-master/INSTALL/tool/mkexfatfs_64
124 After that, copy EXFAT/shared/mount.exfat-fuse ===> /home/Ventoy-master/INSTALL/tool/mount.exfat-fuse_64
125
126 Use the same build step to build exfat-util 32bit in a 32bit CentOS system and get mkexfatfs_32 and mount.exfat-fuse_32
127
128 4.10 == Build vtoy_fuse_iso_64/vtoy_fuse_iso_32 ==
129 cd /home/Ventoy-master/FUSEISO
130 sh build_libfuse.sh
131 sh build.sh
132
133 Use the same build step to build in a 32bit CentOS system and get vtoy_fuse_iso_32
134
135 4.11 == Build unsquashfs_64/unsquashfs_32 ==
136 cd /home/Ventoy-master/SQUASHFS/SRC
137 sh build_lz4.sh
138 sh build_lzma.sh
139 sh build_lzo.sh
140 sh build_zstd.sh
141
142 cd /home/Ventoy-master/SQUASHFS/squashfs-tools-4.4/squashfs-tools
143 sh build.sh
144
145 Use the same build step to build in a 32bit CentOS system and get unsquashfs_32
146
147 4.12 == Build vblade_64/vblade_32 ==
148 cd /home/Ventoy-master/VBLADE/vblade-master
149 sh build.sh
150
151 4.13 == Build zstdcat ==
152 Please refer to ZSTD/build.txt
153
154 4.14 == Build vtoy_gen_uuid ==
155 cd /home/Ventoy-master/GenUUID
156 sh build.sh
157
158 4.15 == Build xzminidec32 ==
159 cd /home/Ventoy-master/Ventoy2Disk/Ventoy2Disk/xz-embedded-20130513/userspace
160 make -f ventoy_makefile
161 strip --strip-all xzminidec
162
163 4.16 == Build xzminidec64 ==
164 cd /home/Ventoy-master/Ventoy2Disk/Ventoy2Disk/xz-embedded-20130513/userspace
165 make -f ventoy_makefile64
166 strip --strip-all xzminidec
167
168 4.17 == Build iso9660_x64.efi ==
169 This efi driver is from https://github.com/pbatard/efifs
170 Follow all the build instructions in this project. I modified 3 files (the original and modified source are at /home/Ventoy-master/EDK2/efiffs)
171
172 4.18 IMG/cpio/ventoy/busybox/64h
173 https://www.uclibc.org/downloads/binaries/0.9.30.1/mini-native-x86_64.tar.bz2
174 https://busybox.net/downloads/busybox-1.32.0.tar.bz2
175 use BUSYBOX/x86_64_ash.config and uclibc to build busybox-1.32
176
177 4.19 == Build lunzip32/lunzip64 ==
178 http://mirror.yongbok.net/nongnu/lzip/lunzip/lunzip-1.11.tar.gz
179 PATH=$PATH:/opt/diet/bin
180 ./configure --disable-nls CC='diet gcc -nostdinc'
181 make
182 strip --strip-all lunzip
183
184 #aarch64
185 ./configure --disable-nls CC='aarch64-buildroot-linux-uclibc-gcc -static'
186 make
187 aarch64-buildroot-linux-uclibc-strip --strip-all lunzip
188
189
190
191 ==========================================
192 5. Binaries
193 ==========================================
194 There some binaries in Ventoy install package. These files are downloaded from other open source project's website, such as busybox.
195 Here is the list of the binaries, their SHA-256 and the download urls:
196
197 5.1 IMG/cpio/ventoy/tool/lz4cat
198 https://create.stephan-brumme.com/smallz4 smallz4cat-x32-v1.4
199 SHA-256: 13d293ddeedb469f51da41167f79b2cbdb904e681716f6e6191b233dbb162438
200
201 5.2 IMG/cpio/ventoy/tool/ar
202 https://busybox.net/downloads/binaries/1.30.0-i686 busybox_AR
203 SHA-256: f29b7d81a983c0c85d22496f4a833c18f2528a1b666eb7d47c93084c1ed66ae0
204
205 5.3 IMG/cpio/ventoy/tool/inotifyd
206 https://busybox.net/downloads/binaries/1.30.0-i686 busybox_INOTIFYD
207 SHA-256: 3532162a8695e91a1ed9ddea28b2cb22259a90e93d5d9c4a517b6c36842c686f
208
209 5.4 IMG/cpio/ventoy/busybox/ash
210 https://busybox.net/downloads/binaries/1.27.1-i686 busybox_ASH
211 SHA-256: 44a6274bca580c2758ffc173fc76d18bb855b1fe8dcf70efd9ee75cbd57dee97
212
213 5.5 IMG/cpio/ventoy/busybox/tmpxz
214 https://busybox.net/downloads/binaries/1.27.1-i686 busybox_XZ
215 SHA-256: f6cdb6293680424c29b89bde0685ca27f455166c9b302cd6082ef90681456291
216
217 5.6 INSTALL/tool/i386/xzcat
218 https://busybox.net/downloads/binaries/1.30.0-i686/ busybox_XZCAT
219 SHA-256: 7399db642c2beaf52a16ab5264ffc55cfd1ff5699a524f63e5d48edf84e20f44
220
221 5.7 INSTALL/tool/i386/hexdump
222 https://busybox.net/downloads/binaries/1.30.0-i686/ busybox_HEXDUMP
223 SHA-256: cde08b6a2cf5ad914f05203e18e3f7c2ed6060a63604e3d75536f19b55e8e0af
224
225 5.8 imdisk
226 download http://www.ltr-data.se/files/imdiskinst.exe and extract it by 7zip.
227
228 INSTALL/ventoy/imdisk/64/imdisk.sys --> sys/amd64/imdisk.sys SHA-256: 6702202220268787e361f5a82dae53362c8e6c6dcd240bb01b44dd77ae0788da
229 INSTALL/ventoy/imdisk/64/imdisk.exe --> cli/amd64/imdisk.exe SHA-256: 9759175380af836869443e5f21ce2e33022125d154bc6b3d1c04dc36b190de04
230 INSTALL/ventoy/imdisk/64/imdisk.cpl --> cpl/amd64/imdisk.cpl SHA-256: aea2ebbea2b073c947263744962af8a3eab025ff4c9d825c543e380e738a4c99
231
232 INSTALL/ventoy/imdisk/32/imdisk.sys --> sys/i386/imdisk.sys SHA-256: a94caec2f71a924d6a914c093ad4b905d7cfdea3f515ed48aaa8c3950b2dc191
233 INSTALL/ventoy/imdisk/32/imdisk.exe --> cli/i386/imdisk.exe SHA-256: 33b53858e2139704cf603b115a3e5e1dfd4daeaaed4d3e03c633f2df3b55dbaa
234 INSTALL/ventoy/imdisk/32/imdisk.cpl --> cpl/i386/imdisk.cpl SHA-256: b781d3e2d286ac8bf548f44e50cbbb3fe78203296e41e4d2e73b407668f88f2d
235
236 5.9 INSTALL/ventoy/memdisk
237 https://mirrors.edge.kernel.org/pub/linux/utils/boot/syslinux/syslinux-6.03.tar.gz
238 decompress it and memdisk is at syslinux-6.03/bios/memdisk/memdisk
239 SHA-256: 3f6cd656b8a14109cd3f906fee2dd2e75418f983a5e1bfdb64f44f7765588cbb
240
241
242 5.10 UEFIinSecureBoot
243 https://github.com/ValdikSS/Super-UEFIinSecureBoot-Disk/releases Super-UEFIinSecureBoot-Disk_minimal_v3.zip
244 unzip it and get Super-UEFIinSecureBoot-Disk_minimal.img, extract the img by 7zip.
245
246 INSTALL/EFI/BOOT/BOOTX64.EFI --> EFI/BOOT/BOOTX64.EFI SHA-256: 475552c7476ad45e42344eee8b30d44c264d200ac2468428aa86fc8795fb6e34
247 INSTALL/EFI/BOOT/grubx64.efi --> EFI/BOOT/grubx64.efi SHA-256: 25d858157349dc52fa70f3cdf5c62fe1e0bae37ddfc3a6b6528af9a3c745775f
248 INSTALL/EFI/BOOT/MokManager.efi --> EFI/BOOT/MokManager.efi SHA-256: 3bf1f46cee0832355c7dd1dba880dea9bcaa78cc44375a1559d43bc9db18933b
249
250
251 5.11 INSTALL/tool/ash
252 https://busybox.net/downloads/binaries/1.31.0-i686-uclibc/ busybox_ASH
253 SHA-256: 2943f02f85fee0c9551aec47110a558a73f919c032b3c51e56d6f197b5ec4d7b
254
255 5.12 7za.exe
256 download from https://www.7-zip.org/a/7z1900-extra.7z
257 ISNTALL/ventoy/7z/64/7za.exe SHA-256: 8117e40ee7f824f63373a4f5625bb62749f69159d0c449b3ce2f35aad3b83549
258 ISNTALL/ventoy/7z/32/7za.exe SHA-256: ea308c76a2f927b160a143d94072b0dce232e04b751f0c6432a94e05164e716d
259
260
261