everest-web/install.html
2024-09-17 09:44:39 -04:00

372 lines
23 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Everest Linux - Install</title>
<link type="text/css" rel="stylesheet" href="css/nord.css"/>
<link rel="icon" type="image/x-icon" href="img/favicon.svg"/>
</head>
<body>
<!-- Navbar -->
<div class="sidenav">
<img src="img/everest-nord.svg" alt="everest-logo">
<a href="index.html">Home</a>
<a href="about.html">About</a>
<a href="install.html">Install</a>
<a href="packages.html">Packages</a>
<a href="download.html">Downloads</a>
<a href="docs/home.html">Docs</a>
<a href="errata.html">Errata</a>
<a href="https://git.everestlinux.org">Git ↗</a>
</div>
<!-- Rest of page -->
<div class="hero-image">
<div class="hero-text">
<h1>Install</h1>
</div>
</div>
<div class="main">
<h2>Installation Handbook</h2>
<p>This guide is the official installation handbook for Everest Linux.</p>
<warnhead><strong>PRELIMINARY WARNINGS:</strong></warnhead>
<div class="warning">
<p><strong>WARNING 1:</strong> Using unofficial guides is not recommended, as they may be outdated, or unreliable. The official guide is located at https://www.everestlinux.org/install.</p>
<p><strong>WARNING 2:</strong> Simply copy and pasting commands from this guide won't cut it, and you'll likely end up with a broken installation. Ensure you know what each command does, and how to tailor it to your system, if necessary.</p>
<p><strong>WARNING 3:</strong> Everest is not for the faint of heart. There is absolutely no hand holding provided, you are on your own. If you have never touched Linux in your life, Everest is most certainly not for you. There are many distributions which provide a much better user experience for those new to Linux, we personally recommend Linux Mint.</p>
<p><strong>WARNING 4:</strong> Everest in its current state is highly experimental. Install at your own risk.</p>
</div>
<p>If you need assistance, reach out to us on IRC (libera.chat, #everestlinux) or Discord.</p>
<h2>Prerequisites</h2>
<p>The following steps are required to complete an installation:</p>
<ol>
<li>Set up the build environment</li>
<li>Download a system image</li>
<li>Unpack the system image</li>
<li>Change root into the new system</li>
<li>Set up the Glacier system profile and package index</li>
<li>Install programs</li>
<li>Install the Linux kernel</li>
<li>Set up init scripts and services</li>
<li>Install the bootloader</li>
<li>Reboot the system</li>
</ol>
<i>Note that Everest is highly flexible. That being said, it is up to you to make modifications yourself.</i>
<p>Run commands prefixed with <code>(user)$</code> as an unprivileged user.</p>
<p>Run commands prefixed with <code>(root)#</code> as the root user.</p>
<p>Run commands prefixed with <code>(chroot)#</code> inside the chroot environment.</p>
<h2>Set up the environment</h2>
<p>On the host system being used to install Everest, a properly set up environment containing certain programs and directories must be set up to ensure the installation can take place. This section will go into detail on how to set up this environment.</p>
<p>A system mountpoint is where the new system's root (<cil>/</cil>) 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 <cil>/mnt/everest</cil>.</p>
<p>Create a system mountpoint:</p>
<code>(root)# mkdir -pv /mnt/everest</code>
<p>A variable pointing to the system mountpoint may be useful in the future, as it will save you a bit of typing.</p>
<p>Create a variable for the system mountpoint:</p>
<code>(root)# SYS_MNT=/mnt/everest</code>
<p>Partitions must be created on the drive you wish to install Everest to. The typical partition layout on an Everest system may differ from other distributions.</p>
<p>The typical layout is:</p>
<table>
<tr>
<th>Mount point</th>
<th>Type</th>
<th>Suggested size</th>
</tr>
<tr>
<td>/mnt/everest/boot</td>
<td>EFI system partition (esp)</td>
<td>No smaller than 256 MB, no larger than 1 GB (minimum 1 GB if installing multiple kernels)</td>
</tr>
<tr>
<td>/mnt/everest/usr</td>
<td>User partition</td>
<td>No smaller than 25 GB, recommended size varies.</td>
</tr>
<tr>
<td>/mnt/everest/home</td>
<td>Home partition</td>
<td>It depends</td>
</tr>
<tr>
<td>/mnt/everest</td>
<td>Root filesystem</td>
<td>Remainder of the drive</td>
</tr>
</table>
<p>Partition the target drive:</p>
<code>(root)# cfdisk /dev/sdX</code>
<p>A valid filesystem is required on the drive.</p>
<p>Most filesystems should work, however ensure the system has the corresponding package for whatever filesystem you choose.</p>
<p>For example, if XFS is used, when installing the system:</p>
<code>(chroot)# gpkg -f xfsprogs</code>
<p></p>
<cautionhead><strong>CAUTION:</strong></cautionhead>
<div class="caution">
<p>Zfs is not officially supported by Everest, and requires a lot of configuration to work properly. Use Zfs at your own risk.</p>
<p>This stance may change at a later date, however currently there is no official Everest documentation for setting up Zfs.</p>
</div>
<p>In this example, Ext4 will be used.</p>
<p>Create a filesystem:</p>
<code>(root)# mkfs.ext4 /dev/root</code>
<p></p>
<code>(root)# mkfs.ext4 /dev/usr</code>
<p>The EFI system partition (esp) must be formatted as FAT32.</p>
<code>(root)# mkfs.vfat -F32 /dev/boot</code>
<p>Mount the root partition to the system mountpoint:</p>
<code>(root)# mount /dev/root /mnt/everest</code>
<p>Some additional directories may need to be created.</p>
<p>Create extra needed directories:</p>
<code>(root)# mkdir /mnt/everest/boot</code>
<p></p>
<code>(root)# mkdir /mnt/everest/usr</code>
<p>Mount the remaining partitions:</p>
<code>(root)# mount /dev/boot /mnt/everest/boot</code>
<p></p>
<code>(root)# mount /dev/usr /mnt/everest/usr</code>
<p>Create remaining directories on /usr with mkusrskel:</p>
<code>(root)# mkusrskel -d /mnt/everest/usr</code>
<h2>Downloading a system image</h2>
<p>An Everest system image provides an incomplete root filesystem which users can build a system off of. This includes system programs, libraries, Glacier, among others. Users should be careful of which image they choose, as switching in the future is arduous, time consuming, and requires rebuilding a lot of packages.</p>
<p>It's a lot better to get it right the first time, rather than trying to get it right later.</p>
<p>Do some thorough planning to ensure you get the right system image. For instance, ask yourself a few questions, such as:</p>
<ol>
<li>Do I need 32 bit libraries?</li>
<li>Will I be using proprietary software that cannot be recompiled?</li>
<li>Do I require a specific C library for my hardware setup?</li>
<li>Do I want to set up NSA Security Enhanced Linux (SELinux)</li>
<li>Do I want an init system other than Busybox's built in init configured out of the box?</li>
</ol>
<notehead><strong>NOTE:</strong></notehead>
<div class="note">
<p>Make sure you're happy with the system image you choose. While migrating in the future is possible, it requires rebuilding the majority of the system, takes a substantial amount of time, and may present other issues.</p>
</div>
<p></p>
<warnhead><strong>WARNING:</strong></warnhead>
<div class="warning">
<p>As a beginner, under NO CIRCUMSTANCES should you use a system image omitting 32 bit libraries unless it is ABSOLUTELY NECESSARY.</p>
</div>
<p>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.</p>
<p>Download a system image with wget:</p>
<code>(user)$ wget https://git.everestlinux.org/EverestLinux/everest/raw/branch/main/releases/SYSTEM_IMAGE.tar.xz</code>
<h2>Unpacking the system image</h2>
<p>Now that a system image has been downloaded, we can unpack it.</p>
<p>Ensure the system image is inside the system mountpoint, otherwise you may run into trouble.</p>
<p>Since a Linux root filesystem is complex, and many different files need to be owned by certain users, or have certain permissions, simply running <cil>tar xf</cil> will result in a broken image, as the proper permissions are not carried over. A couple extra flags are needed to preserve these permissions in the unpacked image.</p>
<p>Unpack the system image:</p>
<code>(root)# tar -xpvf SYSTEM_IMAGE --xattrs-include='*.*' --numeric-owner</code>
<p>If this command was run correctly, you shouldn't need to edit any permissions manually.</p>
<p>In case permissions were changed, you can use the <cil>prep</cil> command from <cil>everest-build-tools</cil>.</p>
<cautionhead><strong>CAUTION:</strong></cautionhead>
<div class="caution">
<p>Caution should be exercised when running <cil-inv>prep</cil-inv> as it can mess with permissions already existing on the system.</p>
</div>
<h2>Chrooting into the system mountpoint</h2>
<p>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's build process without booting into it.</p>
<p>Chroot into the new system:</p>
<code>(root)# everest-chroot /mnt/everest</code>
<p>Change the shell prompt to differentiate the two environments:</p>
<code>(chroot)# echo "export PS1='(chroot) ${PS1}'" &gt;&gt; /etc/profile && source /etc/profile</code>
<h2>Install packages</h2>
<p>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.</p>
<p>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.</p>
<wikihead><strong>WIKI</strong>: <a href="https://git.everestlinux.org/EverestLinux/wiki/wiki/Introduction-to-Glacier">Introduction to Glacier</a></wikihead>
<p>Glacier may not function correctly if the package database has not been downloaded. If <cil>gpkg</cil> outputs the following error: <cil>[x] Local package database does not exist.</cil>, run:</p>
<p><code>(chroot)# glacier-update-pkgdb</code></p>
<h2>Install the Linux kernel</h2>
<p>The most important part of the system, the kernel, which allows hardware to communicate with software, is ready to be installed.</p>
<p>If needed, merge the linux-firmware package, which provides device firmware:</p>
<code>(chroot)# gpkg -f linux-firmware</code>
<p>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.</p>
<p><strong>Option 1: Custom kernel</strong></p>
<p>Compiling a custom kernel is the recommended option for most users, as it allows the most control over what exactly is installed on your system.</p>
<p>Download the kernel's source tree:</p>
<code>(chroot)# gpkg -f linux</code>
<p>The source tree will be located under /usr/src/linux.</p>
<p>Inside /usr/src/linux, ensure the source tree is completely clean by running the following:</p>
<code>(chroot)# make mrproper</code>
<p>The kernel must be configured before it is compiled.</p>
<p> Users installing systemd should enable IPv6 in the kernel configuration:</p>
<khead><strong>KERNEL: </strong> Enbable support for IPv6</khead>
<div class="kernel">
<p>Networking support ---></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Networking options ---></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;*&gt; The IPv6 protocol [CONFIG_IPV6]</p>
</div>
<p> Recommended options are not provided - it is up to you to configure the kernel for your setup.</p>
<p>Configure the kernel:</p>
<code>(chroot)# export EVEREST_ARCH="$(echo $MACHTYPE)"</code>
<p></p>
<code>(chroot)# ARCH=$EVEREST_ARCH make defconfig</code>
<p></p>
<code>(chroot)# ARCH=$EVEREST_ARCH make menuconfig</code>
<p>Once the kernel is configured, compile it:</p>
<code>(chroot)# make && make modules install</code>
<p><strong>Option 2: Distribution kernel</strong></p>
<p>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:</p>
<ol>
<li>Distribution kernels are not fine tuned to your system, they are generic and bloated</li>
<li>Distribution kernels are managed by their respective development teams, who must be relied upon for fixes</li>
<li>Distribution kernels deprive the user of the experience gained by configuring and compiling a custom kernel</li>
</ol>
<p>Everest offers many distribution kernels, some notable ones include:</p>
<ol>
<li>linux-everest</li>
<li>linux-zen</li>
<li>linux-hardened</li>
</ol>
<p>Install a distribution kernel:</p>
<code>(chroot)# gpkg -f world/linux-{everest,zen,hardened}</code>
<h2>Build an initramfs</h2>
<p>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.</p>
<p>To build an initramfs, you will need dracut. Install dracut:</p>
<code>(chroot)# gpkg -f world/dracut</code>
<p>Build an initramfs:</p>
<code>(chroot)# dracut</code>
<h2>Configure the system</h2>
<p>Now that the kernel is installed, various other parts of the system should be configured.</p>
<p>Create /etc/fstab, which provides the system with information about mounted filesystems.</p>
<p>For example, on a system with a root, /usr, and boot partition, /etc/fstab will look like this:</p>
<fhead><strong>FILE:</strong> /etc/fstab</fhead>
<div class="file">
<p>/dev/sda1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ext4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;noatime&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 1</p>
<p>/dev/sda2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/usr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ext4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;noatime&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 1</p>
<p>/dev/sda3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/boot&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vfat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;defaults,noatime&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 2</p>
</div>
<p>System services that some may find helpful, such as a cron daemon or logging daemon, should be set up now.</p>
<p>On systems using systemd:</p>
<code>(chroot)# systemctl enable cronie chronyd sysklogd</code>
<p>On systems without a service manager, all services under /etc/init.d will be initialied by rcS.</p>
<p>The system's timezone is read from /etc/localtime, which is a symlink.</p>
<p>In case timezone information is missing from /usr/share/zoneinfo, install it:</p>
<code>(chroot)# gpkg -f world/tzdata</code>
<p>Create /etc/localtime:</p>
<code>(chroot)# ln -sv /usr/share/zoneinfo/<i>Region</i>/<i>City</i> /etc/localtime</code>
<p>The hostname assigns a name to the system. This can be changed at any time.</p>
<p>Set the hostname:</p>
<code>(chroot)# echo <i>hostname</i> > /etc/hostname</code>
<p>Or, on systemd:</p>
<code>(chroot)# hostnamectl hostname <i>hostname</i></code>
<p>A network connection is very important, and there are multiple ways to set one up.</p>
<cautionhead><strong>CAUTION:</strong></cautionhead>
<div class="caution">
<p>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.</p>
</div>
<p>First, ensure the desired network interface is not blocked by rfkill:</p>
<code>(chroot)# rfkill</code>
<p>If the network interface is blocked:</p>
<code>(chroot)# rfkill unblock <i>interface</i></code>
<p>The network can now be configured.</p>
<p><strong>Option 1: Busybox networking</strong></p>
<p>Busybox includes networking tools that can quickly configure the network.</p>
<p>On a busybox system, the network can be set up with one simple command:</p>
<code>(chroot)# ifup</code>
<p>rcS will also run this command at boot time.</p>
<p><strong>Option 2: dhcpcd and wpa_supplicant</strong></p>
<p>On systems without Busybox, dhcpcd can be used. This is another very simple solution.</p>
<p>Install dhcpcd:</p>
<code>(chroot)# gpkg -f world/dhcpcd</code>
<p>Install wpa_supplicant:</p>
<code>(chroot)# gpkg -f world/wpa_supplicant</code>
<p>rcS will start dhcpcd at boot time.</p>
<p><strong>Option 3: NetworkManager</strong></p>
<p>NetworkManager is recommended on systems using systemd as the init system.</p>
<p>NetworkManager should be fairly easy and straightforward to set up for most.</p>
<p>Install NetworkManager:</p>
<code>(chroot)# gpkg -f world/networkmanager</code>
<p>Enable and start NetworkManager:</p>
<code>(chroot)# systemctl enable --now NetworkManager</code>
<p>The /etc/hosts file is used to resolve IP addresses not resolved by the DHCP server.</p>
<fhead><strong>FILE:</strong> /etc/hosts</fhead>
<div class="file">
<p>127.0.0.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;localhost</p>
<p>::1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;localhost</p>
<p>127.0.1.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;localdomain <i>hostname</i></p>
</div>
<p>The root password is extremely important, as it controls access to the root user, the most powerful user on the system.</p>
<p>Ensure your chosen root password is strong enough where it cannot be guessed easily.</p>
<p>Set the root password:</p>
<code>(chroot)# passwd</code>
<p>If remote access is desired on the system, install sshd:</p>
<code>(chroot)# gpkg -f world/sshd</code>
<p>Using the root account for daily use is not recommended. Create an unprivileged user:</p>
<code>(chroot)# adduser USERNAME</code>
<p>A privilege elevation program is recommended for most users. The most popular choices are sudo and doas, with doas being recommended for most users.</p>
<p>Install doas:</p>
<code>(chroot)# gpkg -f world/doas</code>
<p>Create /etc/doas.conf:</p>
<fhead><strong>FILE:</strong> /etc/doas.conf</fhead>
<div class="file">
<p>permit USER as root</p>
</div>
<h2>Configure the bootloader</h2>
<p>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.</p>
<p>This guide only mentions GRUB, however note that other bootloaders are supported.</p>
<p>The GRUB package for certain system profiles compiles BIOS AND UEFI support. If you wish to remove UEFI support, you will have to manually patch the package file.</p>
<p>Unless you are using some obscure system profile, or simply want to make your system as small as possible, you definitely will not have to worry about this.</p>
<wikihead><strong>WIKI</strong>: <a href="https://git.everestlinux.org/EverestLinux/wiki/wiki/Introduction-to-Glacier">Introduction to Glacier</a></wikihead>
<p>Merge <cil>grub</cil>:</p>
<code>(chroot)# gpkg -f grub</code>
<p>Install GRUB for BIOS:</p>
<code>(chroot)# grub-install /dev/sda</code>
<p>If configuring GRUB to boot with UEFI, a few extra things need to be configured.</p>
<p>The following kernel options need to be configured in order to support UEFI:</p>
<khead><strong>KERNEL:</strong> Enable UEFI support</khead>
<div class="kernel">
<p>Processor type and features ---&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[*] EFI runtime service support</p>
<p></p>
<p>-*- Enable the block layer ---&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Partition Types ---&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[ /*] Advanced partition selection</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[*] EFI GUID Partition support</p>
<p></p>
<p>Device Drivers ---&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Firmware Drivers ---&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[*] Mark VGA/VBE/EFI FB as generic system framebuffer</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Graphics Support ---&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;*&gt; Direct Rendering Manager (Xfree86 4.1.0 and higher DRI support) ---&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[*] Enable legacy fbdev support for your modsetting driver</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;*&gt; Simple framebuffer driver</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Frame buffer Devices ---&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;*&gt; Support for frame buffer devices ---&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console display driver support ---&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-*- Framebuffer Console support</p>
<p>File systems ---&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DOS/FAT/EXFAT/NT Filesystems ---&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;*/M&gt; VFAT (Windows-95) fs support</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Psuedo filesystems ---&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;*/M&gt; EFI Variable filesystem</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-*- Native language support ---&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;*/M&gt; Codepage 437 (United States, Canada)</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;*/M&gt; NLS ISO 8859-1 (Latin 1; Western European Languages)</p>
</div>
<p>Install GRUB for UEFI:</p>
<code>(chroot)# grub-install --target=x86_64-efi --efi-directory=/boot</code>
<p>For GRUB to work correctly, a configuration file must be created. Create one now:</p>
<code>(chroot# grub-mkconfig -o /boot/grub/grub.cfg</code>
<h2>Exit chroot</h2>
<p>The system has been finished. If everything is done to your liking, you can now exit the chroot environment.</p>
<code>(chroot)# exit</code>
<p>Unmount all mounted partitions:</p>
<code>(root)# umount -l /mnt/everest/dev/{shm,pts}</code>
<p></p>
<code>(root)# umount -R /mnt/everest</code>
<p>Reboot the system:</p>
<code>(root)# reboot</code>
<p>Ensure the newly installed bootloader is first to boot, otherwise you will end up in your old system again. If you used a live USB to install Everest, make sure you remove it before rebooting.</p>
<h2>Conclusion</h2>
<p>If all went well, Everest should boot up with no problems.</p>
<p>Remove the system image from /:</p>
<code>(root)# rm /everestlinux-*.tar.*</code>
<p>With the installation out of the way, you now have a minimal Linux environment to play around in, and to build around.</p>
<p>Many things still need to be set up and configured.</p>
<wiki>See: <a href="docs/general-recommendations.html">General Recommendations</a></wiki>
<p></p>
<p>If you require assistance, reach out to the community on Discord (HJzJUwSmDf) or IRC (#everestlinux on libera.chat)</p>
</div>
<footer>
<p>Copyright (C) 2021-2024 Everest Linux</p>
<p>Linux (R) is a registered trademark of Linus Torvalds.</p>
<p>Everest Linux is provided AS IS, WITHOUT WARRANTY.</p>
</footer>