This is the official installation guide for Everest Linux.
-
Using unofficial guides is not recommended as they may be
-
out of date.
-
Simply following this guide blindly is a great way to end up
-
with a broken installation. Ensure you have a rough idea of
-
what each command does.
-
If you need assistance, reach out on IRC (#everestlinux) or Discord.
+
This guide is the official installation handbook for Everest Linux.
+ WARNING:
+
+
Using unofficial guides is not recommended, as they may be outdated, or unreliable. The official guide is located at https://www.everestlinux.org/install.
+
+
+ WARNING:
+
+
Simply copy and pasting commands from this guide won't cut it, and you'll most likely end up with a broken installation. Ensure you know what each command does.
+
+
+ WARNING:
+
+
Everest is not for the faint of heart. If you have never touched Linux in your life, Everest is most certainly not for you. Check out https://linuxmint.com if you want a great Linux experience that works out of the box.
+
+
+ WARNING:
+
+
Everest at its current state is highly experimental. Install at your own risk.
+
+
If you need assistance, reach out to us on IRC (libera.chat, #everestlinux) or Discord.
Prerequisites
-
The following steps will be used to complete the installation:
-
- Set up the environment
-
- Download the Everest Linux system image
-
- Unpack the system image
-
- Chroot into the new system
-
- Install desired programs
-
- Install the Linux kernel
-
- Set up init scripts/services
-
- Reboot the system
- Note: Everest is highly flexible.
- If you are changing anything in this guide, it is assumed
- you know exactly what to do.
-
Run (user)$ commands as an unprivileged user.
-
Run (root)# commands as the root user.
-
Run (chroot)# commands inside the chroot environment.
+
The following steps are required to complete an installation:
+
+
Set up the build environment
+
Download a system image
+
Unpack the system image
+
Change root into the new system
+
Install programs
+
Install the Linux kernel
+
Set up init scripts and services
+
Install the bootloader
+
Reboot the system
+
+ Note that Everest is highly flexible. That being said, it is up to you to make modifications yourself.
+
Run commands prefixed with (user)$ as an unprivileged user.
+
Run commands prefixed with (root)# as the root user.
+
Run commands prefixed with (chroot)# inside the chroot environment.
Set up the environment
-
Our environment needs to be set up correctly for the installation.
-
Create the system mountpoint:
+
Everest needs a proper environment set up in order to install correctly.
+
A system mountpoint is where the new system's root (/) will be. Where you put this doesn't matter, as the host system used to build the system won't be included
+
in the final installation. In this example, we will use /mnt/everest.
+
Create a system mountpoint:
(root)# mkdir -pv /mnt/everest
-
Although it may not be used, assign the system mountpoint a variable:
- (root)# export SYS_MNT=/mnt/everest
-
Partition your drive:
+
A variable pointing to the system mountpoint may be useful in the future, as it will save you a bit of typing.
+
Create a variable for the system mountpoint:
+ (root)# SYS_MNT=/mnt/everest
+
Partitions must be created on the drive you wish to install Everest to. The typical partition layout on an Everest system may differ from othet distributions.
+
The typical layout is:
+
+
+
Mount point
+
Type
+
Suggested size
+
+
+
/mnt/everest/boot
+
EFI system partition (esp)
+
No smaller than 256 MB, no larger than 1 GB
+
+
+
/mnt/everest/usr
+
/usr
+
No smaller than 25 GB
+
+
+
/mnt/everest
+
Root filesystem
+
Remainder of the drive
+
+
+
Partition the target drive:
(root)# cfdisk /dev/sdX
+
A valid filesystem is required on the drive.
+
Most filesystems should work, however ensure the system has the corresponding package for whatever filesystem you choose.
+
For example, if XFS is used, when installing the system:
+ (root)# mount /dev/boot /mnt/everest/boot
+
+ (root)# mount /dev/usr /mnt/everest/usr
+
Create remaining directories on /usr with mkusrskel:
+ (root)# mkusrskel -d /mnt/everest/usr
+
Downloading a system image
+
An Everest system image provides an incomplete root filesystem which users can build a system off of. Users should be careful of which
+
image they choose, as switching in the future is trivial, time consuming, and requires rebuilding a lot of packages. It's a lot better
+
to get it right the first time, rather than trying to get it right later.
+
Do some thorough planning to ensure you get the right system image. For instance, ask yourself a few questions, such as:
+
+
Do I need 32 bit libraries?
+
Will I be using proprietary software that cannot be recompiled?
+
Do I require a specific C library for my hardware setup?
+
Do I want to set up NSA Security Enhanced Linux (SELinux)
+
Do I want an init system other than Busybox's built in init configured out of the box?
+
+
Downloading a system image that is severely out of date is not recommended. Many programs, such as the kernel or SSL library will be vulnerable to attacks.
Ensure the system image is located under the system mountpoint.
-
Note that a simple tar -xvf will cause errors with
-
permissions. Therefore, a few extra flags are needed.
+
Now that a system image has been downloaded, we can unpack it.
+
Ensure the system image is inside the system mountpoint, otherwise you may run into trouble.
+
Since a Linux root filesystem is complex, and many different files need to be owned by certain users, or have certain permissions, simply running `tar xf` will
+
result in a broken image. A couple extra flags are needed to preserve these permissions in the unpacked image.
Unpack the system image:
(root)# tar -xpvf SYSTEM_IMAGE --xattrs-include='*.*' --numeric-owner
-
This will ensure all file ownership is compliant.
-
Chrooting into the new installation
-
The system is in a partially working state.
-
If we were to call it a day and reboot now, it wouldn't be possible.
-
Many critical parts of the system are missing, including the
-
bootloader and kernel. Chrooting allows us to make modifications
-
to the target system, without actually booting into it.
-
Before chrooting, additional filesystems must be mounted.
-
Mount these filesystems:
- (root)# mount --types proc /proc /mnt/everest/proc
-
- (root)# mount --rbind /sys /mnt/everest/sys
-
- (root)# mount --make-rslave /mnt/everest/sys
-
- (root)# mount --rbind /dev/ /mnt/everest/dev
-
- (root)# mount --make-rslave /mnt/everest/dev
-
- (root)# mount --bind /run /mnt/everest/run
-
- (root)# mount --make-slave /mnt/everest/run
-
programs assume the system is installed, so use caution.
+
If this command was run correctly, you shouldn't need to edit any permissions manually.
+
Chrooting into the system mountpoint
+
Although we have a relatively complete root filesystem at this point, many essential programs are still missing. These include the kernel and bootloader. Without these,
+
the system is unable to boot. At this point, we must chroot into the new system. This will allow us to complete the system without booting.
+
Chroot into the new system:
+ (root)# everest-chroot /mnt/everest
+
Change the shell prompt to differentiate the two environments:
Any programs you wish to install, such as display servers, login managers, and desktop environments, should be installed now. The kernel can take multiple
+
hours to compile on some hardware.
+
Glacier manages packages on the system, and it allows users to install, or 'merge' their own. It is recommended to get familiar with this system.
The hostname assigns a name to the system. This can be changed at any time.
+
Set the hostname:
+ (chroot)# echo hostname > /etc/hostname
+
Or, on systemd:
+ (chroot)# hostnamectl hostname hostname
+
A network connection is very important, and there are multiple ways to set one up.
+ WARNING:
+
+
Ensure your network is fully set up before proceeding with any other steps. It's better to get it right the first time, rather than trying to fix it later.
+
+
First, ensure the desired network interface is not blocked by rfkill:
+ (chroot)# rfkill
+
If the network interface is blocked:
+ (chroot)# rfkill unblock interface
+
The network can now be configured.
+
Option 1: Busybox networking
+
Busybox includes networking tools that can quickly configure the network.
+
On a busybox system, the network can be set up with one simple command:
+ (chroot)# ifup
+
rcS will also run this command at boot time.
+
Option 2: dhcpcd and wpa_supplicant
+
On systems without Busybox, dhcpcd can be used. This is another very simple solution.
+
Install dhcpcd:
+ (chroot)# gpkg -f world/dhcpcd
+
Install wpa_supplicant:
+ (chroot)# gpkg -f world/wpa_supplicant
+
rcS will start dhcpcd at boot time.
+
Option 3: NetworkManager
+
NetworkManager is recommended on systems using systemd as the init system.
+
NetworkManager should be fairly easy and straightforward to set up for most.
Every component of the system has been configured, and we can now
-
boot into it.
-
Exit the chroot environment:
+
Now that the system is correctly configured and the kernel is installed, the final step can proceed - installing the bootloader. Without a bootloader, the system
+
will be unable to load the Linux kernel upon boot. This guide only mentions GRUB, however note that other bootloaders are supported.
This guide is the official installation handbook for Everest Linux.
-
Using unofficial guides is not recommended, as they may be outdated, or unreliable. The official guide is located at https://www.everestlinux.org/install.
-
Simply copy and pasting commands from this guide won't cut it, and you'll most likely end up with a broken installation. Ensure you know what each command does.
-
If you need assistance, reach out to us on IRC (libera.chat, #everestlinux) or Discord.
-
Prerequisites
-
The following steps are required to complete an installation:
-
-
Set up the build environment
-
Download a system image
-
Unpack the system image
-
Change root into the new system
-
Install programs
-
Install the Linux kernel
-
Set up init scripts and services
-
Install the bootloader
-
Reboot the system
-
- Note that Everest is highly flexible. That being said, it is up to you to make modifications yourself.
-
Run commands prefixed with (user)$ as an unprivileged user.
-
Run commands prefixed with (root)# as the root user.
-
Run commands prefixed with (chroot)# inside the chroot environment.
-
Set up the environment
-
Everest needs a proper environment set up in order to install correctly.
-
A system mountpoint is where the new system's root (/) will be. Where you put this doesn't matter, as the host system used to build the system won't be included
-
in the final installation. In this example, we will use /mnt/everest.
-
Create a system mountpoint:
- (root)# mkdir -pv /mnt/everest
-
A variable pointing to the system mountpoint may be useful in the future, as it will save you a bit of typing.
-
Create a variable for the system mountpoint:
- (root)# SYS_MNT=/mnt/everest
-
Partitions must be created on the drive you wish to install Everest to. The typical partition layout on an Everest system may differ from othet distributions.
-
The typical layout is:
-
-
-
Mount point
-
Type
-
Suggested size
-
-
-
/mnt/everest/boot
-
EFI system partition (esp)
-
No smaller than 256 MB, no larger than 1 GB
-
-
-
/mnt/everest/usr
-
/usr
-
No smaller than 25 GB
-
-
-
/mnt/everest
-
Root filesystem
-
Remainder of the drive
-
-
-
Partition the target drive:
- (root)# cfdisk /dev/sdX
-
A valid filesystem is required on the drive.
-
Most filesystems should work, however ensure the system has the corresponding package for whatever filesystem you choose.
-
For example, if XFS is used, when installing the system:
- (root)# mount /dev/boot /mnt/everest/boot
-
- (root)# mount /dev/usr /mnt/everest/usr
-
Create remaining directories on /usr with mkusrskel:
- (root)# mkusrskel -d /mnt/everest/usr
-
Downloading a system image
-
An Everest system image provides an incomplete root filesystem which users can build a system off of. Users should be careful of which
-
image they choose, as switching in the future is trivial, time consuming, and requires rebuilding a lot of packages. It's a lot better
-
to get it right the first time, rather than trying to get it right later.
-
Do some thorough planning to ensure you get the right system image. For instance, ask yourself a few questions, such as:
-
-
Do I need 32 bit libraries?
-
Will I be using proprietary software that cannot be recompiled?
-
Do I require a specific C library for my hardware setup?
-
Do I want to set up NSA Security Enhanced Linux (SELinux)
-
Do I want an init system other than Busybox's built in init configured out of the box?
-
-
Downloading a system image that is severely out of date is not recommended. Many programs, such as the kernel or SSL library will be vulnerable to attacks.
Now that a system image has been downloaded, we can unpack it.
-
Ensure the system image is inside the system mountpoint, otherwise you may run into trouble.
-
Since a Linux root filesystem is complex, and many different files need to be owned by certain users, or have certain permissions, simply running `tar xf` will
-
result in a broken image. A couple extra flags are needed to preserve these permissions in the unpacked image.
-
Unpack the system image:
- (root)# tar -xpvf SYSTEM_IMAGE --xattrs-include='*.*' --numeric-owner
-
If this command was run correctly, you shouldn't need to edit any permissions manually.
-
Chrooting into the system mountpoint
-
Although we have a relatively complete root filesystem at this point, many essential programs are still missing. These include the kernel and bootloader. Without these,
-
the system is unable to boot. At this point, we must chroot into the new system. This will allow us to complete the system without booting.
-
Chroot into the new system:
- (root)# everest-chroot /mnt/everest
-
Change the shell prompt to differentiate the two environments:
Any programs you wish to install, such as display servers, login managers, and desktop environments, should be installed now. The kernel can take multiple
-
hours to compile on some hardware.
-
Glacier manages packages on the system, and it allows users to install, or 'merge' their own. It is recommended to get familiar with this system.