"vscode:/vscode.git/clone" did not exist on "6f26e9322fd4639b4e414f8890b0213783e74d7c"
BuildVentoyFromSource.txt 13 KB
Newer Older
longpanda's avatar
longpanda committed
1
2
3
4
5

==========================================
1. Compile Enviroment
==========================================
    My build envrioment is CentOS 7.8 x86_64. So here I first explain how to create the build environment from scratch.
longpanda's avatar
longpanda committed
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.
longpanda's avatar
longpanda committed
7
8
9
10
11
12
13
14
15
16

1.1 Install CentOS 7.8
    I use CentOS-7-x86_64-Everything-2003.iso and select Minimal install
    
1.2 Install Packages    
    yum install \
        libXpm net-tools bzip2 wget vim gcc gcc-c++ samba dos2unix glibc-devel glibc.i686 glibc-devel.i686 \
        mpfr.i686 mpfr-devel.i686 zlib.i686 rsync autogen autoconf automake libtool gettext* bison binutils \
        flex device-mapper-devel SDL libpciaccess libusb freetype freetype-devel gnu-free-* qemu-* virt-* \
        libvirt* vte* NetworkManager-bluetooth brlapi fuse-devel dejavu* gnu-efi* pesign shim \
longpanda's avatar
longpanda committed
17
        iscsi-initiator-utils grub2-tools zip nasm acpica-tools glibc-static zlib-static xorriso
longpanda's avatar
longpanda committed
18
19
20
21
22
23
24
    


==========================================
2. Download Source Code
==========================================
2.1 Download Ventoy source code from github and decompress it. 
longpanda's avatar
longpanda committed
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).
longpanda's avatar
longpanda committed
26
    
longpanda's avatar
longpanda committed
27
2.2 Download third-part source code and tool
longpanda's avatar
longpanda committed
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
longpanda's avatar
longpanda committed
31
32
33
34
35
36
37
    https://ftp.gnu.org/gnu/grub/grub-2.04.tar.xz                        ===>  /home/Ventoy-master/GRUB2/grub-2.04.tar.xz
    https://codeload.github.com/tianocore/edk2/zip/edk2-stable201911     ===>  /home/Ventoy-master/EDK2/edk2-edk2-stable201911.zip
    https://codeload.github.com/relan/exfat/zip/v1.3.0                   ===>  /home/Ventoy-master/ExFAT/exfat-1.3.0.zip
    https://codeload.github.com/libfuse/libfuse/zip/fuse-2.9.9           ===>  /home/Ventoy-master/ExFAT/libfuse-fuse-2.9.9.zip
    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
    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

38
39
40
41
42
43
44
45
46
47
    http://www.tinycorelinux.net/11.x/x86_64/release/distribution_files/vmlinuz64 ===> /home/Ventoy-master/LiveCD/ISO/EFI/boot/vmlinuz64
    http://www.tinycorelinux.net/11.x/x86_64/release/distribution_files/corepure64.gz ===> /home/Ventoy-master/LiveCD/ISO/EFI/boot/corepure64.gz
    http://www.tinycorelinux.net/11.x/x86_64/release/distribution_files/modules64.gz ===> /home/Ventoy-master/LiveCD/ISO/EFI/boot/modules64.gz
    http://distro.ibiblio.org/tinycorelinux/11.x/x86_64/tcz/glib2.tcz /home/Ventoy-master/LiveCD/VTOY/ventoy/tcz/glib2.tcz
    http://distro.ibiblio.org/tinycorelinux/11.x/x86_64/tcz/libffi.tcz /home/Ventoy-master/LiveCD/VTOY/ventoy/tcz/libffi.tcz
    http://distro.ibiblio.org/tinycorelinux/11.x/x86_64/tcz/liblvm2.tcz /home/Ventoy-master/LiveCD/VTOY/ventoy/tcz/liblvm2.tcz
    http://distro.ibiblio.org/tinycorelinux/11.x/x86_64/tcz/ncursesw.tcz /home/Ventoy-master/LiveCD/VTOY/ventoy/tcz/ncursesw.tcz
    http://distro.ibiblio.org/tinycorelinux/11.x/x86_64/tcz/parted.tcz /home/Ventoy-master/LiveCD/VTOY/ventoy/tcz/parted.tcz
    http://distro.ibiblio.org/tinycorelinux/11.x/x86_64/tcz/readline.tcz /home/Ventoy-master/LiveCD/VTOY/ventoy/tcz/readline.tcz
    http://distro.ibiblio.org/tinycorelinux/11.x/x86_64/tcz/udev-lib.tcz /home/Ventoy-master/LiveCD/VTOY/ventoy/tcz/udev-lib.tcz
longpanda's avatar
longpanda committed
48

49
50
51
52
53
54
55
56
57
58
59
60
61
2.3 Prepare third-part tools
    cd /home/Ventoy-master/DOC/
    tar xf musl-1.2.1.tar.gz
    cd musl-1.2.1
    ./configure && make install

    tar xf /opt/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu.tar.xz  -C /opt
    tar xf /opt/aarch64--uclibc--stable-2020.08-1.tar.bz2  -C /opt

2.4 Set PATH envrioment
    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
    better to add this line to /root/.bashrc and relogin as root

longpanda's avatar
longpanda committed
62
63
64
65

==========================================
3. All in one script
==========================================
longpanda's avatar
longpanda committed
66
    I have made a all_in_one.sh, you can run this script to build and pack ventoy.
longpanda's avatar
longpanda committed
67
68
69
70
71
    If you want to compile a certain part separately, you can continue to refer to the later chapters of this text.
    
    cd /home/Ventoy-master/INSTALL
    sh all_in_one.sh

longpanda's avatar
longpanda committed
72
73
74
75
76
77
78
    It should be noted that:
    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.
       You can rebuild these parts separately if you want.
       
    2. some part of Ventoy has 32bit&64bit version (like 4.9 4.10 4.11 follows)
       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.
       Fortunately these parts are few modified, you only need to build once or you can directly use the binary I have built.
longpanda's avatar
longpanda committed
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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261

    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.

==========================================
4. Build every part of Ventoy
==========================================
4.1 == Build grub2 ==
    cd /home/Ventoy-master/GRUB2
    sh buildgrub.sh
      
4.2 == Build ipxe.krn ==
    cd /home/Ventoy-master/IPXE
    sh buildipxe.sh
      
4.3 == Build Ventoy2Disk.exe ==
    Ventoy2Disk.exe is the installer in Windows platform. And it must be built in Windows with Microsoft Visual Studio (2013+).   
    Open /home/Ventoy-master/Ventoy2Disk/Ventoy2Disk.sln with Visual Studio and build it.
   
4.4 == Build vtoyjump64.exe/vtoyjump32.exe ==
    vtoyjump64.exe/vtoyjump32.exe is used to mount iso file in windows PE. You should install Microsoft Visual Studio (2013+) to build it.
    Open /home/Ventoy-master/vtoyjump/vtoyjump.sln with Visual Studio and build it (64&32).
   
4.5 == Build dmsetup ==
    Please refer to DMSETUP/build.txt
   
4.6 == Build ventoy_x64.efi ==
    cd /home/Ventoy-master/EDK2
    sh buildedk.sh
   
4.7 == Build VtoyTool ==
    cd /home/Ventoy-master/VtoyTool
    sh build.sh

4.8 == Build vtoyfat ==    
    cd /home/Ventoy-master/vtoyfat/fat_io_lib
    sh buildlib.sh
    cd /home/Ventoy-master/vtoyfat
    sh build.sh

4.9 == Build exfat-util ==
    cd /home/Ventoy-master/ExFAT
    sh buidlibfuse.sh
    sh buidexfat.sh
    
    After that, copy EXFAT/shared/mkexfatfs         ===> /home/Ventoy-master/INSTALL/tool/mkexfatfs_64
    After that, copy EXFAT/shared/mount.exfat-fuse  ===> /home/Ventoy-master/INSTALL/tool/mount.exfat-fuse_64

    Use the same build step to build exfat-util 32bit in a 32bit CentOS system and get mkexfatfs_32 and mount.exfat-fuse_32

4.10 == Build vtoy_fuse_iso_64/vtoy_fuse_iso_32 ==
    cd /home/Ventoy-master/FUSEISO
    sh build_libfuse.sh
    sh build.sh
    
    Use the same build step to build in a 32bit CentOS system and get vtoy_fuse_iso_32
   
4.11 == Build unsquashfs_64/unsquashfs_32 ==
    cd /home/Ventoy-master/SQUASHFS/SRC
    sh build_lz4.sh
    sh build_lzma.sh
    sh build_lzo.sh
    sh build_zstd.sh
    
    cd /home/Ventoy-master/SQUASHFS/squashfs-tools-4.4/squashfs-tools
    sh build.sh
    
    Use the same build step to build in a 32bit CentOS system and get unsquashfs_32
   
4.12 == Build vblade_64/vblade_32 ==
    cd /home/Ventoy-master/VBLADE/vblade-master
    sh build.sh
   
4.13 == Build zstdcat ==
    Please refer to ZSTD/build.txt

4.14 == Build vtoy_gen_uuid ==
    cd /home/Ventoy-master/GenUUID
    sh build.sh
    
4.15 == Build xzminidec32 ==
   cd /home/Ventoy-master/Ventoy2Disk/Ventoy2Disk/xz-embedded-20130513/userspace
   make -f ventoy_makefile
   strip --strip-all xzminidec

4.16 == Build xzminidec64 ==
   cd /home/Ventoy-master/Ventoy2Disk/Ventoy2Disk/xz-embedded-20130513/userspace
   make -f ventoy_makefile64
   strip --strip-all xzminidec

4.17 == Build iso9660_x64.efi ==
   This efi driver is from https://github.com/pbatard/efifs
   Follow all the build instructions in this project. I modified 3 files (the original and modified source are at /home/Ventoy-master/EDK2/efiffs)

4.18 IMG/cpio/ventoy/busybox/64h
  https://www.uclibc.org/downloads/binaries/0.9.30.1/mini-native-x86_64.tar.bz2
  https://busybox.net/downloads/busybox-1.32.0.tar.bz2
  use BUSYBOX/x86_64_ash.config and uclibc to build busybox-1.32

4.19 == Build lunzip32/lunzip64 ==
  http://mirror.yongbok.net/nongnu/lzip/lunzip/lunzip-1.11.tar.gz
  PATH=$PATH:/opt/diet/bin
  ./configure --disable-nls CC='diet gcc -nostdinc'
  make
  strip --strip-all lunzip
  
  #aarch64
  ./configure --disable-nls CC='aarch64-buildroot-linux-uclibc-gcc -static'
  make
  aarch64-buildroot-linux-uclibc-strip --strip-all lunzip



==========================================
5. Binaries
==========================================
  There some binaries in Ventoy install package. These files are downloaded from other open source project's website, such as busybox.
  Here is the list of the binaries, their SHA-256 and the download urls:   

5.1 IMG/cpio/ventoy/tool/lz4cat
  https://create.stephan-brumme.com/smallz4   smallz4cat-x32-v1.4
  SHA-256: 13d293ddeedb469f51da41167f79b2cbdb904e681716f6e6191b233dbb162438
   
5.2 IMG/cpio/ventoy/tool/ar
  https://busybox.net/downloads/binaries/1.30.0-i686   busybox_AR
  SHA-256: f29b7d81a983c0c85d22496f4a833c18f2528a1b666eb7d47c93084c1ed66ae0  
  
5.3 IMG/cpio/ventoy/tool/inotifyd
  https://busybox.net/downloads/binaries/1.30.0-i686   busybox_INOTIFYD
  SHA-256: 3532162a8695e91a1ed9ddea28b2cb22259a90e93d5d9c4a517b6c36842c686f  

5.4 IMG/cpio/ventoy/busybox/ash
  https://busybox.net/downloads/binaries/1.27.1-i686   busybox_ASH
  SHA-256: 44a6274bca580c2758ffc173fc76d18bb855b1fe8dcf70efd9ee75cbd57dee97  

5.5 IMG/cpio/ventoy/busybox/tmpxz
  https://busybox.net/downloads/binaries/1.27.1-i686   busybox_XZ
  SHA-256: f6cdb6293680424c29b89bde0685ca27f455166c9b302cd6082ef90681456291  

5.6 INSTALL/tool/i386/xzcat
  https://busybox.net/downloads/binaries/1.30.0-i686/   busybox_XZCAT
  SHA-256: 7399db642c2beaf52a16ab5264ffc55cfd1ff5699a524f63e5d48edf84e20f44  
  
5.7 INSTALL/tool/i386/hexdump
  https://busybox.net/downloads/binaries/1.30.0-i686/   busybox_HEXDUMP
  SHA-256: cde08b6a2cf5ad914f05203e18e3f7c2ed6060a63604e3d75536f19b55e8e0af  

5.8 imdisk
  download http://www.ltr-data.se/files/imdiskinst.exe and extract it by 7zip.
  
  INSTALL/ventoy/imdisk/64/imdisk.sys --> sys/amd64/imdisk.sys  SHA-256: 6702202220268787e361f5a82dae53362c8e6c6dcd240bb01b44dd77ae0788da
  INSTALL/ventoy/imdisk/64/imdisk.exe --> cli/amd64/imdisk.exe  SHA-256: 9759175380af836869443e5f21ce2e33022125d154bc6b3d1c04dc36b190de04
  INSTALL/ventoy/imdisk/64/imdisk.cpl --> cpl/amd64/imdisk.cpl  SHA-256: aea2ebbea2b073c947263744962af8a3eab025ff4c9d825c543e380e738a4c99
  
  INSTALL/ventoy/imdisk/32/imdisk.sys --> sys/i386/imdisk.sys  SHA-256: a94caec2f71a924d6a914c093ad4b905d7cfdea3f515ed48aaa8c3950b2dc191
  INSTALL/ventoy/imdisk/32/imdisk.exe --> cli/i386/imdisk.exe  SHA-256: 33b53858e2139704cf603b115a3e5e1dfd4daeaaed4d3e03c633f2df3b55dbaa
  INSTALL/ventoy/imdisk/32/imdisk.cpl --> cpl/i386/imdisk.cpl  SHA-256: b781d3e2d286ac8bf548f44e50cbbb3fe78203296e41e4d2e73b407668f88f2d
  
5.9 INSTALL/ventoy/memdisk
  https://mirrors.edge.kernel.org/pub/linux/utils/boot/syslinux/syslinux-6.03.tar.gz
  decompress it and memdisk is at syslinux-6.03/bios/memdisk/memdisk
  SHA-256: 3f6cd656b8a14109cd3f906fee2dd2e75418f983a5e1bfdb64f44f7765588cbb
  

5.10 UEFIinSecureBoot
 https://github.com/ValdikSS/Super-UEFIinSecureBoot-Disk/releases   Super-UEFIinSecureBoot-Disk_minimal_v3.zip
 unzip it and get Super-UEFIinSecureBoot-Disk_minimal.img, extract the img by 7zip.
 
 INSTALL/EFI/BOOT/BOOTX64.EFI --> EFI/BOOT/BOOTX64.EFI  SHA-256: 475552c7476ad45e42344eee8b30d44c264d200ac2468428aa86fc8795fb6e34
 INSTALL/EFI/BOOT/grubx64.efi --> EFI/BOOT/grubx64.efi  SHA-256: 25d858157349dc52fa70f3cdf5c62fe1e0bae37ddfc3a6b6528af9a3c745775f
 INSTALL/EFI/BOOT/MokManager.efi --> EFI/BOOT/MokManager.efi  SHA-256: 3bf1f46cee0832355c7dd1dba880dea9bcaa78cc44375a1559d43bc9db18933b


5.11 INSTALL/tool/ash
 https://busybox.net/downloads/binaries/1.31.0-i686-uclibc/   busybox_ASH
 SHA-256: 2943f02f85fee0c9551aec47110a558a73f919c032b3c51e56d6f197b5ec4d7b  
   
5.12 7za.exe
 download from https://www.7-zip.org/a/7z1900-extra.7z
 ISNTALL/ventoy/7z/64/7za.exe  SHA-256: 8117e40ee7f824f63373a4f5625bb62749f69159d0c449b3ce2f35aad3b83549
 ISNTALL/ventoy/7z/32/7za.exe  SHA-256: ea308c76a2f927b160a143d94072b0dce232e04b751f0c6432a94e05164e716d