From 85f6f3213f81e0b32b0698fc51998540a91cc159 Mon Sep 17 00:00:00 2001 From: longpanda Date: Fri, 29 Jan 2021 10:11:30 +0800 Subject: [PATCH] update build scripts --- DOC/BuildVentoyFromSource.txt | 22 +++++++++++---------- EDK2/buildedk.sh | 32 ++++--------------------------- GRUB2/buildgrub.sh | 36 ++++++++++++++++++++++++++++------- INSTALL/all_in_one.sh | 29 ++++++++++++++++------------ 4 files changed, 62 insertions(+), 57 deletions(-) diff --git a/DOC/BuildVentoyFromSource.txt b/DOC/BuildVentoyFromSource.txt index 967b809f..51ae5b75 100644 --- a/DOC/BuildVentoyFromSource.txt +++ b/DOC/BuildVentoyFromSource.txt @@ -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) - 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. + 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 ========================================== diff --git a/EDK2/buildedk.sh b/EDK2/buildedk.sh index 5197b0d1..b00fb14f 100644 --- a/EDK2/buildedk.sh +++ b/EDK2/buildedk.sh @@ -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 diff --git a/GRUB2/buildgrub.sh b/GRUB2/buildgrub.sh index f04f2f5c..7aefe1bc 100644 --- a/GRUB2/buildgrub.sh +++ b/GRUB2/buildgrub.sh @@ -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 ../../ diff --git a/INSTALL/all_in_one.sh b/INSTALL/all_in_one.sh index f191645d..a90d967c 100644 --- a/INSTALL/all_in_one.sh +++ b/INSTALL/all_in_one.sh @@ -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 +# +# 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/vtoygpt -sh build.sh || exit 1 +#cd $VTOY_PATH/VtoyTool +#sh build.sh || exit 1 -cd $VTOY_PATH/FUSEISO -sh build_libfuse.sh -sh build.sh +#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 # cd $VTOY_PATH/ExFAT # sh buidlibfuse.sh || exit 1