<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Dejice Jacob: University of Glasgow (Posts about gentoo)</title><link>http://www.dcs.gla.ac.uk/~jacobd/</link><description></description><atom:link href="http://www.dcs.gla.ac.uk/~jacobd/categories/gentoo.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2025 &lt;a href="mailto:dejice.jacob@glasgow.ac.uk"&gt;Dejice Jacob&lt;/a&gt; </copyright><lastBuildDate>Wed, 29 Jan 2025 17:55:22 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>A gentoo installation story - continued!</title><link>http://www.dcs.gla.ac.uk/~jacobd/posts/2025/01/a-gentoo-installation-story-continued/</link><dc:creator>Dejice Jacob</dc:creator><description>&lt;h3&gt;The birth of a Gentoo Linux KDE Desktop&lt;/h3&gt;
&lt;p&gt;I have previously journaled (&lt;a href="http://www.dcs.gla.ac.uk/~jacobd/posts/2025/01/an-encrypted-boot-gentoo-installation-story"&gt;Part-I&lt;/a&gt;)
my attempt to create an encrypted Gentoo Linux desktop. Please follow that first. 
It was a little more involved than I expected. I had to revisit some of the steps one or two times. 
Some of the steps in that post might better fit in this post. But hindsight is a wonderful thing. 
Now we come to building out what the general public think of as a computer (the Desktop). &lt;/p&gt;
&lt;h3&gt;Install some useful utilities&lt;/h3&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;localost&lt;span class="w"&gt; &lt;/span&gt;/&lt;span class="w"&gt; &lt;/span&gt;$&lt;span class="w"&gt; &lt;/span&gt;eselect&lt;span class="w"&gt; &lt;/span&gt;profile&lt;span class="w"&gt; &lt;/span&gt;list&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# to get a list of desktop profiles &lt;/span&gt;
localost&lt;span class="w"&gt; &lt;/span&gt;/&lt;span class="w"&gt; &lt;/span&gt;$&lt;span class="w"&gt; &lt;/span&gt;eselect&lt;span class="w"&gt; &lt;/span&gt;profile&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;set&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;lt;KDE-openrc&amp;gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="c1"&gt;# I will also setup i3 tiling window manager&lt;/span&gt;
localost&lt;span class="w"&gt; &lt;/span&gt;/&lt;span class="w"&gt; &lt;/span&gt;$&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Europe/London"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;/etc/timezone
localost&lt;span class="w"&gt; &lt;/span&gt;/&lt;span class="w"&gt; &lt;/span&gt;$&lt;span class="w"&gt; &lt;/span&gt;emerge&lt;span class="w"&gt; &lt;/span&gt;--sync&lt;span class="w"&gt; &lt;/span&gt;
localost&lt;span class="w"&gt; &lt;/span&gt;/&lt;span class="w"&gt; &lt;/span&gt;$&lt;span class="w"&gt; &lt;/span&gt;emerge&lt;span class="w"&gt; &lt;/span&gt;--quiet-build&lt;span class="w"&gt; &lt;/span&gt;--ask&lt;span class="w"&gt; &lt;/span&gt;--config&lt;span class="w"&gt; &lt;/span&gt;sys-libs/timezone-data&lt;span class="w"&gt; &lt;/span&gt;
localost&lt;span class="w"&gt; &lt;/span&gt;/&lt;span class="w"&gt; &lt;/span&gt;$&lt;span class="w"&gt; &lt;/span&gt;emerge&lt;span class="w"&gt; &lt;/span&gt;--quiet-build&lt;span class="w"&gt; &lt;/span&gt;--ask&lt;span class="w"&gt; &lt;/span&gt;app-misc/screen&lt;span class="w"&gt; &lt;/span&gt;sys-process/htop
&lt;/pre&gt;&lt;/div&gt;

&lt;h5&gt;Setup WiFi (Optional)&lt;/h5&gt;
&lt;p&gt;In (&lt;a href="http://www.dcs.gla.ac.uk/~jacobd/posts/2025/01/an-encrypted-boot-gentoo-installation-story"&gt;Part-I&lt;/a&gt;), 
I already had ethernet and used that for installation. However, if WiFi is something that is 
required, then the following instructions should set up WiFi. Bear in mind that WiFi drivers 
could be missing from your kernel configuration. Searching 
the &lt;a href="https://forums.gentoo.org"&gt;Gentoo forums&lt;/a&gt; for a similar issue would be helpful. &lt;/p&gt;
&lt;p&gt;I will be installing &lt;code&gt;network-manager&lt;/code&gt; later on
and will have to disable both &lt;em&gt;dhcpcd&lt;/em&gt; and &lt;em&gt;wpa-supplicant&lt;/em&gt;. If we forget, then we will have 
two instances of DHCP and WiFi daemons duelling each other. &lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;localost&lt;span class="w"&gt; &lt;/span&gt;/&lt;span class="w"&gt; &lt;/span&gt;$&lt;span class="w"&gt; &lt;/span&gt;emerge&lt;span class="w"&gt; &lt;/span&gt;--quiet-build&lt;span class="w"&gt; &lt;/span&gt;--ask&lt;span class="w"&gt; &lt;/span&gt;net-misc/dhcpcd
localost&lt;span class="w"&gt; &lt;/span&gt;/&lt;span class="w"&gt; &lt;/span&gt;$&lt;span class="w"&gt; &lt;/span&gt;emerge&lt;span class="w"&gt; &lt;/span&gt;--ask&lt;span class="w"&gt; &lt;/span&gt;--verbose&lt;span class="w"&gt; &lt;/span&gt;net-wireless/wpa_supplicant
localost&lt;span class="w"&gt; &lt;/span&gt;/&lt;span class="w"&gt; &lt;/span&gt;$&lt;span class="w"&gt; &lt;/span&gt;cp&lt;span class="w"&gt; &lt;/span&gt;/usr/share/dhcpcd/hooks/10-wpa_supplicant&lt;span class="w"&gt; &lt;/span&gt;/lib/dhcpcd/dhcpcd-hooks/
localost&lt;span class="w"&gt; &lt;/span&gt;/&lt;span class="w"&gt; &lt;/span&gt;$&lt;span class="w"&gt; &lt;/span&gt;bzcat&lt;span class="w"&gt;  &lt;/span&gt;/usr/share/doc/wpa_supplicant-&amp;lt;ver-no&amp;gt;/wpa-supplicant.conf.bz2&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;/etc/wpa_supplicant/wpa_supplicant.conf
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Almost all variations of a wpa-supplicant configuration can be obtained from 
"&lt;em&gt;/usr/share/doc/wpa_supplicant-&lt;ver-no&gt;/wpa_supplicant.conf.bz2&lt;/ver-no&gt;&lt;/em&gt;". Uncomment the
following in &lt;code&gt;/etc/wpa_supplicant/wpa_supplicant.conf&lt;/code&gt;. &lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="nv"&gt;ctrl_interface&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;DIR&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/var/run/wpa_supplicant&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;GROUP&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;wheel
&lt;span class="nv"&gt;eapol_version&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;
&lt;span class="nv"&gt;ap_scan&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;
&lt;span class="nv"&gt;fast_reauth&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Also generate the network connection parameters and insert into &lt;code&gt;wpa_supplicant.conf&lt;/code&gt; using &lt;code&gt;wpa_passphrase&lt;/code&gt;
and remove every other configuration in that file. In case you have a more complicated set-up, then you will 
have to configure this according to your setup. &lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;localost&lt;span class="w"&gt; &lt;/span&gt;/&lt;span class="w"&gt; &lt;/span&gt;$&lt;span class="w"&gt; &lt;/span&gt;wpa_passphrase&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;ssid&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;passphrase&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&amp;gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;/etc/wpa_supplicant/wpa_supplicant.conf
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Change the value of &lt;code&gt;wpa_supplicant_args&lt;/code&gt; in &lt;code&gt;/etc/conf.d/wpa_supplicant.conf&lt;/code&gt; to: &lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="nv"&gt;wpa_supplicant_args&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"-B -M -c/etc/wpa_supplicant/wpa_supplicant.conf"&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Now add the &lt;code&gt;dhcpcd&lt;/code&gt; and &lt;code&gt;wpa_supplicant&lt;/code&gt; services to default runlevel and start the services. &lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;localost&lt;span class="w"&gt; &lt;/span&gt;/&lt;span class="w"&gt; &lt;/span&gt;$&lt;span class="w"&gt; &lt;/span&gt;rc-update&lt;span class="w"&gt; &lt;/span&gt;add&lt;span class="w"&gt; &lt;/span&gt;dhcpcd&lt;span class="w"&gt; &lt;/span&gt;default
localost&lt;span class="w"&gt; &lt;/span&gt;/&lt;span class="w"&gt; &lt;/span&gt;$&lt;span class="w"&gt; &lt;/span&gt;rc-update&lt;span class="w"&gt; &lt;/span&gt;add&lt;span class="w"&gt; &lt;/span&gt;wpa_supplicant&lt;span class="w"&gt; &lt;/span&gt;default
localost&lt;span class="w"&gt; &lt;/span&gt;/&lt;span class="w"&gt; &lt;/span&gt;$&lt;span class="w"&gt; &lt;/span&gt;rc-service&lt;span class="w"&gt; &lt;/span&gt;dhcpcd&lt;span class="w"&gt; &lt;/span&gt;start
localost&lt;span class="w"&gt; &lt;/span&gt;/&lt;span class="w"&gt; &lt;/span&gt;$&lt;span class="w"&gt; &lt;/span&gt;rc-service&lt;span class="w"&gt; &lt;/span&gt;wpa_supplicant&lt;span class="w"&gt; &lt;/span&gt;start
&lt;/pre&gt;&lt;/div&gt;

&lt;h5&gt;&lt;a href="https://wiki.gentoo.org/wiki/Ntp#Ntpd"&gt;Setting up NTP&lt;/a&gt;&lt;/h5&gt;
&lt;p&gt;Networking and "time" dependent programs require accurate date and time information. This is achieved by installing &lt;strong&gt;NTPD&lt;/strong&gt;. &lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;localost&lt;span class="w"&gt; &lt;/span&gt;/&lt;span class="w"&gt; &lt;/span&gt;$&lt;span class="w"&gt; &lt;/span&gt;emerge&lt;span class="w"&gt; &lt;/span&gt;--ask&lt;span class="w"&gt; &lt;/span&gt;net-misc/ntp
localost&lt;span class="w"&gt; &lt;/span&gt;/&lt;span class="w"&gt; &lt;/span&gt;$&lt;span class="w"&gt; &lt;/span&gt;rc-update&lt;span class="w"&gt; &lt;/span&gt;add&lt;span class="w"&gt; &lt;/span&gt;ntpd&lt;span class="w"&gt; &lt;/span&gt;default
localost&lt;span class="w"&gt; &lt;/span&gt;/&lt;span class="w"&gt; &lt;/span&gt;$&lt;span class="w"&gt; &lt;/span&gt;rc-service&lt;span class="w"&gt; &lt;/span&gt;ntpd&lt;span class="w"&gt; &lt;/span&gt;start
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;img src="https://upload.wikimedia.org/wikipedia/commons/thumb/0/05/Gentoo_Live_GUI_USB_running_KDE.png/640px-Gentoo_Live_GUI_USB_running_KDE.png" title="A Gentoo KDE Desktop" alt="Gentoo KDE desktop"&gt;
&lt;/p&gt;
&lt;h3&gt;&lt;a href="https://wiki.gentoo.org/wiki/KDE"&gt;Install the KDE desktop&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;While Wayland seems to be the future, I am still quite comfortable with the &lt;code&gt;X&lt;/code&gt; server. It also helps that the 
&lt;code&gt;i3wm&lt;/code&gt; window manager also is dependent on &lt;code&gt;X-sever&lt;/code&gt;. The &lt;strong&gt;KDE&lt;/strong&gt; meta-package is comprehensive and installs 
all the KDE applications and dependencies. &lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;localhost&lt;span class="w"&gt; &lt;/span&gt;/&lt;span class="w"&gt; &lt;/span&gt;$&lt;span class="w"&gt; &lt;/span&gt;emerge&lt;span class="w"&gt; &lt;/span&gt;--ask&lt;span class="w"&gt; &lt;/span&gt;kde-plasma/plasma-meta
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Ensure that the KDE display manager &lt;code&gt;sddm&lt;/code&gt; is installed; then ensure that the "&lt;strong&gt;DISPLAYMANAGER&lt;/strong&gt;" variable is set 
to &lt;em&gt;sddm&lt;/em&gt;. &lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="nv"&gt;DISPLAYMANAGER&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"sddm"&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Add the requisite services to openrc to start at boot, &lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;localost&lt;span class="w"&gt; &lt;/span&gt;/&lt;span class="w"&gt; &lt;/span&gt;$&lt;span class="w"&gt; &lt;/span&gt;rc-update&lt;span class="w"&gt; &lt;/span&gt;add&lt;span class="w"&gt; &lt;/span&gt;dbus&lt;span class="w"&gt; &lt;/span&gt;default
localost&lt;span class="w"&gt; &lt;/span&gt;/&lt;span class="w"&gt; &lt;/span&gt;$&lt;span class="w"&gt; &lt;/span&gt;rc-update&lt;span class="w"&gt; &lt;/span&gt;add&lt;span class="w"&gt; &lt;/span&gt;display-manager&lt;span class="w"&gt; &lt;/span&gt;default
localost&lt;span class="w"&gt; &lt;/span&gt;/&lt;span class="w"&gt; &lt;/span&gt;$&lt;span class="w"&gt; &lt;/span&gt;rc-update&lt;span class="w"&gt; &lt;/span&gt;add&lt;span class="w"&gt; &lt;/span&gt;elogind&lt;span class="w"&gt; &lt;/span&gt;boot
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;img src="https://media2.giphy.com/media/v1.Y2lkPTc5MGI3NjExc2t3czJ2YTF6MHJheGRlNHplenlmbGhpN214Mng3czBrcnQya203dCZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/DUtVdGeIU8lmo/giphy.gif" title="Restarting always works!" alt="IT crowd"&gt;

In my case, at this point, I found that just starting up the boot displaymanager from &lt;em&gt;openrc&lt;/em&gt; did not get &lt;code&gt;sddm&lt;/code&gt; to start.
Rebooting the machine sorted the crashing display manager out. &lt;/p&gt;
&lt;h5&gt;Debugging:  &lt;a href="https://wiki.gentoo.org/wiki/X_server"&gt;Install &lt;em&gt;X-server&lt;/em&gt;&lt;/a&gt;&lt;/h5&gt;
&lt;p&gt;If there are any problems with bringing up KDE, using X-server to debug the issue is very useful. 
In case it was not already installed when &lt;em&gt;KDE-meta&lt;/em&gt; was installed, 
start with installing X-server and  driver  packages.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;localost&lt;span class="w"&gt; &lt;/span&gt;/&lt;span class="w"&gt; &lt;/span&gt;$&lt;span class="w"&gt; &lt;/span&gt;emerge&lt;span class="w"&gt; &lt;/span&gt;--ask&lt;span class="w"&gt; &lt;/span&gt;--verbose&lt;span class="w"&gt; &lt;/span&gt;x11-base/xorg-drivers&lt;span class="w"&gt; &lt;/span&gt;x11-base/xorg-server
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;To test out that the X-server is working correctly install a few &lt;strong&gt;X&lt;/strong&gt; applications&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;localost&lt;span class="w"&gt; &lt;/span&gt;/&lt;span class="w"&gt; &lt;/span&gt;$&lt;span class="w"&gt; &lt;/span&gt;emerge&lt;span class="w"&gt; &lt;/span&gt;-a&lt;span class="w"&gt; &lt;/span&gt;x11-terms/xterm&lt;span class="w"&gt; &lt;/span&gt;x11-apps/xclock&lt;span class="w"&gt; &lt;/span&gt;x11-wm/twm
localost&lt;span class="w"&gt; &lt;/span&gt;/&lt;span class="w"&gt; &lt;/span&gt;$&lt;span class="w"&gt; &lt;/span&gt;startx&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="c1"&gt;# to test if display server is working&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;h5&gt;Sidenote: Uninstall dhcp and wpa-supplicant&lt;/h5&gt;
&lt;p&gt;Keeping &lt;code&gt;dhcpcd&lt;/code&gt; and &lt;code&gt;wpa-supplicant&lt;/code&gt; running in the background led me to some incredibly 
annoying and hard to debug problems with networking. The KDE deskptop already installs 
&lt;code&gt;NetworkManager&lt;/code&gt; and this will in turn call an instance of &lt;em&gt;dhcp&lt;/em&gt;  and &lt;em&gt;wpa_supplicant&lt;/em&gt;. 
You do NOT need your own version fighting with it. So... &lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;localost&lt;span class="w"&gt; &lt;/span&gt;/&lt;span class="w"&gt; &lt;/span&gt;$&lt;span class="w"&gt; &lt;/span&gt;rc-service&lt;span class="w"&gt; &lt;/span&gt;stop&lt;span class="w"&gt; &lt;/span&gt;dhcpcd
localost&lt;span class="w"&gt; &lt;/span&gt;/&lt;span class="w"&gt; &lt;/span&gt;$&lt;span class="w"&gt; &lt;/span&gt;rc-update&lt;span class="w"&gt; &lt;/span&gt;del&lt;span class="w"&gt; &lt;/span&gt;dhcpcd
localost&lt;span class="w"&gt; &lt;/span&gt;/&lt;span class="w"&gt; &lt;/span&gt;$&lt;span class="w"&gt; &lt;/span&gt;rc-service&lt;span class="w"&gt; &lt;/span&gt;stop&lt;span class="w"&gt; &lt;/span&gt;wpa_supplicant
localost&lt;span class="w"&gt; &lt;/span&gt;/&lt;span class="w"&gt; &lt;/span&gt;$&lt;span class="w"&gt; &lt;/span&gt;rc-update&lt;span class="w"&gt; &lt;/span&gt;del&lt;span class="w"&gt; &lt;/span&gt;wpa_supplicant
&lt;/pre&gt;&lt;/div&gt;

&lt;h3&gt;Congratulations!&lt;/h3&gt;
&lt;p&gt;If you have persevered with the process this far, congratulations! You should have a
desktop machine that you have compiled from source. Obviously, I have cleverly 
hidden all the frustrating debug work that went into steps going wrong. Along with 
this, there are issues with drivers or kernel features required by some software
component not being turned &lt;strong&gt;ON&lt;/strong&gt;. However, that is what the incredible 
gentoo &lt;a href="https://forums.gentoo.org/"&gt;forums&lt;/a&gt; and &lt;a href="https://wiki.gentoo.org/wiki/Main_Page"&gt;wiki&lt;/a&gt; 
are for. Happy compiling and debugging.&lt;/p&gt;</description><category>gentoo</category><category>install</category><category>linux</category><category>security</category><guid>http://www.dcs.gla.ac.uk/~jacobd/posts/2025/01/a-gentoo-installation-story-continued/</guid><pubDate>Sun, 19 Jan 2025 20:14:21 GMT</pubDate></item><item><title>An encrypted-boot gentoo installation story</title><link>http://www.dcs.gla.ac.uk/~jacobd/posts/2025/01/an-encrypted-boot-gentoo-installation-story/</link><dc:creator>Dejice Jacob</dc:creator><description>&lt;h3&gt;How I got to gentoo&lt;/h3&gt;
&lt;p&gt;Like many people, I have gone through a few linux distros in my lifetime.
Over the span of two decades, I ended up going through OpenSuse → Ubuntu → Debian (Stable) →
Debian (Testing) → Gentoo. 
I keep an eye on distributions quite often, but the motivation for moving distributions crosses a threshold 
when a major workflow or technology disruption occurs within the distribution. It also correlates with my
(&lt;em&gt;Slowly&lt;/em&gt;) increasing knowledge and comfort with delving into how systems are put together. &lt;/p&gt;
&lt;p&gt;&lt;img src="https://upload.wikimedia.org/wikipedia/commons/thumb/3/32/Gentoo_Penguin_Baby_%2824940372635%29.jpg/209px-Gentoo_Penguin_Baby_%2824940372635%29.jpg" title="A Southern Gentoo Penguin" alt="Southern Gentoo Penguin" align="right"&gt;
&lt;/p&gt;
&lt;p&gt;I moved from Ubuntu → Debian (Stable) when Ubuntu decided to 
develop &lt;a href="https://fridge.ubuntu.com/2013/03/04/mir-an-outpost-envisioned-as-a-new-home"&gt;Mir&lt;/a&gt; rather
than developing for Wayland. 
I am always enthusiastic about new software being developed, if only to see what could have been. The vision of convergence
between devices was a cool one and given the right circumstances, may have succeeded. 
However, any large scale surgery of this sort which veers off and does its own thing risks failure. &lt;/p&gt;
&lt;p&gt;Another thing that philosophically did not sit right with me was the usage of &lt;a href="https://snapcraft.io/blog/a-technical-comparison-between-snaps-and-debs"&gt;&lt;em&gt;snap&lt;/em&gt; packages&lt;/a&gt;. 
To me this felt like a way to reduce the pressure of maintenance in the short-term at the 
expense of long-term fragmentation. Desktop &lt;em&gt;*nix&lt;/em&gt; distributions are not &lt;strong&gt;yet&lt;/strong&gt; (it is now decade no.3 of
trying to conquer the desktop) popular enough. I wish it was different (&lt;em&gt;sigh&lt;/em&gt;)!
Like any demand-supply equation, any let-up in the pressure to maintain 
library/API compatibility, in my opinion, would just lead to fragmentation and end-user frustration in the long-run.&lt;/p&gt;
&lt;p&gt;So I decided to do the Ubuntu → Debian (Stable) switch. As I was using a slightly older laptop, and it had all the
drivers and packages I needed, I wonder why I did not do this earlier (&lt;em&gt;Doh&lt;/em&gt;)! After two of my upgrades between major 
Debian revisions ended up requiring re-installations, I heard of this amazing new term called &lt;em&gt;rolling&lt;/em&gt;-distributions. 
(Please excuse the &lt;em&gt;naïvete&lt;/em&gt; and yes, I really am that naïve)! &lt;/p&gt;
&lt;p&gt;The next trigger to move was Debian's &lt;a href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=727708#6734"&gt;embrace&lt;/a&gt;  of &lt;a href="https://systemd.io"&gt;Systemd&lt;/a&gt;. I feel more comfortable with &lt;a href="https://github.com/OpenRC/openrc"&gt;openRC&lt;/a&gt; which I think keeps better to the
overall *nix philosophy. 
I had by now done enough systems level software development and debugging to no longer be afraid of doing silly things
that break stuff (&lt;em&gt;a little knowledge being dangerous&lt;/em&gt; and all that). Building a new system from ground up would be something 
that would allow me to explore and understand the guts of my own system. &lt;/p&gt;
&lt;h5&gt;Enter Gentoo&lt;/h5&gt;
&lt;p&gt;Keeping with the theme of going further upstream and closer to the source 
(&lt;em&gt;wipe that smug &lt;a href="https://en.wikipedia.org/wiki/Icarus"&gt;Icarus&lt;/a&gt; image from your mind&lt;/em&gt;), 
the choice was between &lt;a href="https://www.linuxfromscratch.org/"&gt;Linux from Scratch&lt;/a&gt;, &lt;a href="http://www.slackware.com"&gt;Slackware&lt;/a&gt; and &lt;a href="https://www.gentoo.org"&gt;Gentoo&lt;/a&gt;. In the end, I went with Gentoo due to the package manager and the sheer amount of 
support and documentation on the website.
It should help reduce the amount of debugging and maintenance work I have to do, while still making me 
feel like a proper computer scientist. &lt;em&gt;Vanity and naïvete -- what could possibly go wrong?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://wiki.gentoo.org/images/thumb/e/ee/Gblend.png/234px-Gblend.png" title="Gentoo Linux" alt="Gentoo Linux Logo" align="right"&gt;
&lt;/p&gt;
&lt;h3&gt;Why ?!&lt;/h3&gt;
&lt;p&gt;This leads us onto the purpose of this blog. Installing gentoo is relatively easy but time consuming if we go through 
the relatively straightforward instructions in the marvellous &lt;a href="https://wiki.gentoo.org/wiki/Handbook:AMD64"&gt;Gentoo AMD64 handbook&lt;/a&gt;. However, I wanted to do a fully encrypted &lt;code&gt;/boot&lt;/code&gt; drive as well and had to search around for various instructions. 
This is the command log (My Gentoo installation story) for my own personal notes. Someone else finding it useful is just a bonus.
For more comprehensive information and various options, Each link in the subsections below are linked 
to the much more comprehensive information in the gentoo &lt;a href="https://wiki.gentoo.org/wiki/Handbook:AMD64"&gt;wiki&lt;/a&gt;. &lt;/p&gt;
&lt;h3&gt;Gentoo AMD64 installation with encrypted &lt;em&gt;/boot&lt;/em&gt;&lt;/h3&gt;
&lt;h5&gt;Obtaining and preparing the &lt;a href="https://wiki.gentoo.org/wiki/Handbook:AMD64/Installation/Media"&gt;installation media&lt;/a&gt;&lt;/h5&gt;
&lt;p&gt;Very detailed instructions are already provided
in the &lt;a href="https://wiki.gentoo.org/wiki/Handbook:AMD64/Installation/Media"&gt;handbook&lt;/a&gt;
and I don't have anything new to add. 
Switch off secure-boot in the BIOS and choose to boot  from the USB drive that was just prepared. 
Once the laptop has been booted into the linux kernel and shows a root prompt, we will need to 
set up &lt;a href="http://www.dcs.gla.ac.uk/~jacobd/posts/2025/01/an-encrypted-boot-gentoo-installation-story/#configuring-the-network"&gt;networking&lt;/a&gt;. &lt;/p&gt;
&lt;h5&gt;Partitioning the storage &lt;a href="https://wiki.gentoo.org/wiki/Handbook:AMD64/Installation/Disks"&gt;disks&lt;/a&gt;&lt;/h5&gt;
&lt;p&gt;I have a 16 GiB Laptop with 1TB of space on the SSD. I wanted to partition it with the following schema:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;NAME&lt;span class="w"&gt;                     &lt;/span&gt;MAJ:MIN&lt;span class="w"&gt; &lt;/span&gt;RM&lt;span class="w"&gt;   &lt;/span&gt;SIZE&lt;span class="w"&gt; &lt;/span&gt;RO&lt;span class="w"&gt; &lt;/span&gt;TYPE&lt;span class="w"&gt;  &lt;/span&gt;MOUNTPOINTS
nvme0n1&lt;span class="w"&gt;                  &lt;/span&gt;&lt;span class="m"&gt;259&lt;/span&gt;:0&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;953&lt;/span&gt;.9G&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;disk
├─nvme0n1p1&lt;span class="w"&gt;              &lt;/span&gt;&lt;span class="m"&gt;259&lt;/span&gt;:2&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt;     &lt;/span&gt;2M&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;part
├─nvme0n1p2&lt;span class="w"&gt;              &lt;/span&gt;&lt;span class="m"&gt;259&lt;/span&gt;:4&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt;   &lt;/span&gt;512M&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;part
│&lt;span class="w"&gt; &lt;/span&gt;└─luks_boot&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="m"&gt;253&lt;/span&gt;:0&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt;   &lt;/span&gt;496M&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;crypt
├─nvme0n1p3&lt;span class="w"&gt;              &lt;/span&gt;&lt;span class="m"&gt;259&lt;/span&gt;:6&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt;   &lt;/span&gt;128M&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;part
└─nvme0n1p4&lt;span class="w"&gt;              &lt;/span&gt;&lt;span class="m"&gt;259&lt;/span&gt;:8&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;953&lt;/span&gt;.2G&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;part
&lt;span class="w"&gt;  &lt;/span&gt;└─luks_root&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="m"&gt;253&lt;/span&gt;:1&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;953&lt;/span&gt;.2G&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;crypt
&lt;span class="w"&gt;    &lt;/span&gt;├─osvg-swap&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="m"&gt;253&lt;/span&gt;:2&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt;    &lt;/span&gt;8G&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;lvm&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;SWAP&lt;span class="o"&gt;]&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;├─osvg-gentoo--root&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="m"&gt;253&lt;/span&gt;:3&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt;    &lt;/span&gt;64G&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;lvm&lt;span class="w"&gt;   &lt;/span&gt;/
&lt;span class="w"&gt;    &lt;/span&gt;├─osvg-gentoo--home&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="m"&gt;253&lt;/span&gt;:4&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt;    &lt;/span&gt;16G&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;lvm&lt;span class="w"&gt;   &lt;/span&gt;/home
&lt;span class="w"&gt;    &lt;/span&gt;└─osvg-data&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="m"&gt;253&lt;/span&gt;:5&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;865&lt;/span&gt;.2G&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;lvm&lt;span class="w"&gt;   &lt;/span&gt;/media/data
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Zap all pre-existing partitions on the disk. &lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;sgdisk&lt;span class="w"&gt; &lt;/span&gt;--zap-all&lt;span class="w"&gt; &lt;/span&gt;/dev/nvme0n1
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Ensure the first &lt;em&gt;1MiB&lt;/em&gt; is left for grub to be written into raw device head. So we create a &lt;em&gt;1MiB&lt;/em&gt; partition with &lt;em&gt;offset=1MiB&lt;/em&gt;.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;sgdisk&lt;span class="w"&gt;  &lt;/span&gt;--new&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;:1M:+2M&lt;span class="w"&gt; &lt;/span&gt;/dev/nvme0n1
livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;sgdisk&lt;span class="w"&gt;  &lt;/span&gt;--new&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;:0:+512M&lt;span class="w"&gt; &lt;/span&gt;/dev/nvme0n1
livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;sgdisk&lt;span class="w"&gt;  &lt;/span&gt;--new&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;:0:+128M&lt;span class="w"&gt; &lt;/span&gt;/dev/nvme0n1&lt;span class="w"&gt;    &lt;/span&gt;
livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;sgdisk&lt;span class="w"&gt;  &lt;/span&gt;--new&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;:0:0&lt;span class="w"&gt; &lt;/span&gt;/dev/nvme0n1
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Change the names of the partitions and their filesystem types in the GPT partition table. 
A list of partition types can be obtained with &lt;code&gt;sgdisk -L&lt;/code&gt;. &lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;sgdisk&lt;span class="w"&gt;  &lt;/span&gt;--typecode&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;:ef02&lt;span class="w"&gt; &lt;/span&gt;--typecode&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;:8300&lt;span class="w"&gt; &lt;/span&gt;--typecode&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;:ef00&lt;span class="w"&gt; &lt;/span&gt;--typecode&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;:8300&lt;span class="w"&gt; &lt;/span&gt;/dev/nvme0n1
livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;sgdisk&lt;span class="w"&gt; &lt;/span&gt;--change-name&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;:GRUB&lt;span class="w"&gt; &lt;/span&gt;--change-name&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;:/boot&lt;span class="w"&gt; &lt;/span&gt;--change-name&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;:EFI-SP&lt;span class="w"&gt; &lt;/span&gt;--change-name&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;:OS&lt;span class="w"&gt; &lt;/span&gt;/dev/nvme0n1
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Encrypt the &lt;code&gt;/boot&lt;/code&gt; partition with a password. While it is certainly more robust to have a separate Keyfile
stored on another USB flash drive, it is cumbersome to carry around. Also, if you forget it or lose it,
then it can be a pain. I am just going to use a plain old password for this in this case. 
Additionally, grub can not yet decrypt keys in the default LUKS2 format (argon2id) and requires the
key to be in the LUKS1 default format of PBKDF2. So the &lt;code&gt;/boot&lt;/code&gt; partition is formatted with LUKS1. 
I will maybe write up a detached header version in a future post.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;cryptsetup&lt;span class="w"&gt; &lt;/span&gt;luksFormat&lt;span class="w"&gt; &lt;/span&gt;--key-size&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;512&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;--type&lt;span class="o"&gt;=&lt;/span&gt;luks1&lt;span class="w"&gt; &lt;/span&gt;/dev/nvme0n1p2
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Format the &lt;code&gt;/boot&lt;/code&gt; and &lt;code&gt;efi-sp&lt;/code&gt; partitions &lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;cryptsetup&lt;span class="w"&gt; &lt;/span&gt;open&lt;span class="w"&gt; &lt;/span&gt;/dev/nvme0n1p2&lt;span class="w"&gt; &lt;/span&gt;/dev/mapper/luks_boot
livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;mkfs.ext4&lt;span class="w"&gt; &lt;/span&gt;-L&lt;span class="w"&gt; &lt;/span&gt;boot&lt;span class="w"&gt; &lt;/span&gt;/dev/mapper/luks_boot
livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;mkfs.vfat&lt;span class="w"&gt; &lt;/span&gt;-n&lt;span class="w"&gt; &lt;/span&gt;EFI-SP&lt;span class="w"&gt; &lt;/span&gt;-F&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;16&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;/dev/nvme0n1p3&lt;span class="w"&gt; &lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;To obtain an encrypted &lt;em&gt;&lt;code&gt;/root, /home and swap&lt;/code&gt;&lt;/em&gt; partition, I decided to use 
Logical Volume Management (&lt;a href="https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html/configuring_and_managing_logical_volumes/overview-of-logical-volume-management_configuring-and-managing-logical-volumes#lvm-architecture_overview-of-logical-volume-management"&gt;LVM&lt;/a&gt;) on a LUKS encrypted partition. 
With experience, I can say that if you intend on using the KDE desktop, the machine should ideally have 
32GB of RAM. Some packages such as firefox, the qtwebkit renderer etc require greater than 16GB of RAM. 
This would then influence the amount of swap space that you should keep aside. Since I have 32GiB of RAM, 
and I  do not want suspend, only 8GiB of swap space is allocated. The beauty of LVM is that 
this can be resized in the future if required. &lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;cryptsetup&lt;span class="w"&gt; &lt;/span&gt;luksFormat&lt;span class="w"&gt; &lt;/span&gt;--key-size&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;512&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;--key-slot&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;/dev/nvme0n1p4&lt;span class="w"&gt; &lt;/span&gt;
livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;cryptsetup&lt;span class="w"&gt; &lt;/span&gt;open&lt;span class="w"&gt; &lt;/span&gt;/dev/nvme0n1p4&lt;span class="w"&gt; &lt;/span&gt;luks_root&lt;span class="w"&gt;    &lt;/span&gt;
livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;pvcreate&lt;span class="w"&gt; &lt;/span&gt;/dev/mapper/luks_root&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="c1"&gt;# Create a Physical volume on the decrypted device&lt;/span&gt;
livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;vgcreate&lt;span class="w"&gt; &lt;/span&gt;osvg&lt;span class="w"&gt; &lt;/span&gt;/dev/mapper/luks_root&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="c1"&gt;# Create a volume group on the Physical volume&lt;/span&gt;
livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;lvcreate&lt;span class="w"&gt; &lt;/span&gt;-L&lt;span class="w"&gt; &lt;/span&gt;8G&lt;span class="w"&gt; &lt;/span&gt;-n&lt;span class="w"&gt; &lt;/span&gt;swap&lt;span class="w"&gt; &lt;/span&gt;osvg&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="c1"&gt;# Create swap space on the encrypted LVM &lt;/span&gt;
livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;lvcreate&lt;span class="w"&gt; &lt;/span&gt;-L&lt;span class="w"&gt; &lt;/span&gt;64G&lt;span class="w"&gt; &lt;/span&gt;-n&lt;span class="w"&gt; &lt;/span&gt;gentoo-root&lt;span class="w"&gt; &lt;/span&gt;osvg&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="c1"&gt;# Create /root on the encrypted LVM &lt;/span&gt;
livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;lvcreate&lt;span class="w"&gt; &lt;/span&gt;-L&lt;span class="w"&gt; &lt;/span&gt;16G&lt;span class="w"&gt; &lt;/span&gt;-n&lt;span class="w"&gt; &lt;/span&gt;gentoo-home&lt;span class="w"&gt; &lt;/span&gt;osvg&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="c1"&gt;# Create /home on the encrypted LVM &lt;/span&gt;
livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;lvcreate&lt;span class="w"&gt; &lt;/span&gt;-l&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;100&lt;/span&gt;%FREE&lt;span class="w"&gt; &lt;/span&gt;-n&lt;span class="w"&gt; &lt;/span&gt;data&lt;span class="w"&gt; &lt;/span&gt;osvg&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="c1"&gt;# Create a separate data partition&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Format the partitions created in the LVM.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;mkswap&lt;span class="w"&gt; &lt;/span&gt;-L&lt;span class="w"&gt; &lt;/span&gt;swap&lt;span class="w"&gt; &lt;/span&gt;/dev/mapper/osvg-swap&lt;span class="w"&gt; &lt;/span&gt;
livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;mkfs.ext4&lt;span class="w"&gt; &lt;/span&gt;-L&lt;span class="w"&gt; &lt;/span&gt;root&lt;span class="w"&gt; &lt;/span&gt;/dev/mapper/osvg-gentoo--root
livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;mkfs.ext4&lt;span class="w"&gt; &lt;/span&gt;-L&lt;span class="w"&gt; &lt;/span&gt;home&lt;span class="w"&gt; &lt;/span&gt;/dev/mapper/osvg-gentoo--home
livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;mkfs.ext4&lt;span class="w"&gt; &lt;/span&gt;-L&lt;span class="w"&gt; &lt;/span&gt;data&lt;span class="w"&gt; &lt;/span&gt;/dev/mapper/osvg-data
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Now mount the encrypted drives to various directories&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;mkdir&lt;span class="w"&gt; &lt;/span&gt;-p&lt;span class="w"&gt; &lt;/span&gt;/mnt/gentoo/&lt;span class="o"&gt;{&lt;/span&gt;root,home,data&lt;span class="o"&gt;}&lt;/span&gt;
mount&lt;span class="w"&gt; &lt;/span&gt;/dev/mapper/osvg-gentoo--root&lt;span class="w"&gt; &lt;/span&gt;/mnt/gentoo/root
mount&lt;span class="w"&gt; &lt;/span&gt;/dev/mapper/osvg-gentoo--home&lt;span class="w"&gt; &lt;/span&gt;/mnt/gentoo/home
mount&lt;span class="w"&gt; &lt;/span&gt;/dev/mapper/osvg-data&lt;span class="w"&gt; &lt;/span&gt;/mnt/gentoo/data
&lt;/pre&gt;&lt;/div&gt;

&lt;h5&gt;Configuring the &lt;a href="https://wiki.gentoo.org/wiki/Handbook:AMD64/Installation/Networking"&gt;network&lt;/a&gt;&lt;/h5&gt;
&lt;p&gt;I already have an ethernet cable to connect, so I did not require to set up WiFi. Gentoo already has 
the &lt;code&gt;net-setup&lt;/code&gt; utility to help with setting up WiFi. 
The network interface names can be obtained using the &lt;code&gt;ip link&lt;/code&gt; command. 
Set-up is through a fairly easy menu driven &lt;code&gt;ncurses&lt;/code&gt; style interactive interface. &lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;net-setup&lt;span class="w"&gt; &lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;For ethernet, configure the wired ethernet interface (starts with &lt;em&gt;enp&lt;/em&gt;...) &lt;/li&gt;
&lt;li&gt;In the case of WiFi, choose wireless WiFi interface (starts with &lt;em&gt;wlp&lt;/em&gt;...) &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Make sure the time of the system is accurate. I utilised a simple &lt;strong&gt;NTP&lt;/strong&gt; client (&lt;em&gt;chronyd&lt;/em&gt;) 
to correct the time. &lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;chronyd&lt;span class="w"&gt; &lt;/span&gt;-q
&lt;/pre&gt;&lt;/div&gt;

&lt;h5&gt;Obtaining the &lt;a href="https://wiki.gentoo.org/wiki/Handbook:AMD64/Installation/Stage"&gt;Stage-3&lt;/a&gt; Installation files&lt;/h5&gt;
&lt;p&gt;I like &lt;em&gt;openrc&lt;/em&gt; and chose the &lt;em&gt;desktop-openrc&lt;/em&gt; profile for the stage-3 tarball. 
Use the livecd built-in &lt;em&gt;ncurses&lt;/em&gt; browser to obtain the stage-3 tarball. Alternatively 
download it on another PC and transfer via another USB device. &lt;/p&gt;
&lt;h5&gt;Setup base &lt;a href="https://wiki.gentoo.org/wiki/Handbook:AMD64/Installation/Stage"&gt;root filesystem&lt;/a&gt;, configure &lt;a href="https://wiki.gentoo.org/wiki/Handbook:AMD64/Installation/Stage#Configuring_compile_options"&gt;portage&lt;/a&gt; and &lt;a href="https://wiki.gentoo.org/wiki/Handbook:AMD64/Installation/Base"&gt;gentoo base&lt;/a&gt;&lt;/h5&gt;
&lt;p&gt;Assuming the stage-3 tarball is in &lt;code&gt;/mnt/gentoo/data&lt;/code&gt; untar it to the target storage-device's &lt;code&gt;/root&lt;/code&gt; directory. 
In our case, we have mounted it to &lt;code&gt;/mnt/gentoo/root&lt;/code&gt;. &lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;/mnt/gentoo/data
livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;tar&lt;span class="w"&gt; &lt;/span&gt;-Jxpvf&lt;span class="w"&gt; &lt;/span&gt;stage3_tarball.tar.xz&lt;span class="w"&gt; &lt;/span&gt;--xattrs-include&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'*.*'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;--numeric-owner&lt;span class="w"&gt; &lt;/span&gt;-C&lt;span class="w"&gt; &lt;/span&gt;/mnt/gentoo/root&lt;span class="w"&gt;  &lt;/span&gt;
livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;cd&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;/mnt/gentoo/root
livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;cp&lt;span class="w"&gt; &lt;/span&gt;--dereference&lt;span class="w"&gt;  &lt;/span&gt;/etc/resolv.conf&lt;span class="w"&gt; &lt;/span&gt;/mnt/gentoo/root/etc/resolv.conf&lt;span class="w"&gt; &lt;/span&gt;
livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;MAKEOPTS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;-j&lt;span class="k"&gt;$(&lt;/span&gt;nproc&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;/mnt/gentoo/root/etc/portage/make.conf
livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;ACCEPT_KEYWORDS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;amd64&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;/mnt/gentoo/root/etc/portage/make.conf
livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;USE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;udev&lt;span class="w"&gt; &lt;/span&gt;lvm&lt;span class="w"&gt; &lt;/span&gt;dbus&lt;span class="w"&gt; &lt;/span&gt;X&lt;span class="w"&gt; &lt;/span&gt;pulseaudio&lt;span class="w"&gt; &lt;/span&gt;networkmanager&lt;span class="w"&gt; &lt;/span&gt;clang&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;/mnt/gentoo/root/etc/portage/make.conf
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Add the CPU flags for your host to &lt;code&gt;/mnt/gentoo/root/etc/portage/make.conf&lt;/code&gt;. Make sure you replace the newly added line
to the format &lt;code&gt;CPU_FLAGS_X86="aes ....."&lt;/code&gt;. &lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;cpuid2cpuflags&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;/mnt/gentoo/root/etc/portage/make.conf
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Now add the &lt;a href="https://wiki.gentoo.org/wiki/Handbook:AMD64/Installation/Base#VIDEO_CARDS"&gt;video-cards&lt;/a&gt;
depending on your machine. On this machine, I had an AMD video card. &lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;VIDEO_CARDS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;amdgpu&lt;span class="w"&gt; &lt;/span&gt;radeonsi&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;/mnt/gentoo/root/etc/portage/make.conf
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Add some miscellaneous devices as well. &lt;code&gt;libinput&lt;/code&gt; provides input handling for display servers. &lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;INPUT_DEVICES&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;libinput&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;/mnt/gentoo/root/etc/portage/make.conf
livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;SANEBACKENDS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;hp&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;/mnt/gentoo/root/etc/portage/make.conf
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Within the portage configuration file &lt;code&gt;/mnt/gentoo/root/etc/portage/make.conf&lt;/code&gt; update the value of the 
variable &lt;code&gt;COMMON_FLAGS&lt;/code&gt; to &lt;code&gt;COMMON_FLAGS="-march=native -O2 -pipe"&lt;/code&gt;
Also select from the worldwide mirrors to download software from. &lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;mirrorselect&lt;span class="w"&gt; &lt;/span&gt;-i&lt;span class="w"&gt; &lt;/span&gt;-o&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;/mnt/gentoo/root/etc/portage/make.conf
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Mount the system files required to prepare the target computer's &lt;code&gt;chroot&lt;/code&gt; environment. &lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;mount&lt;span class="w"&gt; &lt;/span&gt;--types&lt;span class="w"&gt; &lt;/span&gt;proc&lt;span class="w"&gt; &lt;/span&gt;/proc&lt;span class="w"&gt; &lt;/span&gt;/mnt/gentoo/root/proc
livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;mount&lt;span class="w"&gt; &lt;/span&gt;--rbind&lt;span class="w"&gt; &lt;/span&gt;/sys&lt;span class="w"&gt; &lt;/span&gt;/mnt/gentoo/root/sys
livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;mount&lt;span class="w"&gt; &lt;/span&gt;--make-rslave&lt;span class="w"&gt; &lt;/span&gt;/mnt/gentoo/root/sys
livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;mount&lt;span class="w"&gt; &lt;/span&gt;--rbind&lt;span class="w"&gt; &lt;/span&gt;/dev&lt;span class="w"&gt; &lt;/span&gt;/mnt/gentoo/root/dev
livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;mount&lt;span class="w"&gt; &lt;/span&gt;--make-rslave&lt;span class="w"&gt; &lt;/span&gt;/mnt/gentoo/root/dev
livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;mount&lt;span class="w"&gt; &lt;/span&gt;--bind&lt;span class="w"&gt; &lt;/span&gt;/run&lt;span class="w"&gt; &lt;/span&gt;/mnt/gentoo/root/run
livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;mount&lt;span class="w"&gt; &lt;/span&gt;--make-slave&lt;span class="w"&gt; &lt;/span&gt;/mnt/gentoo/root/run
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Enter the &lt;code&gt;chroot&lt;/code&gt; environment. &lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;umount&lt;span class="w"&gt; &lt;/span&gt;/mnt/gentoo/home&lt;span class="w"&gt; &lt;/span&gt;/mnt/gentoo/data
livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;chroot&lt;span class="w"&gt; &lt;/span&gt;/mnt/gentoo/root&lt;span class="w"&gt; &lt;/span&gt;/bin/bash
livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;source&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;/etc/profile
livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;export&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;PS1&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"(chroot) &lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;PS1&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="o"&gt;(&lt;/span&gt;chroot&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;export&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;PS1&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"(chroot) &lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;PS1&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="o"&gt;(&lt;/span&gt;chroot&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;mkdir&lt;span class="w"&gt; &lt;/span&gt;-p&lt;span class="w"&gt; &lt;/span&gt;/home&lt;span class="w"&gt; &lt;/span&gt;/media/data
&lt;span class="o"&gt;(&lt;/span&gt;chroot&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;mount&lt;span class="w"&gt; &lt;/span&gt;/dev/mapper/osvg-gentoo--home&lt;span class="w"&gt; &lt;/span&gt;/home
&lt;span class="o"&gt;(&lt;/span&gt;chroot&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;mount&lt;span class="w"&gt; &lt;/span&gt;/dev/mapper/osvg-data&lt;span class="w"&gt; &lt;/span&gt;/media/data
&lt;span class="o"&gt;(&lt;/span&gt;chroot&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;swapon&lt;span class="w"&gt; &lt;/span&gt;/dev/mapper/osvg-swap
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Prepare the EFI System Partition. &lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="o"&gt;(&lt;/span&gt;chroot&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;mount&lt;span class="w"&gt; &lt;/span&gt;/dev/mapper/luks_boot&lt;span class="w"&gt; &lt;/span&gt;/boot
&lt;span class="o"&gt;(&lt;/span&gt;chroot&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;mkdir&lt;span class="w"&gt; &lt;/span&gt;-p&lt;span class="w"&gt; &lt;/span&gt;/boot/efi&lt;span class="w"&gt; &lt;/span&gt;
&lt;span class="o"&gt;(&lt;/span&gt;chroot&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;mount&lt;span class="w"&gt; &lt;/span&gt;/dev/nvme0n1p3&lt;span class="w"&gt; &lt;/span&gt;/boot/efi
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Synchronise &lt;code&gt;emerge&lt;/code&gt;'s software package list with upstream mirrors&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="o"&gt;(&lt;/span&gt;chroot&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;emerge-webrsync
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Setup Locale Details&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="o"&gt;(&lt;/span&gt;chroot&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Europe/London"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;/etc/timezone
&lt;span class="o"&gt;(&lt;/span&gt;chroot&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"C.UTF8 UTF-8"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;/etc/locale.gen
&lt;span class="o"&gt;(&lt;/span&gt;chroot&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"en_GB ISO-8859-1"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;/etc/locale.gen
&lt;span class="o"&gt;(&lt;/span&gt;chroot&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"en_GB.UTF-8 UTF-8"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;/etc/locale.gen
&lt;span class="o"&gt;(&lt;/span&gt;chroot&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;locale-gen
&lt;span class="o"&gt;(&lt;/span&gt;chroot&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;env-update
&lt;/pre&gt;&lt;/div&gt;

&lt;h5&gt;Configuring the &lt;a href="https://wiki.gentoo.org/wiki/Handbook:AMD64/Installation/Kernel"&gt;Linux Kernel&lt;/a&gt;&lt;/h5&gt;
&lt;p&gt;Obtain all kernel related gentoo packages. &lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="o"&gt;(&lt;/span&gt;chroot&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;mkdir&lt;span class="w"&gt; &lt;/span&gt;-p&lt;span class="w"&gt; &lt;/span&gt;/etc/portage/package.license&lt;span class="w"&gt; &lt;/span&gt;
&lt;span class="o"&gt;(&lt;/span&gt;chroot&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"sys-kernel/linux-firmware linux-fw-redistributable"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;/etc/portage/package.license/kernel
&lt;span class="o"&gt;(&lt;/span&gt;chroot&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;emerge&lt;span class="w"&gt; &lt;/span&gt;--ask&lt;span class="w"&gt; &lt;/span&gt;--quiet-build&lt;span class="w"&gt; &lt;/span&gt;sys-kernel/linux-firmware&lt;span class="w"&gt; &lt;/span&gt;sys-fs/cryptsetup&lt;span class="w"&gt; &lt;/span&gt;sys-kernel/gentoo-sources&lt;span class="w"&gt; &lt;/span&gt;sys-kernel/genkernel&lt;span class="w"&gt; &lt;/span&gt;
&lt;span class="o"&gt;(&lt;/span&gt;chroot&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;eselect&lt;span class="w"&gt; &lt;/span&gt;kernel&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;set&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="c1"&gt;# this should link /usr/src/linux to current kernel source&lt;/span&gt;
&lt;span class="o"&gt;(&lt;/span&gt;chroot&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"sys-boot/grub:2 device-mapper"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;/etc/portage/package.use/grub2
&lt;span class="o"&gt;(&lt;/span&gt;chroot&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;emerge&lt;span class="w"&gt; &lt;/span&gt;--ask&lt;span class="w"&gt; &lt;/span&gt;--quiet-build&lt;span class="w"&gt; &lt;/span&gt;sys-boot/grub&lt;span class="w"&gt; &lt;/span&gt;sys-fs/genfstab
&lt;span class="c1"&gt;## Ensure all the relvant drives (including swap are already mounted / turned on&lt;/span&gt;
&lt;span class="o"&gt;(&lt;/span&gt;chroot&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;genfstab&lt;span class="w"&gt; &lt;/span&gt;-Up&lt;span class="w"&gt; &lt;/span&gt;/&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;/etc/fstab&lt;span class="w"&gt; &lt;/span&gt;
&lt;span class="c1"&gt;## add noauto to the /boot and /boot/efi mount-points in /etc/fstab&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Generate a LUKS key and add the generated key to the block device holding the encrypted 
partition. In my case, this was  &lt;code&gt;luks_boot (/dev/nvme0n1p2)&lt;/code&gt; and optionally&lt;code&gt;luks_root (/dev/nvme0n1p4)&lt;/code&gt;. 
This will be the key that is used by the kernel-&lt;em&gt;initramfs&lt;/em&gt;  to decrypt and mount the encrypted LVM volume and
(optionally) the &lt;code&gt;/boot&lt;/code&gt; partition. There is a good argument to not automatically decrypt the  &lt;code&gt;/boot&lt;/code&gt; partition. 
This is why I have decided it is optional. &lt;strong&gt;Remember&lt;/strong&gt;: We are adding this newly generated key to &lt;em&gt;Key-slot:0&lt;/em&gt;
of &lt;code&gt;luks_root&lt;/code&gt; -- this is why we carefully added the original-key during disk-partitioning in &lt;em&gt;Key-slot:1&lt;/em&gt;. 
Using &lt;em&gt;Key-slot:0&lt;/em&gt; will make it faster during actual booting and each key is tried in sequence.
&lt;a href="http://www.dcs.gla.ac.uk/~jacobd/posts/2025/01/an-encrypted-boot-gentoo-installation-story/#partitioning-the-storage-disks"&gt;link&lt;/a&gt;. &lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="o"&gt;(&lt;/span&gt;chroot&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;mkdir&lt;span class="w"&gt; &lt;/span&gt;-p&lt;span class="w"&gt; &lt;/span&gt;/etc/luks/mnt/key
&lt;span class="o"&gt;(&lt;/span&gt;chroot&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;dd&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/dev/urandom&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;of&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/etc/luks/mnt/key/boot_os.keyfile&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;bs&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;4096&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;count&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;
&lt;span class="o"&gt;(&lt;/span&gt;chroot&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;chmod&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;u&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;rx,go-rwx&lt;span class="w"&gt; &lt;/span&gt;/etc/luks
&lt;span class="o"&gt;(&lt;/span&gt;chroot&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;chmod&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;u&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;r,go-rwx&lt;span class="w"&gt; &lt;/span&gt;/etc/luks/mnt/key/boot_os.keyfile
&lt;span class="o"&gt;(&lt;/span&gt;chroot&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;cryptsetup&lt;span class="w"&gt; &lt;/span&gt;--key-slot&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;/dev/nvme0n1p4&lt;span class="w"&gt;  &lt;/span&gt;/etc/luks/mnt/key/boot_os.keyfile&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="c1"&gt;# luks_root&lt;/span&gt;
&lt;span class="o"&gt;(&lt;/span&gt;chroot&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;cryptsetup&lt;span class="w"&gt; &lt;/span&gt;--key-slot&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;/dev/nvme0n1p2&lt;span class="w"&gt;  &lt;/span&gt;/etc/luks/mnt/key/boot_os.keyfile&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="c1"&gt;# luks_boot&lt;/span&gt;
&lt;span class="o"&gt;(&lt;/span&gt;chroot&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"luks_boot UUID=&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;blkid&lt;span class="w"&gt; &lt;/span&gt;-s&lt;span class="w"&gt; &lt;/span&gt;UUID&lt;span class="w"&gt; &lt;/span&gt;-o&lt;span class="w"&gt; &lt;/span&gt;value&lt;span class="w"&gt; &lt;/span&gt;/dev/nvme0n1p2&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt; /etc/luks/mnt/key/boot_os.keyfile luks,discard"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;/etc/crypttab
&lt;span class="o"&gt;(&lt;/span&gt;chroot&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"luks_root UUID=&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;blkid&lt;span class="w"&gt; &lt;/span&gt;-s&lt;span class="w"&gt; &lt;/span&gt;UUID&lt;span class="w"&gt; &lt;/span&gt;-o&lt;span class="w"&gt; &lt;/span&gt;value&lt;span class="w"&gt; &lt;/span&gt;/dev/nvme0n1p4&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt; /etc/luks/mnt/key/boot_os.keyfile luks,discard"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;/etc/crypttab
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt;: The key should be generated in a directory with the following pattern &lt;code&gt;${INITRAMFS_OVERLAY}/mnt/key&lt;/code&gt;. 
The &lt;code&gt;genkernel&lt;/code&gt; tool when provided the &lt;code&gt;INITRAMFS_OVERLAY&lt;/code&gt; variable will use this overlay within its filesystem. 
The kernel will then look for the internal key in &lt;code&gt;/mnt/key&lt;/code&gt;. &lt;/p&gt;
&lt;p&gt;While you could spend a long time configuring the kernel, I think it is easier to use &lt;code&gt;genkernel&lt;/code&gt; to generate 
a kernel with a lot of options. We can always slim down the kernel afterwards. We can see the list of kernels 
with &lt;code&gt;eselect kernel list&lt;/code&gt;. &lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="o"&gt;(&lt;/span&gt;chroot&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;eselect&lt;span class="w"&gt; &lt;/span&gt;kernel&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;set&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Set-up the following configurations in &lt;code&gt;/etc/genkernel.conf&lt;/code&gt;. &lt;strong&gt;NOTE&lt;/strong&gt;: Without the &lt;code&gt;INITRAMFS_OVERLAY&lt;/code&gt;, the initramfs kernel cannot decrypt the enncrypted block device holding 
the LVMs for &lt;code&gt;/root, /home&lt;/code&gt; etc. &lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="nv"&gt;NOCOLOR&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"false"&lt;/span&gt;
&lt;span class="nv"&gt;LVM&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"yes"&lt;/span&gt;
&lt;span class="nv"&gt;LUKS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"yes"&lt;/span&gt;
&lt;span class="nv"&gt;GK_SHARE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;GK_SHARE&lt;/span&gt;&lt;span class="k"&gt;:-&lt;/span&gt;&lt;span class="p"&gt;/usr/share/genkernel&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nv"&gt;CACHE_DIR&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"/var/cache/genkernel"&lt;/span&gt;
&lt;span class="nv"&gt;DISTDIR&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;GK_SHARE&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/distfiles"&lt;/span&gt;
&lt;span class="nv"&gt;LOGFILE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"/var/log/genkernel.log"&lt;/span&gt;
&lt;span class="nv"&gt;LOGLEVEL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;
&lt;span class="nv"&gt;ZFS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"no"&lt;/span&gt;
&lt;span class="nv"&gt;BTRFS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"no"&lt;/span&gt;
&lt;span class="nv"&gt;XFSPROGS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"no"&lt;/span&gt;
&lt;span class="nv"&gt;DEFAULT_KERNEL_SOURCE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"/usr/src/linux"&lt;/span&gt;
&lt;span class="nv"&gt;INITRAMFS_OVERLAY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"/etc/luks"&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Now execute &lt;code&gt;genkernel&lt;/code&gt; and prune as much of the kernel config that you don't need before executing. (Ensure 
that &lt;code&gt;/boot&lt;/code&gt; and &lt;code&gt;/boot/efi&lt;/code&gt; are mounted)!&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="o"&gt;(&lt;/span&gt;chroot&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;genkernel&lt;span class="w"&gt; &lt;/span&gt;--menuconfig&lt;span class="w"&gt; &lt;/span&gt;--luks&lt;span class="w"&gt; &lt;/span&gt;--lvm&lt;span class="w"&gt; &lt;/span&gt;--no-zfs&lt;span class="w"&gt; &lt;/span&gt;all
&lt;/pre&gt;&lt;/div&gt;

&lt;h5&gt;&lt;a href="https://wiki.gentoo.org/wiki/Handbook:AMD64/Installation/Bootloader#Default:_GRUB"&gt;Configuring the GRUB bootloader&lt;/a&gt;&lt;/h5&gt;
&lt;p&gt;Ensure the following settings are inserted into the &lt;em&gt;Grub&lt;/em&gt; configuration file in &lt;code&gt;/etc/default/grub&lt;/code&gt;&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="nv"&gt;GRUB_DISTRIBUTOR&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"Gentoo"&lt;/span&gt;
&lt;span class="nv"&gt;GRUB_TIMEOUT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;
&lt;span class="nv"&gt;GRUB_TIMEOUT_STYLE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;menu
&lt;span class="nv"&gt;GRUB_DISABLE_LINUX_PARTUUID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;false&lt;/span&gt;
&lt;span class="nv"&gt;GRUB_PRELOAD_MODULES&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"part_gpt part_msdos lvm"&lt;/span&gt;
&lt;span class="nv"&gt;GRUB_CMDLINE_LINUX_RECOVERY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"recovery"&lt;/span&gt;
&lt;span class="nv"&gt;GRUB_ENABLE_CRYPTODISK&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;y
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Also add the commandline for the linux kernel during boot before downloading and installing &lt;code&gt;grub&lt;/code&gt;&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="o"&gt;(&lt;/span&gt;chroot&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;GRUB_CMDLINE_LINUX&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="nv"&gt;keymap&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;uk&lt;span class="w"&gt; &lt;/span&gt;dolvm&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;crypt_root&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;UUID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;blkid&lt;span class="w"&gt; &lt;/span&gt;-s&lt;span class="w"&gt; &lt;/span&gt;UUID&lt;span class="w"&gt; &lt;/span&gt;-o&lt;span class="w"&gt; &lt;/span&gt;value&lt;span class="w"&gt; &lt;/span&gt;/dev/nvme0n1p4&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;root_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;boot_os.keyfile&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;root_trim&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;yes&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;resume&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/dev/osvg/swap&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;/etc/default/grub
&lt;span class="o"&gt;(&lt;/span&gt;chroot&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;emerge&lt;span class="w"&gt; &lt;/span&gt;--ask&lt;span class="w"&gt; &lt;/span&gt;--quiet-build&lt;span class="w"&gt; &lt;/span&gt;sys-boot/grub
&lt;span class="o"&gt;(&lt;/span&gt;chroot&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;mkdir&lt;span class="w"&gt; &lt;/span&gt;/boot/grub
&lt;span class="o"&gt;(&lt;/span&gt;chroot&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;grub-mkconfig&lt;span class="w"&gt; &lt;/span&gt;-o&lt;span class="w"&gt; &lt;/span&gt;/boot/grub/grub.cfg&lt;span class="w"&gt; &lt;/span&gt;
&lt;span class="o"&gt;(&lt;/span&gt;chroot&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;grub-install&lt;span class="w"&gt; &lt;/span&gt;--target&lt;span class="o"&gt;=&lt;/span&gt;x86_64-efi&lt;span class="w"&gt; &lt;/span&gt;--efi-directory&lt;span class="o"&gt;=&lt;/span&gt;/boot/efi&lt;span class="w"&gt; &lt;/span&gt;--bootloader-id&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"grub"&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;This should install various bootloader stages in their respective locations. Set &lt;code&gt;keymap=uk&lt;/code&gt;
in the file &lt;code&gt;/etc/conf.d/keymaps&lt;/code&gt;. Otherwise, a recovery shell dropping you into a 
different keymap can be frustrating for passwords and debugging in a shell. &lt;/p&gt;
&lt;h5&gt;Preparing to reboot into our newly installed bare-bones system.&lt;/h5&gt;
&lt;p&gt;We are now ready to shutdown and reboot into our newly installed system. 
Unmount all the mount points, bind-mounts and dmcrypt. 
First set a root password for the new system. Then unmount all our devices. &lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="o"&gt;(&lt;/span&gt;chroot&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;passwd&lt;span class="w"&gt;     &lt;/span&gt;&lt;span class="c1"&gt;#Set new password&lt;/span&gt;
&lt;span class="o"&gt;(&lt;/span&gt;chroot&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;umount&lt;span class="w"&gt; &lt;/span&gt;/boot/efi
&lt;span class="o"&gt;(&lt;/span&gt;chroot&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;umount&lt;span class="w"&gt; &lt;/span&gt;/boot
&lt;span class="o"&gt;(&lt;/span&gt;chroot&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;cryptsetup&lt;span class="w"&gt; &lt;/span&gt;close&lt;span class="w"&gt; &lt;/span&gt;luks_boot&lt;span class="w"&gt; &lt;/span&gt;
&lt;span class="o"&gt;(&lt;/span&gt;chroot&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;swapoff&lt;span class="w"&gt; &lt;/span&gt;/dev/mapper/osvg-swap
&lt;span class="o"&gt;(&lt;/span&gt;chroot&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;umount&lt;span class="w"&gt; &lt;/span&gt;/media/data&lt;span class="w"&gt; &lt;/span&gt;/home
&lt;span class="o"&gt;(&lt;/span&gt;chroot&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;exit&lt;/span&gt;
livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;umount&lt;span class="w"&gt; &lt;/span&gt;/mnt/gentoo/root/proc
livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;umount&lt;span class="w"&gt; &lt;/span&gt;--recursive&lt;span class="w"&gt; &lt;/span&gt;/mnt/gentoo/root/dev&lt;span class="w"&gt; &lt;/span&gt;/mnt/gentoo/root/sys&lt;span class="w"&gt; &lt;/span&gt;/mnt/gentoo/root/run
livecd&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;shutdown&lt;span class="w"&gt; &lt;/span&gt;-Ph&lt;span class="w"&gt; &lt;/span&gt;now&lt;span class="w"&gt; &lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Now reboot into the newly installed system and put in the password for grub. This should 
then drop you into a prompt for the root password for the new system. &lt;/p&gt;
&lt;p&gt;(&lt;strong&gt;Optional&lt;/strong&gt;): It might be a good idea to automatically decrypt the encrypted &lt;code&gt;/boot&lt;/code&gt; block device 
so that we can very simply just use a &lt;code&gt;mount /boot&lt;/code&gt; command that was earalier set up in &lt;code&gt;/etc/fstab&lt;/code&gt;. 
We add entries for the  &lt;em&gt;dmcrypt&lt;/em&gt; service  to automatically decrypt &lt;code&gt;/boot&lt;/code&gt; during bootup and start
the dmcrypt service&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;hostname&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"target=luks_boot"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;/etc/conf.d/dmcrypt
hostname&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;source&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;UUID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;blkid&lt;span class="w"&gt; &lt;/span&gt;-s&lt;span class="w"&gt; &lt;/span&gt;UUID&lt;span class="w"&gt; &lt;/span&gt;-o&lt;span class="w"&gt; &lt;/span&gt;value&lt;span class="w"&gt; &lt;/span&gt;/dev/nvme0n1p2&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;/etc/conf.d/dmcrypt
hostname&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"key=/etc/luks/mnt/key/boot_os.keyfile"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;/etc/conf.d/dmcrypt
hostname&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;rc-update&lt;span class="w"&gt; &lt;/span&gt;add&lt;span class="w"&gt; &lt;/span&gt;dmcrypt&lt;span class="w"&gt; &lt;/span&gt;boot
hostname&lt;span class="w"&gt; &lt;/span&gt;~#&lt;span class="w"&gt; &lt;/span&gt;rc-service&lt;span class="w"&gt; &lt;/span&gt;dmcrypt&lt;span class="w"&gt; &lt;/span&gt;start
&lt;/pre&gt;&lt;/div&gt;

&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;This will get gentoo booting into a shell. Modern desktop computing is however a lot more. 
&lt;del&gt;I will chronicle my system setup in a further post.&lt;/del&gt;
My &lt;strong&gt;gentoo&lt;/strong&gt; desktop installation saga continues in &lt;a href="http://www.dcs.gla.ac.uk/~jacobd/posts/2025/01/a-gentoo-installation-story-continued"&gt;Part-II&lt;/a&gt;. &lt;/p&gt;</description><category>gentoo</category><category>install</category><category>linux</category><category>security</category><guid>http://www.dcs.gla.ac.uk/~jacobd/posts/2025/01/an-encrypted-boot-gentoo-installation-story/</guid><pubDate>Sat, 11 Jan 2025 12:15:49 GMT</pubDate></item></channel></rss>