This commit is contained in:
lw-everestlinux 2022-09-01 08:38:04 -04:00
parent f39fa1594e
commit 8a35b376e6
9 changed files with 9 additions and 479 deletions

View File

@ -1 +1 @@
1.0.0-busybox
1.0.0-gnu

View File

@ -1,44 +0,0 @@
#!/bin/sh
# Everest Linux 1.0.0-busybox - Stage 2 Installation Script
# This program is free software: See the GNU GPL v3.0 for details
printf "[ !!! ] WARNING! DO NOT RUN THIS SCRIPT AS ROOT!\n"
printf "[ i ] Starting in 10 seconds.\n"
sleep 10
printf "[ i ] Starting stage 2 installation...\n"
sleep 0.5
printf "[ i ] Creating bash configuration files...\n"
cat > ~/.bash_profile << "EOF"
exec env -i HOME=${HOME} TERM=${TERM} PS1='\u:\w\$ ' /bin/bash
EOF
cat > ~/.bashrc << "EOF"
set +h
umask 022
EVEREST=/mnt/everest
LC_ALL=POSIX
PATH=${EVEREST}/cross-tools/bin:/bin:/usr/bin
export EVEREST LC_ALL PATH
EOF
printf "[ i ] Sourcing .bash_profile...\n"
source ~/.bash_profile
printf "[ i ] Unsetting CFLAGS...\n"
unset CFLAGS
echo unset CFLAGS >> ~/.bashrc
printf "[ i ] Setting build variables...\n"
export EVEREST_HOST=$(echo ${MACHTYPE} | sed "s/-[^-]*/-cross/")
export EVEREST_TARGET=x86_64-linux-musl
export EVEREST_CPU=k8
printf "[ i ] Setting CPU architecture..\n"
export EVEREST_ARCH="x86"
printf "[ i ] Adding build variables to .bashrc...\n"
echo export EVEREST_HOST=\""${EVEREST_HOST}\"" >> ~/.bashrc
echo export EVEREST_TARGET=\""${EVEREST_TARGET}\"" >> ~/.bashrc
echo export EVEREST_ARCH=\""${EVEREST_ARCH}\"" >> ~/.bashrc
echo export EVEREST_CPU=\""${EVEREST_CPU}\"" >> ~/.bashrc

View File

@ -1,258 +0,0 @@
#!/bin/sh
# Everest Linux 1.0.0-busybox - Stage 3 Installation Script
# This program is free software: See the GNU GPL v3.0 for details.
printf "[ i ] NOTICE - This script can either be run as the 'everest' user (assuming they own /mnt/everest), or as root.\n"
sleep 5
printf "[ i ] Creating sysroot directory...\n"
mkdir -p ${EVEREST}/cross-tools/${EVEREST_TARGET}
ln -sfv . ${EVEREST}/cross-tools/${EVEREST_TARGET}/usr
printf "[ i ] Moving tarballs to cross-tools directory...\n"
cd /home/everest/everest-install/scripts/tempfiles
mv -rv * $EVEREST/sources
printf "[ i ] Preparing to build initial toolchain...\n"
cd $EVEREST/sources
printf "[ i ] Starting build of >>> Linux-Headers-4.9.22 <<<\n"
sleep 3
tar -xvf linux-4.9.22.tar.xz
cd linux-4.9.22
make mrproper
make ARCH=${EVEREST_ARCH} headers_check
make ARCH=${EVEREST_ARCH} INSTALL_HDR_PATH=${EVEREST}/cross-tools/${EVEREST_TARGET} headers_install
cd ..
printf "[ i ] Starting build of >>> Binutils-2.27 <<<\n"
sleep 3
tar -xvf binutils-2.27.tar.bz2
cd binutils-2.27
mkdir -v ../binutils-build
cd ../binutils-build
../binutils-2.27/configure \
--prefix=${EVEREST}/cross-tools \
--target=${EVEREST_TARGET} \
--with-sysroot=${EVEREST}/cross-tools/${EVEREST_TARGET} \
--disable-nls \
--disable-multilib
make configure-host
make
make install
cd ../..
printf "[ i ] Finished build of >>> Binutils-2.27 <<<\n"
printf "[ i ] Starting build of >>> GCC-6.2.0 - Static <<<\n"
sleep 3
tar -xvf gcc-6.2.0.tar.bz2
cd gcc-6.2.0
tar xf ../mpfr-3.1.4.tar.bz2
mv -v mpfr-3.1.4 mpfr
tar xf ../gmp-6.1.1.tar.bz2
mv -v gmp-6.1.1 gmp
tar xf ../mpc-1.0.3.tar.gz
mv -v mpc-1.0.3 mpc
mkdir -v ../gcc-build
cd ../gcc-build
../gcc-6.2.0/configure \
--prefix=${EVEREST}/cross-tools \
--build=${EVEREST_HOST} \
--host=${EVEREST_HOST} \
--target=${EVEREST_TARGET} \
--with-sysroot=${EVEREST}/cross-tools/${EVEREST_TARGET} \
--disable-nls \
--disable-shared \
--without-headers \
--with-newlib \
--disable-decimal-float \
--disable-libgomp \
--disable-libmudflap \
--disable-libssp \
--disable-libatomic \
--disable-libquadmath \
--disable-threads \
--enable-languages=c \
--disable-multilib \
--with-mpfr-include=$(pwd)/../gcc-6.2.0/mpfr/src \
--with-mpfr-lib=$(pwd)/mpfr/src/.libs \
--with-arch=${EVEREST_CPU}
make all-gcc all-target-libgcc
make install-gcc install-target-libgcc
cd ..
rm -rf gcc-build
cd ..
printf "[ i ] Finished build of >>> GCC-6.2.0 - Static <<<\n"
printf "[ i ] Starting build of >>> musl-1.1.16 <<<\n"
sleep 3
tar -xvf musl-1.1.16.tar.gz
cd musl-1.1.16
./configure \
CROSS_COMPILE=${EVEREST_TARGET}- \
--prefix=/ \
--target=${EVEREST_TARGET}
make
DESTDIR=${EVEREST}/cross-tools/${EVEREST_TARGET} make install
cd ..
printf "[ i ] Finished build of >>> musl-1.1.16 <<<\n"
printf "[ i ] Starting build of >>> GCC-6.2.0 - Final <<<\n"
sleep 3
rm -rf gcc-6.2.0
tar -xvf gcc-6.2.0.tar.bz2
cd gcc-6.2.0
tar xf ../mpfr-3.1.4.tar.bz2
mv -v mpfr-3.1.4 mpfr
tar xf ../gmp-6.1.1.tar.bz2
mv -v gmp-6.1.1 gmp
tar xf ../mpc-1.0.3.tar.gz
mv -v mpc-1.0.3 mpc
mkdir -v ../gcc-build
cd ../gcc-build
../gcc-6.2.0/configure \
--prefix=${EVEREST}/cross-tools \
--build=${EVEREST_HOST} \
--host=${EVEREST_HOST} \
--target=${EVEREST_TARGET} \
--with-sysroot=${EVEREST}/cross-tools/${EVEREST_TARGET} \
--disable-nls \
--enable-languages=c,c++ \
--enable-c99 \
--enable-long-long \
--disable-libmudflap \
--disable-multilib \
--with-mpfr-include=$(pwd)/../gcc-6.2.0/mpfr/src \
--with-mpfr-lib=$(pwd)/mpfr/src/.libs \
--with-arch=${EVEREST_CPU}
make
make install
cd ..
printf "[ i ] Finished build of >> GCC-6.2.0 - Final <<<\n"
printf "[ i ] Toolchain has finished building.\n"
printf "[ i ] Setting toolchain variables...\n"
echo export CC=\""${EVEREST_TARGET}-gcc --sysroot=${EVEREST}/targetfs\"" >> ~/.bashrc
echo export CXX=\""${EVEREST_TARGET}-g++ --sysroot=${EVEREST}/targetfs\"" >> ~/.bashrc
echo export AR=\""${EVEREST_TARGET}-ar\"" >> ~/.bashrc
echo export AS=\""${EVEREST_TARGET}-as\"" >> ~/.bashrc
echo export LD=\""${EVEREST_TARGET}-ld --sysroot=${EVEREST}/targetfs\"" >> ~/.bashrc
echo export RANLIB=\""${EVEREST_TARGET}-ranlib\"" >> ~/.bashrc
echo export READELF=\""${EVEREST_TARGET}-readelf\"" >> ~/.bashrc
echo export STRIP=\""${EVEREST_TARGET}-strip\"" >> ~/.bashrc
source ~/.bashrc
printf "[ i ] Starting build of system...\n"
sleep 3
printf "[ i ] Creating system directories...\n"
mkdir -pv ${EVEREST}/targetfs/{bin,boot,dev,etc,home,lib/{firmware,modules}}
mkdir -pv ${EVEREST}/targetfs/{mnt,opt,proc,sbin,srv,sys}
mkdir -pv ${EVEREST}/targetfs/var/{cache,lib,local,lock,log,opt,run,spool}
install -dv -m 0750 ${EVEREST}/targetfs/root
install -dv -m 1777 ${EVEREST}/targetfs/{var/,}tmp
mkdir -pv ${EVEREST}/targetfs/usr/{,local/}{bin,include,lib,sbin,share,src}
ln -svf ../proc/mounts ${EVEREST}/targetfs/etc/mtab
cat > ${EVEREST}/targetfs/etc/passwd << "EOF"
root::0:0:root:/root:/bin/ash
EOF
cat > ${CLFS}/targetfs/etc/group << "EOF"
root:x:0:
bin:x:1:
sys:x:2:
kmem:x:3:
tty:x:4:
tape:x:5:
daemon:x:6:
floppy:x:7:
disk:x:8:
lp:x:9:
dialout:x:10:
audio:x:11:
video:x:12:
utmp:x:13:
usb:x:14:
cdrom:x:15:
EOF
touch ${EVEREST}/targetfs/var/log/lastlog
chmod -v 664 ${EVEREST}/targetfs/var/log/lastlog
printf "[ i ] Starting build of >>> libgcc-6.2.0 <<<\n"
cp -v ${EVEREST}/cross-tools/${EVEREST_TARGET}/lib/libgcc_s.so.1 ${EVEREST}/targetfs/lib/
${EVEREST_TARGET}-strip ${EVEREST}/targetfs/lib/libgcc_s.so.1
printf "[ i ] Finished build of >>> libgcc-6.2.0 <<<\n"
sleep 1
printf "[ i ] Starting build of >>> musl-1.1.16 <<<\n"
rm -rf musl-1.1.16
tar -xvf musl-1.1.16.tar.gz
cd musl-1.1.16
./configure \
CROSS_COMPILE=${EVEREST_TARGET}- \
--prefix=/ \
--disable-static \
--target=${EVEREST_TARGET}
make
DESTDIR=${EVEREST}/targetfs make install-libs
cd ..
printf "[ i ] Finished build of >>> musl-1.1.16 <<<\n"
sleep 1
printf "[ i ] Starting build of >>> busybox-1.24.2 <<<\n"
tar -xvf busybox-1.24.2.tar.bz2
cd busybox-1.24.2
make distclean
make ARCH="${EVEREST_ARCH}" defconfig
sed -i 's/\(CONFIG_\)\(.*\)\(INETD\)\(.*\)=y/# \1\2\3\4 is not set/g' .config
sed -i 's/\(CONFIG_IFPLUGD\)=y/# \1 is not set/' .config
sed -i 's/\(CONFIG_FEATURE_WTMP\)=y/# \1 is not set/' .config
sed -i 's/\(CONFIG_FEATURE_UTMP\)=y/# \1 is not set/' .config
sed -i 's/\(CONFIG_UDPSVD\)=y/# \1 is not set/' .config
sed -i 's/\(CONFIG_TCPSVD\)=y/# \1 is not set/' .config
make ARCH="${EVEREST_ARCH}" CROSS_COMPILE="${EVEREST_TARGET}-"
make ARCH="${EVEREST_ARCH}" CROSS_COMPILE="${EVEREST_TARGET}-"\
CONFIG_PREFIX="${EVEREST}/targetfs" install
cp -v examples/depmod.pl ${EVEREST}/cross-tools/bin
chmod -v 755 ${EVEREST}/cross-tools/bin/depmod.pl
cd ..
printf "[ i ] Finished build of >>> busybox-1.24.2 <<<\n"
sleep 1
printf "[ i ] Starting build of >>> iana-etc-2.30 <<<\n"
tar -xvf iana-etc-2.30.tar.bz2
cd iana-etc-2.30
patch -Np1 -i ../iana-etc-2.30-update-2.patch
make get
make STRIP=yes
make DESTFIR=${EVEREST}/targetfs install
printf "[ i ] Finished build of >>> iana-etc-2.30 <<<\n"
sleep 1
printf "[ i ] Finished building system software\n"
sleep 1
printf "[ i ] Creating /etc/fstab...\n"
cat > ${EVEREST}/targetfs/etc/fstab << "EOF"
# file-system mount-point type options dump fsck
EOF
printf "[ i ] Building the Linux kernel...\n"
rm -rf linux-4.9.22
tar -xvf linux-4.9.22.tar.xz
cd linux-4.9.22
make mrproper
printf "[ !!! ] WARNING!!! KERNEL INSTALLATION WILL COMMENCE ONCE MENUCONFIG IS EXITED BY THE USER!!!\n"
wait 5
make ARCH=${EVEREST_ARCH} CROSS_COMPILE=${EVEREST_TARGET}- menuconfig
make ARCH=${EVEREST_ARCH} CROSS_COMPILE=${EVEREST_TARGET}-
make ARCH=${EVEREST_ARCH} CROSS_COMPILE=${EVEREST_TARGET}- \
INSTALL_MOD_PATH=${EVEREST}/targetfs modules_install
printf "[ i ] Finished build of the Linux kernel...\n"
printf "[ i ] NOTE: Bootloader will need to be installed manually by the user (unless utilizing the bootloader of another system)\n"
wait 3
printf "[ i ] Bootstrapping Glacier package management system...\n"

View File

@ -1,17 +0,0 @@
#!/bin/sh
# Settings for the Everest installation
# Variable pointing to the Everest build directory
export EVEREST=/mnt/everest
# Location of the Everest build directory
export EVEREST_BUILD_DIR=/mnt/everest
# Root partition to build the system on
export EVEREST_ROOT=
# Boot partition for the system
export EVEREST_BOOT=
# Shell for the build user
export EVEREST_BUILD_SHELL=/bin/bash

View File

@ -1,151 +0,0 @@
#!/bin/sh
# Everest Linux 1.0.0-busybox - Stage 1 Installation Script
# This program is free software: See the GNU GPL v3.0 for details
printf "=== WELCOME TO EVEREST LINUX! ===\n"
printf "This program will do the following:\n"
sleep 0.2
printf " - Create the necessary directory layout (as defined by the Filesystem Hierarchy Standard)\n"
sleep 0.2
printf " - Load the build settings defined in the 'build-settings' file\n"
sleep 0.2
printf " - Bootstrap the Glacier package manager\n"
sleep 0.2
printf " - Compile Everest Linux v1.0.0-busybox\n"
sleep 0.2
printf "The following settings will be used. If these do not work, alter this script.\n"
sleep 0.2
printf "/mnt/everest - build directory\n"
sleep 0.2
printf "everest - build user\n"
sleep 0.2
printf "/bin/bash - shell for user\n"
sleep 0.2
printf "This script will perform actions that are >>> NOT REVERSIBLE! <<<\n"
sleep 0.2
read -p "Are you sure you want to continue? (y/n) " -n 1 -r
echo # (optional) move to a new line
if [[ $REPLY =~ ^[Yy]$ ]]
then
printf "[!!!] The script will execute in 10"
sleep 0.25
printf "."
sleep 0.25
printf "."
sleep 0.25
printf "."
sleep 0.25
printf "9"
sleep 0.25
printf "."
sleep 0.25
printf "."
sleep 0.25
printf "."
sleep 0.25
printf "8"
sleep 0.25
printf "."
sleep 0.25
printf "."
sleep 0.25
printf "."
sleep 0.25
printf "7"
sleep 0.25
printf "."
sleep 0.25
printf "."
sleep 0.25
printf "."
sleep 0.25
printf "6"
sleep 0.25
printf "."
sleep 0.25
printf "."
sleep 0.25
printf "."
sleep 0.25
printf "5"
sleep 0.25
printf "."
sleep 0.25
printf "."
sleep 0.25
printf "."
sleep 0.25
printf "4"
sleep 0.25
printf "."
sleep 0.25
printf "."
sleep 0.25
printf "."
sleep 0.25
printf "3"
sleep 0.25
printf "."
sleep 0.25
printf "."
sleep 0.25
printf "."
sleep 0.25
printf "2"
sleep 0.25
printf "."
sleep 0.25
printf "."
sleep 0.25
printf "."
sleep 0.25
printf "1"
sleep 0.25
printf "."
sleep 0.25
printf "."
sleep 0.25
printf "."
sleep 0.25
printf "0\n"
printf "[ i ] Loading build-settings file...\n"
./build-settings
printf "[ i ] Creating build directory...\n"
mkdir /mnt/everest # CHANGE THIS IF YOU DO NOT WANT YOUR BUILD DIRECTORY TO BE /mnt/everest
export EVEREST=/mnt/everest
printf "[ i ] Ensuring EVEREST variable is correctly set up... (output should be the path to the build directory)\n"
echo $EVEREST
printf "[ i ] Changing permissions...\n"
chmod 777 /mnt/everest
printf "[ i ] Creating sources directory...\n"
mkdir -pv $EVEREST/sources
printf "[ i ] Downloading packages...\n"
mkdir -pv tempfiles
cd tempfiles
wget --quiet --show-progress http://ftp.gnu.org/gnu/binutils/binutils-2.27.tar.bz2
wget --quiet --show-progress http://busybox.net/downloads/busybox-1.24.2.tar.bz2
wget --quiet --show-progress https://github.com/cross-lfs/bootscripts-embedded/archive/master.tar.gz
wget --quiet --show-progress http://gcc.gnu.org/pub/gcc/releases/gcc-6.2.0/gcc-6.2.0.tar.bz2
wget --quiet --show-progress http://ftp.gnu.org/gnu/gmp/gmp-6.1.1.tar.bz2
wget --quiet --show-progress http://sethwklein.net/iana-etc-2.30.tar.bz2
wget --quiet --show-progress http://www.kernel.org/pub/linux/kernel/v4.x/linux-4.9.22.tar.xz
wget --quiet --show-progress http://ftp.gnu.org/gnu/mpc/mpc-1.0.3.tar.gz
wget --quiet --show-progress http://ftp.gnu.org/gnu/mpfr/mpfr-3.1.4.tar.bz2
wget --quiet --show-progress http://www.musl-libc.org/releases/musl-1.1.16.tar.gz
printf "[ i ] Downloading patches...\n"
wget --quiet --show-progress http://patches.clfs.org/embedded-dev/iana-etc-2.30-update-2.patch
printf "[ i ] Double checking EVEREST variable is correct...\n"
echo $EVEREST
printf "[ i ] Creating user for build...\n"
groupadd everest
useradd -s /bin/bash -g everest -m -k /dev/null everest
printf "[ ? ] Enter a password for the new user:\n"
passwd everest
printf "[ i ] Giving ownership of build directory to the new user...\n"
chown -Rv everest $EVEREST
printf "[ i ] The stage 1 installation has now finished.\n"
#printf "su - everest"
printf "[ i ] Please execute the stage 2 installation.\n"
su - everest
#printf "test"
fi

View File

@ -1 +1 @@
1.0.0-busybox
1.0.0-gnu

View File

@ -1,7 +1,7 @@
NAME="Everest Linux"
PRETTY_NAME="Everest Linux"
ID=everest
BUILD_ID=1.0.0-busybox
BUILD_ID=1.0.0-gnu
ANSI_COLOR=""
HOME_URL="https://everestlinux.org/"
SUPPORT_URL="https://git.everestlinux.org/"

View File

@ -1,6 +0,0 @@
{
"group_name": "everest-base-busybox-musl",
"group_version": "1.0.0-busybox",
"group-description": "The Everest Linux base system",
"incl_pkgs": "binutils 2.27", "busybox 1.24.2", "gcc 6.2.0", "gmp 6.1.1", "iana-etc 2.30", "linux 4.9.22", "linux-headers 4.9.22", "mpc 1.0.3", "mpfr 3.1.4", "musl 1.1.16"
}

View File

@ -0,0 +1,6 @@
{
"group_name": "everest-base-gnu-glibc",
"group_version": "1.0.0-gnu",
"group-description": "The Everest Linux base system",
"incl_pkgs": "acl-2.3.1","attr-2.5.1","autoconf-2.71","automake-1.16.5","bash-5.1.16","
}