update build scripts

This commit is contained in:
longpanda 2021-01-29 10:11:30 +08:00
parent 80a088babb
commit 85f6f3213f
4 changed files with 65 additions and 60 deletions

View File

@ -3,7 +3,7 @@
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.
Because Ventoy is based on many open source projects, so the environment is important. I suggest you test it on a virtual machine first.
Because Ventoy is based on many open source projects, so the environment is important. I suggest you test it on a virtual machine firstly.
1.1 Install CentOS 7.8
I use CentOS-7-x86_64-Everything-2003.iso and select Minimal install
@ -14,7 +14,7 @@
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 \
iscsi-initiator-utils grub2-tools zip nasm acpica-tools glibc-static zlib-static
iscsi-initiator-utils grub2-tools zip nasm acpica-tools glibc-static zlib-static xorriso
@ -22,9 +22,9 @@
2. Download Source Code
==========================================
2.1 Download Ventoy source code from github and decompress it.
Next I assume that you have unzipped the code into the /home directory (check /home/Ventoy-master/README.md file for the directory level).
Next I assume that you have unzipped the code into the /home directory (check /home/Ventoy-master/README.md file for the directory layout).
2.2 Download third-part source code
2.2 Download third-part source code and tool
https://www.fefe.de/dietlibc/dietlibc-0.34.tar.xz ===> /home/Ventoy-master/DOC/dietlibc-0.34.tar.xz
https://musl.libc.org/releases/musl-1.2.1.tar.gz ===> /home/Ventoy-master/DOC/musl-1.2.1.tar.gz
@ -52,20 +52,22 @@
==========================================
3. All in one script
==========================================
I have made the whole build process in all_in_one.sh, you can run this script to build and pack ventoy.
I have made a all_in_one.sh, you can run this script to build and pack ventoy.
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
It should be noted that, some part of Ventoy has 32bit&64bit version (like 4.9 4.10 4.11 follows)
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.
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
==========================================

View File

@ -7,34 +7,10 @@ unzip edk2-edk2-stable201911.zip
/bin/cp -a ./edk2_mod/edk2-edk2-stable201911 ./
cd edk2-edk2-stable201911
VTEFI_PATH=Build/MdeModule/RELEASE_GCC48/X64/MdeModulePkg/Application/Ventoy/Ventoy/OUTPUT/Ventoy.efi
DST_PATH=../../INSTALL/ventoy/ventoy_x64.efi
VTEFI_PATH2=Build/MdeModule/RELEASE_GCC48/IA32/MdeModulePkg/Application/Ventoy/Ventoy/OUTPUT/Ventoy.efi
DST_PATH2=../../INSTALL/ventoy/ventoy_ia32.efi
rm -f $VTEFI_PATH
rm -f $DST_PATH
rm -f $VTEFI_PATH2
rm -f $DST_PATH2
make -j 4 -C BaseTools/
cd ..
source ./edksetup.sh
build -p MdeModulePkg/MdeModulePkg.dsc -a X64 -b RELEASE -t GCC48
build -p MdeModulePkg/MdeModulePkg.dsc -a IA32 -b RELEASE -t GCC48
if [ -e $VTEFI_PATH ] && [ -e $VTEFI_PATH2 ]; then
echo -e '\n\n====================== SUCCESS ========================\n\n'
cp -a $VTEFI_PATH $DST_PATH
cp -a $VTEFI_PATH2 $DST_PATH2
cd ..
else
echo -e '\n\n====================== FAILED ========================\n\n'
cd ..
exit 1
fi
sh ./build.sh ia32 || exit 1
sh ./build.sh aa64 || exit 1
sh ./build.sh || exit 1

View File

@ -17,13 +17,8 @@ tar -xvf grub-2.04.tar.xz -C ./SRC/
cd ./SRC/grub-2.04
# build for Legacy BIOS
./autogen.sh
./configure --prefix=$VT_GRUB_DIR/INSTALL/
make -j 16
sh install.sh
# build for UEFI
# build for x86_64-efi
make distclean
./autogen.sh
./configure --with-platform=efi --prefix=$VT_GRUB_DIR/INSTALL/
@ -31,7 +26,7 @@ make -j 16
sh install.sh uefi
#build for IA32 EFI
#build for i386-efi
make distclean
./autogen.sh
./configure --target=i386 --with-platform=efi --prefix=$VT_GRUB_DIR/INSTALL/
@ -39,5 +34,32 @@ make -j 16
sh install.sh i386efi
#build for arm64 EFI
PATH=$PATH:/opt/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/bin
make distclean
./autogen.sh
./configure --prefix=$VT_GRUB_DIR/INSTALL/ \
--target=aarch64 --with-platform=efi \
--host=x86_64-linux-gnu \
HOST_CC=x86_64-linux-gnu-gcc \
BUILD_CC=gcc \
TARGET_CC=aarch64-linux-gnu-gcc \
TARGET_OBJCOPY=aarch64-linux-gnu-objcopy \
TARGET_STRIP=aarch64-linux-gnu-strip TARGET_NM=aarch64-linux-gnu-nm \
TARGET_RANLIB=aarch64-linux-gnu-ranlib
make -j 16
sh install.sh arm64
# build for i386-pc
./autogen.sh
./configure --prefix=$VT_GRUB_DIR/INSTALL/
make -j 16
sh install.sh
cd ../../

View File

@ -14,24 +14,29 @@ sh buildipxe.sh || exit 1
cd $VTOY_PATH/EDK2
sh buildedk.sh || exit 1
cd $VTOY_PATH/VtoyTool
sh build.sh || exit 1
cd $VTOY_PATH/vtoyfat/fat_io_lib
sh buildlib.sh
cd $VTOY_PATH/vtoyfat
sh build.sh || exit 1
cd $VTOY_PATH/vtoygpt
sh build.sh || exit 1
cd $VTOY_PATH/FUSEISO
sh build_libfuse.sh
sh build.sh
#
# We almost rarely modifiy these code, so no need to build them everytime
# If you want to rebuild them, just uncomment them.
#
#cd $VTOY_PATH/VtoyTool
#sh build.sh || exit 1
#cd $VTOY_PATH/vtoyfat/fat_io_lib
#sh buildlib.sh
#cd $VTOY_PATH/vtoyfat
#sh build.sh || exit 1
#cd $VTOY_PATH/vtoygpt
#sh build.sh || exit 1
#cd $VTOY_PATH/FUSEISO
#sh build_libfuse.sh
#sh build.sh
# cd $VTOY_PATH/ExFAT
# sh buidlibfuse.sh || exit 1