diff --git a/build_image.sh b/build_image.sh index e9d9d29..6da371b 100755 --- a/build_image.sh +++ b/build_image.sh @@ -63,111 +63,111 @@ download_sources() { #--------------- Building Linux Kernel --------------------- kernel() { - printf "$UGREEN** Building Linux Kernel\n$RESET" && - rm -r $build/kernel &>> $fulllogfile && - mkdir -p $build/kernel &>> $fulllogfile && - cd $build/kernel && - printf "$UGREEN** Extracting Linux Kernel\n$RESET" && - tar -xvf $root/downloads/linux-6.7.4.tar.xz &>> $fulllogfile && - check $? "Extract Linux Kernel" && - cd linux-6.7.4 && - printf "$UGREEN** Configuring Linux Kernel\n$RESET" && - make mrproper &>> $fulllogfile && - cp -v $root/kernel/config-6.7.4 .config && - make oldconfig && - check $? "Configure Linux Kernel" && - printf "$UGREEN** Building Linux Kernel\n$RESET" && - make $makeflags &>> $fulllogfile && - check $? "Build Linux Kernel" && + printf "$UGREEN** Building Linux Kernel\n$RESET" + rm -r $build/kernel &>> $fulllogfile + mkdir -p $build/kernel &>> $fulllogfile + cd $build/kernel + printf "$UGREEN** Extracting Linux Kernel\n$RESET" + tar -xvf $root/downloads/linux-6.7.4.tar.xz &>> $fulllogfile + check $? "Extract Linux Kernel" + cd linux-6.7.4 + printf "$UGREEN** Configuring Linux Kernel\n$RESET" + make mrproper &>> $fulllogfile + cp -v $root/kernel/config-6.7.4 .config + make oldconfig + check $? "Configure Linux Kernel" + printf "$UGREEN** Building Linux Kernel\n$RESET" + make $makeflags &>> $fulllogfile + check $? "Build Linux Kernel" ls -lh arch/x86/boot/bzImage } # kernel #----------------------------------------------------------- #----------- Build and Install kernel modules -------------- kernel_modules() { - printf "$UGREEN** Building Linux Kernel modules\n$RESET" && - cd $build/kernel/linux-6.7.4 && - make modules &>> fulllogfile && - check $? "Build Linux Kernel modules" && - printf "$UGREEN** Installing Linux Kernel modules into rootfs path\n$RESET" && - mkdir -pv $rootfspath/usr/lib &>> fulllogfile && - cd $rootfspath && - ln -sv usr/lib lib &>> $fulllogfile && - cd $root/build/kernel/linux-6.7.4 && - make INSTALL_MOD_PATH=$rootfspath modules_install &>> $fulllogfile && + printf "$UGREEN** Building Linux Kernel modules\n$RESET" + cd $build/kernel/linux-6.7.4 + make modules &>> fulllogfile + check $? "Build Linux Kernel modules" + printf "$UGREEN** Installing Linux Kernel modules into rootfs path\n$RESET" + mkdir -pv $rootfspath/usr/lib &>> fulllogfile + cd $rootfspath + ln -sv usr/lib lib &>> $fulllogfile + cd $root/build/kernel/linux-6.7.4 + make INSTALL_MOD_PATH=$rootfspath modules_install &>> $fulllogfile check $? "Install Linux Kernel modules" } # kernel_modules #----------------------------------------------------------- #------------ glibc ---------------------------------------- glibc() { - printf "$UGREEN** Building glibc\n$RESET" && - mkdir -p $build/glibc &>> $fulllogfile && - cd $build/glibc && - tar -xvf $root/downloads/glibc-2.39.tar.xz &>> $fulllogfile && - check $? "Extract glibc" && - cd glibc-2.39 && - mkdir build && - cd build && - echo "rootsbindir=/usr/bin" > configparms && + printf "$UGREEN** Building glibc\n$RESET" + mkdir -p $build/glibc &>> $fulllogfile + cd $build/glibc + tar -xvf $root/downloads/glibc-2.39.tar.xz &>> $fulllogfile + check $? "Extract glibc" + cd glibc-2.39 + mkdir build + cd build + echo "rootsbindir=/usr/bin" > configparms ../configure \ --prefix=/usr \ --disable-werror \ --enable-kernel=4.19 \ --enable-stack-protector=strong \ --disable-nscd \ - libc_cv_slibdir=/usr/lib &>> $fulllogfile && - check $? "Configure glibc" && - make $makeflags &>> $fulllogfile && - check $? "Build glibc" && - make DESTDIR=$rootfspath install &>> $fulllogfile && - check $? "Install glibc to rootfs" && - cd $rootfspath && - find -name \*.a -delete &>> $fulllogfile && - strip --strip-unneeded $rootfspath/usr/lib/* $rootfspath/usr/bin/* &>> $fulllogfile && - chroot $rootfspath /bin/sh -c "mkdir -p /usr/lib/locale;localedef -i C -f UTF-8 C.UTF-8;localedef -i en_US -f UTF-8 en_US.UTF-8;localedef -i ru_RU -f UTF-8 ru_RU-UTF-8;" && - cd $root && + libc_cv_slibdir=/usr/lib &>> $fulllogfile + check $? "Configure glibc" + make $makeflags &>> $fulllogfile + check $? "Build glibc" + make DESTDIR=$rootfspath install &>> $fulllogfile + check $? "Install glibc to rootfs" + cd $rootfspath + find -name \*.a -delete &>> $fulllogfile + strip --strip-unneeded $rootfspath/usr/lib/* $rootfspath/usr/bin/* &>> $fulllogfile + chroot $rootfspath /bin/sh -c "mkdir -p /usr/lib/locale;localedef -i C -f UTF-8 C.UTF-8;localedef -i en_US -f UTF-8 en_US.UTF-8;localedef -i ru_RU -f UTF-8 ru_RU-UTF-8;" + cd $root check $? "Build and install glibc" } #----------------------------------------------------------- #------------------ Building initramfs.img ------------------------ initramfs() { - printf "$UGREEN** Building initramfs\n$RESET" && + printf "$UGREEN** Building initramfs\n$RESET" #--------- Creating directories and files ------------------- - rm -r $initramfspath &>> $fulllogfile && - mkdir -p $initramfspath && - cd $initramfspath && - mkdir -p $(cat $initramfsfile) && - cp $root/initramfs/init.in $initramfspath/init && - chmod 755 $initramfspath/init && + rm -r $initramfspath &>> $fulllogfile + mkdir -p $initramfspath + cd $initramfspath + mkdir -p $(cat $initramfsfile) + cp $root/initramfs/init.in $initramfspath/init + chmod 755 $initramfspath/init #------------------------------------------------------------ #------------ Building initramfs busybox and copy to initramfs directory -------------------- - rm -r $build/busybox &>> $fulllogfile && - mkdir -p $build/busybox && - cd $build/busybox && - tar -xjf $root/downloads/busybox-1.36.1.tar.bz2 && - check $? "Extract busybox" && - cd busybox-1.36.1 && - cp $root/busybox/busybox-initramfs-config .config && - export PATH=$PATH:/opt/toolchains/x86_64-buildroot-linux-uclibc-gcc/bin && - printf "$UGREEN** Configuring busybox\n$RESET" && - make CROSS_COMPILE=x86_64-buildroot-linux-uclibc- oldconfig &> $fulllogfile && - check $? "Configure busybox all logs in .log" && - printf "$UGREEN** Building busybox\n$RESET" && - make CROSS_COMPILE=x86_64-buildroot-linux-uclibc- $makeflags &> $fulllogfile && - check $? "Build busybox all logs in .log" && - cp busybox $initramfspath/bin && - cd $initramfspath/bin && - for i in $(./busybox --list); do ln -s busybox $i; done && - cd .. && + rm -r $build/busybox &>> $fulllogfile + mkdir -p $build/busybox + cd $build/busybox + tar -xjf $root/downloads/busybox-1.36.1.tar.bz2 + check $? "Extract busybox" + cd busybox-1.36.1 + cp $root/busybox/busybox-initramfs-config .config + export PATH=$PATH:/opt/toolchains/x86_64-buildroot-linux-uclibc-gcc/bin + printf "$UGREEN** Configuring busybox\n$RESET" + make CROSS_COMPILE=x86_64-buildroot-linux-uclibc- oldconfig &> $fulllogfile + check $? "Configure busybox all logs in .log" + printf "$UGREEN** Building busybox\n$RESET" + make CROSS_COMPILE=x86_64-buildroot-linux-uclibc- $makeflags &> $fulllogfile + check $? "Build busybox all logs in .log" + cp busybox $initramfspath/bin + cd $initramfspath/bin + for i in $(./busybox --list); do ln -s busybox $i; done + cd .. #-------------------------------------------------------------------------------------------- #--------------------- Creating initramfs.img image ------------ - find . | cpio -H newc -o | gzip > ../initramfs.img && - check $? "Build initramfs.img image" && + find . | cpio -H newc -o | gzip > ../initramfs.img + check $? "Build initramfs.img image" cd $root #--------------------------------------------------------------- @@ -176,48 +176,48 @@ initramfs() { #----------- Building rootfs ---------------------- rootfs() { - printf "$UGREEN** Building rootfs\n$RESET" && - rm -rv $rootfspath &>> $fulllogfile && - mkdir -pv $rootfspath &>> $fulllogfile && - cd $rootfspath && - mkdir -pv $(cat $rootfsfile) &>> $fulllogfile && - ln -sv usr/lib lib &>> $fulllogfile && - ln -sv usr/lib lib64 &>> $fulllogfile && - ln -sv usr/bin bin &>> $fulllogfile && - ln -sv usr/bin sbin &>> $fulllogfile && - cd usr && - ln -sv bin sbin &>> $fulllogfile && - ln -sv lib lib64 &>> $fulllogfile && - cp -rv $root/rootfs/etc/* $rootfspath/etc/ &>> $fulllogfile && - cp -rv $root/rootfs/usr/* $rootfspath/usr/ &>> $fulllogfile && - cp -rv $root/rootfs/boot/* $rootfspath/boot/ &>> $fulllogfile && + printf "$UGREEN** Building rootfs\n$RESET" + rm -rv $rootfspath &>> $fulllogfile + mkdir -pv $rootfspath &>> $fulllogfile + cd $rootfspath + mkdir -pv $(cat $rootfsfile) &>> $fulllogfile + ln -sv usr/lib lib &>> $fulllogfile + ln -sv usr/lib lib64 &>> $fulllogfile + ln -sv usr/bin bin &>> $fulllogfile + ln -sv usr/bin sbin &>> $fulllogfile + cd usr + ln -sv bin sbin &>> $fulllogfile + ln -sv lib lib64 &>> $fulllogfile + cp -rv $root/rootfs/etc/* $rootfspath/etc/ &>> $fulllogfile + cp -rv $root/rootfs/usr/* $rootfspath/usr/ &>> $fulllogfile + cp -rv $root/rootfs/boot/* $rootfspath/boot/ &>> $fulllogfile - rm -rv $build/busybox &>> $fulllogfile && - mkdir -v $build/busybox &>> $fulllogfile && - cd $build/busybox && - tar -xvjf $root/downloads/busybox-1.36.1.tar.bz2 &>> $fulllogfile && - cd busybox-1.36.1 && - cp -v $root/busybox/busybox-rootfs-config .config &>> $fulllogfile && - printf "$UGREEN** Configuring busybox\n$RESET" && - make oldconfig &> $fulllogfile && - check $? "Configure busybox all logs in .log" && - printf "$UGREEN** Building busybox\n$RESET" && - make $makeflags &> $fulllogfile && - check $? "Build busybox all logs in .log" && - cp -v busybox $rootfspath/usr/bin &>> $fulllogfile && - cd $rootfspath/usr/bin && - for i in $(./busybox --list); do ln -s busybox $i; done && + rm -rv $build/busybox &>> $fulllogfile + mkdir -v $build/busybox &>> $fulllogfile + cd $build/busybox + tar -xvjf $root/downloads/busybox-1.36.1.tar.bz2 &>> $fulllogfile + cd busybox-1.36.1 + cp -v $root/busybox/busybox-rootfs-config .config &>> $fulllogfile + printf "$UGREEN** Configuring busybox\n$RESET" + make oldconfig &> $fulllogfile + check $? "Configure busybox all logs in .log" + printf "$UGREEN** Building busybox\n$RESET" + make $makeflags &> $fulllogfile + check $? "Build busybox all logs in .log" + cp -v busybox $rootfspath/usr/bin &>> $fulllogfile + cd $rootfspath/usr/bin + for i in $(./busybox --list); do ln -s busybox $i; done - glibc && - kernel && - cp -v $root/build/kernel/linux-6.7.4/arch/x86/boot/bzImage $rootfspath/boot/vmlinuz-linux && - kernel_modules && - initramfs && - cp -v $root/build/initramfs.img $rootfspath/boot/ && + glibc + kernel + cp -v $root/build/kernel/linux-6.7.4/arch/x86/boot/bzImage $rootfspath/boot/vmlinuz-linux + kernel_modules + initramfs + cp -v $root/build/initramfs.img $rootfspath/boot/ - chmod 640 $rootfspath/etc/shadow $rootfspath/etc/inittab && - chmod 755 $rootfspath/etc/init.d/* $rootfspath/usr/share/udhcpc/default.script && - chmod 644 $rootfspath/etc/{passwd,group,hostname,hosts,fstab,shells,issue} $rootfspath/etc/network/interfaces && + chmod 640 $rootfspath/etc/shadow $rootfspath/etc/inittab + chmod 755 $rootfspath/etc/init.d/* $rootfspath/usr/share/udhcpc/default.script + chmod 644 $rootfspath/etc/{passwd,group,hostname,hosts,fstab,shells,issue} $rootfspath/etc/network/interfaces check $? "Build rootfs" } # rootfs @@ -225,13 +225,13 @@ rootfs() { #---------- Cleaning build and out directory --------- clean() { - printf "$UGREEN** Cleaning build and out directories\n$RESET" && - rm -rv $root/.log/* &>> $fulllogfile && - mkdir -p $root/.log && - rm -rv $out &>> $fulllogfile && - mkdir -p $out && - rm -rv $build &>> $fulllogfile && - mkdir -p $build && + printf "$UGREEN** Cleaning build and out directories\n$RESET" + rm -rv $root/.log/* &>> $fulllogfile + mkdir -p $root/.log + rm -rv $out &>> $fulllogfile + mkdir -p $out + rm -rv $build &>> $fulllogfile + mkdir -p $build printf "$UGREEN** SUCCESS: Cleaning build and out directories\n$RESET" } # clean #----------------------------------------------------- @@ -247,10 +247,10 @@ if [ "$1" = "clean" ]; then exit 0 fi -clean && -download_sources && +clean +download_sources # kernel # kernel_modules # initramfs -rootfs && +rootfs grub_rescue