-Build a static linked, small dmsetup tool
-
-======== Source Code ========
-use an old version of dmsetup
-http://vault.centos.org/5.3/os/SRPMS/device-mapper-1.02.28-2.el5.src.rpm
-https://www.fefe.de/dietlibc/dietlibc-0.34.tar.xz
-
-======== Build Envrioment ========
-build for 32bit, static linked with dietlibc
-1. install centos 6.10 i386 with CentOS-6.10-i386-bin-DVD1.iso
-2. yum install gcc kernel-devel package
-3. install dietc libc (just make && make install)
-4. export PATH=$PATH:/opt/diet/bin
-
-======== Build Step ========
-1. extract device mapper source code
-2. CC="diet gcc" ./configure --disable-nls --disable-selinux --disable-shared
-3. modify include/configure.h file
- --- delete the line with "#define malloc rpl_malloc"
- --- add 2 defines as follow:
- #ifndef UINT32_MAX
- #define UINT32_MAX (4294967295U)
- #endif
-
- #ifndef UINT64_C
- #define UINT64_C(c) c ## ULL
- #endif
-
-4. make
-5. strip dmsetup/dmsetup
-5. get dmsetup/dmsetup as the binary file
+Build a static linked, small dmsetup tool\r
+\r
+======== Source Code ========\r
+use an old version of dmsetup\r
+http://vault.centos.org/5.3/os/SRPMS/device-mapper-1.02.28-2.el5.src.rpm\r
+https://www.fefe.de/dietlibc/dietlibc-0.34.tar.xz\r
+\r
+======== Build Envrioment ======== \r
+build for 32bit, static linked with dietlibc\r
+1. install centos 6.10 i386 with CentOS-6.10-i386-bin-DVD1.iso\r
+2. yum install gcc kernel-devel package\r
+3. install dietc libc (just make && make install)\r
+4. export PATH=$PATH:/opt/diet/bin\r
+\r
+======== Build Step ======== \r
+1. extract device mapper source code\r
+2. CC="diet gcc" ./configure --disable-nls --disable-selinux --disable-shared\r
+3. modify include/configure.h file\r
+ --- delete the line with "#define malloc rpl_malloc"\r
+ --- add 2 defines as follow:\r
+ #ifndef UINT32_MAX\r
+ #define UINT32_MAX (4294967295U)\r
+ #endif\r
+ \r
+ #ifndef UINT64_C\r
+ #define UINT64_C(c) c ## ULL\r
+ #endif\r
+ \r
+4. make\r
+5. strip dmsetup/dmsetup\r
+6. get dmsetup/dmsetup as the dmsetup32 binary file\r
+\r
+\r
+\r
+\r
+\r
+\r
+======================== Build for 64bit dmsetup =========================\r
+1. extract device mapper source code\r
+2. ./configure --disable-nls --disable-selinux --disable-shared --enable-static_link CC='gcc -specs /usr/local/musl/lib/musl-gcc.specs'\r
+3. touch include/linux/limits.h include/linux/types.h \r
+ echo '#include <sys/mount.h>' > include/linux/fs.h\r
+4. make\r
+5. strip --strip-all dmsetup/dmsetup.static\r
+6. get dmsetup/dmsetup.static as the dmsetup64 binary file\r
+\r
+\r
+======================== Build for arm64 dmsetup =========================\r
+1. extract device mapper source code\r
+2. ./configure CC=aarch64-linux-gcc --target=arm --host=x86_64-linux-gnu --disable-nls --disable-selinux --disable-shared --enable-static_link\r
+3. modify include/configure.h file\r
+ --- delete the line with "#define malloc rpl_malloc"\r
+4. make\r
+5. aarch64-linux-strip dmsetup/dmsetup.static\r
+6. get dmsetup/dmsetup.static as the dmsetupaa64 binary file\r
+\r
+\r
+======================== Build for mips64 dmsetup =========================\r
+1. extract device mapper source code\r
+2. ./configure CC="mips64el-linux-musl-gcc -mips64r2 -mabi=64" --target=mips --host=x86_64-linux-gnu --disable-nls --disable-selinux --disable-shared --enable-static_link\r
+3. modify include/configure.h file\r
+ --- delete the line with "#define malloc rpl_malloc"\r
+4. make\r
+5. mips64el-linux-musl-strip dmsetup/dmsetup.static\r
+6. get dmsetup/dmsetup.static as the dmsetupm64e binary file\r
+\r
+\r
+\r
+\r
+\r