GithubHelp home page GithubHelp logo

myinterest's Introduction

myinterest

my interest to learn **==========================================

  1. Compile Environment ========================================== My build environment is CentOS 7.8 x86_64. So here I first explain how to create the build environment from scratch. Ventoy is based on many open source projects, so the build environment is important. I suggest you first test it on a virtual machine.

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
iscsi-initiator-utils grub2-tools zip nasm acpica-tools glibc-static zlib-static xorriso

========================================== 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 layout).

2.2 Download third-party 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
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
https://github.com/ventoy/vtoytoolchain/releases/download/1.0/mips-loongson-gcc7.3-2019.06-29-linux-gnu.tar.gz ===> /opt/mips-loongson-gcc7.3-2019.06-29-linux-gnu.tar.gz
https://github.com/ventoy/musl-cross-make/releases/download/latest/output.tar.bz2 ===> /opt/output.tar.bz2


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    

2.3 Prepare third-party 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
tar xf /opt/output.tar.bz2  -C /opt
mv /opt/output /opt/mips64el-linux-musl-gcc730

2.4 Set PATH environment 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:/opt/mips64el-linux-musl-gcc730/bin better to add this line to /root/.bashrc and relogin as root

========================================== 3. All in one script

I have made an all-in-one script `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:
1. Only grub2/EDK2/IPXE will be recompiled in all_in_one.sh. Other parts contain binaries and are rarely modified, so will not be recompiled everytime.
   You can rebuild these parts separately if you want.
   
2. Some parts of Ventoy have a 32-bit and 64-bit version (like 4.9, 4.10, 4.11 follows)
   all_in_one.sh only builds the 64bit version of them. If you want to rebuild the 32bit verison, you should create a 32-bit CentOS environment and build them.
   Fortunately these parts are rarely modified, so you only need to build once or you can directly use the binaries I have built.

Besides, after a full compile and packaging, 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 vtoycli ==
cd /home/Ventoy-master/vtoycli/fat_io_lib sh buildlib.sh cd /home/Ventoy-master/vtoycli 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 32-bit in a 32-bit 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 32-bit 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 32-bit 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

**

myinterest's People

Contributors

svecnetsvec avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.