diff --git a/css/everest.css b/css/everest.css index e7127d0..62cc599 100644 --- a/css/everest.css +++ b/css/everest.css @@ -45,6 +45,28 @@ html { background-color: #1E1E1E; } +.file { + background-color: #0F0F0F; + border-left-style: solid; + border-left-color: MediumSeaGreen; + border-width: 4px; + border-radius: 2px; + padding: 4px; + width: 50%; + color: white; +} + +fhead { + background-color: #0F0F0F; + border-left-style: solid; + border-left-color: MediumSeaGreen; + border-width: 4px; + border-radius: 2px; + padding: 6px; + width: 50%; + color: MediumSeaGreen; +} + @media screen and (max-height: 450px) { .sidenav {padding-top: 15px;} .sidenav a{font-size: 18px;} @@ -57,7 +79,7 @@ body { code { font-family: monospace; - background-color: black; + background-color: #0F0F0F; border-left-style: solid; border-left-width: 4px; border-radius: 2px; @@ -65,6 +87,22 @@ code { color: #e6e6e6; } +wiki { + border-left-style: solid; + border-left-width: 4px; + border-radius: 2px; + padding: 2px; + border-color: Tomato; +} + +file { + border-style: solid; + border-width: 1px; + border-radius: 2px; + padding: 2px; + border-color: black; +} + h2 { border-left-style: solid; border-color: #4a86e8ff; @@ -94,9 +132,9 @@ p { color: #e6e6e6; } -strong { +/* strong { color: #e6e6e6; -} +} */ i { color: #e6e6e6; diff --git a/install.html.new b/install.html.new index a27a76b..50f88b6 100644 --- a/install.html.new +++ b/install.html.new @@ -86,15 +86,117 @@ (root)# mkfs.ext4 /dev/usr

The EFI system partition (esp) must be formatted as FAT32.

(root)# mkfs.vfat -F32 /dev/boot +

Mount the root partition to the system mountpoint:

+ (root)# mount /dev/root /mnt/everest

Some additional directories may need to be created.

Create extra needed directories:

(root)# mkdir /mnt/everest/boot

(root)# mkdir /mnt/everest/usr +

Mount the remaining partitions:

+ (root)# mount /dev/boot /mnt/everest/boot

- (root)# mkdir /mnt/everest/usr/{bin,sbin,lib,include,local,share,src,man} + (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:

+
    +
  1. Do I need 32 bit libraries?
  2. +
  3. Will I be using proprietary software that cannot be recompiled?
  4. +
  5. Do I require a specific C library for my hardware setup?
  6. +
  7. Do I want to set up NSA Security Enhanced Linux (SELinux)
  8. +
  9. Do I want an init system other than Busybox's built in init configured out of the box?
  10. +
+

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.

+

Download a system image with wget:

+ (user)$ wget https://git.everestlinux.org/EverestLinux/everest/raw/branch/main/releases/SYSTEM_IMAGE.tar.xz +

Unpacking the system image

+

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:

+ (chroot)# echo "export PS1='(chroot) ${PS1}'" >> /etc/profile && source /etc/profile +

Install packages

+

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.

+ See: Introduction to Glacier +

Install the Linux kernel

+

The most important part of the system, the kernel, which allows hardware to communicate with software, is ready to be installed.

+

If needed, merge the linux-firmware package, which provides device firmware:

+ (chroot)# gpkg -f world/linux-firmware +

At this stage, you can decide which kernel you want to install. In Everest's package repository, many prebuilt kernels are available, as well as the

+

source code, should you wish to compile your own.

+

Option 1: Custom kernel

+

Compiling a custom kernel is the recommended option for most users, as it allows the most control.

+

Download the kernel's source tree:

+ (chroot)# gpkg -f world/linux +

The source tree will be located under /usr/src/linux.

+

Inside /usr/src/linux, ensure the source tree is completely clean by running the following:

+ (chroot)# make mrproper +

The kernel must be configured before it is compiled. Recommended options are not provided - it is up to you to configure the kernel for your setup.

+

Configure the kernel:

+ (chroot)# export EVEREST_ARCH="$(echo $MACHTYPE)"

- (root)# mkdir /mnt/everest/usr/local/{bin,etc,include,lib,man,sbin,share,src} -

If on an x86_64 system, create a symlink to /usr/lib:

- (root)# ln -sv /mnt/everest/usr/lib /mnt/everest/usr/lib64 + (chroot)# ARCH=$EVEREST_ARCH make defconfig +

+ (chroot)# ARCH=$EVEREST_ARCH make menuconfig +

Once the kernel is configured, compile it:

+ (chroot)# make && make modules install +

Option 2: Distribution kernel

+

For those who do not wish to configure a custom kernel, or likewise do not have the time or system resources to do so, a distribution kernel

+

provides a binary kernel. However, there are a couple of pitfalls to this option:

+
    +
  1. Distribution kernels are not fine tuned to your system, they are generic and bloated
  2. +
  3. Distribution kernels are managed by their respective development teams, who must be relied upon for fixes
  4. +
  5. Distribution kernels deprive the user of the experience gained by configuring and compiling a custom kernel
  6. +
+

Everest offers many distribution kernels, some notable ones include:

+
    +
  1. linux-everest
  2. +
  3. linux-zen
  4. +
  5. linux-hardened
  6. +
+

Install a distribution kernel:

+ (chroot)# gpkg -f world/linux-{everest,zen,hardened} +

Build an initramfs

+

Depending on your system, an initramfs may be required. For example, users of distribution kernels will ALWAYS need to build an initramfs,

+

while those who configured and compiled their own will usually not need one.

+

To build an initramfs, you will need dracut. Install dracut:

+ (chroot)# gpkg -f world/dracut +

Build an initramfs:

+ (chroot)# dracut +

Configure the system

+

Now that the kernel is installed, various other parts of the system should be configured.

+

Create /etc/fstab, which provides the system with information about mounted filesystems.

+

For example, on a system with a root, /usr, and boot partition, /etc/fstab will look like this:

+ FILE: /etc/fstab +
+

/dev/sda1 / ext4 noatime 0 1

+

/dev/sda2 /usr ext4 noatime 0 1

+

/dev/sda3 /boot vfat defaults,noatime 0 2 +

+

System services that some may find helpful, such as a cron daemon or logging daemon, should be set up now.

+

On systems using systemd:

+ (chroot)# systemctl enable cronie chronyd sysklogd +

On systems without a service manager, all services under /etc/init.d will be initialied by rcS.

+

The system's timezone is read from /etc/localtime, which is a symlink.

+

In case timezone information is missing from /usr/share/zoneinfo, install it:

+ (chroot)# gpkg -f world/tzdata +

Create /etc/localtime:

+ (chroot)# ln -sv /usr/share/zoneinfo/Region/City /etc/localtime +