14 Commits

Author SHA1 Message Date
66fbb7653e 3/22 2025-03-22 13:51:17 -04:00
3b1b0464be 12/15 2024-12-15 11:57:40 -05:00
f7cb8fe6cf 11/11 - update libglacier documentation 2024-11-11 15:05:34 -05:00
304bd29b08 10/10 2024-10-10 10:34:36 -04:00
82335b982b fix issue with css 2024-09-18 14:52:15 -04:00
6f5a54175e Merge branch 'main' of https://git.everestlinux.org/EverestLinux/everest-web
merge error
2024-09-17 09:45:12 -04:00
7dea28cb16 9/17 2024-09-17 09:44:39 -04:00
5aa3c4676b 7/12 take three 2024-07-12 12:57:18 -04:00
5075233672 7/12 take two 2024-07-12 12:53:14 -04:00
1fb58eafe8 7/12 2024-07-12 12:49:21 -04:00
aa61054d1d hi 2024-02-01 08:48:40 -05:00
4705d60122 12/20/23 2023-12-20 08:07:09 -05:00
40aa3b785f 12/7/23 2023-12-07 12:06:54 -05:00
1eda26a9c8 12/7/23 2023-12-07 12:06:00 -05:00
18 changed files with 851 additions and 135 deletions

8
TODO_EVERESTWEB Normal file
View File

@@ -0,0 +1,8 @@
+ TODO_EVERESTWEB
(*) denotes incomplete
(-) denotes complete
=== BEGIN TASK LIST ===
* Make announcement about delays

View File

@@ -39,6 +39,9 @@
<p>September 2022 - Different ways of bootstrapping a base system are tested by the development team.</p> <p>September 2022 - Different ways of bootstrapping a base system are tested by the development team.</p>
<p>October 2022 - Glacier v3 is released.</p> <p>October 2022 - Glacier v3 is released.</p>
<p>December 2022 - System image builds done by the development team.</p> <p>December 2022 - System image builds done by the development team.</p>
<p>February 2023 - Work on Glacier v4 is begun, website overhaul.</p>
<p>April 2023 - ecrypy, pm, and nc released.</p>
<p>December 2023 - Glacier C rewrite announced</p>
<h2>Design Principles</h2> <h2>Design Principles</h2>
<p>Our design principles heavily influence and guide development. You may notice we share many of these with Arch.</p> <p>Our design principles heavily influence and guide development. You may notice we share many of these with Arch.</p>
<strong>Simplicity</strong> <strong>Simplicity</strong>
@@ -69,7 +72,7 @@
</table> </table>
</div> </div>
<footer> <footer>
<p>Copyright (C) 2021-2023 Everest Linux</p> <p>Copyright (C) 2021-2025 Everest Linux</p>
<p>Linux (R) is a registered trademark of Linus Torvalds.</p> <p>Linux (R) is a registered trademark of Linus Torvalds.</p>
<p>Everest Linux is provided AS IS, WITHOUT WARRANTY.</p> <p>Everest Linux is provided AS IS, WITHOUT WARRANTY.</p>
</footer> </footer>

View File

@@ -70,6 +70,28 @@ html {
color: #ECEFF4; color: #ECEFF4;
} }
.note {
background-color: #88C0D0;
border-left-style: solid;
border-left-color: #88C0D0;
border-width: 4px;
border-radius: 2px;
padding: 4px;
width: 50%;
color: #2E3440;
}
.caution {
background-color: #EBCB8B;
border-left-style: solid;
border-left-color: #EBCB8B;
border-width: 4px;
border-radius: 2px;
padding: 4px;
width: 50%;
color: #2E3440;
}
.warning { .warning {
background-color: #BF616A; background-color: #BF616A;
border-left-style: solid; border-left-style: solid;
@@ -78,7 +100,7 @@ html {
border-radius: 2px; border-radius: 2px;
padding: 4px; padding: 4px;
width: 50%; width: 50%;
color: #2E3440; color: #D8DEE9;
} }
.news { .news {
@@ -107,6 +129,17 @@ th {
border-color: #ECEFF4; border-color: #ECEFF4;
} }
notehead {
background-color: #88C0D0;
border-left-style: solid;
border-left-color: #88C0D0;
border-width: 4px;
border-radius: 2px;
padding: 6px;
width: 50%;
color: #2E3440;
}
fhead { fhead {
background-color: #2E3440; background-color: #2E3440;
border-left-style: solid; border-left-style: solid;
@@ -129,6 +162,17 @@ khead {
color: #B48EAD; color: #B48EAD;
} }
cautionhead {
background-color: #EBCB8B;
border-left-style: solid;
border-left-color: #EBCB8B;
border-width: 4px;
border-radius: 2px;
padding: 6px;
width: 50%;
color: #2E3440;
}
warnhead { warnhead {
background-color: #BF616A; background-color: #BF616A;
border-left-style: solid; border-left-style: solid;
@@ -137,7 +181,7 @@ warnhead {
border-radius: 2px; border-radius: 2px;
padding: 6px; padding: 6px;
width: 50%; width: 50%;
color: #2E3440; color: #D8DEE9;
} }
newshead { newshead {
@@ -209,6 +253,13 @@ cil {
padding: 2px; padding: 2px;
} }
cil-inv {
font-family: monospace;
background-color: #2E3440;
color: #ECEFF4;
padding: 2px;
}
wiki { wiki {
border-left-style: solid; border-left-style: solid;
border-left-width: 4px; border-left-width: 4px;
@@ -341,3 +392,16 @@ body, html {
transform: translate(-50%, -50%); transform: translate(-50%, -50%);
color: white; color: white;
} }
hr {
color: #88c0d0;
width: 50%;
border-width: 4px;
border-radius: 5px;
margin-left: 0;
}
.tab {
display: inline-block;
margin-left: 80px;
}

View File

@@ -28,7 +28,8 @@
<h2>Developer Documentation</h2> <h2>Developer Documentation</h2>
<p>This page contains developer-specific documentation.</p> <p>This page contains developer-specific documentation.</p>
<h2>1 - Coding Style</h2> <h2>1 - Coding Style</h2>
<p><strong>1.1</strong> File Structure</p> <p><strong>1.1</strong> C</p>
<p><i>1.1.1</i> File Structure</p>
<p>Files should follow this format:<p> <p>Files should follow this format:<p>
<ul> <ul>
<li>Header comment, including program name and LICENSE</li> <li>Header comment, including program name and LICENSE</li>
@@ -42,7 +43,7 @@
<p>Note that function declarations should be defined in a separate header, ex:</p> <p>Note that function declarations should be defined in a separate header, ex:</p>
<p><cil>#include "project_name.h"</cil></p> <p><cil>#include "project_name.h"</cil></p>
<p>Indentations should be a single tab and be equal to 8 characters for better readability.</p> <p>Indentations should be a single tab and be equal to 8 characters for better readability.</p>
<p><strong>1.2</strong> Functions</p> <p><i>1.1.2</i> Functions</p>
<p>Functions should have their return type on one line, their name and parameters one line down, and the bracket one line under the name and arguments.</p> <p>Functions should have their return type on one line, their name and parameters one line down, and the bracket one line under the name and arguments.</p>
<p>Example:</p> <p>Example:</p>
<bigcodehead><strong>CODE:</strong> Proper function formatting in C</bigcodehead> <bigcodehead><strong>CODE:</strong> Proper function formatting in C</bigcodehead>
@@ -54,7 +55,7 @@
<p>}</p> <p>}</p>
</div> </div>
<p></p> <p></p>
<p><strong>1.3</strong> Example Program</p> <p><i>1.1.3</i> Example Program</p>
<fhead><strong>FILE:</strong> prog.c</fhead> <fhead><strong>FILE:</strong> prog.c</fhead>
<div class="file"> <div class="file">
<p>#include &lt;stdio.h&gt;</p> <p>#include &lt;stdio.h&gt;</p>
@@ -83,6 +84,35 @@
<p>&nbsp;<p> <p>&nbsp;<p>
<p>#endif</p> <p>#endif</p>
</div> </div>
<p><i>1.1.4</i> common.h</p>
<p>For large programs which include many header files, it is perfectly acceptable to define these includes in a separate header and then include that in each file.</p>
<fhead><strong>FILE:</strong> common.h</fhead>
<div class="file">
<p>#ifndef COMMON_H_</p>
<p>#define COMMON_H_</p>
<p>&nbsp;</p>
<p>#include &lt;color.h&gt;</p>
<p>#include &lt;stdio.h&gt;</p>
<p>#include &lt;unistd.h&gt;</p>
<p>&nbsp;</p>
<p>#endif</p>
</div>
<p></p>
<fhead><strong>FILE:</strong> prog.c</fhead>
<div class="file">
<p>#include "common.h"</p>
<p>&nbsp;</p>
<p>int</p>
<p>main()</p>
<p>{</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("hello\n");
<p>}</p>
</div>
<p><strong>1.2</strong> Best Practices</p>
<ul>
<p><li>Avoid abbreviation and single letter variables.</li><p>
<p><li>Avoid deep nesting.</li></p>
</ul>
<h2>2 - Licensing</h2> <h2>2 - Licensing</h2>
<p><strong>2.1</strong> Disclaimer</p> <p><strong>2.1</strong> Disclaimer</p>
<warnhead><strong>WARNING:</strong></warnhead> <warnhead><strong>WARNING:</strong></warnhead>
@@ -110,13 +140,14 @@
</div> </div>
<p><strong>2.3</strong> Proprietary Licenses</p> <p><strong>2.3</strong> Proprietary Licenses</p>
<p>Programs hosted on our Git servers are never to be released under proprietary licenses.</p> <p>Programs hosted on our Git servers are never to be released under proprietary licenses.</p>
<p>Distributing obfuscated binaries (for instance, using <cil>shc</cil> to hide the contents of a shell script) is also not allowed.</p>
<p>There will be no further discussion.</p> <p>There will be no further discussion.</p>
</div> </div>
<footer> <footer>
<p>Page last updated 10/19/23 @ 18:58</p> <p>Page last updated 03/17/2025 @ 12:00</p>
<p>Page licensed under GNU Free Documentation License 1.3 or later</p> <p>Page licensed under GNU Free Documentation License 1.3 or later</p>
<p>--------------------</p> <p>--------------------</p>
<p>Copyright (C) 2021-2023 Everest Linux</p> <p>Copyright (C) 2021-2025 Everest Linux</p>
<p>Linux (R) is a registered trademark of Linus Torvalds.</p> <p>Linux (R) is a registered trademark of Linus Torvalds.</p>
<p>Everest Linux is provided AS IS, WITHOUT WARRANTY.</p> <p>Everest Linux is provided AS IS, WITHOUT WARRANTY.</p>
</footer> </footer>

View File

@@ -27,6 +27,11 @@
Back to home Back to home
</button> </button>
<h2>General Recommendations</h2> <h2>General Recommendations</h2>
<notehead><strong>NOTE:</strong></notehead>
<div class="note">
<p>This page is outdated as of 9/17/2024</p>
<p>Reason: Glacier v4, esv rewrite, among others</p>
</div>
<p>This page will explain how to expand an Everest system from barebones to more usable.</p> <p>This page will explain how to expand an Everest system from barebones to more usable.</p>
<h2>1 - Administration</h2> <h2>1 - Administration</h2>
<p><strong>1.1 </strong>Users</p> <p><strong>1.1 </strong>Users</p>
@@ -106,7 +111,7 @@
<p>Page last updated 4/04/23 @ 13:34</p> <p>Page last updated 4/04/23 @ 13:34</p>
<p>Page licensed under GNU Free Documentation License 1.3 or later</p> <p>Page licensed under GNU Free Documentation License 1.3 or later</p>
<p>--------------------</p> <p>--------------------</p>
<p>Copyright (C) 2021-2023 Everest Linux</p> <p>Copyright (C) 2021-2025 Everest Linux</p>
<p>Linux (R) is a registered trademark of Linus Torvalds.</p> <p>Linux (R) is a registered trademark of Linus Torvalds.</p>
<p>Everest Linux is provided AS IS, WITHOUT WARRANTY.</p> <p>Everest Linux is provided AS IS, WITHOUT WARRANTY.</p>
</footer> </footer>

View File

@@ -55,11 +55,13 @@
<li><a href="dev-docs.html">Developer Documentation</a></li> <li><a href="dev-docs.html">Developer Documentation</a></li>
<li><a href="general-recommendations.html">General Recommendations</a></li> <li><a href="general-recommendations.html">General Recommendations</a></li>
<li><a href="intro-to-glacier.html">Introduction to Glacier</a></li> <li><a href="intro-to-glacier.html">Introduction to Glacier</a></li>
<li><a href="libglacier.html">libglacier</a></li>
<li><a href="meta-reading.html">Meta: Reading Guide</a></li>
<li><a href="musl-or-glibc.html">musl or glibc?</a></li> <li><a href="musl-or-glibc.html">musl or glibc?</a></li>
</ul> </ul>
</div> </div>
<footer> <footer>
<p>Copyright (C) 2021-2023 Everest Linux</p> <p>Copyright (C) 2021-2025 Everest Linux</p>
<p>Linux (R) is a registered trademark of Linus Torvalds.</p> <p>Linux (R) is a registered trademark of Linus Torvalds.</p>
<p>Everest Linux is provided AS IS, WITHOUT WARRANTY.</p> <p>Everest Linux is provided AS IS, WITHOUT WARRANTY.</p>
</footer> </footer>

View File

@@ -26,111 +26,143 @@
<button onclick="window.location.href='home.html';"> <button onclick="window.location.href='home.html';">
Back to home Back to home
</button> </button>
<h2>Introduction</h2> <h2>1 - Introduction</h2>
<p>Glacier is the package management system for Glacier. All users should be familiar with how it works.</p> <p>Glacier is the package management system for Glacier. All users should be familiar with how it works.</p>
<h2>Terminology</h2> <h2>2 - Package Indexes</h2>
<p>In this case, the word 'merge' and 'install' mean the same thing.</p> <p>On an Everest system, packages are stored in an "index", of which there are two, the <i>system</i> index and the <i>user</i> index.</p>
<p>A package index is a list of all installed packages on any given Everest system.</p> <p>The system index is located in <cil>/glacier/index</cil>, and the user index is localed in <cil>/usr/glacier/index</cil>.</p>
<p>The local index is managed by all users on the system, and is located in /usr/glacier/index.</p> <p>When you merge a package from a repository, <cil>gpkg</cil> will retrieve the file, execute the relevant instruction sets, and store the package in the user index. <cil>syspkg</cil> will operate on the system index instead. On update, <cil>gpkg</cil> will retrieve the package from the user index and execute the relevant instruction sets. The package will then be moved back into the user index. On removal, the package will be moved to <cil>/tmp</cil> oncde the removal instructions have been executed.</p>
<p>The global index is managed by Git, and is located in /glacier/index.</p> <h2>3 - Repositories</h2>
<p>A system profile describes your base system, including C library, architecture, SELinux support, multilib support, etc.</p> <p>Unlike most distributions, Everest installations include a copy of the package repository on the local system. Rather than downloading packages from a remote server, Glacier clones a package from the local repository.</p>
<h2>Included programs</h2> <p>This presents some advantages:</p>
<ul>
<li><p>Package modifications can be done easily</p></li>
<li><p>In the result of connection loss, Glacier can still be used</p></li>
</ul>
<p>And also some disadvantages:</p>
<ul>
<li><p>Security risks may surface if the repository is not kept updated or an unauthorized party makes changes to packages</p></li>
</ul>
<p>The <cil>glacier-update-pkgdb</cil> program can be used to update the local repository. This should be done regularly (at least once a week) to ensure the newest and most secure packages are available.</p>
<h2>4 - The System Profile</h2>
<p>An Everest installation includes a system profile. In simple terms, this is a series of environment variables and configurations that tell Glacier which packages it can install. The system profile should not change unless the user intends to migrate profiles.</p>
<p>The following environment variables are defined by the system profile:</p>
<ul>
<li><p><cil>GLACIER_REPO</cil> - The repository which will be downloaded by <cil>glacier-update-pkgdb</cil></p></li>
<li><p><cil>GLACIER_ARCH</cil> - The CPU's architecture</p></li>
<li><p><cil>GLACIER_TARGET</cil> - The compilation triplet</p></li>
<li><p><cil>GLACIER_SYSTEM_PROFILE</cil> - The name of the system profile</p></li>
</ul>
<p>The following system profiles are available:</p>
<ul>
<li><p><cil>x86_64-musl</cil></p></li>
</ul>
<p>The following system profiles are planned for the future:</p>
<ul>
<li><p><cil>x86_64-glibc</cil></p></li>
<li><p><cil>x86_64-musl-nomultilib</cil></p></li>
<li><p><cil>x86_64-glibc-nomultilib</cil></p></li>
</ul>
<h2>5 - Included programs</h2>
<p><strong>3.1 </strong>gpkg</p> <p><strong>3.1 </strong>gpkg</p>
<p>'gpkg' is the program most users will be interacting with. It handles the downloading, installation, and logging of packages.</p> <p><cil>gpkg</cil> is the program most users will be interacting with. It handles the downloading, installation, and logging of packages.</p>
<p><strong>3.2 </strong>syspkg</p> <p><strong>3.2 </strong>syspkg</p>
<p>'syspkg' is like 'gpkg', except it operates on the system index, rather than the local index. End users should not use this unless instructed to.</p> <p><cil>syspkg</cil> is like <cil>gpkg</cil>, except it operates on the system index, rather than the local index. End users should not use this unless instructed to.</p>
<p><strong>3.3 </strong>glist</p> <p><strong>3.3 </strong>glist</p>
<p>'glist' lists all installed packages, allowing the user to filter by name. <p><cil>glist</cil> lists all installed packages, allowing the user to filter by name.
<p><strong>3.4 </strong>gquery</p> <p><strong>3.4 </strong>gquery</p>
<p>'gquery' queries information on a package.</p> <p><cil>gquery</cil> queries information on a package.</p>
<p><strong>3.5 </strong>glacier-mkprofile</p> <p><strong>3.5 </strong>gpc</p>
<p>'glacier-mkprofile' makes changes to the system-wide profile. Users should not interact with this unless needed.</p> <p><cil>gpc</cil> checks if the syntax of a package is correct. This can be used to troubleshoot a package refusing to install, but is mainly intended for package developers.</p>
<h2>Frontends</h2> <p><strong>3.6 </strong>glacier-mkprofile</p>
<p><cil>glacier-mkprofile</cil> makes changes to the system-wide profile. Users should not interact with this unless needed.</p>
<p><strong>3.7 </strong>glacier-update-pkdgb</p>
<p><cil>glacier-update-pkgdb</cil> syncs the local package database with the remote server. This command should be run periodically to ensure you have the most up-to-date packages.</p>
<h2>6 - Frontends</h2>
<p>Frontends, or wrappers, may provide additional functionality to Glacier.</p> <p>Frontends, or wrappers, may provide additional functionality to Glacier.</p>
<warnhead><strong>WARNING:</strong></warnhead> <warnhead><strong>WARNING:</strong></warnhead>
<div class="warning"> <div class="warning">
<p>Third party frontends and wrapper scripts are not supported. Use them at your own risk.</p> <p>Third party frontends and wrapper scripts are not supported. Use them at your own risk.</p>
</div> </div>
<h2>Merging packages</h2> <h2>7 - Merging packages</h2>
<p><strong>4.1 </strong>Using gpkg</p> <p><strong>5.1 </strong>Using gpkg</p>
<p>To merge a package from a repository:</p> <p>To merge a package from a repository:</p>
<code>(root)# gpkg -f repo/pkg</code> <code>(root)# gpkg -f pkg</code>
<p>For instance, to install 'vim' in the 'world' repository:</p> <p>For instance, to install 'vim':</p>
<code>(root)# gpkg -f world/vim</code> <code>(root)# gpkg -f vim</code>
<p><strong>4.2 </strong>Using syspkg</p> <p><strong>5.2 </strong>Using syspkg</p>
<p>Using 'syspkg' is not recommended for end users because all changes to the global package index will be overwritten when pulling a new update.</p> <p>Using <cil>syspkg</cil> is not recommended for end users because all changes to the global package index will be overwritten when pulling a new update.</p>
<p>If you understand these risks, and wish to use 'syspkg' anyways, you are acknowledging that things may break.</p> <p>If you understand these risks, and wish to use <cil>syspkg</cil> anyways, you are acknowledging that things may break.</p>
<p>To merge a package from a repository:</p> <p>To merge a package:</p>
<code>(root)# syspkg -f repo/pkg</code> <code>(root)# syspkg -f pkg</code>
<h2>Updating packages</h2> <h2>8 - Updating packages</h2>
<p><strong>5.1 </strong>Introduction</p> <p><strong>6.1 </strong>Introduction</p>
<p>When merging a package into any index, the package file is retained in said index. This provides most information needed to keep track of the package, however, when updating, an updated package file will need to be downloaded. Old package files will be retained as 'pkgname.old'.</p> <p>When merging a package into any index, the package file is retained in said index. This provides most information needed to keep track of the package, however, when updating, an updated package file will need to be downloaded. Old package files will be retained as <cil>pkgname.old</cil>.</p>
<p><strong>5.2 </strong>Using gpkg</p> <p><strong>6.2 </strong>Using gpkg</p>
<p>To update a package:</p> <p>To update a package:</p>
<code>(root)# gpkg -u repo/pkg</code> <code>(root)# gpkg -u pkg</code>
<p><strong>5.3 </strong>Using syspkg</p> <p><strong>6.3 </strong>Using syspkg</p>
<p>As mentioned above, 'syspkg' is intended for system development, and NOT for end users.</p> <p>As mentioned above, <cil>syspkg</cil> is intended for system development, and NOT for end users.</p>
<p>However, 'syspkg -u' has some use cases for end users. These include:</p> <p>However, <cil>syspkg -u</cil> has some use cases for end users. These include:</p>
<ul> <ul>
<li>Updating a system program WITHOUT pulling a new release from Git</li> <li>Updating a system program WITHOUT pulling a new release from Git</li>
<li>Fixing urgent security vulnerabilities</li> <li>Fixing urgent security vulnerabilities</li>
</ul> </ul>
<p>To update a package:</p> <p>To update a package:</p>
<code>(root)# syspkg -u repo/pkg</code> <code>(root)# syspkg -u pkg</code>
<h2>Removing packages</h2> <h2>9 - Removing packages</h2>
<p><strong>6.1 </strong>Introduction</p> <p><strong>7.1 </strong>Introduction</p>
<p>When removing a package, the package info file is moved from the appropriate index to /tmp, and saved as 'pkgname.rm'. This means it will be wiped after the next reboot.</p> <p>When removing a package, the package info file is moved from the appropriate index to /tmp, and saved as <cil>pkgname.rm</cil>. This means it will be wiped after the next reboot.</p>
<p><strong>6.2 </strong>Using gpkg</p> <p><strong>7.2 </strong>Using gpkg</p>
<p>To remove a package:</p> <p>To remove a package:</p>
<code>(root)# gpkg -x pkg</code> <code>(root)# gpkg -x pkg</code>
<p>Note that no repository name was provided. It is not required, as no files will be downloaded during the removal process.</p>
<p>If a package is a dependency for another, you will be shown the following error:</p> <p>If a package is a dependency for another, you will be shown the following error:</p>
<code>[x] Could not remove (package_name): is a dependency for (package_name)</code> <code>[x] Could not remove (package_name): is a dependency for (package_name)</code>
<p><strong>6.3 </strong>Using syspkg</p> <p><strong>7.3 </strong>Using syspkg</p>
<warnhead><strong>WARNING:</strong></warnhead> <warnhead><strong>WARNING:</strong></warnhead>
<div class="warning"> <div class="warning">
<p>Removing packages that shipped with the system images WILL cause catastrophic damage. You have been warned.</p> <p>Removing packages that shipped with the system images WILL cause catastrophic damage. You have been warned.</p>
</div> </div>
<p>If you wish to proceed anyways, you can remove a package with:</p> <p>If you wish to proceed anyways, you can remove a package with:</p>
<code>(root)# syspkg -x pkg</code> <code>(root)# syspkg -x pkg</code>
<h2>Advanced usage</h2> <h2>10 - Advanced usage</h2>
<p><strong>7.1 </strong>Patching packages</p> <p><strong>8.1 </strong>Patching packages</p>
<p>Patching packages is the act of editing a package file to change compile options, optimizations, etc. It is very useful if used correctly.</p> <p>Patching packages is the act of editing a package file to change compile options, optimizations, etc. It is very useful if used correctly.</p>
<p>The officially tested and verified method for patching is as follows:</p> <p>The officially tested and verified method for patching is as follows:</p>
<ul> <ul>
<li>Download the package file with 'gpkg -d'</li> <li>Download the package file with <cil>gpkg -d</cil></li>
<li>Edit the package file with a text editor of your choice</li> <li>Edit the package file with a text editor of your choice</li>
<li>Install the locally modified package with 'gpkg -fl pkg'</li> <li>Install the locally modified package with <cil>gpkg -fl pkg</cil></li>
</ul> </ul>
<p><strong>7.2 </strong>Custom package repository</p> <p><strong>8.2 </strong>Custom package repository</p>
<p>If Glacier's standard package repository is not sufficient, you can use a custom one.</p> <p>If Glacier's standard package repository is not sufficient, you can use a custom one.</p>
<warnhead><strong>WARNING:</strong></warnhead> <warnhead><strong>WARNING:</strong></warnhead>
<div class="warning"> <div class="warning">
<p>Ensure the repository you wish to migrate to supports your system profile. For example, if your profile is 'x86-musl', the new repository should offer packages compatible with 'x86-musl'.</p> <p>Ensure the repository you wish to migrate to supports your system profile. For example, if your profile is <cil-inv>x86-musl</cil-inv>, the new repository should offer packages compatible with <cil-inv>x86-musl</cil-inv>.</p>
<p>Errors will occur if this is not taken into account.</p> <p>Errors will occur if this is not taken into account.</p>
</div> </div>
<p>To use a custom repository once, to merge a package:</p> <p>To use a custom repository once, to merge a package:</p>
<code>(root)# GREPO=http://some-repo.org gpkg -f repo/pkg</code> <code>(root)# GREPO=http://some-repo.org gpkg -f repo/pkg</code>
<p>To make the changes persistent, change the 'GREPO' variable in '/etc/glacier.conf':</p> <p>To make the changes persistent, change the <cil>GREPO</cil> variable in <cil>/etc/glacier.conf</cil>:</p>
<fhead><strong>FILE:</strong> /etc/glacier.conf</fhead> <fhead><strong>FILE:</strong> /etc/glacier.conf</fhead>
<div class="file"> <div class="file">
<p>export GREPO="https://some-repo.org</p> <p>export GREPO="https://some-repo.org</p>
</div> </div>
<p><strong>7.3 </strong>Compile flags</p> <p><strong>8.3 </strong>Compile flags</p>
<p>When an operation is performed on a package, 'gpkg' invokes the system's C compiler, which can take flags for compilation.</p> <p>When an operation is performed on a package, 'gpkg' invokes the system's C compiler, which can take flags for compilation.</p>
<p>'MAKEFLAGS', 'CFLAGS', 'CXXFLAGS', and 'LDFLAGS' can be set in '/etc/make.conf'.</p> <p>'MAKEFLAGS', 'CFLAGS', 'CXXFLAGS', and 'LDFLAGS' can be set in '/etc/make.conf'.</p>
<p>It is highly recommended to keep '-static' in 'CFLAGS' and 'LDFLAGS'.</p> <p>It is highly recommended to keep '-static' in 'CFLAGS' and 'LDFLAGS'.</p>
<p><strong>7.4 </strong>Using syspkg</p> <p><strong>8.4 </strong>Using syspkg</p>
<p>'syspkg' is intended for development use and not for end users. That being said, 'syspkg' can be used for fixing security vulnerabilities without pulling in a new release from git.</p> <p>'syspkg' is intended for development use and not for end users. That being said, 'syspkg' can be used for fixing security vulnerabilities without pulling in a new release from git.</p>
<p>Note that all changes to the global package index ('/glacier/index') will be overwritten during an update, where the user invokes 'git pull' on '/'.</p> <p>Note that all changes to the global package index ('/glacier/index') will be overwritten during an update, where the user invokes 'git pull' on '/'.</p>
<p><strong>7.5 </strong>Whitelisting licenses</p> <p><strong>8.5 </strong>Whitelisting licenses</p>
<p>Certain license types can be whitelisted or blacklisted. This is useful for controlling which software is installed on your system.</p> <p>Certain license types can be whitelisted or blacklisted. This is useful for controlling which software is installed on your system.</p>
<p>This setting is stored in /etc/glacier.conf, in a simple Bash array. By default, it should look something like this:</p> <p>This setting is stored in /etc/glacier.conf, in a simple Bash array. By default, it should look something like this:</p>
<fhead><strong>FILE:</strong> /etc/glacier.conf</fhead> <fhead><strong>FILE:</strong> /etc/glacier.conf</fhead>
<div class="file"> <div class="file">
<p>export GLACIER_ALLOWED_LICENSES=("GPL v3" "GPL v2" "GPL" "MIT" "BSD" "APACHE")</p> <p>export GLACIER_ALLOWED_LICENSES=("GPL v3" "GPL v2" "GPL" "MIT" "BSD" "APACHE")</p>
</div> </div>
<p><strong>7.6 </strong>Services</p> <p><strong>8.6 </strong>Services</p>
<p>Glacier services are small programs that can do certain tasks within Glacier, such as updating the local package database.</p> <p>Glacier services are small programs that can do certain tasks within Glacier, such as updating the local package database.</p>
<p>Services must be enabled in /etc/glacier.conf before they can be used.</p> <p>Services must be enabled in /etc/glacier.conf before they can be used.</p>
<fhead><strong>FILE: </strong>/etc/glacier.conf</fhead> <fhead><strong>FILE: </strong>/etc/glacier.conf</fhead>
@@ -151,25 +183,30 @@
<fhead><strong>FILE: </strong>/etc/glacier/end-srv</fhead> <fhead><strong>FILE: </strong>/etc/glacier/end-srv</fhead>
<div class="file"> <div class="file">
<p>#!/bin/bash</p> <p>#!/bin/bash</p>
<p>&nbsp</p> <p>&nbsp;</p>
<p>GLACIER_SRV_DIR="/etc/glacier/services"</p> <p>GLACIER_SRV_DIR="/etc/glacier/services"</p>
<p>$GLACIER_SRV_DIR/update-pkgdb.hook</p> <p>$GLACIER_SRV_DIR/update-pkgdb.hook</p>
</div> </div>
<h2>Querying packages</h2> <h2>11 - Querying packages</h2>
<p><strong>8.1 </strong>Introduction</p> <p><strong>9.1 </strong>Introduction</p>
<p>Glacier packages, in ther simplest form, are text files, containing instructions on how the package is built, who made it, what it's called, and what files it includes.</p> <p>Glacier packages, in ther simplest form, are text files, containing instructions on how the package is built, who made it, what it's called, and what files it includes.</p>
<p><strong>8.2 </strong>Querying files</p> <p><strong>9.2 </strong>Querying files</p>
<p>All files belonging to a package can be listed with:</p> <p>All files belonging to a package can be listed with:</p>
<code>(user)$ gquery -f pkg</code> <code>(user)$ gquery -f pkg</code>
<p><strong>8.3 </strong>Querying info</p> <p><strong>9.3 </strong>Querying info</p>
<p>Package info can be listed with:</p> <p>Package info can be listed with:</p>
<code>(user)$ gquery -i pkg</code> <code>(user)$ gquery -i pkg</code>
<h2>Writing packages</h2> <h2>12 - Writing packages</h2>
<p><strong>9.1 </strong>Introduction</p> <notehead><strong>NOTE:</strong></notehead>
<div class="note">
<p>This section is outdated as of 9/17/2024</p>
<p>Reason: Glacier v4 changes the package format</p>
</div>
<p><strong>10.1 </strong>Introduction</p>
<p>As mentioned before, Glacier packages are simply text files. This makes them very easy to write and maintain.</p> <p>As mentioned before, Glacier packages are simply text files. This makes them very easy to write and maintain.</p>
<p>If you have previous experience writing PKGBUILDs for the AUR, writing Glacier packages should feel very similar.</p> <p>If you have previous experience writing PKGBUILDs for the AUR, writing Glacier packages should feel very similar.</p>
<p>In this page, 'nano' will be used as an example.</p> <p>In this page, 'nano' will be used as an example.</p>
<p><strong>9.2 </strong>Metadata</p> <p><strong>10.2 </strong>Metadata</p>
<p>Package files start with metadata, which tells Glacier who made the package, what its called, as well as other information.</p> <p>Package files start with metadata, which tells Glacier who made the package, what its called, as well as other information.</p>
<p>Double check that all of this information is correct before submitting a package.</p> <p>Double check that all of this information is correct before submitting a package.</p>
<fhead><strong>FILE:</strong> $(pwd)/nano</fhead> <fhead><strong>FILE:</strong> $(pwd)/nano</fhead>
@@ -184,7 +221,7 @@
</div> </div>
<p>Hopefully, most of these options are self explanatory.</p> <p>Hopefully, most of these options are self explanatory.</p>
<p>For INCLUDED_FILES, ensure you DON'T include documentation (manpages, etc).</p> <p>For INCLUDED_FILES, ensure you DON'T include documentation (manpages, etc).</p>
<p><strong>9.3 </strong>Integrity information</p> <p><strong>10.3 </strong>Integrity information</p>
<fhead><strong>FILE:</strong> $(pwd)/nano</fhead> <fhead><strong>FILE:</strong> $(pwd)/nano</fhead>
<div class="file"> <div class="file">
<p>SHA256SUMS="86f3442768bd2873cec693f83cdf80b4b444ad3cc14760b74361474fc87a4526"</p> <p>SHA256SUMS="86f3442768bd2873cec693f83cdf80b4b444ad3cc14760b74361474fc87a4526"</p>
@@ -192,7 +229,7 @@
<p>All packages must include their checksums. When merging a package, 'gpkg' will check the provided checksum against the actual checksum of the package, and if they don't match, the operation will be cancelled.</p> <p>All packages must include their checksums. When merging a package, 'gpkg' will check the provided checksum against the actual checksum of the package, and if they don't match, the operation will be cancelled.</p>
<p>To get the checksum of a package:</p> <p>To get the checksum of a package:</p>
<code>(user)$ sha256sum package</code> <code>(user)$ sha256sum package</code>
<p><strong>9.4 </strong>Dependency information</p> <p><strong>10.4 </strong>Dependency information</p>
<fhead><strong>FILE:</strong> $(pwd)/nano</fhead> <fhead><strong>FILE:</strong> $(pwd)/nano</fhead>
<div class="file"> <div class="file">
<p>DEPENDS=("")</p> <p>DEPENDS=("")</p>
@@ -200,7 +237,7 @@
</div> </div>
<p>Dependency information is extremely important. It allows 'gpkg' to install any dependencies. It also warns the user when a package conflicts with another.</p> <p>Dependency information is extremely important. It allows 'gpkg' to install any dependencies. It also warns the user when a package conflicts with another.</p>
<p>This should be fairly easy to figure out. Most projects will have this listed in their README. If you're the developer, you'll probably already know the dependencies your package requires.</p> <p>This should be fairly easy to figure out. Most projects will have this listed in their README. If you're the developer, you'll probably already know the dependencies your package requires.</p>
<p><strong>9.5 </strong>Source information</p> <p><strong>10.5 </strong>Source information</p>
<fhead><strong>FILE:</strong> $(pwd)/nano</fhead> <fhead><strong>FILE:</strong> $(pwd)/nano</fhead>
<div class="file"> <div class="file">
<p>PACKAGE_SRC="https://nano-editor.org/dist/v7/nano-7.2.tar.xz</p> <p>PACKAGE_SRC="https://nano-editor.org/dist/v7/nano-7.2.tar.xz</p>
@@ -224,10 +261,10 @@
<p>Anything prefixed with "system" refers to the use of 'syspkg'.</p> <p>Anything prefixed with "system" refers to the use of 'syspkg'.</p>
</div> </div>
<footer> <footer>
<p>Page last updated 9/03/23 @ 22:02</p> <p>Page last updated 9/17/24 @ 09:40</p>
<p>Page licensed under GNU Free Documentation License 1.3 or later</p> <p>Page licensed under GNU Free Documentation License 1.3 or later</p>
<p>--------------------</p> <p>--------------------</p>
<p>Copyright (C) 2021-2023 Everest Linux</p> <p>Copyright (C) 2021-2025 Everest Linux</p>
<p>Linux (R) is a registered trademark of Linus Torvalds.</p> <p>Linux (R) is a registered trademark of Linus Torvalds.</p>
<p>Everest Linux is provided AS IS, WITHOUT WARRANTY.</p> <p>Everest Linux is provided AS IS, WITHOUT WARRANTY.</p>
</footer> </footer>

318
docs/libglacier.html Normal file
View File

@@ -0,0 +1,318 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Everest Linux - Docs</title>
<link type="text/css" rel="stylesheet" href="../css/nord.css"/>
</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="home.html">Docs</a>
<a href="../errata.html">Errata</a>
<a href="https://git.everestlinux.org">Git ↗</a>
</div>
<!-- Rest of page -->
<div class="main">
<button onclick="window.location.href='home.html';">
Back to home
</button>
<h2>1 - Introduction</h2>
<p><cil>libglacier</cil> is the backend library for Glacier. It simplifies many functions and allows users to extend Glacier's functionality.</p>
<h2>2 - Installation</h2>
<p>In order to install <cil>libglacier</cil>, the following libraries must be installed:</p>
<ul>
<li><p>libcolor</p></li>
<li><p>libconfig</p></li>
</ul>
<p>Once these libraries are installed, clone the <cil>libglacier</cil> repository:</p>
<p><code>$ git clone https://git.everestlinux.org/EverestLinux/libglacier</code></p>
<p>Enter the repository and edit the make configuration file:</p>
<p><code>$ cd libglacier</code></p>
<p><code>$ ${EDITOR} config.mk</code></p>
<cautionhead><strong>CAUTION</strong></cautionhead>
<div class="caution">
<p>Before proceeding with ANY other step, make sure you define <cil-inv>PREFIX</cil-inv> in config.mk.</p>
<p>By default this variable is not defined. Results will be unexpected if the library is compiled without <cil-inv>PREFIX</cil-inv> defined.</p>
</div>
<p>Build the library:</p>
<p><code>$ make lib</code></p>
<notehead><strong>NOTE</strong></notehead>
<div class="note">
<p><cil-inv>libglacier</cil-inv> is provided as a static library only.</p>
<p>If you wish to compile a shared library instead, you must edit the Makefile</p>
</div>
<h2>3 - Using libglacier in a program</h2>
<p>To use <cil>libglacier</cil> in a program, include the relevant header files:</p>
<bigcodehead><strong>CODE:</strong> Including libglacier header files</bigcodehead>
<div class="bigcode">
<p>#include &lt;glacier_config.h&gt;</p>
<p>#include &lt;glacier_data.h&gt;</p>
<p>#include &lt;glacier_log.h&gt;</p>
<p>#include &lt;glacier_pkgops.h&gt;</p>
<p>#include &lt;glacier_runtime.h&gt;</p>
<p>#include &lt;glacier_security.h&gt;</p>
</div>
<p></p>
<p>To compile <cil>libglacier</cil> into your program, add the flag <cil>-lglacier</cil> to your build process.</p>
<p><code>$ gcc program.c -lglacier -o program</code></p>
<p></p>
<h2>4 - Configuration Functions</h2>
<p><cil>libglacier</cil> supplies functions for parsing and getting values from libconfig-syntax configuration files. While only three are present, more are planned for the future.</p>
<p><strong>4.1</strong> init_config</p>
<p><cil>init_config</cil> initializes the libconfig library, and allows configuration files to be parsed.</p>
<p>No parameters are accepted by <cil>init_config</cil>.</p>
<bigcodehead><strong>CODE:</strong> init_config used in a program</bigcodehead>
<div class="bigcode">
<p>#include &lt;glacier_config.h&gt;</p>
<p>&nbsp;</p>
<p>int</p>
<p>main()</p>
<p>{</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (init_config() != 0) {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;errlog("failed to initialize libconfig");
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return(EXIT_FAILURE);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;successlog("Initialized libconfig");
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
<p>}</p>
</div>
<p><cil>init_config</cil> returns 0 on success, and 1 on failure.</p>
<hr>
<p><strong>4.2</strong> die_config</p>
<p><cil>die_config</cil> unloads the libconfig library. You should always run this when you're finished with libconfig in order to free memory.</p>
<p>No parameters are accepted by <cil>die_config</cil>.</p>
<bigcodehead><strong>CODE:</strong> die_config used in a program</bigcodehead>
<div class="bigcode">
<p>#include &lt;glacier_config.h&gt;</p>
<p>&nbsp;</p>
<p>int</p>
<p>main()</p>
<p>{</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;die_config();</p>
<p>}</p>
</div>
<p><cil>die_config</cil> returns 0 on success, and 1 on failure.</p>
<p><strong>4.3</strong> load_all_from_config</p>
<p><cil>load_all_from_config</cil> loads all expected settings from /etc/glacier.cfg.</p>
<p>No parameters are accepted by <cil>load_all_from_config</cil>.</p>
<bigcodehead><strong>CODE:</strong> load_all_from_config used in a program</bigcodehead>
<div class="bigcode">
<p>#include &lt;glacier_config.h&gt;</p>
<p>&nbsp;</p>
<p>int</p>
<p>main()</p>
<p>{</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;init_config();</p>
<p>}</p>
</div>
<h2>5 - Data structure functions</h2>
<p>Since Glacier is a package manager, <cil>libglacier</cil> provides functions for creating and handling dependency trees.</p>
<p><strong>5.1</strong> create_node</p>
<p><cil>create_node</cil> creates a node for a dependency tree.</p>
<p><cil>create_node</cil> accepts the following parameters:</p>
<ul>
<li><p><cil>char *data</cil> (the name of the node to create)</p></li>
</ul>
<bigcodehead><strong>CODE:</strong> create_node used in a program</bigcodehead>
<div class="bigcode">
<p>#include &lt;glacier_data.h&gt;</p>
<p>&nbsp;</p>
<p>int</p>
<p>main()</p>
<p>{</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;struct node package = create_node("Package");</p>
<p>}</p>
</div>
<p><strong>5.2</strong> add_child</p>
<p><cil>add_child</cil> adds a specified child node to a parent node.</p>
<p><cil>add_child</cil> accepts the following parameters:</p>
<ul>
<li><p><cil>struct node *parent</cil> (the parent node which the child will be added to)</p></li>
<li><p><cil>struct node *child</cil> (the child node which will be added to the parent node)</p></li>
</ul>
<bigcodehead><strong>CODE:</strong> add_child used in a program</bigcodehead>
<div class="bigcode">
<p>#include &lt;glacier_data.h&gt;</p>
<p>&nbsp;</p>
<p>int</p>
<p>main()</p>
<p>{</p>
<p><span class="tab"></span>struct node pack = create_node("pack");
<p><span class="tab"></span>struct node dep1 = create_node("dep1");
<p><span class="tab"></span>add_child(pack, dep1);</p>
<p>}</p>
</div>
<p><strong>5.3</strong> print_tree</p>
<p><cil>print_tree</cil> prints a dependency tree specified at its root node.</p>
<p><cil>print_tree</cil> accepts the following parameters:</p>
<ul>
<li><p><cil>struct node *root</cil> (the root node of the tree to print</p></li>
<li><p><cil>int level</cil> (the number of levels to descend)</p></li>
</ul>
<bigcodehead><strong>CODE:</strong> print_tree used in a program</bigcodehead>
<div class="bigcode">
<p>#include &lt;glacier_data.h&gt;</p>
<p>&nbsp;</p>
<p>int</p>
<p>main()</p>
<p>{</p>
<p><span class="tab"></span>struct node pack = create_node("pack");</p>
<p><span class="tab"></span>struct node dep1 = create_node("dep1");</p>
<p><span class="tab"></span>add_child(pack, dep1);</p>
<p><span class="tab"></span>print_tree(pack, 0);</p>
<p>}</p>
</div>
<p><strong>5.4</strong> init_queue</p>
<p><cil>init_queue</cil> initializes a queue data structure.</p>
<p><cil>init_queue</cil> accepts the following parameters:</p>
<ul>
<li><p><cil>queue *q</cil> (the name of the queue to initialize</p></li>
</ul>
<bigcodehead><strong>CODE:</strong> init_queue used in a program</bigcodehead>
<div class="bigcode">
<p>#include &lt;glacier_data.h&gt;</p>
<p>&nbsp;</p>
<p>int</p>
<p>main()</p>
<p>{</p>
<p><span class="tab"></span>hi</p>
</div>
<p></p>
<h2>6 - Logging Functions</h2>
<p>The logging functions <cil>libglacier</cil> provides are designed to allow a uniform style of output. </p>
<p>The following logging functions are included:</p>
<ul>
<li><p><cil>infolog</cil></p></li>
<li><p><cil>warnlog</cil></p></li>
<li><p><cil>errlog</cil></p></li>
<li><p><cil>successlog</cil></p></li>
</ul>
<p>These four functions accept the following parameters:</p>
<ul>
<li><p><cil>char MSG</cil> (the message to output</p></li>
</ul>
<p></p>
<notehead><strong>NOTE:</strong></notehead>
<div class="note">
<p>Logging functions do not require a newline character ('\n'), they will automatically place one after the message.</p>
</div>
<p></p>
<bigcodehead><strong>CODE:</strong> Logging functions used in a program</bigcodehead>
<div class="bigcode">
<p>#include &lt;glacier_log.h&gt;</p>
<p>&nbsp;</p>
<p>int</p>
<p>main()</p>
<p>{</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;infolog("This is an info message");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;warnlog("This is a warning message");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;errlog("This is an error message");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;successlog("This is a success message");</p>
<p>}</p>
</div>
<p></p>
<h2>7 - Package Operation Functions</h2>
<p>This section describes the numerous functions related to operations on packages.</p>
<p><strong>7.1</strong> mkworkspace</p>
<p><cil>mkworkspace</cil> creates a Glacier workspace at <cil>/tmp/glacier-workspace</cil>.</p>
<p><cil>mkworkspace</cil> accepts no parameters.</p>
<p><cil>mkworkspace</cil> returns the following values:</p>
<ul>
<li><p>0 on success</p></li>
<li><p>2 on library error</p></li>
</ul>
<bigcodehead><strong>CODE:</strong> mkworkspace used in a program</bigcodehead>
<div class="bigcode">
<p>#include &lt;glacier_pkgops.h&gt;</p>
<p>&nbsp;</p>
<p>int</p>
<p>main()</p>
<p>{</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mkworkspace();</p>
<p>}</p>
</div>
<p><strong>7.2</strong> prepare_pkg</p>
<p><cil>prepare_pkg</cil> copies a package archive from the local package database to the workspace, and untars it.</p>
<p><cil>prepare_pkg</cil> accepts the following parameters:</p>
<ul>
<li><p><cil>char PACKAGE[]</cil> (the package file to prepare)</p></li>
</ul>
<p><cil>prepare_pkg</cil> returns the following values:</p>
<ul>
<li><p>0 on success</p></li>
<li><p>1 on package does not exist, or error untarring</p></li>
</ul>
<bigcodehead><strong>CODE:</strong> prepare_pkg used in a program</bigcodehead>
<div class="bigcode">
<p>#include &lt;glacier_pkgops.h&gt;</p>
<p>&nbsp;</p>
<p>int</p>
<p>main()</p>
<p>{</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;prepare_pkg("/glacier/localdb/epkgs-x86_64-musl/foo.tar");</p>
<p>}</p>
</div>
<p>&nbsp;</p>
<cautionhead><strong>CAUTION:</strong></cautionhead>
<div class="caution">
<p>This example presented is not the best. Instead of manually specifying the package directory, you should be calling the system profile.</p>
</div>
<p><strong>7.3</strong> run_make_task</p>
<p><cil>run_make_task</cil> runs a specified make task in a package's current working directory.</p>
<p><cil>run_make_task</cil> accepts the following parameters:</p>
<ul>
<li><p><cil>char TASK[]</cil> (the make task to run</p></li>
</ul>
<p><cil>run_make_task</cil> returns the following values:</p>
<ul>
<li><p>0 on success</p></li>
<li><p>1 on failure</p></li>
</ul>
<bigcodehead><strong>CODE:</strong> run_make_task used in a program</bigcodehead>
<div class="bigcode">
<p>#include &lt;glacier_pkgops.h&gt;</p>
<p>&nbsp;</p>
<p>int</p>
<p>main()</p>
<p>{</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;prepare_pkg("/glacier/localdb/epkgs-x86_64-musl/foo.tar");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;run_make_task("installpkg");</p>
<p>}</p>
</div>
<h2>8 - Runtime Functions</h2>
<p>The functions described here are used for various runtime checks.</p>
<p><strong>8.1</strong> runtime_exists</p>
<p><cil>runtime_exists</cil> checks if necessary runtime files exist and are in their correct locations.</p>
<p><cil>runtime_exists</cil> accepts no parameters.
<p><cil>runtime_exists</cil> returns no values.</p>
<bigcodehead><strong>CODE:</strong> runtime_exists used in a program</bigcodehead>
<div class="bigcode">
<p>#include &lt;glacier_runtime.h&gt;</p>
<p>&nbsp;</p>
<p>int</p>
<p>main()</p>
<p>{</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;runtime_exists();</p>
<p>}</p>
</div>
<p><strong>8.2</strong>
</div>
<footer>
<p>Page last updated MM/DD/YY @ HH:MM</p>
<p>Page licensed under GNU Free Documentation License 1.3 or later</p>
<p>--------------------</p>
<p>Copyright (C) 2021-2025 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>

100
docs/meta-reading.html Normal file
View File

@@ -0,0 +1,100 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Everest Linux - Docs</title>
<link type="text/css" rel="stylesheet" href="../css/nord.css"/>
</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="home.html">Docs</a>
<a href="../errata.html">Errata</a>
<a href="https://git.everestlinux.org">Git ↗</a>
</div>
<!-- Rest of page -->
<div class="main">
<button onclick="window.location.href='home.html';">
Back to home
</button>
<h2>1 - Introduction</h2>
<p>Documentation for Everest is formatted in a specific way. This page explains how a page is formatted, and what certain things mean, in as much detail as possible.</p>
<h2>2 - Cards</h2>
<p><strong>2.1 </strong>Introduction</p>
<p>Most Everest documentation pages will contain some type of a "card". Put simply, these are small containers that contain file contents, kernel configurations, warnings, notes, etc. There are 6 types of cards:</p>
<p><strong>2.2 </strong>Note</p>
<p>This card is the most simple. It contains a note on a certain section. They are usually not required to read, but contain important information.</p>
<notehead><strong>NOTE:</strong></notehead>
<div class="note">
<p>This is an example of a note card.</p>
</div>
<p><strong>2.3 </strong>Caution</p>
<p>This card is one step up from a note. It contains important information, and should be read. However, it usually isn't urgent, or if it is, it contains things that most would consider common knowledge.</p>
<cautionhead><strong>CAUTION:</strong></cautionhead>
<div class="caution">
<p>This is an example of a caution card.</p>
</div>
<p><strong>2.4 </strong>Warning</p>
<p>This card is one of the most important. It contains extremely important information that, if not understood, could lead to system breakage, data loss, etc.</p>
<warnhead><strong>WARNING:</strong></warnhead>
<div class="warning">
<p>This is an example of a warning card.</p>
</div>
<p><strong>2.5 </strong>File</p>
<p>This card contains the contents of a text file. It is usually used to show configuration files.</p>
<fhead><strong>FILE:</strong> example.txt</fhead>
<div class="file">
<p>This is an example of a file card.</p>
</div>
<p><strong>2.6 </strong>Kernel</p>
<p>This card contains a kernel configuration as seen in <cil>make menuconfig</cil>.</p>
<khead><strong>KERNEL:</strong> Enable module "example</khead>
<div class="kernel">
<p>This is an example of a kernel card.</p>
</div>
<p><strong>2.7 </strong>Bigcode</p>
<p>The <cil>code</cil> tag is typically used to denote commands the user should run. The <cil>bigcode</cil> card is meant for showing programs, usually Bash or Python scripts, or C programs.</p>
<bigcodehead><strong>CODE:</strong> example.c</bigcodehead>
<div class="bigcode">
<p>This is an example of a bigcode card.</p>
</div>
<p><strong>2.8 </strong>News</p>
<p>This card is meant for sharing news about the distribution. It is only found on the homepage.</p>
<newshead><strong>1/1/70 - Example</strong></newshead>
<div class="news">
<p>This is an example of a news card.</p>
</div>
<h2>3 - Page Structure</h2>
<p>Everest documentation pages are organized into:</p>
<ul>
<li><a>Chapters</a></li>
<li><a>Sections</a></li>
<li><a>Subsections</a></li>
</ul>
<p><strong>3.1</strong> Chapters</p>
<p>Chapters are typically the largest sections on a given page. The topics they cover are very broad. Each chapter contains its own sections.</p>
<p>A chapter header is large, bold, has a colored sidebar, and is denoted by its number.</p>
<p><strong>3.2</strong> Sections</p>
<p>Sections are nested within chapters, and typically pertain to more specific topics related to a chapter.</p>
<p>A section header is bold, and is denoted by the number of the chapter it is nested under, followed by that section's number.</p>
<p><strong>3.3</strong> Subsections</p>
<p>Subsections are nested within sections, and usually contain very specific topics pertaining to a section (and chapter at large). Sometimes, a page does not use subsections at all.</p>
<p>A subsection header is italic, and is denoted by the number of the chapter it is nested under, followed by the number of the section it is nested under, followed by that subsection's number.</p>
</div>
<footer>
<p>Page last updated 1/08/2024 @ 17:28</p>
<p>Page licensed under GNU Free Documentation License 1.3 or later</p>
<p>--------------------</p>
<p>Copyright (C) 2021-2025 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>

View File

@@ -104,7 +104,7 @@
<p>Page last updated 6/17/23 @ 20:16</p> <p>Page last updated 6/17/23 @ 20:16</p>
<p>Page licensed under GNU Free Documentation License 1.3 or later</p> <p>Page licensed under GNU Free Documentation License 1.3 or later</p>
<p>--------------------</p> <p>--------------------</p>
<p>Copyright (C) 2021-2023 Everest Linux</p> <p>Copyright (C) 2021-2025 Everest Linux</p>
<p>Linux (R) is a registered trademark of Linus Torvalds.</p> <p>Linux (R) is a registered trademark of Linus Torvalds.</p>
<p>Everest Linux is provided AS IS, WITHOUT WARRANTY.</p> <p>Everest Linux is provided AS IS, WITHOUT WARRANTY.</p>
</footer> </footer>

62
docs/recovery.html Normal file
View File

@@ -0,0 +1,62 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Everest Linux - Docs</title>
<link type="text/css" rel="stylesheet" href="../css/nord.css"/>
</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="home.html">Docs</a>
<a href="../errata.html">Errata</a>
<a href="https://git.everestlinux.org">Git ↗</a>
</div>
<!-- Rest of page -->
<div class="main">
<button onclick="window.location.href='home.html';">
Back to home
</button>
<h2>Recovery</h2>
<p>System security is very important, however there are times when a system becomes so secure that the owner of the system becomes locked out of their own computer. There are a couple different methods for recovering a locked system.</p>
<h2>1 - Issues</h2>
<p><strong>1.1</strong> Issues resulting in a locked system</p>
<p>There are many things which may lock someone out of their system. The most notable ones are:</p>
<ul>
<li>Forgotten root password</li>
<li>Problematic PAM configuration</li>
</ul>
<p>There are two methods for recovering a system locked out by these issues, one of which should be set up by default.</p>
<h2>2 - Rescue Partition</h2>
<p><strong>2.1</strong> Introduction</p>
<p>Everest includes a small rescue partition in its system images, which contains only what is necessary to recover a system. Using this partition, system recovery is a relatively easy task.</p>
<p><strong>2.2</strong> Booting</p>
<p>While installing, either GRUB automatically created a boot entry for the rescue partition, or you did it yourself. If not, the rescue partition is unusable for recovery.</p>
<p>To boot into the rescue partition, power off your system, and select <cil>Everest Linux (rescue)</cil> in the GRUB boot menu.</p>
<h2>3 - Using BASH as init</h2>
<p><strong>3.1</strong> Introduction</p>
<p>The Linux kernel supports setting a custom init using kernel parameters. In this instance, we will use <cil>bash</cil> as our init to recover a locked system.</p>
<p><strong>3.2</strong> Booting</p>
<p>Power off your system. While booting, edit your boot entry's kernel parameters. On GRUB, this can be done with the <cil>e</cil> key.</p>
<p>Add the following to your kernel parameters:</p>
<khead><strong>KERNEL:</strong> Required kernel parameters to use BASH as init</khead>
<div class="kernel">
<p>init="/bin/bash"</p>
</div>
</div>
<footer>
<p>Page last updated MM/DD/YY @ HH:MM</p>
<p>Page licensed under GNU Free Documentation License 1.3 or later</p>
<p>--------------------</p>
<p>Copyright (C) 2021-2025 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>

View File

@@ -30,7 +30,7 @@
<p>Page last updated MM/DD/YY @ HH:MM</p> <p>Page last updated MM/DD/YY @ HH:MM</p>
<p>Page licensed under GNU Free Documentation License 1.3 or later</p> <p>Page licensed under GNU Free Documentation License 1.3 or later</p>
<p>--------------------</p> <p>--------------------</p>
<p>Copyright (C) 2021-2023 Everest Linux</p> <p>Copyright (C) 2021-2025 Everest Linux</p>
<p>Linux (R) is a registered trademark of Linus Torvalds.</p> <p>Linux (R) is a registered trademark of Linus Torvalds.</p>
<p>Everest Linux is provided AS IS, WITHOUT WARRANTY.</p> <p>Everest Linux is provided AS IS, WITHOUT WARRANTY.</p>
</footer> </footer>

View File

@@ -49,7 +49,7 @@
<code>(user)$ wget https://git.everestlinux.org/EverestLinux/everest/raw/branch/main/releases/SYSTEM_IMAGE</code> <code>(user)$ wget https://git.everestlinux.org/EverestLinux/everest/raw/branch/main/releases/SYSTEM_IMAGE</code>
</div> </div>
<footer> <footer>
<p>Copyright (C) 2021-2023 Everest Linux</p> <p>Copyright (C) 2021-2025 Everest Linux</p>
<p>Linux (R) is a registered trademark of Linus Torvalds.</p> <p>Linux (R) is a registered trademark of Linus Torvalds.</p>
<p>Everest Linux is provided AS IS, WITHOUT WARRANTY.</p> <p>Everest Linux is provided AS IS, WITHOUT WARRANTY.</p>
</footer> </footer>

View File

@@ -35,7 +35,7 @@
<p>Contact security@everestlinux.org to report an issue</p> <p>Contact security@everestlinux.org to report an issue</p>
</div> </div>
<footer> <footer>
<p>Copyright (C) 2021-2023 Everest Linux</p> <p>Copyright (C) 2021-2025 Everest Linux</p>
<p>Linux (R) is a registered trademark of Linus Torvalds.</p> <p>Linux (R) is a registered trademark of Linus Torvalds.</p>
<p>Everest Linux is provided AS IS, WITHOUT WARRANTY.</p> <p>Everest Linux is provided AS IS, WITHOUT WARRANTY.</p>
</footer> </footer>

View File

@@ -41,6 +41,40 @@
Installation Guide Installation Guide
</button> </button>
<h2>News</h2> <h2>News</h2>
<newshead><strong>10/3/24 - libglacier v4.0.0rc out now</strong></newshead>
<div class="news">
<p>After 8 months of development, libglacier has been released as v4.0.0rc.</p>
<p>While this is technically an unstable development release, it has been tested vigorously and is only labeled as unstable due to the absence of configuration file parsing, which will be added in the next release.</p>
<p>This release means that progress on Glacier's frontend programs can finally progress.</p>
</div>
<hr>
<p></p>
<newshead><strong>7/12/24 - Registration closed for git.everestlinux.org</strong></newshead>
<div class="news">
<p>Due to an influx of spam on our Git server, new account registration has been closed.</p>
<p>If, for any reason, you require an account, please email me at liamwaldron@everestlinux.org so I can set one up for you.</p>
</div>
<hr>
<p></p>
<newshead><strong>4/4/24 - All new releases on hold indefinitely</strong></newshead>
<div class="news">
<p>While work has been done on releasing Everest and Glacier, these releases are on hold indefinitely.</p>
<p>I have decided to rewrite Glacier in C, which has added a significant amount of time needed for the release. This will ultimately be a good decision, since the rewritten Glacier will be much more portable than the Bash version.</p>
<p>Additionally, I have recently committed to Assumption University to study cybersecurity. Hopefully I will be able to integrate this project into my studies if possible.</p>
<p>Ultimately, this is a hobby project. I do not anticipate it to ever become big (or at least as big as some other distros), however if you are interested in helping out, shoot me a message at liamwaldron@everestlinux.org.</p>
</div>
<hr>
<p></p>
<newshead><strong>12/20/23 - Everest v1.0.0 and Glacier v4.0.0 put on hold</strong></newshead>
<div class="news">
<p>Unfortunately, the releases scheduled for January 1st are being put on hold.</p>
<p>The past few months have been very busy in terms of college stuff. Thankfully, I have been accepted into multiple schools and have a good idea of where I'm going.</p>
<p>Since this stuff is clearing up, I now have more time to work on releasing Everest and Glacier. Most importantly, I now have a testbed to run everything on.</p>
<p>The new target release date is March 1st, 2024.</p>
<p>Once again, thank you for your continued support of this project.</p>
</div>
<hr>
<p></p>
<newshead><strong>9/29/23 - Big news at Everest</strong></newshead> <newshead><strong>9/29/23 - Big news at Everest</strong></newshead>
<div class="news"> <div class="news">
<p>Many things have been happening at Everest in the past few months.</p> <p>Many things have been happening at Everest in the past few months.</p>
@@ -51,11 +85,13 @@
<p>Thank you for your continued support everyone!</p> <p>Thank you for your continued support everyone!</p>
<p>-The Everest Team</p> <p>-The Everest Team</p>
</div> </div>
<hr>
<p></p> <p></p>
<newshead><strong>6/8/23 - New Everest logo</strong></newshead> <newshead><strong>6/8/23 - New Everest logo</strong></newshead>
<div class="news"> <div class="news">
<p>The Everest logo has been slightly redesigned. This includes a darker color palette.</p> <p>The Everest logo has been slightly redesigned. This includes a darker color palette.</p>
</div> </div>
<hr>
<p></p> <p></p>
<newshead><strong>4/25/23 - Announcing Glacier v4</strong></newshead> <newshead><strong>4/25/23 - Announcing Glacier v4</strong></newshead>
<div class="news"> <div class="news">
@@ -67,72 +103,83 @@
<p>Glacier v4 is highly unstable and experimental. Use at your own risk.</p> <p>Glacier v4 is highly unstable and experimental. Use at your own risk.</p>
</div> </div>
</div> </div>
<hr>
<p></p> <p></p>
<newshead><strong>2/1/23 - Manual intervention required for /etc/glacier.conf</strong></newshead> <newshead><strong>2/1/23 - Manual intervention required for /etc/glacier.conf</strong></newshead>
<div class="news"> <div class="news">
<p>With the new Glacier update, changes were made to the download backend. Please ensure your current configuration is overwritten while updating.</p> <p>With the new Glacier update, changes were made to the download backend. Please ensure your current configuration is overwritten while updating.</p>
</div> </div>
<hr>
<p></p> <p></p>
<newshead><strong>1/26/23 - Website overhaul</strong></newshead> <newshead><strong>1/26/23 - Website overhaul</strong></newshead>
<div class="news"> <div class="news">
<p>The Everest website has been completely overhauled with a cleaner, sleeker look.</p> <p>The Everest website has been completely overhauled with a cleaner, sleeker look.</p>
</div> </div>
<hr>
<p></p> <p></p>
<newshead><strong>1/26/23 - System image builds nearly complete</strong></newshead> <newshead><strong>1/26/23 - System image builds nearly complete</strong></newshead>
<div class="news"> <div class="news">
<p>A system image is coming together. This includes the toolchain We are still ironing out issues with Busybox's wget implementation, which fails to support https.</p> <p>A system image is coming together. This includes the toolchain We are still ironing out issues with Busybox's wget implementation, which fails to support https.</p>
</div> </div>
<hr>
<p></p> <p></p>
<newshead><strong>11/1/22 - System image builds have begun</strong></newshead> <newshead><strong>11/1/22 - System image builds have begun</strong></newshead>
<div class="news"> <div class="news">
<p>Today, the team has begun compiling system images. All programs have compiled correctly, with the exception of the system toolchain. This is a very important component, and the system cannot function without it.</p> <p>Today, the team has begun compiling system images. All programs have compiled correctly, with the exception of the system toolchain. This is a very important component, and the system cannot function without it.</p>
</div> </div>
<hr>
<p></p> <p></p>
<newshead><strong>10/25/22 - Glacier v3 is released</strong></newshead> <newshead><strong>10/25/22 - Glacier v3 is released</strong></newshead>
<div class="news"> <div class="news">
<p>After nearly 2 months of hard work, Glacier v3 is finally out. This release includes many stability improvements,</p> <p>After nearly 2 months of hard work, Glacier v3 is finally out. This release includes many stability improvements, changes to the codebase to improve readability, and a new build system.</p>
<p>changes to the codebase to improve readability, and a new build system.</p>
</div> </div>
<hr>
<p></p> <p></p>
<newshead><strong>10/7/22 - Glacier v3 enters testing</strong></newshead> <newshead><strong>10/7/22 - Glacier v3 enters testing</strong></newshead>
<div class="news"> <div class="news">
<p>Glacier v3 is now available for testing. Please note that this release is not stable and therefore should not be run on a production machine.</p> <p>Glacier v3 is now available for testing. Please note that this release is not stable and therefore should not be run on a production machine.</p>
</div> </div>
<hr>
<p></p> <p></p>
<newshead><strong>8/31/22 - Announcing Glacier v3</strong></newshead> <newshead><strong>8/31/22 - Announcing Glacier v3</strong></newshead>
<div class="news"> <div class="news">
<p>Glacier v2, which was release back in June, functions great, however does not function like a typical package manager would.</p> <p>Glacier v2, which was release back in June, functions great, however does not function like a typical package manager would.</p>
<p>Additionally, adding functionality is very difficult as the codebase is very complex and messy. Glacier v3 aims to fix these issues.</p> <p>Additionally, adding functionality is very difficult as the codebase is very complex and messy. Glacier v3 aims to fix these issues.</p>
</div> </div>
<hr>
<p></p> <p></p>
<newshead><strong>6/21/22 - Registering everestlinux.org</strong></newshead> <newshead><strong>6/21/22 - Registering everestlinux.org</strong></newshead>
<div class="news"> <div class="news">
<p>Everest now owns a domain. This allows us to host our own website, rather than using GitHub (which is owned by Microsoft). This gives</p> <p>Everest now owns a domain. This allows us to host our own website, rather than using GitHub (which is owned by Microsoft). This gives us more control over our work.</p>
<p>us more control over our work.</p>
</div> </div>
<hr>
<p></p> <p></p>
<newshead><strong>5/31/22 - Glacier v2 is released</strong></newshead> <newshead><strong>5/31/22 - Glacier v2 is released</strong></newshead>
<div class="news"> <div class="news">
<p>Glacier v2 has been released. This version provides several improvements to the codebase, such as condensing everything to a single executable.</p> <p>Glacier v2 has been released. This version provides several improvements to the codebase, such as condensing everything to a single executable.</p>
</div> </div>
<hr>
<p></p> <p></p>
<newshead><strong>4/20/22 - Glacier v1 is released</strong></newshead> <newshead><strong>4/20/22 - Glacier v1 is released</strong></newshead>
<div class="news"> <div class="news">
<p>Glacier has released a stable point in its development.</p> <p>Glacier has released a stable point in its development.</p>
<p>In addition, color and unicode support has been added.</p> <p>In addition, color and unicode support has been added.</p>
</div> </div>
<hr>
<p></p> <p></p>
<newshead><strong>4/5/22 - Glacier v0.6rc</strong></newshead> <newshead><strong>4/5/22 - Glacier v0.6rc</strong></newshead>
<div class="news"> <div class="news">
<p>The package format has been updated to include timestamping capabilities.</p> <p>The package format has been updated to include timestamping capabilities.</p>
<p>These timestamps will be queried along with a package.</p> <p>These timestamps will be queried along with a package.</p>
</div> </div>
<hr>
<p></p> <p></p>
<newshead><strong>3/28/22 - Glacier v0.5rc</strong></newshead> <newshead><strong>3/28/22 - Glacier v0.5rc</strong></newshead>
<div class="news"> <div class="news">
<p>Added a proper cleanup operation after a transaction finishes.</p> <p>Added a proper cleanup operation after a transaction finishes.</p>
<p>Additionally, caching support has been added.</p> <p>Additionally, caching support has been added.</p>
</div> </div>
<hr>
<p></p> <p></p>
<newshead><strong>3/10/22 - Glacier v0.2rc</strong></newshead> <newshead><strong>3/10/22 - Glacier v0.2rc</strong></newshead>
<div class="news"> <div class="news">
@@ -140,7 +187,7 @@
</div> </div>
</div> </div>
<footer> <footer>
<p>Copyright (C) 2021-2023 Everest Linux</p> <p>Copyright (C) 2021-2025 Everest Linux</p>
<p>Linux (R) is a registered trademark of Linus Torvalds.</p> <p>Linux (R) is a registered trademark of Linus Torvalds.</p>
<p>Everest Linux is provided AS IS, WITHOUT WARRANTY.</p> <p>Everest Linux is provided AS IS, WITHOUT WARRANTY.</p>
</footer> </footer>

View File

@@ -30,24 +30,12 @@
<div class="main"> <div class="main">
<h2>Installation Handbook</h2> <h2>Installation Handbook</h2>
<p>This guide is the official installation handbook for Everest Linux.</p> <p>This guide is the official installation handbook for Everest Linux.</p>
<warnhead><strong>WARNING:</strong></warnhead> <warnhead><strong>PRELIMINARY WARNINGS:</strong></warnhead>
<div class="warning"> <div class="warning">
<p>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 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>
</div> <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></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>
<warnhead><strong>WARNING:</strong></warnhead> <p><strong>WARNING 4:</strong> Everest in its current state is highly experimental. Install at your own risk.</p>
<div class="warning">
<p>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, and how to tailor it to your system, if necessary.</p>
</div>
<p></p>
<warnhead><strong>WARNING:</strong></warnhead>
<div class="warning">
<p>Everest is not for the faint of heart. If you have never touched Linux in your life, Everest is most certainly not for you. Linux Mint is a great distribution that works out of the box, and is a great entry point into Linux.</p>
</div>
<p></p>
<warnhead><strong>WARNING:</strong></warnhead>
<div class="warning">
<p>Everest at its current state is highly experimental. Install at your own risk.</p>
</div> </div>
<p>If you need assistance, reach out to us on IRC (libera.chat, #everestlinux) or Discord.</p> <p>If you need assistance, reach out to us on IRC (libera.chat, #everestlinux) or Discord.</p>
<h2>Prerequisites</h2> <h2>Prerequisites</h2>
@@ -57,6 +45,7 @@
<li>Download a system image</li> <li>Download a system image</li>
<li>Unpack the system image</li> <li>Unpack the system image</li>
<li>Change root into the new system</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 programs</li>
<li>Install the Linux kernel</li> <li>Install the Linux kernel</li>
<li>Set up init scripts and services</li> <li>Set up init scripts and services</li>
@@ -68,8 +57,8 @@
<p>Run commands prefixed with <code>(root)#</code> as the root 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> <p>Run commands prefixed with <code>(chroot)#</code> inside the chroot environment.</p>
<h2>Set up the environment</h2> <h2>Set up the environment</h2>
<p>Everest needs a proper environment set up in order to install correctly.</p> <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 (/) 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.</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> <p>Create a system mountpoint:</p>
<code>(root)# mkdir -pv /mnt/everest</code> <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>A variable pointing to the system mountpoint may be useful in the future, as it will save you a bit of typing.</p>
@@ -86,12 +75,17 @@
<tr> <tr>
<td>/mnt/everest/boot</td> <td>/mnt/everest/boot</td>
<td>EFI system partition (esp)</td> <td>EFI system partition (esp)</td>
<td>No smaller than 256 MB, no larger than 1 GB</td> <td>No smaller than 256 MB, no larger than 1 GB (minimum 1 GB if installing multiple kernels)</td>
</tr> </tr>
<tr> <tr>
<td>/mnt/everest/usr</td> <td>/mnt/everest/usr</td>
<td>/usr</td> <td>User partition</td>
<td>No smaller than 25 GB</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>
<tr> <tr>
<td>/mnt/everest</td> <td>/mnt/everest</td>
@@ -104,11 +98,12 @@
<p>A valid filesystem is required on the drive.</p> <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>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> <p>For example, if XFS is used, when installing the system:</p>
<code>(chroot)# gpkg -f world/xfsprogs</code> <code>(chroot)# gpkg -f xfsprogs</code>
<p></p> <p></p>
<warnhead><strong>WARNING:</strong></warnhead> <cautionhead><strong>CAUTION:</strong></cautionhead>
<div class="warning"> <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>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> </div>
<p>In this example, Ext4 will be used.</p> <p>In this example, Ext4 will be used.</p>
<p>Create a filesystem:</p> <p>Create a filesystem:</p>
@@ -131,7 +126,7 @@
<p>Create remaining directories on /usr with mkusrskel:</p> <p>Create remaining directories on /usr with mkusrskel:</p>
<code>(root)# mkusrskel -d /mnt/everest/usr</code> <code>(root)# mkusrskel -d /mnt/everest/usr</code>
<h2>Downloading a system image</h2> <h2>Downloading a system image</h2>
<p>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 arduous, time consuming, and requires rebuilding a lot of packages.</p> <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>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> <p>Do some thorough planning to ensure you get the right system image. For instance, ask yourself a few questions, such as:</p>
<ol> <ol>
@@ -141,9 +136,14 @@
<li>Do I want to set up NSA Security Enhanced Linux (SELinux)</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> <li>Do I want an init system other than Busybox's built in init configured out of the box?</li>
</ol> </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> <warnhead><strong>WARNING:</strong></warnhead>
<div class="warning"> <div class="warning">
<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.</p> <p>As a beginner, under NO CIRCUMSTANCES should you use a system image omitting 32 bit libraries unless it is ABSOLUTELY NECESSARY.</p>
</div> </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>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> <p>Download a system image with wget:</p>
@@ -151,30 +151,36 @@
<h2>Unpacking the system image</h2> <h2>Unpacking the system image</h2>
<p>Now that a system image has been downloaded, we can unpack it.</p> <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>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 `tar xf` will result in a broken image. A couple extra flags are needed to preserve these permissions in the unpacked image.</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> <p>Unpack the system image:</p>
<code>(root)# tar -xpvf SYSTEM_IMAGE --xattrs-include='*.*' --numeric-owner</code> <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>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 'prep' command from everest-build-tools.</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> <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 without booting.</p> <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> <p>Chroot into the new system:</p>
<code>(root)# everest-chroot /mnt/everest</code> <code>(root)# everest-chroot /mnt/everest</code>
<p>Change the shell prompt to differentiate the two environments:</p> <p>Change the shell prompt to differentiate the two environments:</p>
<code>(chroot)# echo "export PS1='(chroot) ${PS1}'" >> /etc/profile && source /etc/profile</code> <code>(chroot)# echo "export PS1='(chroot) ${PS1}'" &gt;&gt; /etc/profile && source /etc/profile</code>
<h2>Install packages</h2> <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>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> <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> <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> <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>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> <p>If needed, merge the linux-firmware package, which provides device firmware:</p>
<code>(chroot)# gpkg -f world/linux-firmware</code> <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>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><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.</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> <p>Download the kernel's source tree:</p>
<code>(chroot)# gpkg -f world/linux</code> <code>(chroot)# gpkg -f linux</code>
<p>The source tree will be located under /usr/src/linux.</p> <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> <p>Inside /usr/src/linux, ensure the source tree is completely clean by running the following:</p>
<code>(chroot)# make mrproper</code> <code>(chroot)# make mrproper</code>
@@ -183,8 +189,8 @@
<khead><strong>KERNEL: </strong> Enbable support for IPv6</khead> <khead><strong>KERNEL: </strong> Enbable support for IPv6</khead>
<div class="kernel"> <div class="kernel">
<p>Networking support ---></p> <p>Networking support ---></p>
<p>&nbsp&nbsp&nbsp&nbsp&nbsp&nbspNetworking options ---></p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Networking options ---></p>
<p>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp<*> The IPv6 protocol [CONFIG_IPV6]</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;*&gt; The IPv6 protocol [CONFIG_IPV6]</p>
</div> </div>
<p> Recommended options are not provided - it is up to you to configure the kernel for your setup.</p> <p> Recommended options are not provided - it is up to you to configure the kernel for your setup.</p>
<p>Configure the kernel:</p> <p>Configure the kernel:</p>
@@ -222,9 +228,9 @@
<p>For example, on a system with a root, /usr, and boot partition, /etc/fstab will look like this:</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> <fhead><strong>FILE:</strong> /etc/fstab</fhead>
<div class="file"> <div class="file">
<p>/dev/sda1&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp/&nbsp&nbsp&nbsp&nbsp&nbsp&nbspext4&nbsp&nbsp&nbsp&nbsp&nbsp&nbspnoatime&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp0 1</p> <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&nbspext4&nbsp&nbsp&nbsp&nbsp&nbsp&nbspnoatime&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp0 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&nbspvfat&nbsp&nbsp&nbsp&nbsp&nbsp&nbspdefaults,noatime&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp0 2</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> </div>
<p>System services that some may find helpful, such as a cron daemon or logging daemon, should be set up now.</p> <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> <p>On systems using systemd:</p>
@@ -241,8 +247,8 @@
<p>Or, on systemd:</p> <p>Or, on systemd:</p>
<code>(chroot)# hostnamectl hostname <i>hostname</i></code> <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> <p>A network connection is very important, and there are multiple ways to set one up.</p>
<warnhead><strong>WARNING:</strong></warnhead> <cautionhead><strong>CAUTION:</strong></cautionhead>
<div class="warning"> <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> <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> </div>
<p>First, ensure the desired network interface is not blocked by rfkill:</p> <p>First, ensure the desired network interface is not blocked by rfkill:</p>
@@ -272,9 +278,9 @@
<p>The /etc/hosts file is used to resolve IP addresses not resolved by the DHCP server.</p> <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> <fhead><strong>FILE:</strong> /etc/hosts</fhead>
<div class="file"> <div class="file">
<p>127.0.0.1&nbsp&nbsp&nbsp&nbsp&nbsp&nbsplocalhost</p> <p>127.0.0.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;localhost</p>
<p>::1&nbsp&nbsp&nbsp&nbsp&nbsp&nbsplocalhost</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&nbsplocaldomain <i>hostname</i></p> <p>127.0.1.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;localdomain <i>hostname</i></p>
</div> </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>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>Ensure your chosen root password is strong enough where it cannot be guessed easily.</p>
@@ -295,12 +301,45 @@
<h2>Configure the bootloader</h2> <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>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>This guide only mentions GRUB, however note that other bootloaders are supported.</p>
<p>Merge GRUB for BIOS:</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>
<code>(chroot)# gpkg -f world/grub-bios</code> <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>
<p>Merge GRUB for UEFI:</p> <wikihead><strong>WIKI</strong>: <a href="https://git.everestlinux.org/EverestLinux/wiki/wiki/Introduction-to-Glacier">Introduction to Glacier</a></wikihead>
<code>(chroot)# gpkg -f world/grub-efi</code> <p>Merge <cil>grub</cil>:</p>
<code>(chroot)# gpkg -f grub</code>
<p>Install GRUB for BIOS:</p> <p>Install GRUB for BIOS:</p>
<code>(chroot)# grub-install /dev/sda</code> <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> <p>Install GRUB for UEFI:</p>
<code>(chroot)# grub-install --target=x86_64-efi --efi-directory=/boot</code> <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> <p>For GRUB to work correctly, a configuration file must be created. Create one now:</p>
@@ -314,7 +353,7 @@
<code>(root)# umount -R /mnt/everest</code> <code>(root)# umount -R /mnt/everest</code>
<p>Reboot the system:</p> <p>Reboot the system:</p>
<code>(root)# reboot</code> <code>(root)# reboot</code>
<p>Ensure the installation medium is removed, or else you will not boot into the new system, rather back into the installation medium.</p> <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> <h2>Conclusion</h2>
<p>If all went well, Everest should boot up with no problems.</p> <p>If all went well, Everest should boot up with no problems.</p>
<p>Remove the system image from /:</p> <p>Remove the system image from /:</p>
@@ -326,7 +365,7 @@
<p>If you require assistance, reach out to the community on Discord (HJzJUwSmDf) or IRC (#everestlinux on libera.chat)</p> <p>If you require assistance, reach out to the community on Discord (HJzJUwSmDf) or IRC (#everestlinux on libera.chat)</p>
</div> </div>
<footer> <footer>
<p>Copyright (C) 2021-2023 Everest Linux</p> <p>Copyright (C) 2021-2025 Everest Linux</p>
<p>Linux (R) is a registered trademark of Linus Torvalds.</p> <p>Linux (R) is a registered trademark of Linus Torvalds.</p>
<p>Everest Linux is provided AS IS, WITHOUT WARRANTY.</p> <p>Everest Linux is provided AS IS, WITHOUT WARRANTY.</p>
</footer> </footer>

View File

@@ -58,7 +58,7 @@
</ul> </ul>
</div> </div>
<footer> <footer>
<p>Copyright (C) 2021-2023 Everest Linux</p> <p>Copyright (C) 2021-2025 Everest Linux</p>
<p>Linux (R) is a registered trademark of Linus Torvalds.</p> <p>Linux (R) is a registered trademark of Linus Torvalds.</p>
<p>Everest Linux is provided AS IS, WITHOUT WARRANTY.</p> <p>Everest Linux is provided AS IS, WITHOUT WARRANTY.</p>
</footer> </footer>

View File

@@ -29,7 +29,7 @@
<div class="main"> <div class="main">
</div> </div>
<footer> <footer>
<p>Copyright (C) 2021-2023 Everest Linux</p> <p>Copyright (C) 2021-2025 Everest Linux</p>
<p>Linux (R) is a registered trademark of Linus Torvalds.</p> <p>Linux (R) is a registered trademark of Linus Torvalds.</p>
<p>Everest Linux is provided AS IS, WITHOUT WARRANTY.</p> <p>Everest Linux is provided AS IS, WITHOUT WARRANTY.</p>
</footer> </footer>