- Home
- About
- Handbook
- Packages
- Downloads
- Git

# Installation Handbook

This guide goes into detail on how to install Everest.

## Prerequisites

There are 2 officially supported ways of installing Everest, systemd/glibc/GNU or init/musl/busybox. This guide covers the init/musl/busybox installation as it recieves the most support and is the intended way. For the GNU installation, it may be a good idea to read the Linux from Scratch wiki.

For highly customized installations (such as a custom init), it is recommended to know exactly what you're doing.

Everest may be installed through 2 methods:

- ISO: can be flashed to a usb and booted

- rootfs tarball (RECOMMENDED): unpacked to a directory (usually /mnt) and instaled through an existing distribution.

Note that no matter what option you choose, you will need the rootfs tarball.

Commands prefixed with `(user)$` should be run as the normal user.

Commands prefixed with `(root)#` should be run as the root user.

Commands prefixed with `(chroot)$` should be run as the normal user inside the chroot environment.

Commands prefixed with `(chroot)#` should be run as the root user inside the chroot environment.

This guide assumes your system has access to the internet. There are no tools for configuring the network in the iso. Use of a hardwired ethernet connection is recommended.

## Setup the environment

Obtain the ELIF source tree. This is required for the initial setup.

`(user)$ git clone https://git.everestlinux.org/EverestLinux/elif` `(user)$ cd elif`

Run the setup script, defining your intended method of install.

`(root)# elif setup live` `(root)# elif setup tar`

A new file will be created, called `build.conf`.Edit this file and change any settings you wish.

Once you are happy with your configuration, run the build script.

`(user)# elif build`

This will set up a partial Everest installation at your specified mountpoint.

Chroot into the new installation.

`(root)# chroot /mnt/everest`

## Install the kernel

Download the kernel source tree to the Glacier cache.

`(chroot)# glacier -c linux`

Move the source tree to its correct location.

`(chroot)# cd /var/cache/glacier` `(chroot)# mv linux.tar.gz /usr/src` `(chroot)# cd /usr/src` `(chroot)# mkdir linux` `(chroot)# mv linux.tar.gz linux` `(chroot)# cd linux`

Unpack the tarball.

`(chroot)# tar -xvf linux.tar.gz`

Ensure the source tree is clean.

`(chroot)# make mrproper`

Configure the kernel.

`(chroot)# ./autobuild.sh`

OR

`(chroot)# make menuconfig`

Build the kernel and modules.

`(chroot)# make && make modules_install`

Copy the kernel image to /boot.

`(chroot)# make install`

Build an initramfs.

`(chroot)# glacier -f dracut` `(chroot)# dracut`

## Configure the system

The following system daemons are recommended to install:

- system logger (sysklogd, syslog-ng, etc)

- cron daemon (cronie)

- ssh daemon (sshd)

- time sync (chrony)

In this example, we will be installing all of these.

Install the packages.

`(chroot)# glacier -f sysklogd` `(chroot)# glacier -f cronie` `(chroot)# glacier -f chrony`

Start the services.

On busybox init:`(chroot)# esv start sysklogd && esv start cronie && esv start chronyd`

On systemd:`(chroot)# systemctl enable sysklogd cronie chronyd`