Installation Notes for Teo En Ming Extremely Simple Linux 1810.08 =================================================================
Definitely must watch YouTube video: https://www.youtube.com/watch?v=YrJADssqaQU Author: Mr. Turritopsis Dohrnii Teo En Ming Country: Singapore Start: 8th October 2018 Monday 10:00 PM Singapore Time GMT+8 End: 9th October 2018 Tuesday 2:30 AM Singapore Time GMT+8 NOTE: Compiling a Linux operating system on Intel Core i7-5820K (6 cores) will take approximately 4.5 hours. Steps ===== 001. Download CentOS 7.5 1804 from the mirror at National University of Singapore (NUS) http://mirror.nus.edu.sg/centos/7.5.1804/isos/x86_64/CentOS-7-x86_64-DVD-1804.iso 002. Install CentOS 7.5 1804 as an Oracle VirtualBox 5.2.18 virtual machine in Windows 10 version 1803 host operating system. 003. During Software Selection, choose *Development and Creative Workstation*. This is mandatory for compiling software and operating systems. 004. Click Additional Development. 005. Click Development Tools. 006. Click Perl for Web. 007. Click Platform Development. 008. Click Done. 009. After completing installation, login to CentOS 7.5 1804 using Putty. 010. Search for gcc (GNU Compiler Collection). [teoenming@centos ~]$ rpm -qa | grep gcc gcc-4.8.5-28.el7.x86_64 gcc-c++-4.8.5-28.el7.x86_64 gcc-gfortran-4.8.5-28.el7.x86_64 libgcc-4.8.5-28.el7.x86_64 011. Search for make. [teoenming@centos ~]$ rpm -qa | grep make make-3.82-23.el7.x86_64 automake-1.13.4-3.el7.noarch cmake-2.8.12.2-2.el7.x86_64 012. Search for ncurses. [teoenming@centos ~]$ rpm -qa | grep ncurses ncurses-base-5.9-14.20130511.el7_4.noarch ncurses-devel-5.9-14.20130511.el7_4.x86_64 ncurses-5.9-14.20130511.el7_4.x86_64 ncurses-libs-5.9-14.20130511.el7_4.x86_64 013. Search for perl. [teoenming@centos ~]$ rpm -qa | grep perl <Super long list...snipped> 014. Search for grub (Grand Unified Boot Loader). [root@centos ~]# rpm -qa | grep grub grub2-pc-modules-2.02-0.65.el7.centos.2.noarch grubby-8.28-23.el7.x86_64 grub2-2.02-0.65.el7.centos.2.x86_64 grub2-common-2.02-0.65.el7.centos.2.noarch grub2-tools-minimal-2.02-0.65.el7.centos.2.x86_64 grub2-tools-extra-2.02-0.65.el7.centos.2.x86_64 grub2-tools-2.02-0.65.el7.centos.2.x86_64 grub2-pc-2.02-0.65.el7.centos.2.x86_64 ***Apparently GRUB Legacy 0.97 has been deprecated on CentOS 7.5. GRUB2 is now installed by default on CentOS 7.5.*** 015. Download the latest binutils-2.31 wget https://ftp.gnu.org/gnu/binutils/binutils-2.31.tar.xz 016. Download the latest busybox-1.29.3 wget https://busybox.net/downloads/busybox-1.29.3.tar.bz2 017. Download the latest Cross Linux From Scratch (CLFS) Bootscripts wget http://ftp.osuosl.org/pub/clfs/conglomeration/clfs-embedded-bootscripts/clfs-embedded-bootscripts-1.0-pre5.tar.bz2 018. Download the latest GNU Compiler Collection (gcc) version 8.2.0 wget https://ftp.gnu.org/gnu/gcc/gcc-8.2.0/gcc-8.2.0.tar.xz 019. Download the latest C Programming Library version 2.28 wget https://ftp.gnu.org/gnu/glibc/glibc-2.28.tar.xz 020. Download the latest gmp-6.1.2 wget https://ftp.gnu.org/gnu/gmp/gmp-6.1.2.tar.bz2 021. Download the latest Linux Kernel version 4.18.12 (stable branch) wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.18.12.tar.xz 022. Download the latest mpc-1.1.0 wget https://ftp.gnu.org/gnu/mpc/mpc-1.1.0.tar.gz 023. Download the latest mpfr-4.0.1 wget https://ftp.gnu.org/gnu/mpfr/mpfr-4.0.1.tar.xz 024. Download the latest zlib-1.2.11 wget https://zlib.net/zlib-1.2.11.tar.gz >From now on, follow Petros Koutoupis' guide at Linux Journal. [Guide] DIY: Build a Custom Minimal Linux Distribution from Source Link: https://www.linuxjournal.com/content/diy-build-custom-minimal-linux-distribution-source Follow the instructions until the section "Building the Cross Compiler". At the Kernel Headers sub-section, 025. Extract the latest Linux Kernel 4.18.12 (stable branch) tar xfvJ linux-4.18.12.tar.xz 026. Change directory into the Linux Kernel 4.18.12 source code directory cd linux-4.18.12 Then continue following the instructions. At the section on Glibc, glibc-2.28 (C Programming Library version 2.28) won't compile. So we will use glibc-2.27 (C Programming Library version 2.27) instead. 027. Download C Programming Library version 2.27 wget https://ftp.gnu.org/gnu/glibc/glibc-2.27.tar.xz At "The Bootscripts" section, modify Makefile in the root directory as follows. You *CANNOT* copy and paste the following code section into a patchfile and use the patch command patch -p0 <patchfile @@ -19,7 +19,9 @@ dist: rm -rf "dist/clfs-embedded-bootscripts-$(VERSION)" create-dirs: - install -d -m ${DIRMODE} ${EXTDIR}/rc.d/{init.d,start,stop} + install -d -m ${DIRMODE} ${EXTDIR}/rc.d/init.d + install -d -m ${DIRMODE} ${EXTDIR}/rc.d/start + install -d -m ${DIRMODE} ${EXTDIR}/rc.d/stop install-bootscripts: create-dirs install -m ${CONFMODE} clfs/rc.d/init.d/functions ${EXTDIR}/rc.d/init.d/ Now it is time to install the target image. At the section on "Installing the Target Image", we *CANNOT* use the grub-install command since GRUB Legacy 0.97 has been deprecated on CentOS 7.5. GRUB2 is installed by default on CentOS 7.5. Since I am no expert on the Grand Unified Boot Loader (GRUB), I am going to use the GRUB2 grub2-install command. 028. grub2-install --root-directory=/home/teoenming/tmp/ /dev/sdb /dev/sdb is another virtual harddisk in Oracle Virtualbox 5.2.18. Although GRUB2 is installed in Teo En Ming Extremely Simple Linux 1810.08, I am not seeing any operating system selection menu. This is because /boot/grub/grub.cfg as seen in Petros' instructions is defined for GRUB Legacy 0.97 only. You will see a grub> prompt instead. At the grub> prompt, execute the following commands. grub> linux /boot/vmlinuz-4.18.12 root=/dev/sda1 ro quiet grub> boot Teo En Ming Extremely Simple Linux 1810.08 will now boot up. Please watch my YouTube video at https://www.youtube.com/watch?v=YrJADssqaQU Question: Should I use CentOS 6 as my development workstation instead? This is because CentOS 6 will definitely have GRUB Legacy. ===BEGIN SIGNATURE=== Turritopsis Dohrnii Teo En Ming's Academic Qualifications as at 30 Oct 2017 [1] https://tdtemcerts.wordpress.com/ [2] http://tdtemcerts.blogspot.sg/ [3] https://www.scribd.com/user/270125049/Teo-En-Ming ===END SIGNATURE===